From 6bc930e9ebac8595419da563e4f36ab927cb00a2 Mon Sep 17 00:00:00 2001 From: jichenjc Date: Fri, 14 Aug 2015 21:02:26 +0800 Subject: [PATCH] Remove 'Retry-After' in server create and resize Base on following discussion http://lists.openstack.org/pipermail/openstack-dev/2015-August/072344.html we need to avoid Retry-After when HTTPForbidden is returned to server create and resize functions. Change-Id: Icf5a78224ac0dd597fa930f5a8eb3dd7d1c0142c Closes-Bug: 1486635 --- nova/api/openstack/compute/legacy_v2/servers.py | 6 ++---- nova/api/openstack/compute/servers.py | 6 ++---- nova/exception.py | 1 - .../tests/unit/api/openstack/compute/test_image_metadata.py | 6 ++---- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/nova/api/openstack/compute/legacy_v2/servers.py b/nova/api/openstack/compute/legacy_v2/servers.py index 5a433161a3..d4c2bce23d 100644 --- a/nova/api/openstack/compute/legacy_v2/servers.py +++ b/nova/api/openstack/compute/legacy_v2/servers.py @@ -630,8 +630,7 @@ class Controller(wsgi.Controller): except (exception.QuotaError, exception.PortLimitExceeded) as error: raise exc.HTTPForbidden( - explanation=error.format_message(), - headers={'Retry-After': 0}) + explanation=error.format_message()) except messaging.RemoteError as err: msg = "%(err_type)s: %(err_msg)s" % {'err_type': err.exc_type, 'err_msg': err.value} @@ -797,8 +796,7 @@ class Controller(wsgi.Controller): self.compute_api.resize(context, instance, flavor_id, **kwargs) except exception.QuotaError as error: raise exc.HTTPForbidden( - explanation=error.format_message(), - headers={'Retry-After': 0}) + explanation=error.format_message()) except exception.FlavorNotFound: msg = _("Unable to locate requested flavor.") raise exc.HTTPBadRequest(explanation=msg) diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index bebefb2804..22d80397a8 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -587,8 +587,7 @@ class ServersController(wsgi.Controller): except (exception.QuotaError, exception.PortLimitExceeded) as error: raise exc.HTTPForbidden( - explanation=error.format_message(), - headers={'Retry-After': 0}) + explanation=error.format_message()) except exception.ImageNotFound: msg = _("Can not find requested image") raise exc.HTTPBadRequest(explanation=msg) @@ -842,8 +841,7 @@ class ServersController(wsgi.Controller): self.compute_api.resize(context, instance, flavor_id, **kwargs) except exception.QuotaError as error: raise exc.HTTPForbidden( - explanation=error.format_message(), - headers={'Retry-After': 0}) + explanation=error.format_message()) except exception.FlavorNotFound: msg = _("Unable to locate requested flavor.") raise exc.HTTPBadRequest(explanation=msg) diff --git a/nova/exception.py b/nova/exception.py index 1e436ba9ee..8fd3637599 100644 --- a/nova/exception.py +++ b/nova/exception.py @@ -1277,7 +1277,6 @@ class QuotaError(NovaException): # The error status code for out of quota for the nova api should be # 403 Forbidden. code = 413 - headers = {'Retry-After': 0} safe = True diff --git a/nova/tests/unit/api/openstack/compute/test_image_metadata.py b/nova/tests/unit/api/openstack/compute/test_image_metadata.py index b249feeb25..d623921e4d 100644 --- a/nova/tests/unit/api/openstack/compute/test_image_metadata.py +++ b/nova/tests/unit/api/openstack/compute/test_image_metadata.py @@ -272,8 +272,7 @@ class ImageMetaDataTestV21(test.NoDBTestCase): self.controller.delete, req, '100', 'key1') @mock.patch(CHK_QUOTA_STR, - side_effect=webob.exc.HTTPForbidden( - explanation='', headers={'Retry-After': 0})) + side_effect=webob.exc.HTTPForbidden(explanation='')) @mock.patch('nova.image.api.API.update') @mock.patch('nova.image.api.API.get', return_value=get_image_123()) def test_too_many_metadata_items_on_create(self, _get_mocked, @@ -289,8 +288,7 @@ class ImageMetaDataTestV21(test.NoDBTestCase): self.assertFalse(update_mocked.called) @mock.patch(CHK_QUOTA_STR, - side_effect=webob.exc.HTTPForbidden( - explanation='', headers={'Retry-After': 0})) + side_effect=webob.exc.HTTPForbidden(explanation='')) @mock.patch('nova.image.api.API.update') @mock.patch('nova.image.api.API.get', return_value=get_image_123()) def test_too_many_metadata_items_on_put(self, _get_mocked,