Allow snapshots in error state to be deleted.
* Fixes bug 968682 Change-Id: I37fd8e84e50b2f824f978eb7e3181ffb6ddde537
This commit is contained in:
parent
6643abc498
commit
46d65edcc9
@ -275,7 +275,27 @@ class VolumeTestCase(test.TestCase):
|
|||||||
volume_api.delete,
|
volume_api.delete,
|
||||||
self.context,
|
self.context,
|
||||||
volume)
|
volume)
|
||||||
|
self.volume.delete_snapshot(self.context, snapshot_id)
|
||||||
|
self.volume.delete_volume(self.context, volume['id'])
|
||||||
|
|
||||||
|
def test_can_delete_errored_snapshot(self):
|
||||||
|
"""Test snapshot can be created and deleted."""
|
||||||
|
volume = self._create_volume()
|
||||||
|
self.volume.create_volume(self.context, volume['id'])
|
||||||
|
snapshot_id = self._create_snapshot(volume['id'])
|
||||||
|
self.volume.create_snapshot(self.context, volume['id'], snapshot_id)
|
||||||
|
snapshot = db.snapshot_get(context.get_admin_context(),
|
||||||
|
snapshot_id)
|
||||||
|
|
||||||
|
volume_api = nova.volume.api.API()
|
||||||
|
|
||||||
|
snapshot['status'] = 'badstatus'
|
||||||
|
self.assertRaises(exception.InvalidVolume,
|
||||||
|
volume_api.delete_snapshot,
|
||||||
|
self.context,
|
||||||
|
snapshot)
|
||||||
|
|
||||||
|
snapshot['status'] = 'error'
|
||||||
self.volume.delete_snapshot(self.context, snapshot_id)
|
self.volume.delete_snapshot(self.context, snapshot_id)
|
||||||
self.volume.delete_volume(self.context, volume['id'])
|
self.volume.delete_volume(self.context, volume['id'])
|
||||||
|
|
||||||
|
@ -321,8 +321,8 @@ class API(base.Base):
|
|||||||
|
|
||||||
@wrap_check_policy
|
@wrap_check_policy
|
||||||
def delete_snapshot(self, context, snapshot):
|
def delete_snapshot(self, context, snapshot):
|
||||||
if snapshot['status'] != "available":
|
if snapshot['status'] not in ["available", "error"]:
|
||||||
msg = _("must be available")
|
msg = _("Volume Snapshot status must be available or error")
|
||||||
raise exception.InvalidVolume(reason=msg)
|
raise exception.InvalidVolume(reason=msg)
|
||||||
self.db.snapshot_update(context, snapshot['id'],
|
self.db.snapshot_update(context, snapshot['id'],
|
||||||
{'status': 'deleting'})
|
{'status': 'deleting'})
|
||||||
|
Loading…
Reference in New Issue
Block a user