summaryrefslogtreecommitdiff
path: root/openstackclient/identity
diff options
context:
space:
mode:
authorRodrigo Duarte Sousa <rodrigods@lsd.ufcg.edu.br>2015-03-20 17:51:02 -0300
committerRodrigo Duarte Sousa <rodrigods@lsd.ufcg.edu.br>2015-06-09 13:10:22 -0300
commit4fab60634983f9327295cc68edf89824557728f9 (patch)
tree78d4f07a598b721bbc51de123ead5a888815e6ca /openstackclient/identity
parent7cf779004e5e9eab9abee8d8a5bc2db3dfa8bd5d (diff)
downloadpython-openstackclient-4fab60634983f9327295cc68edf89824557728f9.tar.gz
Enables retrieval of project's parents and subtree
Adds the possibility to retrieve a project and list its parents and subtree in the hierarchy. Co-Authored-By: Rodrigo Duarte <rodrigods@lsd.ufcg.edu.br> Co-Authored-By: Samuel de Medeiros Queiroz <samuel@lsd.ufcg.edu.br> Implements: bp hierarchical-multitenancy Change-Id: I874f6faffc8a2db9d99f12cbe0a69c0a30c0d9df
Diffstat (limited to 'openstackclient/identity')
-rw-r--r--openstackclient/identity/v3/project.py37
1 files changed, 30 insertions, 7 deletions
diff --git a/openstackclient/identity/v3/project.py b/openstackclient/identity/v3/project.py
index 48f547f3..8185d65a 100644
--- a/openstackclient/identity/v3/project.py
+++ b/openstackclient/identity/v3/project.py
@@ -323,6 +323,18 @@ class ShowProject(show.ShowOne):
metavar='<domain>',
help='Domain owning <project> (name or ID)',
)
+ parser.add_argument(
+ '--parents',
+ action='store_true',
+ default=False,
+ help='Show the project\'s parents as a list',
+ )
+ parser.add_argument(
+ '--children',
+ action='store_true',
+ default=False,
+ help='Show project\'s subtree (children) as a list',
+ )
return parser
def take_action(self, parsed_args):
@@ -331,14 +343,25 @@ class ShowProject(show.ShowOne):
if parsed_args.domain:
domain = common.find_domain(identity_client, parsed_args.domain)
- project = utils.find_resource(identity_client.projects,
- parsed_args.project,
- domain_id=domain.id)
+ project = utils.find_resource(
+ identity_client.projects,
+ parsed_args.project,
+ domain_id=domain.id,
+ parents_as_list=parsed_args.parents,
+ subtree_as_list=parsed_args.children)
else:
- project = utils.find_resource(identity_client.projects,
- parsed_args.project)
+ project = utils.find_resource(
+ identity_client.projects,
+ parsed_args.project,
+ parents_as_list=parsed_args.parents,
+ subtree_as_list=parsed_args.children)
+
+ if project._info.get('parents'):
+ project._info['parents'] = [str(p['project']['id'])
+ for p in project._info['parents']]
+ if project._info.get('subtree'):
+ project._info['subtree'] = [str(p['project']['id'])
+ for p in project._info['subtree']]
project._info.pop('links')
- # TODO(stevemar): Remove the line below when we support multitenancy
- project._info.pop('parent_id', None)
return zip(*sorted(six.iteritems(project._info)))