summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorYi Zhao <zhaoyi@cmss.chinamobile.com>2016-10-31 16:47:30 +0800
committerYi Zhao <zhaoyi@cmss.chinamobile.com>2016-10-31 16:54:08 +0800
commit84beac59948629be9ea065386c5b5bc330d2c609 (patch)
treec1a045f79365106b03e0fd03f071bc6234fab373 /openstackclient
parent8ca1cc637013972491744b8318d30e9256bc4165 (diff)
downloadpython-openstackclient-84beac59948629be9ea065386c5b5bc330d2c609.tar.gz
Add filtering options --name,--enable,--disable to router list
Change-Id: I171b6be4501b02c3df66589c45177200919117db Closes-Bug: #1637945 Partially-Implements: blueprint network-commands-options
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/network/v2/router.py29
-rw-r--r--openstackclient/tests/unit/network/v2/test_router.py52
2 files changed, 80 insertions, 1 deletions
diff --git a/openstackclient/network/v2/router.py b/openstackclient/network/v2/router.py
index 193bf6e9..d96c314a 100644
--- a/openstackclient/network/v2/router.py
+++ b/openstackclient/network/v2/router.py
@@ -261,6 +261,22 @@ class ListRouter(command.Lister):
def get_parser(self, prog_name):
parser = super(ListRouter, self).get_parser(prog_name)
parser.add_argument(
+ '--name',
+ metavar='<name>',
+ help=_("List routers according to their name")
+ )
+ admin_state_group = parser.add_mutually_exclusive_group()
+ admin_state_group.add_argument(
+ '--enable',
+ action='store_true',
+ help=_("List enabled routers")
+ )
+ admin_state_group.add_argument(
+ '--disable',
+ action='store_true',
+ help=_("List disabled routers")
+ )
+ parser.add_argument(
'--long',
action='store_true',
default=False,
@@ -289,6 +305,17 @@ class ListRouter(command.Lister):
'HA',
'Project',
)
+
+ args = {}
+
+ if parsed_args.name is not None:
+ args['name'] = parsed_args.name
+
+ if parsed_args.enable:
+ args['admin_state_up'] = True
+ elif parsed_args.disable:
+ args['admin_state_up'] = False
+
if parsed_args.long:
columns = columns + (
'routes',
@@ -308,7 +335,7 @@ class ListRouter(command.Lister):
'Availability zones',
)
- data = client.routers()
+ data = client.routers(**args)
return (column_headers,
(utils.get_item_properties(
s, columns,
diff --git a/openstackclient/tests/unit/network/v2/test_router.py b/openstackclient/tests/unit/network/v2/test_router.py
index bc448d13..24984e47 100644
--- a/openstackclient/tests/unit/network/v2/test_router.py
+++ b/openstackclient/tests/unit/network/v2/test_router.py
@@ -427,6 +427,58 @@ class TestListRouter(TestRouter):
self.assertEqual(self.columns_long_no_az, columns)
self.assertEqual(self.data_long_no_az, list(data))
+ def test_list_name(self):
+ test_name = "fakename"
+ arglist = [
+ '--name', test_name,
+ ]
+ verifylist = [
+ ('long', False),
+ ('name', test_name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.routers.assert_called_once_with(
+ **{'name': test_name}
+ )
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
+ def test_router_list_enable(self):
+ arglist = [
+ '--enable',
+ ]
+ verifylist = [
+ ('long', False),
+ ('enable', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.routers.assert_called_once_with(
+ **{'admin_state_up': True}
+ )
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
+ def test_router_list_disable(self):
+ arglist = [
+ '--disable',
+ ]
+ verifylist = [
+ ('long', False),
+ ('disable', True)
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.routers.assert_called_once_with(
+ **{'admin_state_up': False}
+ )
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
class TestRemovePortFromRouter(TestRouter):
'''Remove port from a Router '''