diff options
| author | Takashi Kajinami <tkajinam@redhat.com> | 2019-08-19 11:13:14 +0900 |
|---|---|---|
| committer | Takashi Kajinami <tkajinam@redhat.com> | 2019-09-02 09:05:37 +0900 |
| commit | 7c1b6a799e0ac6fea511a2cf1e97aebb2f94e0d6 (patch) | |
| tree | f422fc82faedf06539998a7dcf774ea6be1b1809 /openstackclient | |
| parent | 6f60f833e87979a1fca066c352dbaf9bb9fd852d (diff) | |
| download | python-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.py | 10 | ||||
| -rw-r--r-- | openstackclient/tests/unit/identity/v3/test_project.py | 22 |
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 |
