summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-07-05 14:39:56 +0000
committerGerrit Code Review <review@openstack.org>2022-07-05 14:39:56 +0000
commitc609d6b97f1bfdaba3dc6178a073332ac7603943 (patch)
tree8d6bb622b5abb7a32ecda4a2b31964cb809fbbe7 /openstackclient
parent93b7e70e571c764935bb5a800f66a92f8fa22cf3 (diff)
parent03c28595d172abecf0ae89b38447c67bcedc92b4 (diff)
downloadpython-openstackclient-c609d6b97f1bfdaba3dc6178a073332ac7603943.tar.gz
Merge "Add parent project filter for listing projects" into stable/train
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/identity/v3/project.py10
-rw-r--r--openstackclient/tests/unit/identity/v3/test_project.py22
2 files changed, 32 insertions, 0 deletions
diff --git a/openstackclient/identity/v3/project.py b/openstackclient/identity/v3/project.py
index 1d6f1810..35d68881 100644
--- a/openstackclient/identity/v3/project.py
+++ b/openstackclient/identity/v3/project.py
@@ -194,6 +194,11 @@ class ListProject(command.Lister):
help=_('Filter projects by <domain> (name or ID)'),
)
parser.add_argument(
+ '--parent',
+ metavar='<parent>',
+ help=_('Filter projects whose parent is <parent> (name or ID)'),
+ )
+ parser.add_argument(
'--user',
metavar='<user>',
help=_('Filter projects by <user> (name or ID)'),
@@ -234,6 +239,11 @@ class ListProject(command.Lister):
parsed_args.domain).id
kwargs['domain'] = domain_id
+ if parsed_args.parent:
+ parent_id = common.find_project(identity_client,
+ parsed_args.parent).id
+ kwargs['parent'] = parent_id
+
if parsed_args.user:
if parsed_args.domain:
user_id = utils.find_resource(identity_client.users,
diff --git a/openstackclient/tests/unit/identity/v3/test_project.py b/openstackclient/tests/unit/identity/v3/test_project.py
index ad081420..ce799c3a 100644
--- a/openstackclient/tests/unit/identity/v3/test_project.py
+++ b/openstackclient/tests/unit/identity/v3/test_project.py
@@ -762,6 +762,28 @@ class TestProjectList(TestProject):
self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, tuple(data))
+ def test_project_list_parent(self):
+ self.parent = identity_fakes.FakeProject.create_one_project()
+ self.project = identity_fakes.FakeProject.create_one_project(
+ attrs={'domain_id': self.domain.id, 'parent_id': self.parent.id})
+
+ arglist = [
+ '--parent', self.parent.id,
+ ]
+ verifylist = [
+ ('parent', self.parent.id),
+ ]
+
+ self.projects_mock.get.return_value = self.parent
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ self.projects_mock.list.assert_called_with(parent=self.parent.id)
+
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.datalist, tuple(data))
+
def test_project_list_sort(self):
self.projects_mock.list.return_value = self.projects