diff --git a/Authors b/Authors index afcc2bd70bd6..09896f6679cc 100644 --- a/Authors +++ b/Authors @@ -126,6 +126,7 @@ MotoKen Muneyuki Noguchi Nachi Ueno Naveed Massjouni +Nikhil Komawar Nikolay Sokolov Nirmal Ranganathan Ollie Leahy diff --git a/nova/api/openstack/auth.py b/nova/api/openstack/auth.py index 8e0a71d4fa02..84e0b16caad7 100644 --- a/nova/api/openstack/auth.py +++ b/nova/api/openstack/auth.py @@ -52,8 +52,6 @@ class NoAuthMiddleware(base_wsgi.Middleware): # 2.0 auth here as well. res.headers['X-Auth-Token'] = '%s:%s' % (user_id, project_id) res.headers['X-Server-Management-Url'] = os_url - res.headers['X-Storage-Url'] = '' - res.headers['X-CDN-Management-Url'] = '' res.content_type = 'text/plain' res.status = '204' return res @@ -177,8 +175,14 @@ class AuthMiddleware(base_wsgi.Middleware): res.headers['X-Auth-Token'] = token['token_hash'] res.headers['X-Server-Management-Url'] = \ token['server_management_url'] - res.headers['X-Storage-Url'] = token['storage_url'] - res.headers['X-CDN-Management-Url'] = token['cdn_management_url'] + + if token['storage_url']: + res.headers['X-Storage-Url'] = token['storage_url'] + + if token['cdn_management_url']: + res.headers['X-CDN-Management-Url'] = \ + token['cdn_management_url'] + res.content_type = 'text/plain' res.status = '204' LOG.debug(_("Successfully authenticated '%s'") % username) diff --git a/nova/tests/api/openstack/compute/test_auth.py b/nova/tests/api/openstack/compute/test_auth.py index bc83a8b968f1..2fcf5f7a63b9 100644 --- a/nova/tests/api/openstack/compute/test_auth.py +++ b/nova/tests/api/openstack/compute/test_auth.py @@ -57,9 +57,6 @@ class Test(test.TestCase): result = req.get_response(fakes.wsgi_app(fake_auth=False)) self.assertEqual(result.status, '204 No Content') self.assertEqual(len(result.headers['X-Auth-Token']), 40) - self.assertEqual(result.headers['X-CDN-Management-Url'], - "") - self.assertEqual(result.headers['X-Storage-Url'], "") def test_authorize_token(self): f = fakes.FakeAuthManager() @@ -75,9 +72,6 @@ class Test(test.TestCase): self.assertEqual(len(result.headers['X-Auth-Token']), 40) self.assertEqual(result.headers['X-Server-Management-Url'], "http://foo/v2/user1_project") - self.assertEqual(result.headers['X-CDN-Management-Url'], - "") - self.assertEqual(result.headers['X-Storage-Url'], "") token = result.headers['X-Auth-Token'] self.stubs.Set(nova.api.openstack.compute, 'APIRouter', @@ -210,6 +204,21 @@ class Test(test.TestCase): result = req.get_response(fakes.wsgi_app(fake_auth=False)) self.assertEqual(result.status, '401 Unauthorized') + def test_auth_token_no_empty_headers(self): + f = fakes.FakeAuthManager() + user = nova.auth.manager.User('id1', 'user1', 'user1_key', None, None) + f.add_user(user) + + req = webob.Request.blank('/v2/') + req.headers['X-Auth-User'] = 'user1' + req.headers['X-Auth-Key'] = 'user1_key' + req.headers['X-Auth-Project-Id'] = 'user1_project' + result = req.get_response(fakes.wsgi_app(fake_auth=False)) + self.assertEqual(result.status, '204 No Content') + self.assertEqual(len(result.headers['X-Auth-Token']), 40) + self.assertFalse('X-CDN-Management-Url' in result.headers) + self.assertFalse('X-Storage-Url' in result.headers) + class TestFunctional(test.TestCase): def test_token_expiry(self): @@ -297,9 +306,6 @@ class TestNoAuthMiddleware(test.TestCase): result = req.get_response(fakes.wsgi_app(fake_auth=False, use_no_auth=True)) self.assertEqual(result.status, '204 No Content') - self.assertEqual(result.headers['X-CDN-Management-Url'], - "") - self.assertEqual(result.headers['X-Storage-Url'], "") self.assertEqual(result.headers['X-Server-Management-Url'], "http://localhost/v2/user1_project") @@ -312,8 +318,16 @@ class TestNoAuthMiddleware(test.TestCase): result = req.get_response(fakes.wsgi_app(fake_auth=False, use_no_auth=True)) self.assertEqual(result.status, '204 No Content') - self.assertEqual(result.headers['X-CDN-Management-Url'], - "") - self.assertEqual(result.headers['X-Storage-Url'], "") self.assertEqual(result.headers['X-Server-Management-Url'], "http://localhost/v2/user1_project") + + def test_auth_token_no_empty_headers(self): + req = webob.Request.blank('/v2') + req.headers['X-Auth-User'] = 'user1' + req.headers['X-Auth-Key'] = 'user1_key' + req.headers['X-Auth-Project-Id'] = 'user1_project' + result = req.get_response(fakes.wsgi_app(fake_auth=False, + use_no_auth=True)) + self.assertEqual(result.status, '204 No Content') + self.assertFalse('X-CDN-Management-Url' in result.headers) + self.assertFalse('X-Storage-Url' in result.headers)

AltStyle によって変換されたページ (->オリジナル) /