Skip to content

Commit

Permalink
feat: created get_last_failed_deployment
Browse files Browse the repository at this point in the history
  • Loading branch information
SteBaum committed Jul 19, 2024
1 parent f9da4cb commit d3e60ea
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 1 deletion.
2 changes: 1 addition & 1 deletion tdp/cli/commands/plan/resume.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def resume(
"""Resume a failed deployment."""
with Dao(db_engine, commit_on_exit=True) as dao:
if id is None:
deployment_to_resume = dao.get_last_deployment()
deployment_to_resume = dao.get_last_failed_deployment()
if not deployment_to_resume:
raise click.ClickException("No deployment found.")
click.echo("Creating a deployment plan to resume latest deployment.")
Expand Down
10 changes: 10 additions & 0 deletions tdp/dao.py
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,16 @@ def get_planned_deployment(self) -> Optional[DeploymentModel]:
self.session.query(DeploymentModel).filter_by(state="PLANNED").one_or_none()
)

def get_last_failed_deployment(self) -> Optional[DeploymentModel]:
"""Get the last failed deployment."""
self._check_session()
return (
self.session.query(DeploymentModel)
.filter_by(state="FAILURE")
.order_by(desc(DeploymentModel.id))
.first()
)

def get_last_deployment(self) -> Optional[DeploymentModel]:
"""Get the last deployment."""
self._check_session()
Expand Down
26 changes: 26 additions & 0 deletions tests/unit/test_dao.py
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,32 @@ def test_get_last_deployment(db_engine):
)


@pytest.mark.parametrize("db_engine", [True], indirect=True)
def test_get_last_failed_deployment(db_engine):
with create_session(db_engine) as session:
session.add(
DeploymentModel(
id=2,
state=DeploymentStateEnum.FAILURE,
)
)
session.add(
DeploymentModel(
id=3,
state=DeploymentStateEnum.SUCCESS,
)
)
session.commit()
with Dao(db_engine) as dao:
assert assert_equal_values_in_model(
dao.get_last_failed_deployment(),
DeploymentModel(
id=2,
state=DeploymentStateEnum.FAILURE,
),
)


@pytest.mark.parametrize("db_engine", [True], indirect=True)
def test_get_deployments(db_engine):
with create_session(db_engine) as session:
Expand Down

0 comments on commit d3e60ea

Please sign in to comment.