diff options
author | Vishvananda Ishaya <vishvananda@gmail.com> | 2012-03-14 09:26:40 -0700 |
---|---|---|
committer | Vishvananda Ishaya <vishvananda@gmail.com> | 2012-03-14 15:20:27 -0700 |
commit | 22b484a6d0b65c2a41fd4c730a5ebddf98c70c84 (patch) | |
tree | 349a5d52a23abd63e2d8f978305d14ce5da049a6 /nova/volume/api.py | |
parent | f40357574245d2e3b8cb7995cb27adc8e9b99175 (diff) | |
download | nova-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.py | 8 |
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', |