summaryrefslogtreecommitdiff
path: root/openstackclient/network/v2/network.py
diff options
context:
space:
mode:
authorHa Van Tu <tuhv@vn.fujitsu.com>2016-08-18 15:07:47 +0700
committerHa Van Tu <tuhv@vn.fujitsu.com>2016-09-22 09:33:48 +0700
commit9c473f475d2bb7adadc65a7525b93db84f10bef9 (patch)
tree70e190b9b66e1068e5656a6dbf9cd172b93b7ce8 /openstackclient/network/v2/network.py
parent5ec435e706d137afb714cfd5c5ddbd40d8107a9e (diff)
downloadpython-openstackclient-9c473f475d2bb7adadc65a7525b93db84f10bef9.tar.gz
Add filtering options to os network list command
This patch adds the following filtering options: '--name', '--internal', '--share' and '--no-share', '--enable' and '--disable', '--project' and '--project-domain', '--status'. Change-Id: I7e9dd372ee572c6ee8cdba7fac3182f9dc0a137b Partially-Implements: blueprint network-commands-options Closes-Bug: #1578819
Diffstat (limited to 'openstackclient/network/v2/network.py')
-rw-r--r--openstackclient/network/v2/network.py83
1 files changed, 77 insertions, 6 deletions
diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py
index ccc02fd8..6529f869 100644
--- a/openstackclient/network/v2/network.py
+++ b/openstackclient/network/v2/network.py
@@ -295,21 +295,66 @@ class ListNetwork(common.NetworkAndComputeLister):
"""List networks"""
def update_parser_common(self, parser):
- parser.add_argument(
+ router_ext_group = parser.add_mutually_exclusive_group()
+ router_ext_group.add_argument(
'--external',
action='store_true',
- default=False,
help=_("List external networks")
)
+ router_ext_group.add_argument(
+ '--internal',
+ action='store_true',
+ help=_("List internal networks")
+ )
parser.add_argument(
'--long',
action='store_true',
- default=False,
help=_("List additional fields in output")
)
+ parser.add_argument(
+ '--name',
+ metavar='<name>',
+ help=_("List networks according to their name")
+ )
+ admin_state_group = parser.add_mutually_exclusive_group()
+ admin_state_group.add_argument(
+ '--enable',
+ action='store_true',
+ help=_("List enabled networks")
+ )
+ admin_state_group.add_argument(
+ '--disable',
+ action='store_true',
+ help=_("List disabled networks")
+ )
+ parser.add_argument(
+ '--project',
+ metavar='<project>',
+ help=_("List networks 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 networks shared between projects")
+ )
+ shared_group.add_argument(
+ '--no-share',
+ action='store_true',
+ help=_("List networks not shared between projects")
+ )
+ parser.add_argument(
+ '--status',
+ metavar='<status>',
+ choices=['ACTIVE', 'BUILD', 'DOWN', 'ERROR'],
+ help=_("List networks according to their status "
+ "('ACTIVE', 'BUILD', 'DOWN', 'ERROR')")
+ )
return parser
def take_action_network(self, client, parsed_args):
+ identity_client = self.app.client_manager.identity
if parsed_args.long:
columns = (
'id',
@@ -347,10 +392,36 @@ class ListNetwork(common.NetworkAndComputeLister):
'Subnets',
)
+ args = {}
+
if parsed_args.external:
- args = {'router:external': True}
- else:
- args = {}
+ args['router:external'] = True
+ elif parsed_args.internal:
+ args['router:external'] = False
+
+ if parsed_args.name is not None:
+ args['name'] = parsed_args.name
+
+ if parsed_args.enable:
+ args['admin_state_up'] = True
+ elif parsed_args.disable:
+ args['admin_state_up'] = False
+
+ if parsed_args.project:
+ project = identity_common.find_project(
+ identity_client,
+ parsed_args.project,
+ parsed_args.project_domain,
+ )
+ args['tenant_id'] = project.id
+
+ if parsed_args.share:
+ args['shared'] = True
+ elif parsed_args.no_share:
+ args['shared'] = False
+
+ if parsed_args.status:
+ args['status'] = parsed_args.status
data = client.networks(**args)