summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2021-11-25 17:46:44 +0000
committerGerrit Code Review <review@openstack.org>2021-11-25 17:46:44 +0000
commit6fb71af243a579d0d009dc4aecb28b608d99bae5 (patch)
treead9140b32e420bb8ece60ed708561168c8fa5529 /openstackclient
parent860d6360474b2f215097d1aa4018a57070e44924 (diff)
parente4e9fb594d003ea6c3ec29aab0bccf72ffab6781 (diff)
downloadpython-openstackclient-6fb71af243a579d0d009dc4aecb28b608d99bae5.tar.gz
Merge "Add --subnet-pool to subnet list"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/network/v2/subnet.py10
-rw-r--r--openstackclient/tests/unit/network/v2/test_subnet.py42
2 files changed, 52 insertions, 0 deletions
diff --git a/openstackclient/network/v2/subnet.py b/openstackclient/network/v2/subnet.py
index c07fab41..6645530b 100644
--- a/openstackclient/network/v2/subnet.py
+++ b/openstackclient/network/v2/subnet.py
@@ -489,6 +489,12 @@ class ListSubnet(command.Lister):
"(in CIDR notation) in output "
"e.g.: --subnet-range 10.10.0.0/16")
)
+ parser.add_argument(
+ '--subnet-pool',
+ metavar='<subnet-pool>',
+ help=_("List only subnets which belong to a given subnet pool "
+ "in output (Name or ID)")
+ )
_tag.add_tag_filtering_option_to_parser(parser, _('subnets'))
return parser
@@ -524,6 +530,10 @@ class ListSubnet(command.Lister):
filters['name'] = parsed_args.name
if parsed_args.subnet_range:
filters['cidr'] = parsed_args.subnet_range
+ if parsed_args.subnet_pool:
+ subnetpool_id = network_client.find_subnet_pool(
+ parsed_args.subnet_pool, ignore_missing=False).id
+ filters['subnetpool_id'] = subnetpool_id
_tag.get_tag_filtering_args(parsed_args, filters)
data = network_client.subnets(**filters)
diff --git a/openstackclient/tests/unit/network/v2/test_subnet.py b/openstackclient/tests/unit/network/v2/test_subnet.py
index 5147b64d..84e0f9d0 100644
--- a/openstackclient/tests/unit/network/v2/test_subnet.py
+++ b/openstackclient/tests/unit/network/v2/test_subnet.py
@@ -899,6 +899,48 @@ class TestListSubnet(TestSubnet):
self.assertEqual(self.columns, columns)
self.assertCountEqual(self.data, list(data))
+ def test_subnet_list_subnetpool_by_name(self):
+ subnet_pool = network_fakes.FakeSubnetPool.create_one_subnet_pool()
+ subnet = network_fakes.FakeSubnet.create_one_subnet(
+ {'subnetpool_id': subnet_pool.id})
+ self.network.find_network = mock.Mock(return_value=subnet)
+ self.network.find_subnet_pool = mock.Mock(return_value=subnet_pool)
+ arglist = [
+ '--subnet-pool', subnet_pool.name,
+ ]
+ verifylist = [
+ ('subnet_pool', subnet_pool.name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ filters = {'subnetpool_id': subnet_pool.id}
+
+ self.network.subnets.assert_called_once_with(**filters)
+ self.assertEqual(self.columns, columns)
+ self.assertItemsEqual(self.data, list(data))
+
+ def test_subnet_list_subnetpool_by_id(self):
+ subnet_pool = network_fakes.FakeSubnetPool.create_one_subnet_pool()
+ subnet = network_fakes.FakeSubnet.create_one_subnet(
+ {'subnetpool_id': subnet_pool.id})
+ self.network.find_network = mock.Mock(return_value=subnet)
+ self.network.find_subnet_pool = mock.Mock(return_value=subnet_pool)
+ arglist = [
+ '--subnet-pool', subnet_pool.id,
+ ]
+ verifylist = [
+ ('subnet_pool', subnet_pool.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ filters = {'subnetpool_id': subnet_pool.id}
+
+ self.network.subnets.assert_called_once_with(**filters)
+ self.assertEqual(self.columns, columns)
+ self.assertItemsEqual(self.data, list(data))
+
def test_list_with_tag_options(self):
arglist = [
'--tags', 'red,blue',