Since there is no equivalent of a force-snapshot-delete,
the normal snapshot-delete should be more robust to
also handle backend errors. In case the backend does not have
the image snapshot anymore, log an info message and succeed the
operation.
Change-Id: I7fe0878dbc07053ac78272b6998513fafa1c36e8
Closes-Bug: #
1415905
Related-Bug: #
1361926
proxy.remove_snap.assert_called_with(self.snapshot_name)
proxy.unprotect_snap.assert_called_with(self.snapshot_name)
+ @common_mocks
+ def test_delete_notfound_snapshot(self):
+ proxy = self.mock_proxy.return_value
+ proxy.__enter__.return_value = proxy
+
+ proxy.unprotect_snap.side_effect = (
+ self.mock_rbd.ImageNotFound)
+
+ self.driver.delete_snapshot(self.snapshot)
+
+ proxy.remove_snap.assert_called_with(self.snapshot_name)
+ proxy.unprotect_snap.assert_called_with(self.snapshot_name)
+
@common_mocks
def test_delete_busy_snapshot(self):
proxy = self.mock_proxy.return_value
with RBDVolumeProxy(self, volume_name) as volume:
try:
volume.unprotect_snap(snap_name)
+ except self.rbd.ImageNotFound:
+ LOG.info(_LI("Snapshot %s does not exist in backend."),
+ snap_name)
except self.rbd.ImageBusy:
children_list = self._get_children_info(volume, snap_name)