From 8ddd00a2d5d7dc84f3c105ba71c1fc24e106c187 Mon Sep 17 00:00:00 2001 From: George Margaritis Date: Tue, 4 Jun 2024 17:49:45 +0300 Subject: [PATCH] feat: add destroy option in setups command --- cycleops/client.py | 7 +++++++ cycleops/setups.py | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/cycleops/client.py b/cycleops/client.py index 60e011a..712cc3f 100644 --- a/cycleops/client.py +++ b/cycleops/client.py @@ -154,6 +154,13 @@ def deploy(self, setup_id: int) -> Optional[Dict[str, Any]]: jobs_client = JobClient(cycleops_client) return jobs_client.create(description=description, type=type, setup=setup_id) + def destroy(self, setup_id: int) -> Optional[Dict[str, Any]]: + description: str = f"Destroying setup: {setup_id}" + type: str = "Destruction" + + jobs_client = JobClient(cycleops_client) + return jobs_client.create(description=description, type=type, setup=setup_id) + class UnitClient(SubClient): """ diff --git a/cycleops/setups.py b/cycleops/setups.py index c5fe4e9..a455074 100644 --- a/cycleops/setups.py +++ b/cycleops/setups.py @@ -208,6 +208,26 @@ def deploy( raise typer.Abort() +@app.command() +def destroy( + setup_identifier: str = typer.Argument( + ..., help="The ID or name of the setup. Names take precedence." + ), +) -> None: + """ + Deploy the setup with the specified given ID or name. + """ + + try: + setup = get_setup(setup_identifier) + 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() + + def get_setup(setup_identifier: str) -> Optional[Dict[str, Any]]: """ Retrieves a Setup with either a name or ID. Names take precedence.