summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-03-06 03:08:00 +0000
committerGerrit Code Review <review@openstack.org>2012-03-06 03:08:00 +0000
commit9bb2a335903e996a8c7b781152c10310d867dcb8 (patch)
treeaa5e86150d3aac03fb7f0dc6f7f8f42525ebe945 /nova/api
parent43b52f7bd224209771245d987c3ff0f2506803ec (diff)
parent913ecb84d286413cfec3dff7cf1b1b71f93bcfce (diff)
Merge "Raise 409 when rescuing instance in RESCUE mode"
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/compute/contrib/rescue.py8
-rw-r--r--nova/api/openstack/extensions.py2
2 files changed, 9 insertions, 1 deletions
diff --git a/nova/api/openstack/compute/contrib/rescue.py b/nova/api/openstack/compute/contrib/rescue.py
index bd2d09162..20158ff22 100644
--- a/nova/api/openstack/compute/contrib/rescue.py
+++ b/nova/api/openstack/compute/contrib/rescue.py
@@ -17,6 +17,7 @@
import webob
from webob import exc
+from nova.api.openstack import common
from nova.api.openstack import extensions as exts
from nova.api.openstack import wsgi
from nova import compute
@@ -56,7 +57,12 @@ class RescueController(wsgi.Controller):
password = utils.generate_password(FLAGS.password_length)
instance = self._get_instance(context, id)
- self.compute_api.rescue(context, instance, rescue_password=password)
+ try:
+ self.compute_api.rescue(context, instance,
+ rescue_password=password)
+ except exception.InstanceInvalidState as state_error:
+ common.raise_http_conflict_for_instance_invalid_state(state_error,
+ 'rescue')
return {'adminPass': password}
@wsgi.action('unrescue')
diff --git a/nova/api/openstack/extensions.py b/nova/api/openstack/extensions.py
index 7d4a167dd..87d215974 100644
--- a/nova/api/openstack/extensions.py
+++ b/nova/api/openstack/extensions.py
@@ -301,6 +301,8 @@ def wrap_errors(fn):
def wrapped(*args, **kwargs):
try:
return fn(*args, **kwargs)
+ except webob.exc.HTTPException:
+ raise
except Exception:
raise webob.exc.HTTPInternalServerError()
return wrapped