summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-03-22 16:04:48 +0000
committerGerrit Code Review <review@openstack.org>2013-03-22 16:04:48 +0000
commit4979817fa159424f5a1fb093bdc261c1882ca877 (patch)
treed423f4dfd92f583b0e8ca470bfe5fbfce3545c43
parent86396da1addad7700bab15fb16e8e644f4f833e9 (diff)
parent3801a4d2f4c59dbfda49131ddde22fcb3976d651 (diff)
Merge "translate cinder BadRequest exception"
-rw-r--r--nova/volume/cinder.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/nova/volume/cinder.py b/nova/volume/cinder.py
index e465daf1c..ca7f86da1 100644
--- a/nova/volume/cinder.py
+++ b/nova/volume/cinder.py
@@ -171,7 +171,7 @@ def _untranslate_snapshot_summary_view(context, snapshot):
class API(base.Base):
"""API for interacting with the volume manager."""
- def _reraise_translated_volume_exception(self, volume_id):
+ def _reraise_translated_volume_exception(self, volume_id=None):
"""Transform the exception for the volume but keep its traceback
intact."""
exc_type, exc_value, exc_trace = sys.exc_info()
@@ -181,6 +181,8 @@ class API(base.Base):
def _translate_volume_exception(self, volume_id, exc_value):
if isinstance(exc_value, cinder_exception.NotFound):
return exception.VolumeNotFound(volume_id=volume_id)
+ elif isinstance(exc_value, cinder_exception.BadRequest):
+ return exception.InvalidInput(reason=exc_value.message)
return exc_value
def get(self, context, volume_id):
@@ -265,9 +267,11 @@ class API(base.Base):
metadata=metadata,
imageRef=image_id)
- item = cinderclient(context).volumes.create(size, **kwargs)
-
- return _untranslate_volume_summary_view(context, item)
+ try:
+ item = cinderclient(context).volumes.create(size, **kwargs)
+ return _untranslate_volume_summary_view(context, item)
+ except Exception:
+ self._reraise_translated_volume_exception()
def delete(self, context, volume):
cinderclient(context).volumes.delete(volume['id'])