diff options
| author | Jenkins <jenkins@review.openstack.org> | 2016-09-19 14:14:31 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2016-09-19 14:14:31 +0000 |
| commit | 6d2412b190a6feabe7b56c102e12e8c3a34fa7a9 (patch) | |
| tree | 0baa8c2e272d6f4f75586aa5838ace81a108cc56 /openstackclient/network | |
| parent | e1cdba48f4b65975539fb35ccd0c738508eca21a (diff) | |
| parent | d44782bc089d6f3092cc2ee22ee4a13ea0c40ce9 (diff) | |
| download | python-openstackclient-6d2412b190a6feabe7b56c102e12e8c3a34fa7a9.tar.gz | |
Merge "Add filtering options to os subnet list command"
Diffstat (limited to 'openstackclient/network')
| -rw-r--r-- | openstackclient/network/v2/subnet.py | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/openstackclient/network/v2/subnet.py b/openstackclient/network/v2/subnet.py index f1c7d15d..8a3f229a 100644 --- a/openstackclient/network/v2/subnet.py +++ b/openstackclient/network/v2/subnet.py @@ -381,9 +381,41 @@ class ListSubnet(command.Lister): "Must be a valid device owner value for a network port " "(repeat option to list multiple service types)") ) + parser.add_argument( + '--project', + metavar='<project>', + help=_("List only subnets which belong to a given project " + "(name or ID) in output") + ) + identity_common.add_project_domain_option_to_parser(parser) + parser.add_argument( + '--network', + metavar='<network>', + help=_("List only subnets which belong to a given network " + "(name or ID) in output") + ) + parser.add_argument( + '--gateway', + metavar='<gateway>', + help=_("List only subnets of given gateway IP in output") + ) + parser.add_argument( + '--name', + metavar='<name>', + help=_("List only subnets of given name in output") + ) + parser.add_argument( + '--subnet-range', + metavar='<subnet-range>', + help=_("List only subnets of given subnet range " + "(in CIDR notation) in output " + "e.g.: --subnet-range 10.10.0.0/16") + ) return parser def take_action(self, parsed_args): + identity_client = self.app.client_manager.identity + network_client = self.app.client_manager.network filters = {} if parsed_args.ip_version: filters['ip_version'] = parsed_args.ip_version @@ -393,7 +425,24 @@ class ListSubnet(command.Lister): filters['enable_dhcp'] = False if parsed_args.service_types: filters['service_types'] = parsed_args.service_types - data = self.app.client_manager.network.subnets(**filters) + 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.network: + network_id = network_client.find_network(parsed_args.network, + ignore_missing=False).id + filters['network_id'] = network_id + if parsed_args.gateway: + filters['gateway_ip'] = parsed_args.gateway + if parsed_args.name: + filters['name'] = parsed_args.name + if parsed_args.subnet_range: + filters['cidr'] = parsed_args.subnet_range + data = network_client.subnets(**filters) headers = ('ID', 'Name', 'Network', 'Subnet') columns = ('id', 'name', 'network_id', 'cidr') |
