Skip to content

Commit 9d6e08e

Browse files
committed
fill_role_definition_name
1 parent 919923c commit 9d6e08e

File tree

2 files changed

+19
-16
lines changed

2 files changed

+19
-16
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,9 @@ def load_arguments(self, _):
347347
"principalName property with it. "
348348
"If the logged-in account has no permission or the machine has no network access to query "
349349
"Microsoft Graph, set this flag to false to avoid warning or error.")
350+
c.argument('fill_role_definition_name', arg_type=get_three_state_flag(),
351+
help="Fill roleDefinitionName property in addition to roleDefinitionId. This operation is "
352+
"expensive. If you encounter performance issue, set this flag to false.")
350353

351354
time_help = 'The {} of the query in the format of %Y-%m-%dT%H:%M:%SZ, e.g. 2000-12-31T12:59:59Z. Defaults to {}'
352355
with self.argument_context('role assignment list-changelogs') as c:

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

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ def _create_role_assignment(cli_ctx, role, assignee, resource_group_name=None, s
235235
def list_role_assignments(cmd, assignee=None, role=None, resource_group_name=None,
236236
scope=None, include_inherited=False,
237237
show_all=False, include_groups=False, include_classic_administrators=False,
238-
fill_principal_name=True):
238+
fill_principal_name=True, fill_role_definition_name=True):
239239
'''
240240
:param include_groups: include extra assignments to the groups of which the user is a
241241
member(transitively).
@@ -267,23 +267,23 @@ def list_role_assignments(cmd, assignee=None, role=None, resource_group_name=Non
267267
if not results:
268268
return []
269269

270-
# 1. fill in logic names to get things understandable.
271-
# (it's possible that associated roles and principals were deleted, and we just do nothing.)
272-
# 2. fill in role names
273-
role_defs = list(definitions_client.list(
274-
scope=scope or ('/subscriptions/' + definitions_client._config.subscription_id)))
275-
worker = MultiAPIAdaptor(cmd.cli_ctx)
276-
role_dics = {i.id: worker.get_role_property(i, 'role_name') for i in role_defs}
277-
for i in results:
278-
if not i.get('roleDefinitionName'):
279-
if role_dics.get(worker.get_role_property(i, 'roleDefinitionId')):
280-
worker.set_role_property(i, 'roleDefinitionName',
281-
role_dics[worker.get_role_property(i, 'roleDefinitionId')])
282-
else:
283-
i['roleDefinitionName'] = None # the role definition might have been deleted
270+
# Fill in role definition names
271+
if fill_role_definition_name:
272+
worker = MultiAPIAdaptor(cmd.cli_ctx)
273+
role_defs = list(definitions_client.list(
274+
scope=scope or ('/subscriptions/' + definitions_client._config.subscription_id)))
275+
role_dics = {i.id: worker.get_role_property(i, 'role_name') for i in role_defs}
276+
for i in results:
277+
if not i.get('roleDefinitionName'):
278+
if role_dics.get(worker.get_role_property(i, 'roleDefinitionId')):
279+
worker.set_role_property(i, 'roleDefinitionName',
280+
role_dics[worker.get_role_property(i, 'roleDefinitionId')])
281+
else:
282+
i['roleDefinitionName'] = None # the role definition might have been deleted
284283

285-
# fill in principal names
284+
# Fill in principal names
286285
if fill_principal_name:
286+
worker = MultiAPIAdaptor(cmd.cli_ctx)
287287
principal_ids = set(worker.get_role_property(i, 'principalId')
288288
for i in results if worker.get_role_property(i, 'principalId'))
289289

0 commit comments

Comments
 (0)