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,
|
||||
exception.InstanceTypeIdExists) as err:
|
||||
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)
|
||||
|
||||
|
@ -95,20 +95,20 @@ def create(name, memory, vcpus, root_gb, ephemeral_gb=0, flavorid=None,
|
||||
# Some attributes are positive ( > 0) integers
|
||||
for option in ['memory_mb', 'vcpus']:
|
||||
try:
|
||||
assert int(str(kwargs[option])) > 0
|
||||
kwargs[option] = int(kwargs[option])
|
||||
assert kwargs[option] > 0
|
||||
except (ValueError, AssertionError):
|
||||
msg = _("'%s' argument must be greater than 0") % option
|
||||
except (ValueError, AssertionError, TypeError):
|
||||
msg = _("'%s' argument must be a positive integer") % option
|
||||
raise exception.InvalidInput(reason=msg)
|
||||
|
||||
# Some attributes are non-negative ( >= 0) integers
|
||||
for option in ['root_gb', 'ephemeral_gb', 'swap']:
|
||||
try:
|
||||
assert int(str(kwargs[option])) >= 0
|
||||
kwargs[option] = int(kwargs[option])
|
||||
assert kwargs[option] >= 0
|
||||
except (ValueError, AssertionError):
|
||||
msg = _("'%s' argument must be greater than or equal"
|
||||
" to 0") % option
|
||||
except (ValueError, AssertionError, TypeError):
|
||||
msg = _("'%s' argument must be an integer greater than or"
|
||||
" equal to 0") % option
|
||||
raise exception.InvalidInput(reason=msg)
|
||||
|
||||
# rxtx_factor should be a positive float
|
||||
|
@ -218,3 +218,18 @@ class FlavorManageTest(test.TestCase):
|
||||
req.body = jsonutils.dumps(expected)
|
||||
res = req.get_response(self.app)
|
||||
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