PowerMax Driver - Revert to Snapshot Fix

Fix for handling volume snapshot during snapshot revert
process to prevent premature deletion of non-temporary snapshots.

Change-Id: Id4708b069b32f5b612d0ce158584353b6138823f
This commit is contained in:
Simon O'Donovan 2019-09-04 12:21:02 +01:00
parent 3d0abc28fb
commit 372b6fb811
2 changed files with 10 additions and 3 deletions

View File

@ -2435,11 +2435,13 @@ class PowerMaxCommonTest(test.TestCase):
self.common.unmanage_snapshot,
self.data.test_snapshot_manage)
@mock.patch.object(provision.PowerMaxProvision, 'delete_volume_snap')
@mock.patch.object(provision.PowerMaxProvision, 'is_restore_complete',
return_value=True)
@mock.patch.object(common.PowerMaxCommon, '_sync_check')
@mock.patch.object(common.PowerMaxCommon, '_clone_check')
@mock.patch.object(provision.PowerMaxProvision, 'revert_volume_snapshot')
def test_revert_to_snapshot(self, mock_revert, mock_sync, mock_complete):
def test_revert_to_snapshot(self, mock_revert, mock_clone,
mock_complete, mock_delete):
volume = self.data.test_volume
snapshot = self.data.test_snapshot
array = self.data.array
@ -2451,6 +2453,11 @@ class PowerMaxCommonTest(test.TestCase):
self.common.revert_to_snapshot(volume, snapshot)
mock_revert.assert_called_once_with(
array, device_id, snap_name, extra_specs)
mock_clone.assert_called_once_with(array, device_id, extra_specs)
mock_complete.assert_called_once_with(array, device_id,
snap_name, extra_specs)
mock_delete.assert_called_once_with(array, snap_name, device_id,
restored=True, generation=0)
@mock.patch.object(utils.PowerMaxUtils, 'is_replication_enabled',
return_value=True)

View File

@ -5282,7 +5282,7 @@ class PowerMaxCommon(object):
exception_message = (_(
"Failed to revert the volume to the snapshot"))
raise exception.VolumeDriverException(message=exception_message)
self._sync_check(array, sourcedevice_id, extra_specs)
self._clone_check(array, sourcedevice_id, extra_specs)
try:
LOG.info("Reverting device: %(deviceid)s "
"to snapshot: %(snapname)s.",