summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorTakashi Kajinami <tkajinam@redhat.com>2019-08-19 11:13:14 +0900
committerTakashi Kajinami <tkajinam@redhat.com>2019-09-02 09:05:37 +0900
commit7c1b6a799e0ac6fea511a2cf1e97aebb2f94e0d6 (patch)
treef422fc82faedf06539998a7dcf774ea6be1b1809 /openstackclient
parent6f60f833e87979a1fca066c352dbaf9bb9fd852d (diff)
downloadpython-openstackclient-7c1b6a799e0ac6fea511a2cf1e97aebb2f94e0d6.tar.gz
Add parent project filter for listing projects
This patch introduces a new option --parent into project list, to specify a parent project to filter projects which has the given project as their parent. Depends-on: https://review.opendev.org/#/c/677101 Change-Id: I6725262cf040e0ec6ceca9cf0462ce59224049c6
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 e819a0a8..073fb6df 100644
--- a/openstackclient/identity/v3/project.py
+++ b/openstackclient/identity/v3/project.py
@@ -186,6 +186,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)'),
@@ -226,6 +231,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 266da227..db27fedc 100644
--- a/openstackclient/tests/unit/identity/v3/test_project.py
+++ b/openstackclient/tests/unit/identity/v3/test_project.py
@@ -645,6 +645,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