summaryrefslogtreecommitdiff
path: root/openstackclient/identity/v3
diff options
context:
space:
mode:
authorTom Cocozzello <tjcocozz@us.ibm.com>2015-12-09 10:08:16 -0600
committerTom Cocozzello <tjcocozz@us.ibm.com>2016-01-27 18:13:32 +0000
commit3a48989eb02187f384cfbf7bb7cd55502741fc68 (patch)
treee007c0540ff85f8bcf3856f66847509e6e6423fb /openstackclient/identity/v3
parent1f378a06746cbf828cff27c29f9b1d0ddadfcce6 (diff)
downloadpython-openstackclient-3a48989eb02187f384cfbf7bb7cd55502741fc68.tar.gz
Return names in list role assignments
Utilize the new include names functionality added to list role assignments (GET /role_assignments?include_names=True). Which will return the names of the entities instead of their IDs. Change-Id: I6dc03baf61ef9354a8a259a9f17ff47ce1665ce7 Depends-On: I4aa77c08660a0cbd021502155938a46121ca76ef Closes-Bug: #1479569 Implements: blueprint list-assignment-with-names
Diffstat (limited to 'openstackclient/identity/v3')
-rw-r--r--openstackclient/identity/v3/role_assignment.py40
1 files changed, 34 insertions, 6 deletions
diff --git a/openstackclient/identity/v3/role_assignment.py b/openstackclient/identity/v3/role_assignment.py
index 169c6cb9..771afeb2 100644
--- a/openstackclient/identity/v3/role_assignment.py
+++ b/openstackclient/identity/v3/role_assignment.py
@@ -39,6 +39,11 @@ class ListRoleAssignment(lister.Lister):
metavar='<role>',
help='Role to filter (name or ID)',
)
+ parser.add_argument(
+ '--names',
+ action="store_true",
+ help='Display names instead of IDs',
+ )
user_or_group = parser.add_mutually_exclusive_group()
user_or_group.add_argument(
'--user',
@@ -113,6 +118,7 @@ class ListRoleAssignment(lister.Lister):
parsed_args.group_domain,
)
+ include_names = True if parsed_args.names else False
effective = True if parsed_args.effective else False
self.log.debug('take_action(%s)' % parsed_args)
columns = ('Role', 'User', 'Group', 'Project', 'Domain', 'Inherited')
@@ -125,17 +131,26 @@ class ListRoleAssignment(lister.Lister):
project=project,
role=role,
effective=effective,
- os_inherit_extension_inherited_to=inherited_to)
+ os_inherit_extension_inherited_to=inherited_to,
+ include_names=include_names)
data_parsed = []
for assignment in data:
# Removing the extra "scope" layer in the assignment json
scope = assignment.scope
if 'project' in scope:
- setattr(assignment, 'project', scope['project']['id'])
+ if include_names:
+ prj = '@'.join([scope['project']['name'],
+ scope['project']['domain']['name']])
+ setattr(assignment, 'project', prj)
+ else:
+ setattr(assignment, 'project', scope['project']['id'])
assignment.domain = ''
elif 'domain' in scope:
- setattr(assignment, 'domain', scope['domain']['id'])
+ if include_names:
+ setattr(assignment, 'domain', scope['domain']['name'])
+ else:
+ setattr(assignment, 'domain', scope['domain']['id'])
assignment.project = ''
else:
@@ -148,17 +163,30 @@ class ListRoleAssignment(lister.Lister):
del assignment.scope
if hasattr(assignment, 'user'):
- setattr(assignment, 'user', assignment.user['id'])
+ if include_names:
+ usr = '@'.join([assignment.user['name'],
+ assignment.user['domain']['name']])
+ setattr(assignment, 'user', usr)
+ else:
+ setattr(assignment, 'user', assignment.user['id'])
assignment.group = ''
elif hasattr(assignment, 'group'):
- setattr(assignment, 'group', assignment.group['id'])
+ if include_names:
+ grp = '@'.join([assignment.group['name'],
+ assignment.group['domain']['name']])
+ setattr(assignment, 'group', grp)
+ else:
+ setattr(assignment, 'group', assignment.group['id'])
assignment.user = ''
else:
assignment.user = ''
assignment.group = ''
if hasattr(assignment, 'role'):
- setattr(assignment, 'role', assignment.role['id'])
+ if include_names:
+ setattr(assignment, 'role', assignment.role['name'])
+ else:
+ setattr(assignment, 'role', assignment.role['id'])
else:
assignment.role = ''