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'
|
return None, None, 'latest'
|
||||||
if not version:
|
if not version:
|
||||||
version = self.get_api_version(service_key)
|
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 None, None, 'latest'
|
||||||
return version, None, None
|
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.
|
"""Return a prepped requests adapter for a given service.
|
||||||
|
|
||||||
This is useful for making direct requests calls against a
|
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(
|
(version, min_version, max_version) = self._get_version_args(
|
||||||
service_key, version)
|
service_key, version)
|
||||||
|
|
||||||
return adapter.Adapter(
|
return constructor(
|
||||||
session=self.get_session(),
|
session=self.get_session(),
|
||||||
service_type=self.get_service_type(service_key),
|
service_type=self.get_service_type(service_key),
|
||||||
service_name=self.get_service_name(service_key),
|
service_name=self.get_service_name(service_key),
|
||||||
@ -314,7 +318,8 @@ class CloudRegion(object):
|
|||||||
region_name=self.region_name,
|
region_name=self.region_name,
|
||||||
version=version,
|
version=version,
|
||||||
min_version=min_version,
|
min_version=min_version,
|
||||||
max_version=max_version)
|
max_version=max_version,
|
||||||
|
**kwargs)
|
||||||
|
|
||||||
def _get_highest_endpoint(self, service_types, kwargs):
|
def _get_highest_endpoint(self, service_types, kwargs):
|
||||||
session = self.get_session()
|
session = self.get_session()
|
||||||
|
@ -88,15 +88,11 @@ class ServiceDescription(object):
|
|||||||
if self.service_type not in instance._proxies:
|
if self.service_type not in instance._proxies:
|
||||||
config = instance.config
|
config = instance.config
|
||||||
proxy_class = self.get_proxy_class(config)
|
proxy_class = self.get_proxy_class(config)
|
||||||
instance._proxies[self.service_type] = proxy_class(
|
instance._proxies[self.service_type] = config.get_session_client(
|
||||||
session=instance.config.get_session(),
|
self.service_type,
|
||||||
|
constructor=proxy_class,
|
||||||
task_manager=instance.task_manager,
|
task_manager=instance.task_manager,
|
||||||
allow_version_hack=True,
|
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]
|
return instance._proxies[self.service_type]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user