diff --git a/openstackclient/network/client.py b/openstackclient/network/client.py index 69ed11feb8..7714c52504 100644 --- a/openstackclient/network/client.py +++ b/openstackclient/network/client.py @@ -13,6 +13,8 @@ import logging +from openstack import connection + from openstackclient.common import utils @@ -22,62 +24,18 @@ DEFAULT_API_VERSION = '2.0' API_VERSION_OPTION = 'os_network_api_version' API_NAME = "network" API_VERSIONS = { - "2.0": "neutronclient.v2_0.client.Client", - "2": "neutronclient.v2_0.client.Client", -} -# Translate our API version to auth plugin version prefix -API_VERSION_MAP = { - '2.0': 'v2.0', - '2': 'v2.0', -} - -NETWORK_API_TYPE = 'network' -NETWORK_API_VERSIONS = { - '2.0': 'openstackclient.api.network_v2.APIv2', - '2': 'openstackclient.api.network_v2.APIv2', + "2.0": "openstack.connection.Connection", + "2": "openstack.connection.Connection", } def make_client(instance): - """Returns an network service client""" - network_client = utils.get_client_class( - API_NAME, - instance._api_version[API_NAME], - API_VERSIONS) - LOG.debug('Instantiating network client: %s', network_client) - - endpoint = instance.get_endpoint_for_service_type( - API_NAME, - region_name=instance._region_name, - interface=instance._interface, - ) - - # Remember endpoint_type only if it is set - kwargs = utils.build_kwargs_dict('endpoint_type', instance._interface) - - client = network_client( - session=instance.session, - region_name=instance._region_name, - **kwargs - ) - - network_api = utils.get_client_class( - API_NAME, - instance._api_version[API_NAME], - NETWORK_API_VERSIONS) - LOG.debug('Instantiating network api: %s', network_client) - - # v2 is hard-coded until discovery is completed, neutron only has one atm - client.api = network_api( - session=instance.session, - service_type=NETWORK_API_TYPE, - endpoint='/'.join([ - endpoint, - API_VERSION_MAP[instance._api_version[API_NAME]], - ]) - ) - - return client + """Returns a network proxy""" + conn = connection.Connection(authenticator=instance.session.auth) + LOG.debug('Connection: %s', conn) + LOG.debug('Network client initialized using OpenStack SDK: %s', + conn.network) + return conn.network def build_option_parser(parser): diff --git a/openstackclient/network/common.py b/openstackclient/network/common.py index 31faef25f3..7b3f8a62e9 100644 --- a/openstackclient/network/common.py +++ b/openstackclient/network/common.py @@ -11,8 +11,6 @@ # under the License. # -from openstackclient.common import exceptions - def find(client, resource, resources, name_or_id, name_attr='name'): """Find a network resource @@ -26,22 +24,6 @@ def find(client, resource, resources, name_or_id, name_attr='name'): For example: n = find(netclient, 'network', 'networks', 'matrix') """ - list_method = getattr(client, "list_%s" % resources) - - # Search by name - kwargs = {name_attr: name_or_id, 'fields': 'id'} - data = list_method(**kwargs) - info = data[resources] - if len(info) == 1: - return info[0]['id'] - if len(info) > 1: - msg = "More than one %s exists with the name '%s'." - raise exceptions.CommandError(msg % (resource, name_or_id)) - - # Search by id - data = list_method(id=name_or_id, fields='id') - info = data[resources] - if len(info) == 1: - return info[0]['id'] - msg = "No %s with a name or ID of '%s' exists." % (resource, name_or_id) - raise exceptions.CommandError(msg) + list_method = getattr(client, "find_%s" % resource) + data = list_method(name_or_id, ignore_missing=False) + return data.id diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py index 4c94dc650e..64b98f5d85 100644 --- a/openstackclient/network/v2/network.py +++ b/openstackclient/network/v2/network.py @@ -19,8 +19,6 @@ from cliff import command from cliff import lister from cliff import show -from openstack import connection - from openstackclient.common import exceptions from openstackclient.common import utils from openstackclient.identity import common as identity_common @@ -41,12 +39,6 @@ _formatters = { } -def _make_client_sdk(instance): - """Return a network proxy""" - conn = connection.Connection(authenticator=instance.session.auth) - return conn.network - - class CreateNetwork(show.ShowOne): """Create new network""" @@ -96,8 +88,6 @@ 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) obj = client.create_network(**body) @@ -138,8 +128,6 @@ class DeleteNetwork(command.Command): 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 for network in parsed_args.networks: obj = client.find_network(network) @@ -170,8 +158,6 @@ class ListNetwork(lister.Lister): 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 if parsed_args.long: @@ -270,8 +256,6 @@ class SetNetwork(command.Command): 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 obj = client.find_network(parsed_args.identifier, ignore_missing=False) @@ -306,8 +290,6 @@ class ShowNetwork(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 obj = client.find_network(parsed_args.identifier, ignore_missing=False) columns = sorted(obj.keys()) diff --git a/openstackclient/tests/compute/v2/test_server.py b/openstackclient/tests/compute/v2/test_server.py index ce2dcdf7e8..01c945eecc 100644 --- a/openstackclient/tests/compute/v2/test_server.py +++ b/openstackclient/tests/compute/v2/test_server.py @@ -231,6 +231,18 @@ class TestServerCreate(TestServer): list_networks.return_value = {'networks': [{'id': 'net1_uuid'}]} list_ports.return_value = {'ports': [{'id': 'port1_uuid'}]} + # Mock sdk APIs. + _network = mock.Mock() + _network.id = 'net1_uuid' + _port = mock.Mock() + _port.id = 'port1_uuid' + find_network = mock.Mock() + find_port = mock.Mock() + find_network.return_value = _network + find_port.return_value = _port + self.app.client_manager.network.find_network = find_network + self.app.client_manager.network.find_port = find_port + # DisplayCommandBase.take_action() returns two tuples columns, data = self.cmd.take_action(parsed_args) diff --git a/openstackclient/tests/network/test_common.py b/openstackclient/tests/network/test_common.py index b30fdfcb35..58586ac066 100644 --- a/openstackclient/tests/network/test_common.py +++ b/openstackclient/tests/network/test_common.py @@ -13,7 +13,6 @@ import mock -from openstackclient.common import exceptions from openstackclient.network import common from openstackclient.tests import utils @@ -28,45 +27,31 @@ class TestFind(utils.TestCase): super(TestFind, self).setUp() self.mock_client = mock.Mock() self.list_resources = mock.Mock() - self.mock_client.list_resources = self.list_resources - self.matrix = {'id': ID} + self.mock_client.find_resource = self.list_resources + self.resource = mock.Mock() + self.resource.id = ID def test_name(self): - self.list_resources.return_value = {RESOURCES: [self.matrix]} + self.list_resources.return_value = self.resource result = common.find(self.mock_client, RESOURCE, RESOURCES, NAME) self.assertEqual(ID, result) - self.list_resources.assert_called_with(fields='id', name=NAME) + self.list_resources.assert_called_with(NAME, ignore_missing=False) def test_id(self): - self.list_resources.side_effect = [{RESOURCES: []}, - {RESOURCES: [self.matrix]}] + self.list_resources.return_value = self.resource result = common.find(self.mock_client, RESOURCE, RESOURCES, NAME) self.assertEqual(ID, result) - self.list_resources.assert_called_with(fields='id', id=NAME) + self.list_resources.assert_called_with(NAME, ignore_missing=False) def test_nameo(self): - self.list_resources.return_value = {RESOURCES: [self.matrix]} + self.list_resources.return_value = self.resource result = common.find(self.mock_client, RESOURCE, RESOURCES, NAME, name_attr='nameo') self.assertEqual(ID, result) - self.list_resources.assert_called_with(fields='id', nameo=NAME) - - def test_dups(self): - dup = {'id': 'Larry'} - self.list_resources.return_value = {RESOURCES: [self.matrix, dup]} - - self.assertRaises(exceptions.CommandError, common.find, - self.mock_client, RESOURCE, RESOURCES, NAME) - - def test_nada(self): - self.list_resources.side_effect = [{RESOURCES: []}, - {RESOURCES: []}] - - self.assertRaises(exceptions.CommandError, common.find, - self.mock_client, RESOURCE, RESOURCES, NAME) + self.list_resources.assert_called_with(NAME, ignore_missing=False) diff --git a/openstackclient/tests/network/v2/test_network.py b/openstackclient/tests/network/v2/test_network.py index 67f446505b..3dcf381151 100644 --- a/openstackclient/tests/network/v2/test_network.py +++ b/openstackclient/tests/network/v2/test_network.py @@ -72,7 +72,6 @@ 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. @@ -132,9 +131,7 @@ class TestCreateNetworkIdentityV3(TestNetwork): loaded=True, ) - def test_create_no_options(self, _make_client_sdk): - _make_client_sdk.return_value = self.app.client_manager.network - + def test_create_no_options(self): arglist = [ self._network.name, ] @@ -155,9 +152,7 @@ class TestCreateNetworkIdentityV3(TestNetwork): 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", @@ -185,9 +180,7 @@ class TestCreateNetworkIdentityV3(TestNetwork): 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", @@ -211,7 +204,6 @@ class TestCreateNetworkIdentityV3(TestNetwork): self.assertEqual(self.data, data) -@mock.patch('openstackclient.network.v2.network._make_client_sdk') class TestCreateNetworkIdentityV2(TestNetwork): # The new network created. @@ -265,9 +257,7 @@ class TestCreateNetworkIdentityV2(TestNetwork): # There is no DomainManager Mock in fake identity v2. - def test_create_with_project_identityv2(self, _make_client_sdk): - _make_client_sdk.return_value = self.app.client_manager.network - + def test_create_with_project_identityv2(self): arglist = [ "--project", identity_fakes_v2.project_name, self._network.name, @@ -290,9 +280,7 @@ class TestCreateNetworkIdentityV2(TestNetwork): 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, @@ -315,7 +303,6 @@ class TestCreateNetworkIdentityV2(TestNetwork): ) -@mock.patch('openstackclient.network.v2.network._make_client_sdk') class TestDeleteNetwork(TestNetwork): # The network to delete. @@ -331,9 +318,7 @@ class TestDeleteNetwork(TestNetwork): # Get the command object to test self.cmd = network.DeleteNetwork(self.app, self.namespace) - def test_delete(self, _make_client_sdk): - _make_client_sdk.return_value = self.app.client_manager.network - + def test_delete(self): arglist = [ self._network.name, ] @@ -348,7 +333,6 @@ class TestDeleteNetwork(TestNetwork): self.assertEqual(None, result) -@mock.patch('openstackclient.network.v2.network._make_client_sdk') class TestListNetwork(TestNetwork): # The networks going to be listed up. @@ -401,9 +385,7 @@ class TestListNetwork(TestNetwork): self.network.networks = mock.Mock(return_value=self._network) - def test_network_list_no_options(self, _make_client_sdk): - _make_client_sdk.return_value = self.app.client_manager.network - + def test_network_list_no_options(self): arglist = [] verifylist = [ ('external', False), @@ -418,9 +400,7 @@ class TestListNetwork(TestNetwork): self.assertEqual(self.columns, columns) self.assertEqual(self.data, list(data)) - def test_list_external(self, _make_client_sdk): - _make_client_sdk.return_value = self.app.client_manager.network - + def test_list_external(self): arglist = [ '--external', ] @@ -439,9 +419,7 @@ class TestListNetwork(TestNetwork): self.assertEqual(self.columns, columns) self.assertEqual(self.data, list(data)) - def test_network_list_long(self, _make_client_sdk): - _make_client_sdk.return_value = self.app.client_manager.network - + def test_network_list_long(self): arglist = [ '--long', ] @@ -459,7 +437,6 @@ class TestListNetwork(TestNetwork): self.assertEqual(self.data_long, list(data)) -@mock.patch('openstackclient.network.v2.network._make_client_sdk') class TestSetNetwork(TestNetwork): # The network to set. @@ -475,9 +452,7 @@ class TestSetNetwork(TestNetwork): # Get the command object to test self.cmd = network.SetNetwork(self.app, self.namespace) - def test_set_this(self, _make_client_sdk): - _make_client_sdk.return_value = self.app.client_manager.network - + def test_set_this(self): self._network.is_dirty = True arglist = [ @@ -499,9 +474,7 @@ class TestSetNetwork(TestNetwork): self.network.update_network.assert_called_with(self._network) self.assertEqual(None, result) - def test_set_that(self, _make_client_sdk): - _make_client_sdk.return_value = self.app.client_manager.network - + def test_set_that(self): self._network.is_dirty = True arglist = [ @@ -521,9 +494,7 @@ class TestSetNetwork(TestNetwork): self.network.update_network.assert_called_with(self._network) self.assertEqual(None, result) - def test_set_nothing(self, _make_client_sdk): - _make_client_sdk.return_value = self.app.client_manager.network - + def test_set_nothing(self): self._network.is_dirty = False arglist = [self._network.name, ] @@ -534,7 +505,6 @@ class TestSetNetwork(TestNetwork): parsed_args) -@mock.patch('openstackclient.network.v2.network._make_client_sdk') class TestShowNetwork(TestNetwork): # The network to set. @@ -568,9 +538,7 @@ class TestShowNetwork(TestNetwork): # Get the command object to test self.cmd = network.ShowNetwork(self.app, self.namespace) - def test_show_no_options(self, _make_client_sdk): - _make_client_sdk.return_value = self.app.client_manager.network - + def test_show_no_options(self): arglist = [] verifylist = [] @@ -580,9 +548,7 @@ class TestShowNetwork(TestNetwork): except tests_utils.ParserException: pass - def test_show_all_options(self, _make_client_sdk): - _make_client_sdk.return_value = self.app.client_manager.network - + def test_show_all_options(self): arglist = [ self._network.name, ]