diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-07-20 19:51:48 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-07-20 19:51:48 +0000 |
| commit | a8e16cfd8886e09493f23f72022756209060f8a0 (patch) | |
| tree | 3efe4aa10858fe63a4ca6aa0de6075e2e386c677 | |
| parent | 4a9d44d4088bcd14479aafd6404ca93c6399e38c (diff) | |
| parent | ac5df2277968598914aeb803f5d7b57fabe876f0 (diff) | |
Merge "Don't create volumes if an incorrect size was given"
| -rw-r--r-- | nova/tests/api/openstack/volume/test_volumes.py | 13 | ||||
| -rw-r--r-- | nova/volume/api.py | 3 |
2 files changed, 16 insertions, 0 deletions
diff --git a/nova/tests/api/openstack/volume/test_volumes.py b/nova/tests/api/openstack/volume/test_volumes.py index 0d671dfde..199e1fa95 100644 --- a/nova/tests/api/openstack/volume/test_volumes.py +++ b/nova/tests/api/openstack/volume/test_volumes.py @@ -19,6 +19,7 @@ from lxml import etree import webob from nova.api.openstack.volume import volumes +from nova import exception from nova import flags from nova.openstack.common import timeutils from nova import test @@ -65,6 +66,18 @@ class VolumeApiTest(test.TestCase): 'size': 100}} self.assertEqual(res_dict, expected) + def test_volume_creation_fails_with_bad_size(self): + vol = {"size": '', + "display_name": "Volume Test Name", + "display_description": "Volume Test Desc", + "availability_zone": "zone1:host1"} + body = {"volume": vol} + req = fakes.HTTPRequest.blank('/v1/volumes') + self.assertRaises(exception.InvalidInput, + self.controller.create, + req, + body) + def test_volume_create_no_body(self): body = {} req = fakes.HTTPRequest.blank('/v1/volumes') diff --git a/nova/volume/api.py b/nova/volume/api.py index ee079021a..90eef1e9c 100644 --- a/nova/volume/api.py +++ b/nova/volume/api.py @@ -80,6 +80,9 @@ class API(base.Base): else: snapshot_id = None + if not isinstance(size, int) or size <= 0: + msg = _('Volume size must be an integer and greater than 0') + raise exception.InvalidInput(reason=msg) try: reservations = QUOTAS.reserve(context, volumes=1, gigabytes=size) except exception.OverQuota as e: |
