summaryrefslogtreecommitdiffstats
path: root/nova/volume/api.py
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2012-03-14 09:26:40 -0700
committerVishvananda Ishaya <vishvananda@gmail.com>2012-03-14 15:20:27 -0700
commit22b484a6d0b65c2a41fd4c730a5ebddf98c70c84 (patch)
tree349a5d52a23abd63e2d8f978305d14ce5da049a6 /nova/volume/api.py
parentf40357574245d2e3b8cb7995cb27adc8e9b99175 (diff)
downloadnova-22b484a6d0b65c2a41fd4c730a5ebddf98c70c84.tar.gz
nova-22b484a6d0b65c2a41fd4c730a5ebddf98c70c84.tar.xz
nova-22b484a6d0b65c2a41fd4c730a5ebddf98c70c84.zip
Allow errored volumes to be deleted
* Allow volumes with no host set to be deleted from db * Allow volumes in state error to be deleted * Replicates code from nova-manage command * Fixes bug 953594 Change-Id: Ia8b4594a626df58f030406b12dd003f5c9215612
Diffstat (limited to 'nova/volume/api.py')
-rw-r--r--nova/volume/api.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/nova/volume/api.py b/nova/volume/api.py
index 4719f4f1e..3edfa026b 100644
--- a/nova/volume/api.py
+++ b/nova/volume/api.py
@@ -129,8 +129,12 @@ class API(base.Base):
@wrap_check_policy
def delete(self, context, volume):
volume_id = volume['id']
- if volume['status'] != "available":
- msg = _("Volume status must be available")
+ if not volume['host']:
+ # NOTE(vish): scheduling failed, so delete it
+ self.db.volume_destroy(context, volume_id)
+ return
+ if volume['status'] not in ["available", "error"]:
+ msg = _("Volume status must be available or error")
raise exception.InvalidVolume(reason=msg)
now = utils.utcnow()
self.db.volume_update(context, volume_id, {'status': 'deleting',