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
This commit is contained in:
Tang Chen 2015-12-15 17:28:06 +08:00
parent 8a805dae0c
commit 408dc7b290
4 changed files with 100 additions and 2 deletions

View File

@ -5,7 +5,7 @@ router
Network v2
router create
--------------
-------------
Create new router
@ -45,7 +45,7 @@ Create new router
New router name
router delete
--------------
-------------
Delete router(s)
@ -113,3 +113,19 @@ Set router properties
.. describe:: <router>
Router to modify (name or ID)
router show
-----------
Display router details
.. program:: router show
.. code:: bash
os router show
<router>
.. _router_show-router:
.. describe:: <router>
Router to display (name or ID)

View File

@ -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)

View File

@ -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)

View File

@ -336,6 +336,7 @@ openstack.network.v2 =
router_delete = openstackclient.network.v2.router:DeleteRouter
router_list = openstackclient.network.v2.router:ListRouter
router_set = openstackclient.network.v2.router:SetRouter
router_show = openstackclient.network.v2.router:ShowRouter
openstack.object_store.v1 =
object_store_account_set = openstackclient.object.v1.account:SetAccount