summaryrefslogtreecommitdiff
path: root/openstackclient/network
diff options
context:
space:
mode:
authorCao Xuan Hoang <hoangcx@vn.fujitsu.com>2016-08-18 13:15:58 +0700
committerCao Xuan Hoang <hoangcx@vn.fujitsu.com>2016-09-19 16:16:06 +0700
commit1a6ae06ad5e33dd03e4f25ea094e6ae2a15ad874 (patch)
tree84516935b8abba25315cb30408c0079541ba8546 /openstackclient/network
parent7e990ba1e2ae0ecb804287212797ebad84d7b56b (diff)
downloadpython-openstackclient-1a6ae06ad5e33dd03e4f25ea094e6ae2a15ad874.tar.gz
Add filtering options to os subnet pool list command
This patch adds the following filtering options: '--share' and '--no-share', '--default' and '--no-default', '--project' and '--project-domain', '--name', '--address-scope' options to the command. Change-Id: I7ad9ed6842c6b3475ebf316fb5b954c7f5a7d7e3 Closes-Bug: #1613926 Partially-Implements: blueprint network-commands-options
Diffstat (limited to 'openstackclient/network')
-rw-r--r--openstackclient/network/v2/subnet_pool.py103
1 files changed, 72 insertions, 31 deletions
diff --git a/openstackclient/network/v2/subnet_pool.py b/openstackclient/network/v2/subnet_pool.py
index d3fab8ac..6852ca27 100644
--- a/openstackclient/network/v2/subnet_pool.py
+++ b/openstackclient/network/v2/subnet_pool.py
@@ -226,41 +226,82 @@ class ListSubnetPool(command.Lister):
default=False,
help=_("List additional fields in output")
)
+ shared_group = parser.add_mutually_exclusive_group()
+ shared_group.add_argument(
+ '--share',
+ action='store_true',
+ help=_("List subnets shared between projects"),
+ )
+ shared_group.add_argument(
+ '--no-share',
+ action='store_true',
+ help=_("List subnets not shared between projects"),
+ )
+ default_group = parser.add_mutually_exclusive_group()
+ default_group.add_argument(
+ '--default',
+ action='store_true',
+ help=_("List subnets used as the default external subnet pool"),
+ )
+ default_group.add_argument(
+ '--no-default',
+ action='store_true',
+ help=_("List subnets not used as the default external subnet pool")
+ )
+ parser.add_argument(
+ '--project',
+ metavar='<project>',
+ help=_("List subnets according to their project (name or ID)")
+ )
+ identity_common.add_project_domain_option_to_parser(parser)
+ parser.add_argument(
+ '--name',
+ metavar='<name>',
+ help=_("List only subnets of given name in output")
+ )
+ parser.add_argument(
+ '--address-scope',
+ metavar='<address-scope>',
+ help=_("List only subnets of given address scope (name or ID) "
+ "in output")
+ )
return parser
def take_action(self, parsed_args):
- data = self.app.client_manager.network.subnet_pools()
-
+ identity_client = self.app.client_manager.identity
+ network_client = self.app.client_manager.network
+ filters = {}
+ if parsed_args.share:
+ filters['shared'] = True
+ elif parsed_args.no_share:
+ filters['shared'] = False
+ if parsed_args.default:
+ filters['is_default'] = True
+ elif parsed_args.no_default:
+ filters['is_default'] = False
+ if parsed_args.project:
+ project_id = identity_common.find_project(
+ identity_client,
+ parsed_args.project,
+ parsed_args.project_domain,
+ ).id
+ filters['tenant_id'] = project_id
+ if parsed_args.name is not None:
+ filters['name'] = parsed_args.name
+ if parsed_args.address_scope:
+ address_scope = network_client.find_address_scope(
+ parsed_args.address_scope,
+ ignore_missing=False)
+ filters['address_scope_id'] = address_scope.id
+ data = network_client.subnet_pools(**filters)
+
+ headers = ('ID', 'Name', 'Prefixes')
+ columns = ('id', 'name', 'prefixes')
if parsed_args.long:
- headers = (
- 'ID',
- 'Name',
- 'Prefixes',
- 'Default Prefix Length',
- 'Address Scope',
- 'Default Subnet Pool',
- 'Shared',
- )
- columns = (
- 'id',
- 'name',
- 'prefixes',
- 'default_prefixlen',
- 'address_scope_id',
- 'is_default',
- 'shared',
- )
- else:
- headers = (
- 'ID',
- 'Name',
- 'Prefixes',
- )
- columns = (
- 'id',
- 'name',
- 'prefixes',
- )
+ headers += ('Default Prefix Length', 'Address Scope',
+ 'Default Subnet Pool', 'Shared')
+ columns += ('default_prefixlen', 'address_scope_id',
+ 'is_default', 'shared')
return (headers,
(utils.get_item_properties(