Skip to content

Commit bbe6f7a

Browse files
[ContainerApp] adding --kind filter for az containerapp list (#9536)
1 parent 55eaba6 commit bbe6f7a

9 files changed

Lines changed: 8938 additions & 3 deletions

File tree

src/containerapp/HISTORY.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ upcoming
66
++++++
77
* 'az containerapp function invocations': Update application insights query
88
* 'az containerapp function keys': Update minimum replica check
9+
* 'az containerapp list': Add `--kind` parameter to filter container apps by kind
910

1011
1.3.0b1
1112
++++++

src/containerapp/azext_containerapp/_help.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,6 +1112,9 @@
11121112
- name: List container apps by environment type.
11131113
text: |
11141114
az containerapp list --environment-type connected
1115+
- name: List Azure Functions on Container Apps only.
1116+
text: |
1117+
az containerapp list --kind functionapp
11151118
"""
11161119

11171120
# Connected Environment Commands

src/containerapp/azext_containerapp/_params.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,9 @@ def load_arguments(self, _):
337337
c.argument('managed_env', validator=validate_env_name_or_id, options_list=['--environment'], help="Name or resource ID of the container app's environment.")
338338
c.argument('environment_type', arg_type=get_enum_type(["managed", "connected"]), help="Type of environment.", is_preview=True)
339339

340+
with self.argument_context('containerapp list') as c:
341+
c.argument('kind', arg_type=get_enum_type(['functionapp', 'logicapp']), help="Filter by kind. Use 'functionapp' to list only Azure Functions on Container Apps.", is_preview=True)
342+
340343
with self.argument_context('containerapp connected-env') as c:
341344
c.argument('name', name_type, help='Name of the Container Apps connected environment.')
342345
c.argument('resource_group_name', arg_type=resource_group_name_type)

src/containerapp/azext_containerapp/_transformers.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,3 +300,18 @@ def transform_function_keys_list(result):
300300
return table
301301

302302
return []
303+
304+
305+
def transform_containerapp_list_output_with_kind(apps):
306+
"""Transform containerapp list output to include the 'kind' field."""
307+
result = []
308+
for app in apps:
309+
props = ['name', 'location', 'resourceGroup', 'provisioningState']
310+
item = {k: app[k] for k in app if k in props}
311+
item['kind'] = app.get('kind', None)
312+
try:
313+
item['fqdn'] = app['properties']['configuration']['ingress']['fqdn']
314+
except: # pylint: disable=bare-except
315+
item['fqdn'] = None
316+
result.append(item)
317+
return result

src/containerapp/azext_containerapp/commands.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66
# pylint: disable=line-too-long, too-many-statements, bare-except
77
# from azure.cli.core.commands import CliCommandType
88
# from azure.mgmt.core.tools import is_valid_resource_id, parse_resource_id
9-
from azure.cli.command_modules.containerapp._transformers import (transform_containerapp_output, transform_containerapp_list_output)
9+
from azure.cli.command_modules.containerapp._transformers import transform_containerapp_output
1010
from azext_containerapp._client_factory import ex_handler_factory
1111
from ._transformers import (transform_sensitive_values,
12+
transform_containerapp_list_output_with_kind,
1213
transform_telemetry_data_dog_values,
1314
transform_telemetry_app_insights_values,
1415
transform_telemetry_otlp_values,
@@ -25,7 +26,7 @@
2526
def load_command_table(self, args):
2627
with self.command_group('containerapp') as g:
2728
g.custom_show_command('show', 'show_containerapp', table_transformer=transform_containerapp_output)
28-
g.custom_command('list', 'list_containerapp', table_transformer=transform_containerapp_list_output)
29+
g.custom_command('list', 'list_containerapp', table_transformer=transform_containerapp_list_output_with_kind)
2930
g.custom_command('create', 'create_containerapp', supports_no_wait=True, exception_handler=ex_handler_factory(), table_transformer=transform_containerapp_output, transform=transform_sensitive_values)
3031
g.custom_command('update', 'update_containerapp', supports_no_wait=True, exception_handler=ex_handler_factory(), table_transformer=transform_containerapp_output, transform=transform_sensitive_values)
3132
g.custom_command('delete', 'delete_containerapp', supports_no_wait=True, confirmation=True, exception_handler=ex_handler_factory())

src/containerapp/azext_containerapp/containerapp_decorator.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1787,8 +1787,13 @@ def list(self):
17871787
containerapps = [c for c in containerapps if CONNECTED_ENVIRONMENT_RESOURCE_TYPE in c["properties"]["environmentId"]]
17881788
if self.get_argument_environment_type() == MANAGED_ENVIRONMENT_TYPE:
17891789
containerapps = [c for c in containerapps if MANAGED_ENVIRONMENT_RESOURCE_TYPE in c["properties"]["environmentId"]]
1790+
if self.get_argument_kind():
1791+
containerapps = [c for c in containerapps if c.get("kind") == self.get_argument_kind()]
17901792
return containerapps
17911793

1794+
def get_argument_kind(self):
1795+
return self.get_param("kind")
1796+
17921797
def get_environment_client(self):
17931798
env = self.get_argument_managed_env()
17941799

src/containerapp/azext_containerapp/custom.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -705,7 +705,7 @@ def show_containerapp(cmd, name, resource_group_name, show_secrets=False):
705705
return containerapp_base_decorator.show()
706706

707707

708-
def list_containerapp(cmd, resource_group_name=None, managed_env=None, environment_type="all"):
708+
def list_containerapp(cmd, resource_group_name=None, managed_env=None, environment_type="all", kind=None):
709709
raw_parameters = locals()
710710
containerapp_list_decorator = ContainerAppPreviewListDecorator(
711711
cmd=cmd,

0 commit comments

Comments
 (0)