diff options
| author | Tang Chen <tangchen@cn.fujitsu.com> | 2015-12-04 19:48:22 +0800 |
|---|---|---|
| committer | Tang Chen <tangchen@cn.fujitsu.com> | 2015-12-09 09:29:26 +0800 |
| commit | 0b4fb0bb662d71a85aba251e13d403cf692d8d54 (patch) | |
| tree | 03a02b5328d664a985da0ba78c4df6f82ebc266b /openstackclient | |
| parent | 56150de2243c8b9d81aa2dc87ffc764b893a75e1 (diff) | |
| download | python-openstackclient-0b4fb0bb662d71a85aba251e13d403cf692d8d54.tar.gz | |
Migrate "network create" command to use SDK.
This patch makes "network create" command use sdk.
Since we have to keep the other commands runnable with
the old network client, we use a temporary method to
create sdk network client. And as a result, the tests
need to patch a method to fake the temporary method,
which will be removed at last.
Change-Id: I06559c675be1188747257f72f18d6b4d420d0285
Implements: blueprint neutron-client
Co-Authored-By: Terry Howe <terrylhowe@gmail.com>
Co-Authored-By: Tang Chen <tangchen@cn.fujitsu.com>
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/network/v2/network.py | 15 | ||||
| -rw-r--r-- | openstackclient/tests/network/v2/test_network.py | 158 |
2 files changed, 114 insertions, 59 deletions
diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py index 48b5b5a0..3b7ae737 100644 --- a/openstackclient/network/v2/network.py +++ b/openstackclient/network/v2/network.py @@ -114,15 +114,14 @@ class CreateNetwork(show.ShowOne): def take_action(self, parsed_args): self.log.debug('take_action(%s)' % parsed_args) + self.app.client_manager.network = \ + _make_client_sdk(self.app.client_manager) client = self.app.client_manager.network body = self.get_body(parsed_args) - create_method = getattr(client, "create_network") - data = create_method(body)['network'] - if data: - data = _prep_network_detail(data) - else: - data = {'': ''} - return zip(*sorted(six.iteritems(data))) + obj = client.create_network(**body) + columns = sorted(obj.keys()) + data = utils.get_item_properties(obj, columns, formatters=_formatters) + return (tuple(columns), data) def get_body(self, parsed_args): body = {'name': str(parsed_args.name), @@ -137,7 +136,7 @@ class CreateNetwork(show.ShowOne): parsed_args.project_domain, ).id body['tenant_id'] = project_id - return {'network': body} + return body class DeleteNetwork(command.Command): diff --git a/openstackclient/tests/network/v2/test_network.py b/openstackclient/tests/network/v2/test_network.py index ccf4fcd0..8648a11f 100644 --- a/openstackclient/tests/network/v2/test_network.py +++ b/openstackclient/tests/network/v2/test_network.py @@ -71,13 +71,38 @@ class TestNetwork(network_fakes.TestNetworkV2): self.api = self.app.client_manager.network.api +@mock.patch('openstackclient.network.v2.network._make_client_sdk') class TestCreateNetworkIdentityV3(TestNetwork): + # The new network created. + _network = network_fakes.FakeNetwork.create_one_network( + attrs={'tenant_id': identity_fakes_v3.project_id} + ) + + columns = ( + 'admin_state_up', + 'id', + 'name', + 'router_external', + 'status', + 'subnets', + 'tenant_id', + ) + + data = ( + network._format_admin_state(_network.admin_state_up), + _network.id, + _network.name, + network._format_router_external(_network.router_external), + _network.status, + utils.format_list(_network.subnets), + _network.tenant_id, + ) + def setUp(self): super(TestCreateNetworkIdentityV3, self).setUp() - self.new_network = mock.Mock(return_value=copy.deepcopy(RESPONSE)) - self.network.create_network = self.new_network + self.network.create_network = mock.Mock(return_value=self._network) # Get the command object to test self.cmd = network.CreateNetwork(self.app, self.namespace) @@ -106,89 +131,117 @@ class TestCreateNetworkIdentityV3(TestNetwork): loaded=True, ) - def test_create_no_options(self): + def test_create_no_options(self, _make_client_sdk): + _make_client_sdk.return_value = self.app.client_manager.network + arglist = [ - FAKE_NAME, + self._network.name, ] verifylist = [ - ('name', FAKE_NAME), + ('name', self._network.name), ('admin_state', True), ('shared', None), ('project', None), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) - result = list(self.cmd.take_action(parsed_args)) + columns, data = self.cmd.take_action(parsed_args) - self.network.create_network.assert_called_with({ - RESOURCE: { - 'admin_state_up': True, - 'name': FAKE_NAME, - } + self.network.create_network.assert_called_with(**{ + 'admin_state_up': True, + 'name': self._network.name, }) - self.assertEqual(FILTERED, result) + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, data) + + def test_create_all_options(self, _make_client_sdk): + _make_client_sdk.return_value = self.app.client_manager.network - def test_create_all_options(self): arglist = [ "--disable", "--share", "--project", identity_fakes_v3.project_name, "--project-domain", identity_fakes_v3.domain_name, - FAKE_NAME, + self._network.name, ] verifylist = [ ('admin_state', False), ('shared', True), ('project', identity_fakes_v3.project_name), ('project_domain', identity_fakes_v3.domain_name), - ('name', FAKE_NAME), + ('name', self._network.name), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) - result = list(self.cmd.take_action(parsed_args)) + columns, data = (self.cmd.take_action(parsed_args)) - self.network.create_network.assert_called_with({ - RESOURCE: { - 'admin_state_up': False, - 'name': FAKE_NAME, - 'shared': True, - 'tenant_id': identity_fakes_v3.project_id, - } + self.network.create_network.assert_called_with(**{ + 'admin_state_up': False, + 'name': self._network.name, + 'shared': True, + 'tenant_id': identity_fakes_v3.project_id, }) - self.assertEqual(FILTERED, result) + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, data) + + def test_create_other_options(self, _make_client_sdk): + _make_client_sdk.return_value = self.app.client_manager.network - def test_create_other_options(self): arglist = [ "--enable", "--no-share", - FAKE_NAME, + self._network.name, ] verifylist = [ ('admin_state', True), ('shared', False), - ('name', FAKE_NAME), + ('name', self._network.name), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) - result = list(self.cmd.take_action(parsed_args)) + columns, data = self.cmd.take_action(parsed_args) - self.network.create_network.assert_called_with({ - RESOURCE: { - 'admin_state_up': True, - 'name': FAKE_NAME, - 'shared': False, - } + self.network.create_network.assert_called_with(**{ + 'admin_state_up': True, + 'name': self._network.name, + 'shared': False, }) - self.assertEqual(FILTERED, result) + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, data) +@mock.patch('openstackclient.network.v2.network._make_client_sdk') class TestCreateNetworkIdentityV2(TestNetwork): + # The new network created. + _network = network_fakes.FakeNetwork.create_one_network( + attrs={'tenant_id': identity_fakes_v2.project_id} + ) + + columns = ( + 'admin_state_up', + 'id', + 'name', + 'router_external', + 'status', + 'subnets', + 'tenant_id', + ) + + data = ( + network._format_admin_state(_network.admin_state_up), + _network.id, + _network.name, + network._format_router_external(_network.router_external), + _network.status, + utils.format_list(_network.subnets), + _network.tenant_id, + ) + def setUp(self): super(TestCreateNetworkIdentityV2, self).setUp() - self.new_network = mock.Mock(return_value=copy.deepcopy(RESPONSE)) - self.network.create_network = self.new_network + self.network.create_network = mock.Mock(return_value=self._network) # Get the command object to test self.cmd = network.CreateNetwork(self.app, self.namespace) @@ -211,42 +264,45 @@ class TestCreateNetworkIdentityV2(TestNetwork): # There is no DomainManager Mock in fake identity v2. - def test_create_with_project_identityv2(self): + def test_create_with_project_identityv2(self, _make_client_sdk): + _make_client_sdk.return_value = self.app.client_manager.network + arglist = [ "--project", identity_fakes_v2.project_name, - FAKE_NAME, + self._network.name, ] verifylist = [ ('admin_state', True), ('shared', None), - ('name', FAKE_NAME), + ('name', self._network.name), ('project', identity_fakes_v2.project_name), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) - result = list(self.cmd.take_action(parsed_args)) + columns, data = self.cmd.take_action(parsed_args) - self.network.create_network.assert_called_with({ - RESOURCE: { - 'admin_state_up': True, - 'name': FAKE_NAME, - 'tenant_id': identity_fakes_v2.project_id, - } + self.network.create_network.assert_called_with(**{ + 'admin_state_up': True, + 'name': self._network.name, + 'tenant_id': identity_fakes_v2.project_id, }) - self.assertEqual(FILTERED, result) + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, data) + + def test_create_with_domain_identityv2(self, _make_client_sdk): + _make_client_sdk.return_value = self.app.client_manager.network - def test_create_with_domain_identityv2(self): arglist = [ "--project", identity_fakes_v3.project_name, "--project-domain", identity_fakes_v3.domain_name, - FAKE_NAME, + self._network.name, ] verifylist = [ ('admin_state', True), ('shared', None), ('project', identity_fakes_v3.project_name), ('project_domain', identity_fakes_v3.domain_name), - ('name', FAKE_NAME), + ('name', self._network.name), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
