summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorVishakha Agarwal <agarwalvishakha18@gmail.com>2020-07-21 18:24:58 +0530
committerVishakha Agarwal <agarwalvishakha18@gmail.com>2020-07-21 18:24:58 +0530
commit8628e52de7412e57e13238ad1ba7113deb6a2e1b (patch)
treef760e0f853f14d73debf69b68105da1d381b9003 /openstackclient
parent82ebddca006d1dc61855fdd34b0616222039ea58 (diff)
downloadpython-openstackclient-8628e52de7412e57e13238ad1ba7113deb6a2e1b.tar.gz
Add name and enabled param in ListDomain parser
when doing openstack domain list --name xyz_id, and openstack domain list --enabled CLI raising error unrecognized arguments, whereas in api-ref document [1], user can pass name and enabled as optional query param. This addresses the above issue, by adding param --name and --enabled in parser of ListDomain. [1]https://docs.openstack.org/api-ref/identity/v3/?expanded=list-domains-detail#list-domains Change-Id: I3cdb511d3c7059ddfb802ca025188d8976c9302c
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/identity/v3/domain.py23
-rw-r--r--openstackclient/tests/unit/identity/v3/test_domain.py55
2 files changed, 77 insertions, 1 deletions
diff --git a/openstackclient/identity/v3/domain.py b/openstackclient/identity/v3/domain.py
index e33fce05..e0bd1020 100644
--- a/openstackclient/identity/v3/domain.py
+++ b/openstackclient/identity/v3/domain.py
@@ -126,9 +126,30 @@ class DeleteDomain(command.Command):
class ListDomain(command.Lister):
_description = _("List domains")
+ def get_parser(self, prog_name):
+ parser = super(ListDomain, self).get_parser(prog_name)
+ parser.add_argument(
+ '--name',
+ metavar='<name>',
+ help=_('The domain name'),
+ )
+ parser.add_argument(
+ '--enabled',
+ dest='enabled',
+ action='store_true',
+ help=_('The domains that are enabled will be returned'),
+ )
+ return parser
+
def take_action(self, parsed_args):
+ kwargs = {}
+ if parsed_args.name:
+ kwargs['name'] = parsed_args.name
+ if parsed_args.enabled:
+ kwargs['enabled'] = True
+
columns = ('ID', 'Name', 'Enabled', 'Description')
- data = self.app.client_manager.identity.domains.list()
+ data = self.app.client_manager.identity.domains.list(**kwargs)
return (columns,
(utils.get_item_properties(
s, columns,
diff --git a/openstackclient/tests/unit/identity/v3/test_domain.py b/openstackclient/tests/unit/identity/v3/test_domain.py
index 46f389e8..c39f1bd3 100644
--- a/openstackclient/tests/unit/identity/v3/test_domain.py
+++ b/openstackclient/tests/unit/identity/v3/test_domain.py
@@ -293,6 +293,61 @@ class TestDomainList(TestDomain):
), )
self.assertEqual(datalist, tuple(data))
+ def test_domain_list_with_option_name(self):
+ arglist = ['--name',
+ self.domain.name]
+ verifylist = [
+ ('name', self.domain.name)
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # In base command class Lister in cliff, abstract method take_action()
+ # returns a tuple containing the column names and an iterable
+ # containing the data to be listed.
+ columns, data = self.cmd.take_action(parsed_args)
+
+ kwargs = {
+ 'name': self.domain.name
+ }
+ self.domains_mock.list.assert_called_with(**kwargs)
+
+ collist = ('ID', 'Name', 'Enabled', 'Description')
+ self.assertEqual(collist, columns)
+ datalist = ((
+ self.domain.id,
+ self.domain.name,
+ True,
+ self.domain.description,
+ ), )
+ self.assertEqual(datalist, tuple(data))
+
+ def test_domain_list_with_option_enabled(self):
+ arglist = ['--enabled']
+ verifylist = [
+ ('enabled', True)
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # In base command class Lister in cliff, abstract method take_action()
+ # returns a tuple containing the column names and an iterable
+ # containing the data to be listed.
+ columns, data = self.cmd.take_action(parsed_args)
+
+ kwargs = {
+ 'enabled': True
+ }
+ self.domains_mock.list.assert_called_with(**kwargs)
+
+ collist = ('ID', 'Name', 'Enabled', 'Description')
+ self.assertEqual(collist, columns)
+ datalist = ((
+ self.domain.id,
+ self.domain.name,
+ True,
+ self.domain.description,
+ ), )
+ self.assertEqual(datalist, tuple(data))
+
class TestDomainSet(TestDomain):