summaryrefslogtreecommitdiff
path: root/keystoneclient/adapter.py
diff options
context:
space:
mode:
authorJamie Lennox <jamielennox@redhat.com>2014-08-29 17:21:00 +1000
committerJamie Lennox <jamielennox@redhat.com>2014-09-01 10:50:16 +1000
commit4be8e8db3f0760aa0debb093cd61fd6495158007 (patch)
treedfd68fd8daceaf035e119b749ae941434f4cb52e /keystoneclient/adapter.py
parent0e6171904385550972b3a961e9cb1614403312dc (diff)
downloadpython-keystoneclient-4be8e8db3f0760aa0debb093cd61fd6495158007.tar.gz
Expose auth methods on the adapter
Provide access to get_token, get_endpoint and invalidate to the adapter. The adapter is essentially created per individual client and it can be useful to know things like the endpoint that requests will be sent to based on the parameters that are included in the endpoint_filter. This essentially allows us to emulate the management_url and auth_token properties of the existing clients. Change-Id: Ic01bc52bb38e8fb72e7a6d93bfd2944b11d0b070
Diffstat (limited to 'keystoneclient/adapter.py')
-rw-r--r--keystoneclient/adapter.py49
1 files changed, 41 insertions, 8 deletions
diff --git a/keystoneclient/adapter.py b/keystoneclient/adapter.py
index b5687b9..24403f9 100644
--- a/keystoneclient/adapter.py
+++ b/keystoneclient/adapter.py
@@ -52,19 +52,21 @@ class Adapter(object):
self.user_agent = user_agent
self.auth = auth
- def request(self, url, method, **kwargs):
- endpoint_filter = kwargs.setdefault('endpoint_filter', {})
-
+ def _set_endpoint_filter_kwargs(self, kwargs):
if self.service_type:
- endpoint_filter.setdefault('service_type', self.service_type)
+ kwargs.setdefault('service_type', self.service_type)
if self.service_name:
- endpoint_filter.setdefault('service_name', self.service_name)
+ kwargs.setdefault('service_name', self.service_name)
if self.interface:
- endpoint_filter.setdefault('interface', self.interface)
+ kwargs.setdefault('interface', self.interface)
if self.region_name:
- endpoint_filter.setdefault('region_name', self.region_name)
+ kwargs.setdefault('region_name', self.region_name)
if self.version:
- endpoint_filter.setdefault('version', self.version)
+ kwargs.setdefault('version', self.version)
+
+ def request(self, url, method, **kwargs):
+ endpoint_filter = kwargs.setdefault('endpoint_filter', {})
+ self._set_endpoint_filter_kwargs(endpoint_filter)
if self.endpoint_override:
kwargs.setdefault('endpoint_override', self.endpoint_override)
@@ -76,6 +78,37 @@ class Adapter(object):
return self.session.request(url, method, **kwargs)
+ def get_token(self, auth=None):
+ """Return a token as provided by the auth plugin.
+
+ :param auth: The auth plugin to use for token. Overrides the plugin
+ on the session. (optional)
+ :type auth: :class:`keystoneclient.auth.base.BaseAuthPlugin`
+
+ :raises AuthorizationFailure: if a new token fetch fails.
+
+ :returns string: A valid token.
+ """
+ return self.session.get_token(auth or self.auth)
+
+ def get_endpoint(self, auth=None, **kwargs):
+ """Get an endpoint as provided by the auth plugin.
+
+ :param auth: The auth plugin to use for token. Overrides the plugin on
+ the session. (optional)
+ :type auth: :class:`keystoneclient.auth.base.BaseAuthPlugin`
+
+ :raises MissingAuthPlugin: if a plugin is not available.
+
+ :returns string: An endpoint if available or None.
+ """
+ self._set_endpoint_filter_kwargs(kwargs)
+ return self.session.get_endpoint(auth or self.auth, **kwargs)
+
+ def invalidate(self, auth=None):
+ """Invalidate an authentication plugin."""
+ return self.session.invalidate(auth or self.auth)
+
def get(self, url, **kwargs):
return self.request(url, 'GET', **kwargs)