From 4be716eb27752d715ea1140b76e4a03907edd87f Mon Sep 17 00:00:00 2001 From: Tang Chen Date: Fri, 4 Dec 2015 16:30:10 +0800 Subject: Migrate network client to SDK. The previous patches have migrate all network commands to the new version using sdk. This patch will remove the temporary method, and implement a new make_client() to create sdk network client. And also, find() in openstackclient/network/common.py must support sdk. The logic of this function will become much easier than before, so this patch also removes two useless test cases of find(). This patch will also remove the patched methods in tests. Change-Id: Ic2f7bca073beb9757172d16f95d9b82c48cbbc12 Implements: blueprint neutron-client Co-Authored-By: Terry Howe Co-Authored-By: Tang Chen --- openstackclient/network/client.py | 62 ++++++----------------------------- openstackclient/network/common.py | 24 ++------------ openstackclient/network/v2/network.py | 18 ---------- 3 files changed, 13 insertions(+), 91 deletions(-) (limited to 'openstackclient/network') diff --git a/openstackclient/network/client.py b/openstackclient/network/client.py index 69ed11fe..7714c525 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 31faef25..7b3f8a62 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 4c94dc65..64b98f5d 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()) -- cgit v1.2.1