diff --git a/swift/common/middleware/s3api/s3token.py b/swift/common/middleware/s3api/s3token.py index ed875b0e8a..c376dac5fa 100644 --- a/swift/common/middleware/s3api/s3token.py +++ b/swift/common/middleware/s3api/s3token.py @@ -195,7 +195,9 @@ class S3Token(object): auth = auth_plugin.load_from_options(**auth_options) session = keystone_session.Session(auth=auth) - self.keystoneclient = keystone_client.Client(session=session) + self.keystoneclient = keystone_client.Client( + session=session, + region_name=conf.get('region_name')) self._logger.info("Caching s3tokens for %s seconds", self._secret_cache_duration) except Exception: diff --git a/test/unit/common/middleware/s3api/test_s3token.py b/test/unit/common/middleware/s3api/test_s3token.py index 6b43d1accf..b1b582c3b0 100644 --- a/test/unit/common/middleware/s3api/test_s3token.py +++ b/test/unit/common/middleware/s3api/test_s3token.py @@ -526,6 +526,7 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase): 'project_domain_name': 'default', })(FakeApp()) self.assertEqual(20, self.middleware._secret_cache_duration) + self.assertIsNone(MOCK_KEYSTONE.mock_calls[0][2]['region_name']) cache = MOCK_CACHE_FROM_ENV.return_value @@ -562,8 +563,11 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase): 'project_name': 'service', 'user_domain_name': 'default', 'project_domain_name': 'default', + 'region_name': 'some-other-region', })(FakeApp()) self.assertEqual(20, self.middleware._secret_cache_duration) + self.assertEqual(MOCK_KEYSTONE.mock_calls[0][2]['region_name'], + 'some-other-region') cache = MOCK_CACHE_FROM_ENV.return_value cache.get.return_value = None