Skip to content

Commit d72f622

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Router: Add "router show" command using SDK"
2 parents 5a38769 + 408dc7b commit d72f622

4 files changed

Lines changed: 100 additions & 2 deletions

File tree

doc/source/command-objects/router.rst

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ router
55
Network v2
66

77
router create
8-
--------------
8+
-------------
99

1010
Create new router
1111

@@ -45,7 +45,7 @@ Create new router
4545
New router name
4646
4747
router delete
48-
--------------
48+
-------------
4949
5050
Delete router(s)
5151
@@ -113,3 +113,19 @@ Set router properties
113113
.. describe:: <router>
114114
115115
Router to modify (name or ID)
116+
117+
router show
118+
-----------
119+
120+
Display router details
121+
122+
.. program:: router show
123+
.. code:: bash
124+
125+
os router show
126+
<router>
127+
128+
.. _router_show-router:
129+
.. describe:: <router>
130+
131+
Router to display (name or ID)

openstackclient/network/v2/router.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,3 +273,26 @@ def take_action(self, parsed_args):
273273
raise exceptions.CommandError(msg)
274274

275275
client.update_router(obj, **attrs)
276+
277+
278+
class ShowRouter(show.ShowOne):
279+
"""Display router details"""
280+
281+
log = logging.getLogger(__name__ + '.ShowRouter')
282+
283+
def get_parser(self, prog_name):
284+
parser = super(ShowRouter, self).get_parser(prog_name)
285+
parser.add_argument(
286+
'router',
287+
metavar="<router>",
288+
help="Router to display (name or ID)"
289+
)
290+
return parser
291+
292+
def take_action(self, parsed_args):
293+
self.log.debug('take_action(%s)' % parsed_args)
294+
client = self.app.client_manager.network
295+
obj = client.find_router(parsed_args.router, ignore_missing=False)
296+
columns = sorted(obj.keys())
297+
data = utils.get_item_properties(obj, columns, formatters=_formatters)
298+
return (tuple(columns), data)

openstackclient/tests/network/v2/test_router.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,3 +284,61 @@ def test_set_nothing(self):
284284
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
285285
self.assertRaises(exceptions.CommandError, self.cmd.take_action,
286286
parsed_args)
287+
288+
289+
class TestShowRouter(TestRouter):
290+
291+
# The router to set.
292+
_router = network_fakes.FakeRouter.create_one_router()
293+
294+
columns = (
295+
'admin_state_up',
296+
'distributed',
297+
'ha',
298+
'id',
299+
'name',
300+
'tenant_id',
301+
)
302+
303+
data = (
304+
router._format_admin_state(_router.admin_state_up),
305+
_router.distributed,
306+
_router.ha,
307+
_router.id,
308+
_router.name,
309+
_router.tenant_id,
310+
)
311+
312+
def setUp(self):
313+
super(TestShowRouter, self).setUp()
314+
315+
self.network.find_router = mock.Mock(return_value=self._router)
316+
317+
# Get the command object to test
318+
self.cmd = router.ShowRouter(self.app, self.namespace)
319+
320+
def test_show_no_options(self):
321+
arglist = []
322+
verifylist = []
323+
324+
try:
325+
# Missing required args should bail here
326+
self.check_parser(self.cmd, arglist, verifylist)
327+
except tests_utils.ParserException:
328+
pass
329+
330+
def test_show_all_options(self):
331+
arglist = [
332+
self._router.name,
333+
]
334+
verifylist = [
335+
('router', self._router.name),
336+
]
337+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
338+
339+
columns, data = self.cmd.take_action(parsed_args)
340+
341+
self.network.find_router.assert_called_with(self._router.name,
342+
ignore_missing=False)
343+
self.assertEqual(tuple(self.columns), columns)
344+
self.assertEqual(self.data, data)

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,7 @@ openstack.network.v2 =
336336
router_delete = openstackclient.network.v2.router:DeleteRouter
337337
router_list = openstackclient.network.v2.router:ListRouter
338338
router_set = openstackclient.network.v2.router:SetRouter
339+
router_show = openstackclient.network.v2.router:ShowRouter
339340

340341
openstack.object_store.v1 =
341342
object_store_account_set = openstackclient.object.v1.account:SetAccount

0 commit comments

Comments
 (0)