summaryrefslogtreecommitdiff
path: root/openstackclient/network
diff options
context:
space:
mode:
authorYan Xing'an <yanxingan@cmss.chinamobile.com>2016-10-23 01:40:20 -0700
committerHuanxuan Ao <huanxuan.ao@easystack.cn>2016-12-18 19:46:11 +0800
commitd12aa86f7c4cadb423553d607ae4078f2cb8a962 (patch)
tree871a42311e677c8b052d4c6a48f0b92ba387dc67 /openstackclient/network
parent5bc2cf231d756331325bb520d1e6f28b407c493e (diff)
downloadpython-openstackclient-d12aa86f7c4cadb423553d607ae4078f2cb8a962.tar.gz
Add filtering options to the address scope list command
Add --name, --ip-version, --project, --project-domain, --share, --no-share options to the address scope list command. Change-Id: I8ece8da473d07dfc21dfb5b17de47624241f0142 Closes-Bug: #1636046 Partially-Implements: blueprint network-commands-options
Diffstat (limited to 'openstackclient/network')
-rw-r--r--openstackclient/network/v2/address_scope.py61
1 files changed, 60 insertions, 1 deletions
diff --git a/openstackclient/network/v2/address_scope.py b/openstackclient/network/v2/address_scope.py
index 0d8f80d0..9f77aed6 100644
--- a/openstackclient/network/v2/address_scope.py
+++ b/openstackclient/network/v2/address_scope.py
@@ -140,9 +140,48 @@ class DeleteAddressScope(command.Command):
raise exceptions.CommandError(msg)
+# TODO(yanxing'an): Use the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class ListAddressScope(command.Lister):
_description = _("List address scopes")
+ def get_parser(self, prog_name):
+ parser = super(ListAddressScope, self).get_parser(prog_name)
+
+ parser.add_argument(
+ '--name',
+ metavar='<name>',
+ help=_("List only address scopes of given name in output")
+ )
+ parser.add_argument(
+ '--ip-version',
+ type=int,
+ choices=[4, 6],
+ metavar='<ip-version>',
+ dest='ip_version',
+ help=_("List address scopes of given IP version networks (4 or 6)")
+ )
+ parser.add_argument(
+ '--project',
+ metavar="<project>",
+ help=_("List address scopes according to their project "
+ "(name or ID)")
+ )
+ identity_common.add_project_domain_option_to_parser(parser)
+
+ shared_group = parser.add_mutually_exclusive_group()
+ shared_group.add_argument(
+ '--share',
+ action='store_true',
+ help=_("List address scopes shared between projects")
+ )
+ shared_group.add_argument(
+ '--no-share',
+ action='store_true',
+ help=_("List address scopes not shared between projects")
+ )
+ return parser
+
def take_action(self, parsed_args):
client = self.app.client_manager.network
columns = (
@@ -159,7 +198,27 @@ class ListAddressScope(command.Lister):
'Shared',
'Project',
)
- data = client.address_scopes()
+ attrs = {}
+ if parsed_args.name:
+ attrs['name'] = parsed_args.name
+ if parsed_args.ip_version:
+ attrs['ip_version'] = parsed_args.ip_version
+ if parsed_args.share:
+ attrs['shared'] = True
+ attrs['is_shared'] = True
+ if parsed_args.no_share:
+ attrs['shared'] = False
+ attrs['is_shared'] = False
+ if 'project' in parsed_args and parsed_args.project is not None:
+ identity_client = self.app.client_manager.identity
+ project_id = identity_common.find_project(
+ identity_client,
+ parsed_args.project,
+ parsed_args.project_domain,
+ ).id
+ attrs['tenant_id'] = project_id
+ attrs['project_id'] = project_id
+ data = client.address_scopes(**attrs)
return (column_headers,
(utils.get_item_properties(