Skip to content

Commit 85ba541

Browse files
committed
Support id
1 parent e20c0fa commit 85ba541

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

src/azure-cli/azure/cli/command_modules/role/_help.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -870,6 +870,8 @@
870870
examples:
871871
- name: Show the 'Reader' role definition.
872872
text: az role definition show --scope /subscriptions/00000000-0000-0000-0000-000000000000 --name acdd72a7-3385-48ef-bd42-f606fba81ae7
873+
- name: Show the 'Reader' role definition with its resource ID.
874+
text: az role definition show --id /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7
873875
"""
874876

875877
helps['role definition update'] = """

src/azure-cli/azure/cli/command_modules/role/_params.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,12 @@ class PrincipalType(str, Enum):
370370

371371
with self.argument_context('role definition') as c:
372372
c.argument('role_definition_id', options_list=['--name', '-n'], help='the role definition name')
373+
c.argument('role_id', options_list=['--id'],
374+
help='The fully qualified role definition ID. Use the format, '
375+
'/subscriptions/{guid}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId} '
376+
'for subscription level role definitions, or '
377+
'/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId} '
378+
'for tenant level role definitions.')
373379
c.argument('custom_role_only', arg_type=get_three_state_flag(), help='custom roles only(vs. build-in ones)')
374380
c.argument('role_definition', help="json formatted content which defines the new role.")
375381
c.argument('name', arg_type=name_arg_type, completer=get_role_definition_name_completion_list, help="the role's name")

src/azure-cli/azure/cli/command_modules/role/custom.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,17 @@ def list_role_definitions(cmd, name=None, resource_group_name=None, scope=None,
7171
return _search_role_definitions(cmd.cli_ctx, definitions_client, name, [scope], custom_role_only)
7272

7373

74-
def show_role_definition(cmd, scope, name):
74+
def show_role_definition(cmd, scope=None, name=None, role_id=None):
75+
if not any((scope, name, role_id)):
76+
raise CLIError('Usage error: Provide --scope and --name, or --id')
77+
if not role_id and not (name and scope):
78+
raise CLIError('Usage error: Provide both --scope and --name')
79+
7580
definitions_client = _auth_client_factory(cmd.cli_ctx, scope).role_definitions
81+
# https://learn.microsoft.com/en-us/rest/api/authorization/role-definitions/get-by-id?view=rest-authorization-2022-04-01&tabs=HTTP
82+
if role_id:
83+
return definitions_client.get_by_id(role_id)
84+
# https://learn.microsoft.com/en-us/rest/api/authorization/role-definitions/get?view=rest-authorization-2022-04-01&tabs=HTTP
7685
return definitions_client.get(scope, name)
7786

7887

0 commit comments

Comments
 (0)