Merge "Dell PowerMax: Enhanced the retry mechanism to verify the active snapshots."
This commit is contained in:
commit
79928cd6a9
@ -4900,3 +4900,34 @@ class PowerMaxCommonTest(test.TestCase):
|
|||||||
self.mock_object(self.common, 'configuration', configuration)
|
self.mock_object(self.common, 'configuration', configuration)
|
||||||
kwargs_returned = self.common.get_attributes_from_cinder_config()
|
kwargs_returned = self.common.get_attributes_from_cinder_config()
|
||||||
self.assertEqual(kwargs_expected, kwargs_returned)
|
self.assertEqual(kwargs_expected, kwargs_returned)
|
||||||
|
|
||||||
|
@mock.patch.object(common.PowerMaxCommon, '_cleanup_device_snapvx')
|
||||||
|
@mock.patch.object(rest.PowerMaxRest, 'get_volume_snapshot_list',
|
||||||
|
side_effect=([{'snapshotName': 'temp-clone-snapshot'}],
|
||||||
|
[]))
|
||||||
|
@mock.patch.object(rest.PowerMaxRest, 'find_snap_vx_sessions',
|
||||||
|
side_effect=[(None, None)])
|
||||||
|
def test_cleanup_device_retry_1(self, mock_snapvx,
|
||||||
|
mock_ss_list, mock_clean):
|
||||||
|
self.common._cleanup_device_retry(
|
||||||
|
self.data.array, self.data.device_id, self.data.extra_specs)
|
||||||
|
self.assertEqual(2, mock_ss_list.call_count)
|
||||||
|
self.assertEqual(1, mock_snapvx.call_count)
|
||||||
|
self.assertEqual(2, mock_clean.call_count)
|
||||||
|
|
||||||
|
@mock.patch.object(common.PowerMaxCommon, '_cleanup_device_snapvx')
|
||||||
|
@mock.patch.object(rest.PowerMaxRest, 'get_volume_snapshot_list',
|
||||||
|
return_value=[{'snapshotName': 'temp-clone-snapshot'}])
|
||||||
|
@mock.patch.object(rest.PowerMaxRest, 'find_snap_vx_sessions',
|
||||||
|
side_effect=[(None, None)])
|
||||||
|
def test_cleanup_device_retry_2(self, mock_snapvx,
|
||||||
|
mock_ss_list, mock_clean):
|
||||||
|
self.assertRaises(
|
||||||
|
exception.VolumeBackendAPIException,
|
||||||
|
self.common._cleanup_device_retry,
|
||||||
|
self.data.array,
|
||||||
|
self.data.device_id,
|
||||||
|
self.data.extra_specs)
|
||||||
|
self.assertEqual(7, mock_ss_list.call_count)
|
||||||
|
self.assertEqual(0, mock_snapvx.call_count)
|
||||||
|
self.assertEqual(7, mock_clean.call_count)
|
||||||
|
@ -2106,7 +2106,7 @@ class PowerMaxCommon(object):
|
|||||||
array, device_id, volume_name, extra_specs)
|
array, device_id, volume_name, extra_specs)
|
||||||
return volume_name
|
return volume_name
|
||||||
|
|
||||||
@retry(retry_exc_tuple, interval=1, retries=3)
|
@retry(retry_exc_tuple, interval=2, retries=7)
|
||||||
def _cleanup_device_retry(self, array, device_id, extra_specs):
|
def _cleanup_device_retry(self, array, device_id, extra_specs):
|
||||||
"""Cleanup snapvx on the device
|
"""Cleanup snapvx on the device
|
||||||
|
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Dell PowerMax Driver `bug #2092259
|
||||||
|
<https://bugs.launchpad.net/cinder/+bug/2092259>`_: Before
|
||||||
|
a volume can be deleted, the driver issues a command to clean up
|
||||||
|
active snapshots in the backend and then polls the backend
|
||||||
|
to make sure the cleanup has occurred.
|
||||||
|
This fix enhances the polling mechanism to give the backend
|
||||||
|
more time to do the cleanup, thereby increasing the probability
|
||||||
|
that the driver will be able to make a successful volume deletion
|
||||||
|
request.
|
Loading…
x
Reference in New Issue
Block a user