Pass all kwargs through to adapter
Part of the benefit of clients using the keystoneclient adapter to manage the session object is that we can have a standard set of kwargs that can be controlled from the adapter. This only works if the unknown kwargs are passed through to the adapter. Change-Id: I78f195ef739dbfe33a08f4dc1922b14ec77ae833
This commit is contained in:
@@ -427,19 +427,21 @@ class HTTPClient(TroveClientMixin):
|
|||||||
|
|
||||||
class SessionClient(adapter.LegacyJsonAdapter, TroveClientMixin):
|
class SessionClient(adapter.LegacyJsonAdapter, TroveClientMixin):
|
||||||
|
|
||||||
def __init__(self, session, auth, service_type=None, service_name=None,
|
def __init__(self, session, auth, **kwargs):
|
||||||
region_name=None, endpoint_type='publicURL',
|
self.database_service_name = kwargs.pop('database_service_name', None)
|
||||||
database_service_name=None, endpoint_override=None):
|
|
||||||
self.endpoint_type = endpoint_type
|
|
||||||
self.database_service_name = database_service_name
|
|
||||||
self.endpoint_override = endpoint_override
|
|
||||||
super(SessionClient, self).__init__(session=session,
|
super(SessionClient, self).__init__(session=session,
|
||||||
auth=auth,
|
auth=auth,
|
||||||
interface=endpoint_type,
|
**kwargs)
|
||||||
service_type=service_type,
|
|
||||||
service_name=service_name,
|
# FIXME(jamielennox): this is going to cause an authentication request
|
||||||
region_name=region_name)
|
# on client init. This is different to how the other clients work.
|
||||||
self.management_url = self._get_endpoint_url()
|
endpoint = self.get_endpoint()
|
||||||
|
|
||||||
|
if not endpoint:
|
||||||
|
raise exceptions.EndpointNotFound()
|
||||||
|
|
||||||
|
self.management_url = endpoint.rstrip('/')
|
||||||
|
|
||||||
def request(self, url, method, **kwargs):
|
def request(self, url, method, **kwargs):
|
||||||
raise_exc = kwargs.pop('raise_exc', True)
|
raise_exc = kwargs.pop('raise_exc', True)
|
||||||
@@ -453,16 +455,6 @@ class SessionClient(adapter.LegacyJsonAdapter, TroveClientMixin):
|
|||||||
|
|
||||||
return resp, body
|
return resp, body
|
||||||
|
|
||||||
def _get_endpoint_url(self):
|
|
||||||
endpoint_url = self.session.get_endpoint(
|
|
||||||
self.auth, interface=self.endpoint_type,
|
|
||||||
service_type=self.service_type)
|
|
||||||
|
|
||||||
if not endpoint_url:
|
|
||||||
raise exceptions.EndpointNotFound
|
|
||||||
|
|
||||||
return endpoint_url.rstrip('/')
|
|
||||||
|
|
||||||
|
|
||||||
def _construct_http_client(username=None, password=None, project_id=None,
|
def _construct_http_client(username=None, password=None, project_id=None,
|
||||||
auth_url=None, insecure=False, timeout=None,
|
auth_url=None, insecure=False, timeout=None,
|
||||||
@@ -475,37 +467,42 @@ def _construct_http_client(username=None, password=None, project_id=None,
|
|||||||
auth_system='keystone', auth_plugin=None,
|
auth_system='keystone', auth_plugin=None,
|
||||||
cacert=None, bypass_url=None, tenant_id=None,
|
cacert=None, bypass_url=None, tenant_id=None,
|
||||||
session=None,
|
session=None,
|
||||||
auth=None):
|
**kwargs):
|
||||||
if session:
|
if session:
|
||||||
|
try:
|
||||||
|
kwargs.setdefault('interface', endpoint_type)
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
|
||||||
return SessionClient(session=session,
|
return SessionClient(session=session,
|
||||||
auth=auth,
|
|
||||||
service_type=service_type,
|
service_type=service_type,
|
||||||
service_name=service_name,
|
service_name=service_name,
|
||||||
region_name=region_name,
|
region_name=region_name,
|
||||||
endpoint_type=endpoint_type,
|
database_service_name=database_service_name,
|
||||||
database_service_name=database_service_name)
|
connect_retries=retries,
|
||||||
|
**kwargs)
|
||||||
return HTTPClient(username,
|
else:
|
||||||
password,
|
return HTTPClient(username,
|
||||||
projectid=project_id,
|
password,
|
||||||
auth_url=auth_url,
|
projectid=project_id,
|
||||||
insecure=insecure,
|
auth_url=auth_url,
|
||||||
timeout=timeout,
|
insecure=insecure,
|
||||||
tenant_id=tenant_id,
|
timeout=timeout,
|
||||||
proxy_token=proxy_token,
|
tenant_id=tenant_id,
|
||||||
proxy_tenant_id=proxy_tenant_id,
|
proxy_token=proxy_token,
|
||||||
region_name=region_name,
|
proxy_tenant_id=proxy_tenant_id,
|
||||||
endpoint_type=endpoint_type,
|
region_name=region_name,
|
||||||
service_type=service_type,
|
endpoint_type=endpoint_type,
|
||||||
service_name=service_name,
|
service_type=service_type,
|
||||||
database_service_name=database_service_name,
|
service_name=service_name,
|
||||||
retries=retries,
|
database_service_name=database_service_name,
|
||||||
http_log_debug=http_log_debug,
|
retries=retries,
|
||||||
cacert=cacert,
|
http_log_debug=http_log_debug,
|
||||||
bypass_url=bypass_url,
|
cacert=cacert,
|
||||||
auth_system=auth_system,
|
bypass_url=bypass_url,
|
||||||
auth_plugin=auth_plugin,
|
auth_system=auth_system,
|
||||||
)
|
auth_plugin=auth_plugin,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_version_map():
|
def get_version_map():
|
||||||
|
@@ -53,7 +53,7 @@ class Client(object):
|
|||||||
http_log_debug=False,
|
http_log_debug=False,
|
||||||
cacert=None, bypass_url=None,
|
cacert=None, bypass_url=None,
|
||||||
auth_system='keystone', auth_plugin=None, session=None,
|
auth_system='keystone', auth_plugin=None, session=None,
|
||||||
auth=None):
|
auth=None, **kwargs):
|
||||||
# self.limits = limits.LimitsManager(self)
|
# self.limits = limits.LimitsManager(self)
|
||||||
|
|
||||||
# extensions
|
# extensions
|
||||||
@@ -115,7 +115,8 @@ class Client(object):
|
|||||||
auth_system=auth_system,
|
auth_system=auth_system,
|
||||||
auth_plugin=auth_plugin,
|
auth_plugin=auth_plugin,
|
||||||
session=session,
|
session=session,
|
||||||
auth=auth)
|
auth=auth,
|
||||||
|
**kwargs)
|
||||||
|
|
||||||
def authenticate(self):
|
def authenticate(self):
|
||||||
"""Authenticate against the server.
|
"""Authenticate against the server.
|
||||||
|
Reference in New Issue
Block a user