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

Commit 918e7d8

Browse files
committed
Cleanup output handling in admin cli
1 parent cbad27f commit 918e7d8

2 files changed

Lines changed: 68 additions & 74 deletions

File tree

packages/jumpstarter-cli-admin/jumpstarter_cli_admin/create.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,11 @@ def create(log_level: Optional[str]):
3838

3939

4040
def print_created_client(client: V1Alpha1Client, output: OutputType):
41-
if output == OutputMode.JSON:
42-
click.echo(client.dump_json())
43-
elif output == OutputMode.YAML:
44-
click.echo(client.dump_yaml())
45-
elif output == OutputMode.NAME:
46-
click.echo(f"client.jumpstarter.dev/{client.metadata.name}")
41+
match output:
42+
case OutputMode.JSON | OutputMode.YAML:
43+
click.echo(client.dump(output))
44+
case OutputMode.NAME:
45+
click.echo(f"client.jumpstarter.dev/{client.metadata.name}")
4746

4847

4948
@create.command("client")
@@ -127,12 +126,11 @@ async def create_client(
127126

128127

129128
def print_created_exporter(exporter: V1Alpha1Exporter, output: OutputType):
130-
if output == OutputMode.JSON:
131-
click.echo(exporter.dump_json())
132-
elif output == OutputMode.YAML:
133-
click.echo(exporter.dump_yaml())
134-
elif output == OutputMode.NAME:
135-
click.echo(f"exporter.jumpstarter.dev/{exporter.metadata.name}")
129+
match output:
130+
case OutputMode.JSON | OutputMode.YAML:
131+
click.echo(exporter.dump(output))
132+
case OutputMode.NAME:
133+
click.echo(f"exporter.jumpstarter.dev/{exporter.metadata.name}")
136134

137135

138136
@create.command("exporter")

packages/jumpstarter-cli-admin/jumpstarter_cli_admin/print.py

Lines changed: 58 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,26 @@ def make_client_row(client: V1Alpha1Client):
2424

2525

2626
def print_client(client: V1Alpha1Client, output: OutputType):
27-
if output == OutputMode.JSON:
28-
click.echo(client.dump_json())
29-
elif output == OutputMode.YAML:
30-
click.echo(client.dump_yaml())
31-
elif output == OutputMode.NAME:
32-
click.echo(f"client.jumpstarter.dev/{client.metadata.name}")
33-
else:
34-
click.echo(make_table(CLIENT_COLUMNS, [make_client_row(client)]))
27+
match output:
28+
case OutputMode.JSON | OutputMode.YAML:
29+
click.echo(client.dump(output))
30+
case OutputMode.NAME:
31+
click.echo(f"client.jumpstarter.dev/{client.metadata.name}")
32+
case _:
33+
click.echo(make_table(CLIENT_COLUMNS, [make_client_row(client)]))
3534

3635

3736
def print_clients(clients: V1Alpha1List[V1Alpha1Client], namespace: str, output: OutputType):
38-
if output == OutputMode.JSON:
39-
click.echo(clients.dump_json())
40-
elif output == OutputMode.YAML:
41-
click.echo(clients.dump_yaml())
42-
elif output == OutputMode.NAME:
43-
for item in clients.items:
44-
click.echo(f"client.jumpstarter.dev/{item.metadata.name}")
45-
elif len(clients.items) == 0:
46-
raise click.ClickException(f'No resources found in "{namespace}" namespace')
47-
else:
48-
click.echo(make_table(CLIENT_COLUMNS, list(map(make_client_row, clients.items))))
37+
match output:
38+
case OutputMode.JSON | OutputMode.YAML:
39+
click.echo(clients.dump(output))
40+
case OutputMode.NAME:
41+
for item in clients.items:
42+
click.echo(f"client.jumpstarter.dev/{item.metadata.name}")
43+
case _:
44+
if len(clients.items) == 0:
45+
raise click.ClickException(f'No resources found in "{namespace}" namespace')
46+
click.echo(make_table(CLIENT_COLUMNS, list(map(make_client_row, clients.items))))
4947

5048

5149
EXPORTER_COLUMNS = ["NAME", "ENDPOINT", "DEVICES", "AGE"]
@@ -85,33 +83,33 @@ def get_device_rows(exporters: list[V1Alpha1Exporter]):
8583

8684

8785
def print_exporter(exporter: V1Alpha1Exporter, devices: bool, output: OutputType):
88-
if output == OutputMode.JSON:
89-
click.echo(exporter.dump_json())
90-
elif output == OutputMode.YAML:
91-
click.echo(exporter.dump_yaml())
92-
elif output == OutputMode.NAME:
93-
click.echo(f"exporter.jumpstarter.dev/{exporter.metadata.name}")
94-
elif devices:
95-
# Print the devices for the exporter
96-
click.echo(make_table(DEVICE_COLUMNS, get_device_rows([exporter])))
97-
else:
98-
click.echo(make_table(EXPORTER_COLUMNS, [make_exporter_row(exporter)]))
86+
match output:
87+
case OutputMode.JSON | OutputMode.YAML:
88+
click.echo(exporter.dump(output))
89+
case OutputMode.NAME:
90+
click.echo(f"exporter.jumpstarter.dev/{exporter.metadata.name}")
91+
case _:
92+
if devices:
93+
# Print the devices for the exporter
94+
click.echo(make_table(DEVICE_COLUMNS, get_device_rows([exporter])))
95+
else:
96+
click.echo(make_table(EXPORTER_COLUMNS, [make_exporter_row(exporter)]))
9997

10098

10199
def print_exporters(exporters: V1Alpha1List[V1Alpha1Exporter], namespace: str, devices: bool, output: OutputType):
102-
if output == OutputMode.JSON:
103-
click.echo(exporters.dump_json())
104-
elif output == OutputMode.YAML:
105-
click.echo(exporters.dump_yaml())
106-
elif output == OutputMode.NAME:
107-
for item in exporters.items:
108-
click.echo(f"exporter.jumpstarter.dev/{item.metadata.name}")
109-
elif len(exporters.items) == 0:
110-
raise click.ClickException(f'No resources found in "{namespace}" namespace')
111-
elif devices:
112-
click.echo(make_table(DEVICE_COLUMNS, get_device_rows(exporters.items)))
113-
else:
114-
click.echo(make_table(EXPORTER_COLUMNS, list(map(make_exporter_row, exporters.items))))
100+
match output:
101+
case OutputMode.JSON | OutputMode.YAML:
102+
click.echo(exporters.dump(output))
103+
case OutputMode.NAME:
104+
for item in exporters.items:
105+
click.echo(f"exporter.jumpstarter.dev/{item.metadata.name}")
106+
case _:
107+
if len(exporters.items) == 0:
108+
raise click.ClickException(f'No resources found in "{namespace}" namespace')
109+
if devices:
110+
click.echo(make_table(DEVICE_COLUMNS, get_device_rows(exporters.items)))
111+
else:
112+
click.echo(make_table(EXPORTER_COLUMNS, list(map(make_exporter_row, exporters.items))))
115113

116114

117115
LEASE_COLUMNS = ["NAME", "CLIENT", "SELECTOR", "EXPORTER", "STATUS", "REASON", "BEGIN", "END", "DURATION", "AGE"]
@@ -154,25 +152,23 @@ def make_lease_row(lease: V1Alpha1Lease):
154152

155153

156154
def print_lease(lease: V1Alpha1Lease, output: OutputType):
157-
if output == OutputMode.JSON:
158-
click.echo(lease.dump_json())
159-
elif output == OutputMode.YAML:
160-
click.echo(lease.dump_yaml())
161-
elif output == OutputMode.NAME:
162-
click.echo(f"lease.jumpstarter.dev/{lease.metadata.name}")
163-
else:
164-
click.echo(make_table(LEASE_COLUMNS, [make_lease_row(lease)]))
155+
match output:
156+
case OutputMode.JSON | OutputMode.YAML:
157+
click.echo(lease.dump(output))
158+
case OutputMode.NAME:
159+
click.echo(f"lease.jumpstarter.dev/{lease.metadata.name}")
160+
case _:
161+
click.echo(make_table(LEASE_COLUMNS, [make_lease_row(lease)]))
165162

166163

167164
def print_leases(leases: V1Alpha1List[V1Alpha1Lease], namespace: str, output: OutputType):
168-
if output == OutputMode.JSON:
169-
click.echo(leases.dump_json())
170-
elif output == OutputMode.YAML:
171-
click.echo(leases.dump_yaml())
172-
elif output == OutputMode.NAME:
173-
for item in leases.items:
174-
click.echo(f"lease.jumpstarter.dev/{item.metadata.name}")
175-
elif len(leases.items) == 0:
176-
raise click.ClickException(f'No resources found in "{namespace}" namespace')
177-
else:
178-
click.echo(make_table(LEASE_COLUMNS, list(map(make_lease_row, leases.items))))
165+
match output:
166+
case OutputMode.JSON | OutputMode.YAML:
167+
click.echo(leases.dump(output))
168+
case OutputMode.NAME:
169+
for item in leases.items:
170+
click.echo(f"lease.jumpstarter.dev/{item.metadata.name}")
171+
case _:
172+
if len(leases.items) == 0:
173+
raise click.ClickException(f'No resources found in "{namespace}" namespace')
174+
click.echo(make_table(LEASE_COLUMNS, list(map(make_lease_row, leases.items))))

0 commit comments

Comments
 (0)