From 46ce2e345bce18c2e2f645bb90aea11ca53ba825 Mon Sep 17 00:00:00 2001 From: Chris Yeoh Date: Wed, 8 May 2013 15:36:28 +0930 Subject: 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 --- nova/api/openstack/compute/contrib/volumes.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'nova/api') 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 -- cgit