diff options
author | Zuul <zuul@review.openstack.org> | 2018-08-28 16:21:59 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2018-08-28 16:21:59 +0000 |
commit | f6ad3f236f45011d1c7a57547caf4e8b86fe8b7d (patch) | |
tree | bcfecc566bf7a6a9153439a81b9cc528fa2910f4 | |
parent | 865a8241910f8bb3943bb6c33316df071e7b968d (diff) | |
parent | 86904543ebabcc2abe0ac3fea881afa2df81ff07 (diff) | |
download | keystonemiddleware-f6ad3f236f45011d1c7a57547caf4e8b86fe8b7d.tar.gz |
Merge "Handle DiscoveryFailure errors"
-rw-r--r-- | keystonemiddleware/auth_token/__init__.py | 1 | ||||
-rw-r--r-- | keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py | 11 |
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.' |