Merge "VMware: Honor vmware_cluster_name during retype"
This commit is contained in:
commit
d172a170a4
@ -924,9 +924,11 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
@mock.patch.object(VMDK_DRIVER, '_get_storage_profile')
|
@mock.patch.object(VMDK_DRIVER, '_get_storage_profile')
|
||||||
@mock.patch.object(VMDK_DRIVER, '_get_extra_spec_storage_profile')
|
@mock.patch.object(VMDK_DRIVER, '_get_extra_spec_storage_profile')
|
||||||
@mock.patch.object(VMDK_DRIVER, 'ds_sel')
|
@mock.patch.object(VMDK_DRIVER, 'ds_sel')
|
||||||
|
@mock.patch.object(VMDK_DRIVER, '_select_datastore')
|
||||||
def test_retype_with_diff_profile_and_ds_compliance(
|
def test_retype_with_diff_profile_and_ds_compliance(
|
||||||
self, ds_sel, get_extra_spec_storage_profile, get_storage_profile,
|
self, select_datastore, ds_sel, get_extra_spec_storage_profile,
|
||||||
get_extra_spec_disk_type, get_disk_type, vops, in_use):
|
get_storage_profile, get_extra_spec_disk_type, get_disk_type,
|
||||||
|
vops, in_use):
|
||||||
backing = mock.sentinel.backing
|
backing = mock.sentinel.backing
|
||||||
vops.get_backing.return_value = backing
|
vops.get_backing.return_value = backing
|
||||||
|
|
||||||
@ -957,7 +959,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
host))
|
host))
|
||||||
ds_sel.is_datastore_compliant.assert_called_once_with(datastore,
|
ds_sel.is_datastore_compliant.assert_called_once_with(datastore,
|
||||||
new_profile)
|
new_profile)
|
||||||
self.assertFalse(ds_sel.select_datastore.called)
|
select_datastore.assert_not_called()
|
||||||
vops.change_backing_profile.assert_called_once_with(backing,
|
vops.change_backing_profile.assert_called_once_with(backing,
|
||||||
new_profile_id)
|
new_profile_id)
|
||||||
|
|
||||||
@ -970,9 +972,11 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
@mock.patch.object(VMDK_DRIVER, '_get_storage_profile')
|
@mock.patch.object(VMDK_DRIVER, '_get_storage_profile')
|
||||||
@mock.patch.object(VMDK_DRIVER, '_get_extra_spec_storage_profile')
|
@mock.patch.object(VMDK_DRIVER, '_get_extra_spec_storage_profile')
|
||||||
@mock.patch.object(VMDK_DRIVER, 'ds_sel')
|
@mock.patch.object(VMDK_DRIVER, 'ds_sel')
|
||||||
|
@mock.patch.object(VMDK_DRIVER, '_select_datastore')
|
||||||
def test_retype_with_diff_profile_and_ds_sel_no_candidate(
|
def test_retype_with_diff_profile_and_ds_sel_no_candidate(
|
||||||
self, ds_sel, get_extra_spec_storage_profile, get_storage_profile,
|
self, select_datastore, ds_sel, get_extra_spec_storage_profile,
|
||||||
get_extra_spec_disk_type, get_disk_type, vops, in_use):
|
get_storage_profile, get_extra_spec_disk_type, get_disk_type,
|
||||||
|
vops, in_use):
|
||||||
backing = mock.sentinel.backing
|
backing = mock.sentinel.backing
|
||||||
vops.get_backing.return_value = backing
|
vops.get_backing.return_value = backing
|
||||||
|
|
||||||
@ -992,7 +996,8 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
get_extra_spec_storage_profile.return_value = new_profile
|
get_extra_spec_storage_profile.return_value = new_profile
|
||||||
|
|
||||||
ds_sel.is_datastore_compliant.return_value = False
|
ds_sel.is_datastore_compliant.return_value = False
|
||||||
ds_sel.select_datastore.return_value = ()
|
select_datastore.side_effect = (
|
||||||
|
vmdk_exceptions.NoValidDatastoreException)
|
||||||
|
|
||||||
context = mock.sentinel.context
|
context = mock.sentinel.context
|
||||||
volume = self._create_volume_dict(status='retyping')
|
volume = self._create_volume_dict(status='retyping')
|
||||||
@ -1003,7 +1008,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
host))
|
host))
|
||||||
ds_sel.is_datastore_compliant.assert_called_once_with(datastore,
|
ds_sel.is_datastore_compliant.assert_called_once_with(datastore,
|
||||||
new_profile)
|
new_profile)
|
||||||
ds_sel.select_datastore.assert_called_once_with(
|
select_datastore.assert_called_once_with(
|
||||||
{hub.DatastoreSelector.SIZE_BYTES: volume['size'] * units.Gi,
|
{hub.DatastoreSelector.SIZE_BYTES: volume['size'] * units.Gi,
|
||||||
hub.DatastoreSelector.PROFILE_NAME: new_profile})
|
hub.DatastoreSelector.PROFILE_NAME: new_profile})
|
||||||
|
|
||||||
@ -1016,10 +1021,12 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
@mock.patch.object(VMDK_DRIVER, '_get_storage_profile')
|
@mock.patch.object(VMDK_DRIVER, '_get_storage_profile')
|
||||||
@mock.patch.object(VMDK_DRIVER, '_get_extra_spec_storage_profile')
|
@mock.patch.object(VMDK_DRIVER, '_get_extra_spec_storage_profile')
|
||||||
@mock.patch.object(VMDK_DRIVER, 'ds_sel')
|
@mock.patch.object(VMDK_DRIVER, 'ds_sel')
|
||||||
|
@mock.patch.object(VMDK_DRIVER, '_select_datastore')
|
||||||
@mock.patch.object(VMDK_DRIVER, '_get_volume_group_folder')
|
@mock.patch.object(VMDK_DRIVER, '_get_volume_group_folder')
|
||||||
def test_retype_with_diff_extra_spec_and_vol_snapshot(
|
def test_retype_with_diff_extra_spec_and_vol_snapshot(
|
||||||
self,
|
self,
|
||||||
get_volume_group_folder,
|
get_volume_group_folder,
|
||||||
|
select_datastore,
|
||||||
ds_sel, get_extra_spec_storage_profile,
|
ds_sel, get_extra_spec_storage_profile,
|
||||||
get_storage_profile,
|
get_storage_profile,
|
||||||
get_extra_spec_disk_type,
|
get_extra_spec_disk_type,
|
||||||
@ -1049,7 +1056,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
rp = mock.sentinel.rp
|
rp = mock.sentinel.rp
|
||||||
new_datastore = mock.Mock(value='ds2')
|
new_datastore = mock.Mock(value='ds2')
|
||||||
summary = mock.Mock(datastore=new_datastore)
|
summary = mock.Mock(datastore=new_datastore)
|
||||||
ds_sel.select_datastore.return_value = (host, rp, summary)
|
select_datastore.return_value = (host, rp, summary)
|
||||||
|
|
||||||
folder = mock.sentinel.folder
|
folder = mock.sentinel.folder
|
||||||
get_volume_group_folder.return_value = folder
|
get_volume_group_folder.return_value = folder
|
||||||
@ -1066,7 +1073,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
host))
|
host))
|
||||||
ds_sel.is_datastore_compliant.assert_called_once_with(datastore,
|
ds_sel.is_datastore_compliant.assert_called_once_with(datastore,
|
||||||
new_profile)
|
new_profile)
|
||||||
ds_sel.select_datastore.assert_called_once_with(
|
select_datastore.assert_called_once_with(
|
||||||
{hub.DatastoreSelector.SIZE_BYTES: volume['size'] * units.Gi,
|
{hub.DatastoreSelector.SIZE_BYTES: volume['size'] * units.Gi,
|
||||||
hub.DatastoreSelector.HARD_ANTI_AFFINITY_DS: ['ds1'],
|
hub.DatastoreSelector.HARD_ANTI_AFFINITY_DS: ['ds1'],
|
||||||
hub.DatastoreSelector.PROFILE_NAME: new_profile})
|
hub.DatastoreSelector.PROFILE_NAME: new_profile})
|
||||||
@ -1085,6 +1092,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
@mock.patch.object(VMDK_DRIVER, '_get_storage_profile')
|
@mock.patch.object(VMDK_DRIVER, '_get_storage_profile')
|
||||||
@mock.patch.object(VMDK_DRIVER, '_get_extra_spec_storage_profile')
|
@mock.patch.object(VMDK_DRIVER, '_get_extra_spec_storage_profile')
|
||||||
@mock.patch.object(VMDK_DRIVER, 'ds_sel')
|
@mock.patch.object(VMDK_DRIVER, 'ds_sel')
|
||||||
|
@mock.patch.object(VMDK_DRIVER, '_select_datastore')
|
||||||
@mock.patch.object(VMDK_DRIVER, '_get_volume_group_folder')
|
@mock.patch.object(VMDK_DRIVER, '_get_volume_group_folder')
|
||||||
@mock.patch('oslo_utils.uuidutils.generate_uuid')
|
@mock.patch('oslo_utils.uuidutils.generate_uuid')
|
||||||
@mock.patch.object(VMDK_DRIVER, '_delete_temp_backing')
|
@mock.patch.object(VMDK_DRIVER, '_delete_temp_backing')
|
||||||
@ -1093,7 +1101,9 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
delete_temp_backing,
|
delete_temp_backing,
|
||||||
generate_uuid,
|
generate_uuid,
|
||||||
get_volume_group_folder,
|
get_volume_group_folder,
|
||||||
ds_sel, get_extra_spec_storage_profile,
|
select_datastore,
|
||||||
|
ds_sel,
|
||||||
|
get_extra_spec_storage_profile,
|
||||||
get_storage_profile,
|
get_storage_profile,
|
||||||
get_extra_spec_disk_type,
|
get_extra_spec_disk_type,
|
||||||
get_disk_type,
|
get_disk_type,
|
||||||
@ -1122,7 +1132,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
host = mock.sentinel.host
|
host = mock.sentinel.host
|
||||||
rp = mock.sentinel.rp
|
rp = mock.sentinel.rp
|
||||||
summary = mock.Mock(datastore=datastore)
|
summary = mock.Mock(datastore=datastore)
|
||||||
ds_sel.select_datastore.return_value = (host, rp, summary)
|
select_datastore.return_value = (host, rp, summary)
|
||||||
|
|
||||||
folder = mock.sentinel.folder
|
folder = mock.sentinel.folder
|
||||||
get_volume_group_folder.return_value = folder
|
get_volume_group_folder.return_value = folder
|
||||||
@ -1152,7 +1162,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||||||
diff, host))
|
diff, host))
|
||||||
ds_sel.is_datastore_compliant.assert_called_once_with(datastore,
|
ds_sel.is_datastore_compliant.assert_called_once_with(datastore,
|
||||||
new_profile)
|
new_profile)
|
||||||
ds_sel.select_datastore.assert_called_once_with(
|
select_datastore.assert_called_once_with(
|
||||||
{hub.DatastoreSelector.SIZE_BYTES: volume['size'] * units.Gi,
|
{hub.DatastoreSelector.SIZE_BYTES: volume['size'] * units.Gi,
|
||||||
hub.DatastoreSelector.PROFILE_NAME: new_profile})
|
hub.DatastoreSelector.PROFILE_NAME: new_profile})
|
||||||
vops.clone_backing.assert_called_once_with(
|
vops.clone_backing.assert_called_once_with(
|
||||||
|
@ -1297,8 +1297,9 @@ class VMwareVcVmdkDriver(driver.VolumeDriver):
|
|||||||
req[hub.DatastoreSelector.PROFILE_NAME] = new_profile
|
req[hub.DatastoreSelector.PROFILE_NAME] = new_profile
|
||||||
|
|
||||||
# Select datastore satisfying the requirements.
|
# Select datastore satisfying the requirements.
|
||||||
best_candidate = self.ds_sel.select_datastore(req)
|
try:
|
||||||
if not best_candidate:
|
best_candidate = self._select_datastore(req)
|
||||||
|
except vmdk_exceptions.NoValidDatastoreException:
|
||||||
# No candidate datastores; can't retype.
|
# No candidate datastores; can't retype.
|
||||||
LOG.warning(_LW("There are no datastores matching new "
|
LOG.warning(_LW("There are no datastores matching new "
|
||||||
"requirements; can't retype volume: %s."),
|
"requirements; can't retype volume: %s."),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user