Quota violations should not cause a stacktrace in the logs

Don't show exception logs in api log for resize operations
if the resize operations lead to quota violations

Change-Id: Ia101c599908c7652cc07fa4c7e7f1b057943e031
Closes-Bug: #1235389
This commit is contained in:
jichen
2013-12-06 10:29:51 -05:00
parent 474564764e
commit a7885385fb
6 changed files with 18 additions and 2 deletions

View File

@@ -137,6 +137,10 @@ class AdminActionsController(wsgi.Controller):
try:
instance = self.compute_api.get(context, id, want_objects=True)
self.compute_api.resize(req.environ['nova.context'], instance)
except exception.QuotaError as error:
raise exc.HTTPRequestEntityTooLarge(
explanation=error.format_message(),
headers={'Retry-After': 0})
except exception.InstanceIsLocked as e:
raise exc.HTTPConflict(explanation=e.format_message())
except exception.InstanceInvalidState as state_error:

View File

@@ -124,6 +124,10 @@ class AdminActionsController(wsgi.Controller):
try:
instance = self.compute_api.get(context, id, want_objects=True)
self.compute_api.resize(req.environ['nova.context'], instance)
except exception.QuotaError as error:
raise exc.HTTPRequestEntityTooLarge(
explanation=error.format_message(),
headers={'Retry-After': 0})
except exception.InstanceIsLocked as e:
raise exc.HTTPConflict(explanation=e.format_message())
except exception.InstanceInvalidState as state_error:

View File

@@ -999,6 +999,10 @@ class ServersController(wsgi.Controller):
try:
self.compute_api.resize(context, instance, flavor_id, **kwargs)
except exception.QuotaError as error:
raise exc.HTTPRequestEntityTooLarge(
explanation=error.format_message(),
headers={'Retry-After': 0})
except exception.FlavorNotFound:
msg = _("Unable to locate requested flavor.")
raise exc.HTTPBadRequest(explanation=msg)

View File

@@ -1130,6 +1130,10 @@ class Controller(wsgi.Controller):
try:
self.compute_api.resize(context, instance, flavor_id, **kwargs)
except exception.QuotaError as error:
raise exc.HTTPRequestEntityTooLarge(
explanation=error.format_message(),
headers={'Retry-After': 0})
except exception.FlavorNotFound:
msg = _("Unable to locate requested flavor.")
raise exc.HTTPBadRequest(explanation=msg)

View File

@@ -577,7 +577,7 @@ class ServerActionsControllerTest(test.TestCase):
self.stubs.Set(compute_api.API, 'resize', fake_resize)
req = fakes.HTTPRequestV3.blank(self.url)
self.assertRaises(exception.TooManyInstances,
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
self.controller._action_resize,
req, FAKE_UUID, body)

View File

@@ -678,7 +678,7 @@ class ServerActionsControllerTest(test.TestCase):
self.stubs.Set(compute_api.API, 'resize', fake_resize)
req = fakes.HTTPRequest.blank(self.url)
self.assertRaises(exception.TooManyInstances,
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
self.controller._action_resize,
req, FAKE_UUID, body)