summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-08-28 16:21:59 +0000
committerGerrit Code Review <review@openstack.org>2018-08-28 16:21:59 +0000
commitf6ad3f236f45011d1c7a57547caf4e8b86fe8b7d (patch)
treebcfecc566bf7a6a9153439a81b9cc528fa2910f4
parent865a8241910f8bb3943bb6c33316df071e7b968d (diff)
parent86904543ebabcc2abe0ac3fea881afa2df81ff07 (diff)
downloadkeystonemiddleware-f6ad3f236f45011d1c7a57547caf4e8b86fe8b7d.tar.gz
Merge "Handle DiscoveryFailure errors"
-rw-r--r--keystonemiddleware/auth_token/__init__.py1
-rw-r--r--keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py11
2 files changed, 12 insertions, 0 deletions
diff --git a/keystonemiddleware/auth_token/__init__.py b/keystonemiddleware/auth_token/__init__.py
index f4917bd..46a6b1e 100644
--- a/keystonemiddleware/auth_token/__init__.py
+++ b/keystonemiddleware/auth_token/__init__.py
@@ -763,6 +763,7 @@ class AuthProtocol(BaseAuthProtocol):
self._token_cache.set(token_hashes[0], data)
except (ksa_exceptions.ConnectFailure,
+ ksa_exceptions.DiscoveryFailure,
ksa_exceptions.RequestTimeout,
ksm_exceptions.RevocationListError,
ksm_exceptions.ServiceError) as e:
diff --git a/keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py b/keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py
index 4d36be1..f9916cc 100644
--- a/keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py
+++ b/keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py
@@ -1070,6 +1070,17 @@ class CommonAuthTokenMiddlewareTest(object):
self.assertIsNone(self._get_cached_token(ERROR_TOKEN))
self.assert_valid_last_url(ERROR_TOKEN)
+ def test_discovery_failure(self):
+ def discovery_failure_response(request, context):
+ raise ksa_exceptions.DiscoveryFailure(
+ "Could not determine a suitable URL for the plugin")
+
+ self.requests_mock.get(BASE_URI, text=discovery_failure_response)
+ self.call_middleware(headers={'X-Auth-Token': 'token'},
+ expected_status=503)
+ self.assertIsNone(self._get_cached_token('token'))
+ self.assertEqual(BASE_URI, self.requests_mock.last_request.url)
+
def test_http_request_max_retries(self):
times_retry = 10
body_string = 'The Keystone service is temporarily unavailable.'