Skip to content

Commit 668bc02

Browse files
committed
Add ip version filter to subnet list
This patch will add argument ip-version to command subnet list Change-Id: If7458d4979e53aec7e2633c4f1779c3810f9a3f1 Closes-Bug: #1581179
1 parent e1c5325 commit 668bc02

4 files changed

Lines changed: 39 additions & 1 deletion

File tree

doc/source/command-objects/subnet.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,10 @@ List subnets
147147
148148
List additional fields in output
149149
150+
.. option:: --ip-version {4, 6}
151+
152+
List only subnets of given IP version in output
153+
150154
subnet set
151155
----------
152156

openstackclient/network/v2/subnet.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,10 +296,22 @@ def get_parser(self, prog_name):
296296
default=False,
297297
help=_("List additional fields in output")
298298
)
299+
parser.add_argument(
300+
'--ip-version',
301+
type=int,
302+
choices=[4, 6],
303+
metavar='<ip-version>',
304+
dest='ip_version',
305+
help=_("List only subnets of given IP version in output"
306+
"Allowed values for IP version are 4 and 6."),
307+
)
299308
return parser
300309

301310
def take_action(self, parsed_args):
302-
data = self.app.client_manager.network.subnets()
311+
filters = {}
312+
if parsed_args.ip_version:
313+
filters['ip_version'] = parsed_args.ip_version
314+
data = self.app.client_manager.network.subnets(**filters)
303315

304316
headers = ('ID', 'Name', 'Network', 'Subnet')
305317
columns = ('id', 'name', 'network_id', 'cidr')

openstackclient/tests/network/v2/test_subnet.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,22 @@ def test_subnet_list_long(self):
469469
self.assertEqual(self.columns_long, columns)
470470
self.assertEqual(self.data_long, list(data))
471471

472+
def test_subnet_list_ip_version(self):
473+
arglist = [
474+
'--ip-version', str(4),
475+
]
476+
verifylist = [
477+
('ip_version', 4),
478+
]
479+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
480+
481+
columns, data = self.cmd.take_action(parsed_args)
482+
filters = {'ip_version': 4}
483+
484+
self.network.subnets.assert_called_once_with(**filters)
485+
self.assertEqual(self.columns, columns)
486+
self.assertEqual(self.data, list(data))
487+
472488

473489
class TestSetSubnet(TestSubnet):
474490

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
features:
3+
-
4+
Add the ``--ip-version`` option to the ``subnet list`` command. This
5+
will output subnets based on IP version filter.
6+
[`Bug 1581179 <https://bugs.launchpad.net/python-openstackclient/+bug/1581179>`_]

0 commit comments

Comments
 (0)