summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-07-20 19:51:48 +0000
committerGerrit Code Review <review@openstack.org>2012-07-20 19:51:48 +0000
commita8e16cfd8886e09493f23f72022756209060f8a0 (patch)
tree3efe4aa10858fe63a4ca6aa0de6075e2e386c677 /nova
parent4a9d44d4088bcd14479aafd6404ca93c6399e38c (diff)
parentac5df2277968598914aeb803f5d7b57fabe876f0 (diff)
Merge "Don't create volumes if an incorrect size was given"
Diffstat (limited to 'nova')
-rw-r--r--nova/tests/api/openstack/volume/test_volumes.py13
-rw-r--r--nova/volume/api.py3
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: