Skip to content
This repository was archived by the owner on Jan 23, 2026. It is now read-only.

Commit ec2ca29

Browse files
committed
Dedup opt_selector
1 parent 10d53b6 commit ec2ca29

3 files changed

Lines changed: 18 additions & 12 deletions

File tree

packages/jumpstarter-cli-client/jumpstarter_cli_client/common.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@
88
UserConfigV1Alpha1,
99
)
1010

11+
opt_selector = click.option(
12+
"-l",
13+
"--selector",
14+
help="Selector (label query) to filter on, supports '=', '==', and '!=' (e.g. -l key1=value1,key2=value2)."
15+
" Matching objects must satisfy all of the specified label constraints.",
16+
)
17+
1118
opt_selector_simple = click.option(
1219
"-l",
1320
"--selector",

packages/jumpstarter-cli-client/jumpstarter_cli_client/delete.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from jumpstarter_cli_common import OutputMode, OutputType, opt_output_name_only
33
from jumpstarter_cli_common.exceptions import handle_exceptions
44

5-
from .common import opt_config
5+
from .common import opt_config, opt_selector
66

77

88
@click.group()
@@ -15,10 +15,11 @@ def delete():
1515
@delete.command(name="leases")
1616
@opt_config
1717
@click.argument("name", required=False)
18+
@opt_selector
1819
@click.option("--all", "all", is_flag=True)
1920
@opt_output_name_only
2021
@handle_exceptions
21-
def delete_leases(config, name: str, all: bool, output: OutputType):
22+
def delete_leases(config, name: str, selector: str | None, all: bool, output: OutputType):
2223
"""
2324
Delete leases
2425
"""
@@ -27,13 +28,18 @@ def delete_leases(config, name: str, all: bool, output: OutputType):
2728

2829
if name is not None:
2930
names.append(name)
31+
elif selector:
32+
leases = config.list_leases(filter=selector)
33+
for lease in leases.leases:
34+
if lease.client == config.metadata.name:
35+
names.append(lease.name)
3036
elif all:
31-
leases = config.list_leases(filter="")
37+
leases = config.list_leases(filter=None)
3238
for lease in leases.leases:
3339
if lease.client == config.metadata.name:
3440
names.append(lease.name)
3541
else:
36-
raise click.ClickException("One of NAME or --all must be specified")
42+
raise click.ClickException("One of NAME, --selector or --all must be specified")
3743

3844
for name in names:
3945
config.delete_lease(name=name)

packages/jumpstarter-cli-client/jumpstarter_cli_client/get.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,7 @@
22
from jumpstarter_cli_common import OutputMode, OutputType, make_table, opt_output_all
33
from jumpstarter_cli_common.exceptions import handle_exceptions
44

5-
from .common import opt_config
6-
7-
opt_selector = click.option(
8-
"-l",
9-
"--selector",
10-
help="Selector (label query) to filter on, supports '=', '==', and '!=' (e.g. -l key1=value1,key2=value2)."
11-
" Matching objects must satisfy all of the specified label constraints.",
12-
)
5+
from .common import opt_config, opt_selector
136

147

158
@click.group()

0 commit comments

Comments
 (0)