Skip to content

Commit

Permalink
Merge pull request #38 from Stackmasters/destroy-wait
Browse files Browse the repository at this point in the history
feat: option to wait for `destroy` job
  • Loading branch information
parisk authored Nov 12, 2024
2 parents efd555b + 8012996 commit 2f2e2eb
Showing 1 changed file with 32 additions and 1 deletion.
33 changes: 32 additions & 1 deletion cycleops/setups.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,20 +219,51 @@ def destroy(
setup_identifier: str = typer.Argument(
..., help="The ID or name of the setup. Names take precedence."
),
wait: Optional[bool] = typer.Option(
default=False, help="Wait for the destroy job to complete"
),
) -> None:
"""
Destroy the setup with the specified given ID or name.
"""

try:
setup = get_setup(setup_identifier)
setup_client.destroy(setup["id"])
job = setup_client.destroy(setup["id"])

display_success_message(f"Setup {setup['id']} has been queued for destruction")
except Exception as error:
display_error_message(error)
raise typer.Abort()

destruction_scheduled_message = (
f"Setup {setup_identifier} has been queued for destruction"
)

if not wait:
display_success_message(destruction_scheduled_message)
return

print(f"{destruction_scheduled_message}\n")

try:
display_job_logs(job["id"])
except websockets.exceptions.ConnectionClosed:
job = job_client.retrieve(job["id"])

match job["status"]:
case "Initialized":
display_success_message(
f"Setup {setup_identifier} has been destroyed successfully"
)
case "Failed":
display_error_message(
f"Setup {setup_identifier} could not be destroyed"
)
case _:
print(f"Setup {setup_identifier} is in status {job['status']}")
return


def get_setup(setup_identifier: str) -> Optional[Dict[str, Any]]:
"""
Expand Down

0 comments on commit 2f2e2eb

Please sign in to comment.