def new_status( entity, condition: V1StatusCondition, additional_fields: List[str] = None ): previous_status = entity.status if condition.type == V1Statuses.CREATED: return previous_status if previous_status == V1Statuses.STOPPING and not LifeCycle.is_done(condition.type): return previous_status entity = set_entity_status(entity=entity, condition=condition) LifeCycle.set_started_at(entity=entity) LifeCycle.set_finished_at(entity=entity) additional_fields = additional_fields or [] entity.save( update_fields=additional_fields + [ "status_conditions", "status", "started_at", "updated_at", "finished_at", "wait_time", "duration", ] ) return previous_status
def test_start_at(self): entity = Entity() assert entity.started_at is None LifeCycle.set_started_at(entity) assert entity.started_at is None entity.status = V1Statuses.STARTING LifeCycle.set_started_at(entity) assert entity.started_at is not None started_at = entity.started_at entity.status = V1Statuses.RUNNING assert entity.started_at == started_at entity.started_at = None LifeCycle.set_started_at(entity) assert entity.started_at >= started_at entity.started_at = None entity.status = V1Statuses.WARNING LifeCycle.set_started_at(entity) assert entity.started_at is None