Add invalid number checking in flavor creation api
Flavor creation api doesn't check whether 'memory_mb' argument number is integer,add invalid number checking into the flavor creation function to remind the user to input right value Fixes bug #1171278 Change-Id: I8308f66c485d8c872864661148e9eac7b685e406
This commit is contained in:
parent
cefb0510b8
commit
8ee10c55b0
@ -76,6 +76,8 @@ class FlavorManageController(wsgi.Controller):
|
|||||||
except (exception.InstanceTypeExists,
|
except (exception.InstanceTypeExists,
|
||||||
exception.InstanceTypeIdExists) as err:
|
exception.InstanceTypeIdExists) as err:
|
||||||
raise webob.exc.HTTPConflict(explanation=err.format_message())
|
raise webob.exc.HTTPConflict(explanation=err.format_message())
|
||||||
|
except exception.InvalidInput as exc:
|
||||||
|
raise webob.exc.HTTPBadRequest(explanation=exc.format_message())
|
||||||
|
|
||||||
return self._view_builder.show(req, flavor)
|
return self._view_builder.show(req, flavor)
|
||||||
|
|
||||||
|
@ -95,20 +95,20 @@ def create(name, memory, vcpus, root_gb, ephemeral_gb=0, flavorid=None,
|
|||||||
# Some attributes are positive ( > 0) integers
|
# Some attributes are positive ( > 0) integers
|
||||||
for option in ['memory_mb', 'vcpus']:
|
for option in ['memory_mb', 'vcpus']:
|
||||||
try:
|
try:
|
||||||
|
assert int(str(kwargs[option])) > 0
|
||||||
kwargs[option] = int(kwargs[option])
|
kwargs[option] = int(kwargs[option])
|
||||||
assert kwargs[option] > 0
|
except (ValueError, AssertionError, TypeError):
|
||||||
except (ValueError, AssertionError):
|
msg = _("'%s' argument must be a positive integer") % option
|
||||||
msg = _("'%s' argument must be greater than 0") % option
|
|
||||||
raise exception.InvalidInput(reason=msg)
|
raise exception.InvalidInput(reason=msg)
|
||||||
|
|
||||||
# Some attributes are non-negative ( >= 0) integers
|
# Some attributes are non-negative ( >= 0) integers
|
||||||
for option in ['root_gb', 'ephemeral_gb', 'swap']:
|
for option in ['root_gb', 'ephemeral_gb', 'swap']:
|
||||||
try:
|
try:
|
||||||
|
assert int(str(kwargs[option])) >= 0
|
||||||
kwargs[option] = int(kwargs[option])
|
kwargs[option] = int(kwargs[option])
|
||||||
assert kwargs[option] >= 0
|
except (ValueError, AssertionError, TypeError):
|
||||||
except (ValueError, AssertionError):
|
msg = _("'%s' argument must be an integer greater than or"
|
||||||
msg = _("'%s' argument must be greater than or equal"
|
" equal to 0") % option
|
||||||
" to 0") % option
|
|
||||||
raise exception.InvalidInput(reason=msg)
|
raise exception.InvalidInput(reason=msg)
|
||||||
|
|
||||||
# rxtx_factor should be a positive float
|
# rxtx_factor should be a positive float
|
||||||
|
@ -218,3 +218,18 @@ class FlavorManageTest(test.TestCase):
|
|||||||
req.body = jsonutils.dumps(expected)
|
req.body = jsonutils.dumps(expected)
|
||||||
res = req.get_response(self.app)
|
res = req.get_response(self.app)
|
||||||
self.assertEqual(res.status_int, 409)
|
self.assertEqual(res.status_int, 409)
|
||||||
|
|
||||||
|
def test_invalid_memory_mb(self):
|
||||||
|
"""Check negative and decimal number can't be accepted."""
|
||||||
|
|
||||||
|
self.stubs.UnsetAll()
|
||||||
|
self.assertRaises(exception.InvalidInput, flavors.create, "abc",
|
||||||
|
-512, 2, 1, 1, 1234, 512, 1, True)
|
||||||
|
self.assertRaises(exception.InvalidInput, flavors.create, "abcd",
|
||||||
|
512.2, 2, 1, 1, 1234, 512, 1, True)
|
||||||
|
self.assertRaises(exception.InvalidInput, flavors.create, "abcde",
|
||||||
|
None, 2, 1, 1, 1234, 512, 1, True)
|
||||||
|
self.assertRaises(exception.InvalidInput, flavors.create, "abcdef",
|
||||||
|
512, 2, None, 1, 1234, 512, 1, True)
|
||||||
|
self.assertRaises(exception.InvalidInput, flavors.create, "abcdef",
|
||||||
|
"test_memory_mb", 2, None, 1, 1234, 512, 1, True)
|
||||||
|
Loading…
Reference in New Issue
Block a user