summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-12-16 09:56:11 +0000
committerGerrit Code Review <review@openstack.org>2015-12-16 09:56:11 +0000
commitd72f6228cf0823f4a13df9da84455e1d6c242c76 (patch)
treefe0364a664f3697cbf092afab88f56723ee9e375 /openstackclient
parent5a387695ccd07453865e9bfcb38491a643270d89 (diff)
parent408dc7b2904f5d60061da07c57cbaeaf1b96c719 (diff)
downloadpython-openstackclient-d72f6228cf0823f4a13df9da84455e1d6c242c76.tar.gz
Merge "Router: Add "router show" command using SDK"
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)