Update quota-set throw 500 error
The server doesn't check whether the parameter "quota_set" or
"quota_class_set" is in request
body.So the 500 error has been thrown.
We should catch the KeyError and transfer the KeyError to
400(HTTPBadRequest) instead of 500.
Closes-Bug: #1249971
(cherry picked from commit 2ed2f3aff8
)
Change-Id: I01260c77efa50324f3d203888689cdb1e94d2c21
This commit is contained in:
parent
ace214a87f
commit
ed41b6804a
|
@ -42,7 +42,7 @@ class QuotaClassTemplate(xmlutil.TemplateBuilder):
|
|||
return xmlutil.MasterTemplate(root, 1)
|
||||
|
||||
|
||||
class QuotaClassSetsController(object):
|
||||
class QuotaClassSetsController(wsgi.Controller):
|
||||
|
||||
def _format_quota_set(self, quota_class, quota_set):
|
||||
"""Convert the quota object to a result dict"""
|
||||
|
@ -68,6 +68,11 @@ class QuotaClassSetsController(object):
|
|||
context = req.environ['cinder.context']
|
||||
authorize(context)
|
||||
quota_class = id
|
||||
if not self.is_valid_body(body, 'quota_class_set'):
|
||||
msg = _("Missing required element quota_class_set"
|
||||
" in request body.")
|
||||
raise webob.exc.HTTPBadRequest(explanation=msg)
|
||||
|
||||
for key in body['quota_class_set'].keys():
|
||||
if key in QUOTAS:
|
||||
value = int(body['quota_class_set'][key])
|
||||
|
|
|
@ -46,7 +46,7 @@ class QuotaTemplate(xmlutil.TemplateBuilder):
|
|||
return xmlutil.MasterTemplate(root, 1)
|
||||
|
||||
|
||||
class QuotaSetsController(object):
|
||||
class QuotaSetsController(wsgi.Controller):
|
||||
|
||||
def _format_quota_set(self, project_id, quota_set):
|
||||
"""Convert the quota object to a result dict"""
|
||||
|
@ -96,6 +96,10 @@ class QuotaSetsController(object):
|
|||
context = req.environ['cinder.context']
|
||||
authorize_update(context)
|
||||
project_id = id
|
||||
if not self.is_valid_body(body, 'quota_set'):
|
||||
msg = _("Missing required element quota_set in request body.")
|
||||
raise webob.exc.HTTPBadRequest(explanation=msg)
|
||||
|
||||
for key in body['quota_set'].keys():
|
||||
if key in QUOTAS:
|
||||
self._validate_quota_limit(body['quota_set'][key])
|
||||
|
|
|
@ -101,6 +101,16 @@ class QuotaSetsControllerTest(test.TestCase):
|
|||
self.assertRaises(webob.exc.HTTPForbidden, self.controller.update,
|
||||
self.req, 'foo', make_body(tenant_id=None))
|
||||
|
||||
def test_update_without_quota_set_field(self):
|
||||
body = {'fake_quota_set': {'gigabytes': 100}}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,
|
||||
self.req, 'foo', body)
|
||||
|
||||
def test_update_empty_body(self):
|
||||
body = {}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,
|
||||
self.req, 'foo', body)
|
||||
|
||||
|
||||
class QuotaSerializerTest(test.TestCase):
|
||||
|
||||
|
|
Loading…
Reference in New Issue