From 06d93cb0d8757c3217cea0a26d2e135e6e9d26d4 Mon Sep 17 00:00:00 2001 From: Jamie Lennox Date: Fri, 10 Jan 2014 16:38:55 +1000 Subject: [PATCH] Respect region name when processing domain URL When deprecating the use of management_url from service_catalog we updated the management_url setter for the project scoped token, however we missed the domain scoped token case. There is actually nothing we can do here to test this scenario as the backwards compatibility code that was installed handles this for us and there is no problem, however we should not be internally relying on deprecated code. Change-Id: I59bac4d9d74f2eb8bc6edd40518c7cd5a4fe1343 --- keystoneclient/httpclient.py | 18 ++++++++++-------- keystoneclient/v3/client.py | 3 +-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/keystoneclient/httpclient.py b/keystoneclient/httpclient.py index 2cfee84b5..ccac25c3f 100644 --- a/keystoneclient/httpclient.py +++ b/keystoneclient/httpclient.py @@ -455,6 +455,15 @@ class HTTPClient(object): except Exception as e: _logger.warning("Failed to store token into keyring %s" % (e)) + def _process_management_url(self, region_name): + try: + self._management_url = self.auth_ref.service_catalog.url_for( + service_type='identity', + endpoint_type='admin', + region_name=region_name) + except exceptions.EndpointNotFound: + _logger.warning("Failed to retrieve management_url from token") + def process_token(self, region_name=None): """Extract and process information from the new auth_ref. @@ -467,14 +476,7 @@ class HTTPClient(object): if not self.auth_ref.tenant_id: raise exceptions.AuthorizationFailure( "Token didn't provide tenant_id") - try: - self._management_url = self.auth_ref.service_catalog.url_for( - service_type='identity', - endpoint_type='admin', - region_name=region_name or self.region_name) - except exceptions.EndpointNotFound: - _logger.warning("Failed to retrieve management_url from token") - + self._process_management_url(region_name) self.project_name = self.auth_ref.tenant_name self.project_id = self.auth_ref.tenant_id diff --git a/keystoneclient/v3/client.py b/keystoneclient/v3/client.py index 8204e8811..c862d24cb 100644 --- a/keystoneclient/v3/client.py +++ b/keystoneclient/v3/client.py @@ -117,8 +117,7 @@ class Client(httpclient.HTTPClient): if not self.auth_ref.domain_id: raise exceptions.AuthorizationFailure( "Token didn't provide domain_id") - if self.auth_ref.management_url: - self._management_url = self.auth_ref.management_url[0] + self._process_management_url(kwargs.get('region_name')) self.domain_name = self.auth_ref.domain_name self.domain_id = self.auth_ref.domain_id