Ejemplo n.º 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)

    set_started_at(run=entity)
    set_finished_at(run=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
Ejemplo n.º 2
0
def new_status(entity, condition: V1StatusCondition):
    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)

    set_started_at(run=entity)
    set_finished_at(run=entity)
    entity.save(
        update_fields=[
            "status_conditions",
            "status",
            "started_at",
            "updated_at",
            "finished_at",
            "duration",
        ]
    )

    return previous_status
Ejemplo n.º 3
0
    def test_finished_at(self):
        assert self.run.finished_at is None
        set_finished_at(self.run)
        assert self.run.finished_at is None

        self.run.status = V1Statuses.STARTING
        set_finished_at(self.run)
        assert self.run.finished_at is None

        self.run.status = V1Statuses.RUNNING
        set_finished_at(self.run)
        assert self.run.finished_at is None

        self.run.status = V1Statuses.SUCCEEDED
        set_finished_at(self.run)
        assert self.run.finished_at is not None

        finished_at = self.run.finished_at

        self.run.status = V1Statuses.FAILED
        set_finished_at(self.run)
        assert self.run.finished_at == finished_at  # No changes

        self.run.finished_at = None
        set_finished_at(self.run)
        assert self.run.finished_at >= finished_at