From a43f7f918f600f45c31793a5f4c2351e435e299c Mon Sep 17 00:00:00 2001 From: jiasli <4003950+jiasli@users.noreply.github.com> Date: Fri, 27 Dec 2024 17:19:12 +0800 Subject: [PATCH] role_name --- src/azure-cli/azure/cli/command_modules/role/_params.py | 5 ++++- src/azure-cli/azure/cli/command_modules/role/custom.py | 9 +++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/azure-cli/azure/cli/command_modules/role/_params.py b/src/azure-cli/azure/cli/command_modules/role/_params.py index 8f64a6e65d5..c495257dba6 100644 --- a/src/azure-cli/azure/cli/command_modules/role/_params.py +++ b/src/azure-cli/azure/cli/command_modules/role/_params.py @@ -361,4 +361,7 @@ class PrincipalType(str, Enum): c.argument('role_definition_id', options_list=['--name', '-n'], help='the role definition name') c.argument('custom_role_only', arg_type=get_three_state_flag(), help='custom roles only(vs. build-in ones)') c.argument('role_definition', help="json formatted content which defines the new role.") - c.argument('name', arg_type=name_arg_type, completer=get_role_definition_name_completion_list, help="the role's name") + c.argument('name', arg_type=name_arg_type, completer=get_role_definition_name_completion_list, + help="Matches the role definition's name or roleName property.") + c.argument('role_name', + help="Matches the role definition's roleName property.") diff --git a/src/azure-cli/azure/cli/command_modules/role/custom.py b/src/azure-cli/azure/cli/command_modules/role/custom.py index 92f1ebbb6f1..915a3f1e6f6 100644 --- a/src/azure-cli/azure/cli/command_modules/role/custom.py +++ b/src/azure-cli/azure/cli/command_modules/role/custom.py @@ -61,12 +61,13 @@ # pylint: disable=too-many-lines, protected-access -def list_role_definitions(cmd, name=None, resource_group_name=None, scope=None, +def list_role_definitions(cmd, name=None, role_name=None, resource_group_name=None, scope=None, custom_role_only=False): definitions_client = _auth_client_factory(cmd.cli_ctx, scope).role_definitions scope = _build_role_scope(resource_group_name, scope, definitions_client._config.subscription_id) - return _search_role_definitions(cmd.cli_ctx, definitions_client, name, [scope], custom_role_only) + return _search_role_definitions(cmd.cli_ctx, definitions_client, name, [scope], custom_role_only=custom_role_only, + role_name=role_name) def create_role_definition(cmd, role_definition): @@ -137,9 +138,9 @@ def delete_role_definition(cmd, name, resource_group_name=None, scope=None, definitions_client.delete(role_definition_id=r.name, scope=scope) -def _search_role_definitions(cli_ctx, definitions_client, name, scopes, custom_role_only=False): +def _search_role_definitions(cli_ctx, definitions_client, name, scopes, custom_role_only=False, role_name=None): for scope in scopes: - roles = list(definitions_client.list(scope)) + roles = list(definitions_client.list(scope, filter=f"roleName eq '{role_name}'")) worker = MultiAPIAdaptor(cli_ctx) if name: roles = [r for r in roles if r.name == name or worker.get_role_property(r, 'role_name') == name]