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