summaryrefslogtreecommitdiff
path: root/openstackclient/network
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-09-22 12:47:38 +0000
committerGerrit Code Review <review@openstack.org>2016-09-22 12:47:38 +0000
commitbce740d5ffff4e0e6cc4846e8fdc137f67d21e04 (patch)
tree6be27f7e9430d7fe02c4c07408088ff4bffdff8c /openstackclient/network
parent80ce3bee6fef0c3fed0816b8f0a5908cc5999fd3 (diff)
parent9c473f475d2bb7adadc65a7525b93db84f10bef9 (diff)
downloadpython-openstackclient-bce740d5ffff4e0e6cc4846e8fdc137f67d21e04.tar.gz
Merge "Add filtering options to os network list command"
Diffstat (limited to 'openstackclient/network')
-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 31b173e1..dbf1b601 100644
--- a/openstackclient/network/v2/network.py
+++ b/openstackclient/network/v2/network.py
@@ -304,21 +304,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',
@@ -356,10 +401,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)