summaryrefslogtreecommitdiffstats
path: root/nova/api
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/api
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/api')
-rw-r--r--nova/api/openstack/compute/contrib/volumes.py22
1 files changed, 13 insertions, 9 deletions
diff --git a/nova/api/openstack/compute/contrib/volumes.py b/nova/api/openstack/compute/contrib/volumes.py
index 640ac0c76..5b2097365 100644
--- a/nova/api/openstack/compute/contrib/volumes.py
+++ b/nova/api/openstack/compute/contrib/volumes.py
@@ -244,15 +244,19 @@ class VolumeController(wsgi.Controller):
availability_zone = vol.get('availability_zone', None)
- new_volume = self.volume_api.create(context,
- size,
- vol.get('display_name'),
- vol.get('display_description'),
- snapshot=snapshot,
- volume_type=vol_type,
- metadata=metadata,
- availability_zone=availability_zone
- )
+ try:
+ new_volume = self.volume_api.create(
+ context,
+ size,
+ vol.get('display_name'),
+ vol.get('display_description'),
+ snapshot=snapshot,
+ volume_type=vol_type,
+ metadata=metadata,
+ availability_zone=availability_zone
+ )
+ except exception.InvalidInput as err:
+ raise exc.HTTPBadRequest(explanation=str(err))
# TODO(vish): Instance should be None at db layer instead of
# trying to lazy load, but for now we turn it into