Skip to content

Commit f8639fd

Browse files
committed
Implement jmp client lease release
1 parent 8a341a8 commit f8639fd

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

jumpstarter/cli/client.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,27 @@ def lease_list(name):
4141
print(lease)
4242

4343

44+
@lease.command("release")
45+
@click.argument("name", type=str, default="")
46+
@click.option("-l", "--lease", "lease", type=str, default="")
47+
@click.option("--all", "all_leases", is_flag=True)
48+
def lease_release(name, lease, all_leases):
49+
if name:
50+
config = ClientConfigV1Alpha1.load(name)
51+
else:
52+
config = UserConfigV1Alpha1.load_or_create().config.current_client
53+
if not config:
54+
raise ValueError("no client specified")
55+
56+
if all_leases:
57+
for lease in config.list_leases():
58+
config.release_lease(lease)
59+
else:
60+
if not lease:
61+
raise ValueError("no lease specified")
62+
config.release_lease(lease)
63+
64+
4465
@click.command("create", short_help="Create a client configuration.")
4566
@click.argument("name")
4667
@click.option(

jumpstarter/config/client.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,18 @@ def list_leases(self):
6666
with start_blocking_portal() as portal:
6767
return portal.call(self.list_leases_async)
6868

69+
def release_lease(self, name):
70+
with start_blocking_portal() as portal:
71+
portal.call(self.release_lease_async, name)
72+
6973
async def list_leases_async(self):
7074
stub = jumpstarter_pb2_grpc.ControllerServiceStub(await self.channel())
7175
return (await stub.ListLeases(jumpstarter_pb2.ListLeasesRequest())).names
7276

77+
async def release_lease_async(self, name):
78+
stub = jumpstarter_pb2_grpc.ControllerServiceStub(await self.channel())
79+
await stub.ReleaseLease(jumpstarter_pb2.ReleaseLeaseRequest(name=name))
80+
7381
@asynccontextmanager
7482
async def lease_async(self, metadata_filter: MetadataFilter, portal: BlockingPortal):
7583
async with LeaseRequest(

0 commit comments

Comments
 (0)