diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-03-22 16:04:48 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-03-22 16:04:48 +0000 |
| commit | 4979817fa159424f5a1fb093bdc261c1882ca877 (patch) | |
| tree | d423f4dfd92f583b0e8ca470bfe5fbfce3545c43 | |
| parent | 86396da1addad7700bab15fb16e8e644f4f833e9 (diff) | |
| parent | 3801a4d2f4c59dbfda49131ddde22fcb3976d651 (diff) | |
Merge "translate cinder BadRequest exception"
| -rw-r--r-- | nova/volume/cinder.py | 12 |
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']) |
