summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorTang Chen <tangchen@cn.fujitsu.com>2015-12-15 17:28:06 +0800
committerTang Chen <tangchen@cn.fujitsu.com>2015-12-17 09:19:40 +0800
commit408dc7b2904f5d60061da07c57cbaeaf1b96c719 (patch)
treea3c77894f31c04f052bb8c653c8160f209a1635e /openstackclient
parent8a805dae0cc0ac3391c970a84b540a85cce24274 (diff)
downloadpython-openstackclient-408dc7b2904f5d60061da07c57cbaeaf1b96c719.tar.gz
Router: Add "router show" command using SDK
This patch adds "router show" command to osc using sdk. Change-Id: Idb0f7f0376926e97f9f70a52ef21511e7ffa9d92 Implements: blueprint neutron-client Partial-bug: #1519503
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/network/v2/router.py23
-rw-r--r--openstackclient/tests/network/v2/test_router.py58
2 files changed, 81 insertions, 0 deletions
diff --git a/openstackclient/network/v2/router.py b/openstackclient/network/v2/router.py
index d084db1f..5ad7ccd2 100644
--- a/openstackclient/network/v2/router.py
+++ b/openstackclient/network/v2/router.py
@@ -273,3 +273,26 @@ class SetRouter(command.Command):
raise exceptions.CommandError(msg)
client.update_router(obj, **attrs)
+
+
+class ShowRouter(show.ShowOne):
+ """Display router details"""
+
+ log = logging.getLogger(__name__ + '.ShowRouter')
+
+ def get_parser(self, prog_name):
+ parser = super(ShowRouter, self).get_parser(prog_name)
+ parser.add_argument(
+ 'router',
+ metavar="<router>",
+ help="Router to display (name or ID)"
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug('take_action(%s)' % parsed_args)
+ client = self.app.client_manager.network
+ obj = client.find_router(parsed_args.router, ignore_missing=False)
+ columns = sorted(obj.keys())
+ data = utils.get_item_properties(obj, columns, formatters=_formatters)
+ return (tuple(columns), data)
diff --git a/openstackclient/tests/network/v2/test_router.py b/openstackclient/tests/network/v2/test_router.py
index e40d2d71..d483be85 100644
--- a/openstackclient/tests/network/v2/test_router.py
+++ b/openstackclient/tests/network/v2/test_router.py
@@ -284,3 +284,61 @@ class TestSetRouter(TestRouter):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.assertRaises(exceptions.CommandError, self.cmd.take_action,
parsed_args)
+
+
+class TestShowRouter(TestRouter):
+
+ # The router to set.
+ _router = network_fakes.FakeRouter.create_one_router()
+
+ columns = (
+ 'admin_state_up',
+ 'distributed',
+ 'ha',
+ 'id',
+ 'name',
+ 'tenant_id',
+ )
+
+ data = (
+ router._format_admin_state(_router.admin_state_up),
+ _router.distributed,
+ _router.ha,
+ _router.id,
+ _router.name,
+ _router.tenant_id,
+ )
+
+ def setUp(self):
+ super(TestShowRouter, self).setUp()
+
+ self.network.find_router = mock.Mock(return_value=self._router)
+
+ # Get the command object to test
+ self.cmd = router.ShowRouter(self.app, self.namespace)
+
+ def test_show_no_options(self):
+ arglist = []
+ verifylist = []
+
+ try:
+ # Missing required args should bail here
+ self.check_parser(self.cmd, arglist, verifylist)
+ except tests_utils.ParserException:
+ pass
+
+ def test_show_all_options(self):
+ arglist = [
+ self._router.name,
+ ]
+ verifylist = [
+ ('router', self._router.name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.find_router.assert_called_with(self._router.name,
+ ignore_missing=False)
+ self.assertEqual(tuple(self.columns), columns)
+ self.assertEqual(self.data, data)