From f06ac66c78493dec84f1361a2a57623870968fc5 Mon Sep 17 00:00:00 2001 From: Benny Zlotnik Date: Sat, 25 Jan 2025 20:46:59 +0200 Subject: [PATCH 1/3] cli: restore lease request Signed-off-by: Benny Zlotnik --- .../jumpstarter_cli_client/lease.py | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py b/packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py index 0ec567229..623c1f398 100644 --- a/packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py +++ b/packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py @@ -1,9 +1,11 @@ import asyncclick as click +from jumpstarter_cli_common import AliasedGroup + +from jumpstarter.common import MetadataFilter from jumpstarter.config import ( ClientConfigV1Alpha1, UserConfigV1Alpha1, ) -from jumpstarter_cli_common import AliasedGroup @click.group(cls=AliasedGroup, short_help="") @@ -45,3 +47,42 @@ def lease_release(name, lease, all_leases): if not lease: raise ValueError("no lease specified") config.release_lease(lease) + +@lease.command("request") +@click.option("-l", "--label", "labels", type=(str, str), multiple=True) +@click.argument("name", type=str, default="") +def lease_request(name, labels): + """Request an exporter lease from the jumpstarter controller. + +The result of this command will be a lease ID that can be used to +connect to the remote exporter. + +This is useful for multi-step workflows where you want to hold a lease +for a specific exporter while performing multiple operations, or for +CI environments where one step will request the lease and other steps +will perform operations on the leased exporter. + +Example: + +.. code-block:: bash + + $ JMP_LEASE=$(jmp client lease request -l label match) + $ jmp shell + $$ j --help + $$ exit + $ jmp lease release -l "${JMP_LEASE}" + +""" + try: + if name: + config = ClientConfigV1Alpha1.load(name) + else: + config = UserConfigV1Alpha1.load_or_create().config.current_client + if not config: + raise ValueError("No client specified") + lease = config.request_lease(metadata_filter=MetadataFilter(labels=dict(labels))) + print(lease.name) + except ValueError as e: + raise click.ClickException(str(e)) from e + except Exception as e: + raise e From 335aa6a1eb73a97523721ee112ab6796a6e99343 Mon Sep 17 00:00:00 2001 From: Kirk Brauer Date: Sat, 25 Jan 2025 16:24:02 -0500 Subject: [PATCH 2/3] Fix ruff errors on lease.py --- .../jumpstarter-cli-client/jumpstarter_cli_client/lease.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py b/packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py index 623c1f398..84c591db3 100644 --- a/packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py +++ b/packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py @@ -1,11 +1,10 @@ import asyncclick as click -from jumpstarter_cli_common import AliasedGroup - from jumpstarter.common import MetadataFilter from jumpstarter.config import ( ClientConfigV1Alpha1, UserConfigV1Alpha1, ) +from jumpstarter_cli_common import AliasedGroup @click.group(cls=AliasedGroup, short_help="") From 6206f9410dd539faa5f2debb55058249a64fd7e9 Mon Sep 17 00:00:00 2001 From: Kirk Brauer Date: Sat, 25 Jan 2025 16:35:11 -0500 Subject: [PATCH 3/3] Update packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py b/packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py index 84c591db3..cee750759 100644 --- a/packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py +++ b/packages/jumpstarter-cli-client/jumpstarter_cli_client/lease.py @@ -65,7 +65,7 @@ def lease_request(name, labels): .. code-block:: bash - $ JMP_LEASE=$(jmp client lease request -l label match) + $ JMP_LEASE=$(jmp lease request -l label match) $ jmp shell $$ j --help $$ exit