Пример #1
0
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
Пример #2
0
    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