diff options
author | Swapnil Kulkarni <swapnilkulkarni2608@gmail.com> | 2014-01-25 08:25:25 +0530 |
---|---|---|
committer | Craig Vyvial <cp16net@gmail.com> | 2014-12-09 13:33:33 -0600 |
commit | cd58da52134069f94e7efb82685882d5d3aa122f (patch) | |
tree | 75de3ed3ea1e4c5be068e77ca346a3d706ea843b /troveclient/client.py | |
parent | 4d8e1567ec35ebda8071862bbc5c6818685a5205 (diff) | |
download | python-troveclient-cd58da52134069f94e7efb82685882d5d3aa122f.tar.gz |
Remove RAX-specific auth in troveclient
Author: Swapnil Kulkarni <swapnilkulkarni2608@gmail.com>
Co-Authored-By: Nikhil Manchanda <SlickNik@gmail.com>
Co-Authored-By: Craig Vyvial <cp16net@gmail.com>
Change-Id: I250777890a1f5240c5f14290cf02eb5a7b34b434
Closes-Bug: #966329
Diffstat (limited to 'troveclient/client.py')
-rw-r--r-- | troveclient/client.py | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/troveclient/client.py b/troveclient/client.py index d9dcc48..ecfaf59 100644 --- a/troveclient/client.py +++ b/troveclient/client.py @@ -22,7 +22,6 @@ OpenStack Client interface. Handles the REST calls and responses. from __future__ import print_function import logging -import os import requests from keystoneclient import adapter @@ -89,7 +88,16 @@ class HTTPClient(TroveClientMixin): self.password = password self.projectid = projectid self.tenant_id = tenant_id - self.auth_url = auth_url.rstrip('/') + + if auth_system and auth_system != 'keystone' and not auth_plugin: + raise exceptions.AuthSystemNotFound(auth_system) + + if not auth_url and auth_system and auth_system != 'keystone': + auth_url = auth_plugin.get_auth_url() + if not auth_url: + raise exceptions.EndpointNotFound() + + self.auth_url = auth_url.rstrip('/') if auth_url else auth_url self.version = 'v1' self.region_name = region_name self.endpoint_type = endpoint_type @@ -105,6 +113,8 @@ class HTTPClient(TroveClientMixin): self.proxy_tenant_id = proxy_tenant_id self.timeout = timeout self.bypass_url = bypass_url + self.auth_system = auth_system + self.auth_plugin = auth_plugin if insecure: self.verify_cert = False @@ -326,10 +336,10 @@ class HTTPClient(TroveClientMixin): auth_url = self.auth_url if self.version == "v2.0": while auth_url: - if "TROVE_RAX_AUTH" in os.environ: - auth_url = self._rax_auth(auth_url) - else: + if not self.auth_system or self.auth_system == 'keystone': auth_url = self._v2_auth(auth_url) + else: + auth_url = self._plugin_auth(auth_url) # Are we acting on behalf of another user via an # existing token? If so, our actual endpoints may @@ -357,6 +367,9 @@ class HTTPClient(TroveClientMixin): if self.bypass_url is not None and self.bypass_url != '': self.management_url = self.bypass_url + def _plugin_auth(self, auth_url): + return self.auth_plugin.authenticate(self, auth_url) + def _v1_auth(self, url): if self.proxy_token: raise exceptions.NoTokenLookupException() @@ -393,16 +406,6 @@ class HTTPClient(TroveClientMixin): self._authenticate(url, body) - def _rax_auth(self, url): - """Authenticate against the Rackspace auth service.""" - body = {"auth": { - "RAX-KSKEY:apiKeyCredentials": { - "username": self.user, - "apiKey": self.password, - "tenantName": self.projectid}}} - - self._authenticate(url, body) - def _authenticate(self, url, body): """Authenticate and extract the service catalog.""" token_url = url + "/tokens" |