From 083e155ae52408b1e70da66c8fbc06e3d2fbbf6e Mon Sep 17 00:00:00 2001 From: Yan Xing'an <yanxingan@cmss.chinamobile.com> Date: Mon, 14 Nov 2016 01:23:39 -0800 Subject: [PATCH] SDK Refactor: Prepare router commands Prepare the OSC "router" commands for the SDK refactor. See [1] for details. [1] https://etherpad.openstack.org/p/osc-network-command-sdk-support Change-Id: I2fa12943a65e3981b924e6cea9ed041682ec54b2 Partially-Implements: blueprint network-command-sdk-support --- openstackclient/network/v2/router.py | 21 +++++++++++++++---- .../tests/unit/network/v2/fakes.py | 3 +++ .../tests/unit/network/v2/test_router.py | 8 +++---- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/openstackclient/network/v2/router.py b/openstackclient/network/v2/router.py index cdd634d0eb..61a005e68c 100644 --- a/openstackclient/network/v2/router.py +++ b/openstackclient/network/v2/router.py @@ -52,6 +52,7 @@ def _format_routes(routes): _formatters = { 'admin_state_up': _format_admin_state, + 'is_admin_state_up': _format_admin_state, 'external_gateway_info': _format_external_gateway_info, 'availability_zones': utils.format_list, 'availability_zone_hints': utils.format_list, @@ -62,6 +63,9 @@ _formatters = { def _get_columns(item): column_map = { 'tenant_id': 'project_id', + 'is_ha': 'ha', + 'is_distributed': 'distributed', + 'is_admin_state_up': 'admin_state_up', } return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map) @@ -150,6 +154,8 @@ class AddSubnetToRouter(command.Command): subnet_id=subnet.id) +# TODO(yanxing'an): Use the SDK resource mapped attribute names once the +# OSC minimum requirements include SDK 1.0. class CreateRouter(command.ShowOne): _description = _("Create a new router") @@ -255,6 +261,8 @@ class DeleteRouter(command.Command): raise exceptions.CommandError(msg) +# TODO(yanxing'an): Use the SDK resource mapped attribute names once the +# OSC minimum requirements include SDK 1.0. class ListRouter(command.Lister): _description = _("List routers") @@ -297,10 +305,10 @@ class ListRouter(command.Lister): 'id', 'name', 'status', - 'admin_state_up', - 'distributed', - 'ha', - 'tenant_id', + 'is_admin_state_up', + 'is_distributed', + 'is_ha', + 'project_id', ) column_headers = ( 'ID', @@ -319,8 +327,10 @@ class ListRouter(command.Lister): if parsed_args.enable: args['admin_state_up'] = True + args['is_admin_state_up'] = True elif parsed_args.disable: args['admin_state_up'] = False + args['is_admin_state_up'] = False if parsed_args.project: project_id = identity_common.find_project( @@ -329,6 +339,7 @@ class ListRouter(command.Lister): parsed_args.project_domain, ).id args['tenant_id'] = project_id + args['project_id'] = project_id if parsed_args.long: columns = columns + ( 'routes', @@ -407,6 +418,8 @@ class RemoveSubnetFromRouter(command.Command): subnet_id=subnet.id) +# TODO(yanxing'an): Use the SDK resource mapped attribute names once the +# OSC minimum requirements include SDK 1.0. class SetRouter(command.Command): _description = _("Set router properties") diff --git a/openstackclient/tests/unit/network/v2/fakes.py b/openstackclient/tests/unit/network/v2/fakes.py index 97d0707636..678ab2266e 100644 --- a/openstackclient/tests/unit/network/v2/fakes.py +++ b/openstackclient/tests/unit/network/v2/fakes.py @@ -834,6 +834,9 @@ class FakeRouter(object): # Set attributes with special mapping in OpenStack SDK. router.project_id = router_attrs['tenant_id'] + router.is_admin_state_up = router_attrs['admin_state_up'] + router.is_distributed = router_attrs['distributed'] + router.is_ha = router_attrs['ha'] return router diff --git a/openstackclient/tests/unit/network/v2/test_router.py b/openstackclient/tests/unit/network/v2/test_router.py index b0409447dd..8c1d580479 100644 --- a/openstackclient/tests/unit/network/v2/test_router.py +++ b/openstackclient/tests/unit/network/v2/test_router.py @@ -459,7 +459,7 @@ class TestListRouter(TestRouter): columns, data = self.cmd.take_action(parsed_args) self.network.routers.assert_called_once_with( - **{'admin_state_up': True} + **{'admin_state_up': True, 'is_admin_state_up': True} ) self.assertEqual(self.columns, columns) self.assertEqual(self.data, list(data)) @@ -476,7 +476,7 @@ class TestListRouter(TestRouter): columns, data = self.cmd.take_action(parsed_args) self.network.routers.assert_called_once_with( - **{'admin_state_up': False} + **{'admin_state_up': False, 'is_admin_state_up': False} ) self.assertEqual(self.columns, columns) @@ -494,7 +494,7 @@ class TestListRouter(TestRouter): parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) - filters = {'tenant_id': project.id} + filters = {'tenant_id': project.id, 'project_id': project.id} self.network.routers.assert_called_once_with(**filters) self.assertEqual(self.columns, columns) @@ -514,7 +514,7 @@ class TestListRouter(TestRouter): parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) - filters = {'tenant_id': project.id} + filters = {'tenant_id': project.id, 'project_id': project.id} self.network.routers.assert_called_once_with(**filters) self.assertEqual(self.columns, columns)