Skip to content

Commit 84beac5

Browse files
author
Yi Zhao
committed
Add filtering options --name,--enable,--disable to router list
Change-Id: I171b6be4501b02c3df66589c45177200919117db Closes-Bug: #1637945 Partially-Implements: blueprint network-commands-options
1 parent 8ca1cc6 commit 84beac5

4 files changed

Lines changed: 99 additions & 1 deletion

File tree

doc/source/command-objects/router.rst

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,12 +134,26 @@ List routers
134134
.. code:: bash
135135
136136
os router list
137+
[--name <name>]
138+
[--enable | --disable]
137139
[--long]
138140
139141
.. option:: --long
140142
141143
List additional fields in output
142144
145+
.. option:: --name <name>
146+
147+
List routers according to their name
148+
149+
.. option:: --enable
150+
151+
List enabled routers
152+
153+
.. option:: --disable
154+
155+
List disabled routers
156+
143157
router remove port
144158
------------------
145159

openstackclient/network/v2/router.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,22 @@ class ListRouter(command.Lister):
260260

261261
def get_parser(self, prog_name):
262262
parser = super(ListRouter, self).get_parser(prog_name)
263+
parser.add_argument(
264+
'--name',
265+
metavar='<name>',
266+
help=_("List routers according to their name")
267+
)
268+
admin_state_group = parser.add_mutually_exclusive_group()
269+
admin_state_group.add_argument(
270+
'--enable',
271+
action='store_true',
272+
help=_("List enabled routers")
273+
)
274+
admin_state_group.add_argument(
275+
'--disable',
276+
action='store_true',
277+
help=_("List disabled routers")
278+
)
263279
parser.add_argument(
264280
'--long',
265281
action='store_true',
@@ -289,6 +305,17 @@ def take_action(self, parsed_args):
289305
'HA',
290306
'Project',
291307
)
308+
309+
args = {}
310+
311+
if parsed_args.name is not None:
312+
args['name'] = parsed_args.name
313+
314+
if parsed_args.enable:
315+
args['admin_state_up'] = True
316+
elif parsed_args.disable:
317+
args['admin_state_up'] = False
318+
292319
if parsed_args.long:
293320
columns = columns + (
294321
'routes',
@@ -308,7 +335,7 @@ def take_action(self, parsed_args):
308335
'Availability zones',
309336
)
310337

311-
data = client.routers()
338+
data = client.routers(**args)
312339
return (column_headers,
313340
(utils.get_item_properties(
314341
s, columns,

openstackclient/tests/unit/network/v2/test_router.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,58 @@ def test_router_list_long_no_az(self):
427427
self.assertEqual(self.columns_long_no_az, columns)
428428
self.assertEqual(self.data_long_no_az, list(data))
429429

430+
def test_list_name(self):
431+
test_name = "fakename"
432+
arglist = [
433+
'--name', test_name,
434+
]
435+
verifylist = [
436+
('long', False),
437+
('name', test_name),
438+
]
439+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
440+
columns, data = self.cmd.take_action(parsed_args)
441+
442+
self.network.routers.assert_called_once_with(
443+
**{'name': test_name}
444+
)
445+
self.assertEqual(self.columns, columns)
446+
self.assertEqual(self.data, list(data))
447+
448+
def test_router_list_enable(self):
449+
arglist = [
450+
'--enable',
451+
]
452+
verifylist = [
453+
('long', False),
454+
('enable', True),
455+
]
456+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
457+
columns, data = self.cmd.take_action(parsed_args)
458+
459+
self.network.routers.assert_called_once_with(
460+
**{'admin_state_up': True}
461+
)
462+
self.assertEqual(self.columns, columns)
463+
self.assertEqual(self.data, list(data))
464+
465+
def test_router_list_disable(self):
466+
arglist = [
467+
'--disable',
468+
]
469+
verifylist = [
470+
('long', False),
471+
('disable', True)
472+
]
473+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
474+
columns, data = self.cmd.take_action(parsed_args)
475+
476+
self.network.routers.assert_called_once_with(
477+
**{'admin_state_up': False}
478+
)
479+
self.assertEqual(self.columns, columns)
480+
self.assertEqual(self.data, list(data))
481+
430482

431483
class TestRemovePortFromRouter(TestRouter):
432484
'''Remove port from a Router '''
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
features:
3+
- |
4+
Add ``--name``, ``--enable``, ``--disable`` to ``os router list``
5+
[Bug `1637945 <https://bugs.launchpad.net/bugs/1637945>`_]

0 commit comments

Comments
 (0)