Use get_session_client in Connection
The openstack.config CloudRegion object knows how to make adapters, but we make them by hand in Connection. Add a constructor parameter and shift to using get_session_client from CloudRegion to make the proxy objects instead of duplicating the call. This should help us get version discovery plugged in properly. Change-Id: I486d1fc82ba9a1f1aafaf83e9a6ed8f01244ede6
This commit is contained in:
parent
ebe5fde830
commit
821af87bb8
@ -285,11 +285,15 @@ class CloudRegion(object):
|
||||
return None, None, 'latest'
|
||||
if not version:
|
||||
version = self.get_api_version(service_key)
|
||||
if not version:
|
||||
# Octavia doens't have a version discovery document. Hard-code an
|
||||
# exception to this logic for now.
|
||||
if not version and service_key not in ('load-balancer',):
|
||||
return None, None, 'latest'
|
||||
return version, None, None
|
||||
|
||||
def get_session_client(self, service_key, version=None):
|
||||
def get_session_client(
|
||||
self, service_key, version=None, constructor=adapter.Adapter,
|
||||
**kwargs):
|
||||
"""Return a prepped requests adapter for a given service.
|
||||
|
||||
This is useful for making direct requests calls against a
|
||||
@ -306,7 +310,7 @@ class CloudRegion(object):
|
||||
(version, min_version, max_version) = self._get_version_args(
|
||||
service_key, version)
|
||||
|
||||
return adapter.Adapter(
|
||||
return constructor(
|
||||
session=self.get_session(),
|
||||
service_type=self.get_service_type(service_key),
|
||||
service_name=self.get_service_name(service_key),
|
||||
@ -314,7 +318,8 @@ class CloudRegion(object):
|
||||
region_name=self.region_name,
|
||||
version=version,
|
||||
min_version=min_version,
|
||||
max_version=max_version)
|
||||
max_version=max_version,
|
||||
**kwargs)
|
||||
|
||||
def _get_highest_endpoint(self, service_types, kwargs):
|
||||
session = self.get_session()
|
||||
|
@ -88,15 +88,11 @@ class ServiceDescription(object):
|
||||
if self.service_type not in instance._proxies:
|
||||
config = instance.config
|
||||
proxy_class = self.get_proxy_class(config)
|
||||
instance._proxies[self.service_type] = proxy_class(
|
||||
session=instance.config.get_session(),
|
||||
instance._proxies[self.service_type] = config.get_session_client(
|
||||
self.service_type,
|
||||
constructor=proxy_class,
|
||||
task_manager=instance.task_manager,
|
||||
allow_version_hack=True,
|
||||
service_type=config.get_service_type(self.service_type),
|
||||
service_name=config.get_service_name(self.service_type),
|
||||
interface=config.get_interface(self.service_type),
|
||||
region_name=config.region_name,
|
||||
version=config.get_api_version(self.service_type)
|
||||
)
|
||||
return instance._proxies[self.service_type]
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user