Merge "Dell SC: Add check of current value on retype"

This commit is contained in:
Jenkins 2015-08-05 08:19:25 +00:00 committed by Gerrit Code Review
commit 8ea4dc6558
2 changed files with 29 additions and 10 deletions

View File

@ -1652,6 +1652,16 @@ class DellSCSanISCSIDriverTestCase(test.TestCase):
None, None, None, {'extra_specs': {'something': 'else'}}, None)
self.assertFalse(res)
def test_retype_same(self,
mock_close_connection,
mock_open_connection,
mock_init):
res = self.driver.retype(
None, None, None,
{'extra_specs': {'storagetype:storageprofile': ['A', 'A']}},
None)
self.assertTrue(res)
def test_retype_malformed(self,
mock_close_connection,
mock_open_connection,

View File

@ -664,16 +664,25 @@ class DellCommonDriver(driver.ConsistencyGroupVD, driver.ManageableVD,
storage_profiles)
return False
current = storage_profiles[0]
requested = storage_profiles[1]
volume_name = volume.get('id')
LOG.debug('Retyping volume %(vol)s to use storage '
'profile %(profile)s',
{'vol': volume_name,
'profile': requested})
with self._client.open_connection() as api:
if api.find_sc():
scvolume = api.find_volume(volume_name)
return api.update_storage_profile(
scvolume, requested)
if current != requested:
volume_name = volume.get('id')
LOG.debug('Retyping volume %(vol)s to use storage '
'profile %(profile)s.',
{'vol': volume_name,
'profile': requested})
with self._client.open_connection() as api:
if api.find_sc():
scvolume = api.find_volume(volume_name)
return api.update_storage_profile(
scvolume, requested)
else:
# We only support retype of Storage Profile and they are
# the same, so just return True to avoid unnecessary data
# migration.
LOG.info(_LI('Retype was to same Storage Profile.'))
return True
return False