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:
Jamie Lennox
2015-01-16 15:25:03 +10:00
parent 7a06f8632e
commit 2322d30706
2 changed files with 47 additions and 49 deletions

View File

@@ -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():

View File

@@ -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.