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_finished_at(self): entity = Entity() assert entity.finished_at is None LifeCycle.set_finished_at(entity) assert entity.finished_at is None entity.status = V1Statuses.STARTING LifeCycle.set_finished_at(entity) assert entity.finished_at is None entity.status = V1Statuses.RUNNING LifeCycle.set_finished_at(entity) assert entity.finished_at is None entity.status = V1Statuses.SUCCEEDED LifeCycle.set_finished_at(entity) assert entity.finished_at is not None finished_at = entity.finished_at entity.status = V1Statuses.FAILED LifeCycle.set_finished_at(entity) assert entity.finished_at == finished_at # No changes entity.finished_at = None LifeCycle.set_finished_at(entity) assert entity.finished_at >= finished_at