summaryrefslogtreecommitdiff
path: root/novaclient/client.py
diff options
context:
space:
mode:
Diffstat (limited to 'novaclient/client.py')
-rw-r--r--novaclient/client.py29
1 files changed, 11 insertions, 18 deletions
diff --git a/novaclient/client.py b/novaclient/client.py
index 73595701..e73a6dd4 100644
--- a/novaclient/client.py
+++ b/novaclient/client.py
@@ -31,15 +31,6 @@ from novaclient import service_catalog
from novaclient import utils
-def get_auth_system_url(auth_system):
- """Load plugin-based auth_url"""
- ep_name = 'openstack.client.auth_url'
- for ep in pkg_resources.iter_entry_points(ep_name):
- if ep.name == auth_system:
- return ep.load()()
- raise exceptions.AuthSystemNotFound(auth_system)
-
-
class HTTPClient(object):
USER_AGENT = 'python-novaclient'
@@ -52,12 +43,17 @@ class HTTPClient(object):
timings=False, bypass_url=None,
os_cache=False, no_cache=True,
http_log_debug=False, auth_system='keystone',
+ auth_plugin=None,
cacert=None):
self.user = user
self.password = password
self.projectid = projectid
+
+ 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 = get_auth_system_url(auth_system)
+ auth_url = auth_plugin.get_auth_url()
if not auth_url:
raise exceptions.EndpointNotFound()
self.auth_url = auth_url.rstrip('/')
@@ -94,6 +90,7 @@ class HTTPClient(object):
self.verify_cert = True
self.auth_system = auth_system
+ self.auth_plugin = auth_plugin
self._logger = logging.getLogger(__name__)
if self.http_log_debug:
@@ -392,12 +389,7 @@ class HTTPClient(object):
raise exceptions.from_response(resp, body, url)
def _plugin_auth(self, auth_url):
- """Load plugin-based authentication"""
- ep_name = 'openstack.client.authenticate'
- for ep in pkg_resources.iter_entry_points(ep_name):
- if ep.name == self.auth_system:
- return ep.load()(self, auth_url)
- raise exceptions.AuthSystemNotFound(self.auth_system)
+ self.auth_plugin.authenticate(self, auth_url)
def _v2_auth(self, url):
"""Authenticate against a v2.0 auth service."""
@@ -414,7 +406,7 @@ class HTTPClient(object):
self._authenticate(url, body)
- def _authenticate(self, url, body):
+ def _authenticate(self, url, body, **kwargs):
"""Authenticate and extract the service catalog."""
token_url = url + "/tokens"
@@ -423,7 +415,8 @@ class HTTPClient(object):
token_url,
"POST",
body=body,
- allow_redirects=True)
+ allow_redirects=True,
+ **kwargs)
return self._extract_service_catalog(url, resp, body)