summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorChris Yeoh <cyeoh@au1.ibm.com>2013-05-08 15:36:28 +0930
committerChris Yeoh <cyeoh@au1.ibm.com>2013-05-08 15:36:28 +0930
commit46ce2e345bce18c2e2f645bb90aea11ca53ba825 (patch)
tree34a761be8dbc1e0c3cc5511e9bb9f5420f183a5e /nova/tests
parent4ce8f2a6a9d4644153b4ba532ca1b78665507d6a (diff)
downloadnova-46ce2e345bce18c2e2f645bb90aea11ca53ba825.tar.gz
nova-46ce2e345bce18c2e2f645bb90aea11ca53ba825.tar.xz
nova-46ce2e345bce18c2e2f645bb90aea11ca53ba825.zip
Catch volume create exception
Catch InvalidInput exception from cinder when the parameters are invalid such as an invalid size. Currently the exception is not caught which results in a 400 Bad Request correctly being returned, but also leaving a traceback in the logs. Correctly catching the exception and explicitly raising an HTTPBadRequest removes the production of the traceback Fixes bug #1098048 Change-Id: Ia66e67f302cf20e96417f4ff3c1430b755a4a861
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_volumes.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/nova/tests/api/openstack/compute/contrib/test_volumes.py b/nova/tests/api/openstack/compute/contrib/test_volumes.py
index 83372b251..256fb58fc 100644
--- a/nova/tests/api/openstack/compute/contrib/test_volumes.py
+++ b/nova/tests/api/openstack/compute/contrib/test_volumes.py
@@ -24,6 +24,7 @@ from nova.api.openstack.compute.contrib import volumes
from nova.compute import api as compute_api
from nova.compute import instance_types
from nova import context
+from nova import exception
from nova.openstack.common import jsonutils
from nova.openstack.common import timeutils
from nova import test
@@ -183,6 +184,23 @@ class VolumeApiTest(test.TestCase):
self.assertEqual(resp_dict['volume']['availabilityZone'],
vol['availability_zone'])
+ def test_volume_create_bad(self):
+ def fake_volume_create(self, context, size, name, description,
+ snapshot, **param):
+ raise exception.InvalidInput(reason="bad request data")
+
+ self.stubs.Set(cinder.API, "create", fake_volume_create)
+
+ vol = {"size": '#$?',
+ "display_name": "Volume Test Name",
+ "display_description": "Volume Test Desc",
+ "availability_zone": "zone1:host1"}
+ body = {"volume": vol}
+
+ req = fakes.HTTPRequest.blank('/v2/fake/os-volumes')
+ self.assertRaises(webob.exc.HTTPBadRequest,
+ volumes.VolumeController().create, req, body)
+
def test_volume_index(self):
req = webob.Request.blank('/v2/fake/os-volumes')
resp = req.get_response(self.app)