Merge "NetApp SolidFire: Fix retype to SolidFire" into stable/train
This commit is contained in:
commit
400ab54cca
|
@ -1322,6 +1322,36 @@ class SolidFireVolumeTestCase(test.TestCase):
|
|||
self.assertTrue(migrated)
|
||||
self.assertEqual({}, updates)
|
||||
|
||||
@data(None, 'Success', 'Error', 'target:{}'.format(f_uuid[0]))
|
||||
@mock.patch.object(solidfire.SolidFireDriver, '_get_sf_volume')
|
||||
@mock.patch.object(solidfire.SolidFireDriver, '_get_sfaccount')
|
||||
def test_attach_volume(self, mig_status, mock_get_sfaccount,
|
||||
mock_get_sf_volume):
|
||||
|
||||
mock_get_sfaccount.return_value = self.fake_sfaccount
|
||||
i_uuid = 'fake_instance_uuid'
|
||||
ctx = context.get_admin_context()
|
||||
type_fields = {}
|
||||
vol_type = fake_volume.fake_volume_type_obj(ctx, **type_fields)
|
||||
utc_now = timeutils.utcnow().isoformat()
|
||||
vol_fields = {
|
||||
'id': f_uuid[0],
|
||||
'created_at': utc_now,
|
||||
'volume_type': vol_type,
|
||||
'volume_type_id': vol_type.id,
|
||||
'migration_status': mig_status,
|
||||
}
|
||||
vol = fake_volume.fake_volume_obj(ctx, **vol_fields)
|
||||
sf_vol = self.fake_sfvol
|
||||
mock_get_sf_volume.return_value = sf_vol
|
||||
|
||||
sfv = solidfire.SolidFireDriver(configuration=self.configuration)
|
||||
sfv.attach_volume(ctx, vol, i_uuid, 'fake_host', '/dev/sdf')
|
||||
self.assertEqual(sf_vol['attributes']['attached_to'],
|
||||
i_uuid)
|
||||
mock_get_sfaccount.assert_called()
|
||||
mock_get_sf_volume.assert_called()
|
||||
|
||||
def test_retype_with_qos_spec(self):
|
||||
test_type = {'name': 'sf-1',
|
||||
'qos_specs_id': 'fb0576d7-b4b5-4cad-85dc-ca92e6a497d1',
|
||||
|
|
|
@ -2077,7 +2077,14 @@ class SolidFireDriver(san.SanISCSIDriver):
|
|||
sfaccount = self._get_sfaccount(volume['project_id'])
|
||||
params = {'accountID': sfaccount['accountID']}
|
||||
|
||||
sf_vol = self._get_sf_volume(volume['id'], params)
|
||||
# In a retype of an attached volume scenario, the volume id will be
|
||||
# as a target on 'migration_status', otherwise it'd be None.
|
||||
migration_status = volume.get('migration_status')
|
||||
if migration_status and 'target' in migration_status:
|
||||
__, vol_id = migration_status.split(':')
|
||||
else:
|
||||
vol_id = volume['id']
|
||||
sf_vol = self._get_sf_volume(vol_id, params)
|
||||
if sf_vol is None:
|
||||
LOG.error("Volume ID %s was not found on "
|
||||
"the SolidFire Cluster while attempting "
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
fixes:
|
||||
- |
|
||||
Fixed `bug #1859652 <https://bugs.launchpad.net/cinder/+bug/1859652>`_
|
||||
to allow retyping an attached volume to SolidFire.
|
Loading…
Reference in New Issue