Merge "Don't override extra specs with config in VMAX"
This commit is contained in:
@@ -1470,6 +1470,34 @@ class EMCVMAXISCSIDriverNoFastTestCase(test.TestCase):
|
||||
doc.writexml(f)
|
||||
f.close()
|
||||
|
||||
def create_fake_config_file_no_fast_with_interval(self):
|
||||
|
||||
doc = minidom.Document()
|
||||
emc = doc.createElement("EMC")
|
||||
doc.appendChild(emc)
|
||||
doc = self.add_array_info(doc, emc)
|
||||
doc = self.add_interval_only(doc, emc)
|
||||
filename = 'cinder_emc_config_ISCSINoFAST.xml'
|
||||
self.config_file_path = self.tempdir + '/' + filename
|
||||
|
||||
f = open(self.config_file_path, 'w')
|
||||
doc.writexml(f)
|
||||
f.close()
|
||||
|
||||
def create_fake_config_file_no_fast_with_retries(self):
|
||||
|
||||
doc = minidom.Document()
|
||||
emc = doc.createElement("EMC")
|
||||
doc.appendChild(emc)
|
||||
doc = self.add_array_info(doc, emc)
|
||||
doc = self.add_retries_only(doc, emc)
|
||||
filename = 'cinder_emc_config_ISCSINoFAST.xml'
|
||||
self.config_file_path = self.tempdir + '/' + filename
|
||||
|
||||
f = open(self.config_file_path, 'w')
|
||||
doc.writexml(f)
|
||||
f.close()
|
||||
|
||||
def add_array_info(self, doc, emc):
|
||||
array = doc.createElement("Array")
|
||||
arraytext = doc.createTextNode("1234567891011")
|
||||
@@ -1532,6 +1560,20 @@ class EMCVMAXISCSIDriverNoFastTestCase(test.TestCase):
|
||||
retries.appendChild(retriestext)
|
||||
return doc
|
||||
|
||||
def add_interval_only(self, doc, emc):
|
||||
interval = doc.createElement("Interval")
|
||||
intervaltext = doc.createTextNode("20")
|
||||
emc.appendChild(interval)
|
||||
interval.appendChild(intervaltext)
|
||||
return doc
|
||||
|
||||
def add_retries_only(self, doc, emc):
|
||||
retries = doc.createElement("Retries")
|
||||
retriestext = doc.createTextNode("70")
|
||||
emc.appendChild(retries)
|
||||
retries.appendChild(retriestext)
|
||||
return doc
|
||||
|
||||
# fix for https://bugs.launchpad.net/cinder/+bug/1364232
|
||||
def create_fake_config_file_1364232(self):
|
||||
filename = 'cinder_emc_config_1364232.xml'
|
||||
@@ -1724,7 +1766,10 @@ class EMCVMAXISCSIDriverNoFastTestCase(test.TestCase):
|
||||
volumeInstanceName = (
|
||||
conn.EnumerateInstanceNames("EMC_StorageVolume")[0])
|
||||
volumeName = "1403160-Vol"
|
||||
extraSpecs = self.driver.common.extraSpecs
|
||||
extraSpecs = {'volume_backend_name': 'ISCSINoFAST'}
|
||||
extraSpecs = (
|
||||
self.driver.common._get_job_extra_specs(self.config_file_path,
|
||||
extraSpecs))
|
||||
|
||||
# Deleting Storage Group failed
|
||||
self.assertRaises(
|
||||
@@ -2036,34 +2081,50 @@ class EMCVMAXISCSIDriverNoFastTestCase(test.TestCase):
|
||||
'OS-PORTGROUP' in
|
||||
self.driver.utils.parse_file_to_get_port_group_name(
|
||||
self.config_file_1364232))
|
||||
bExists = os.path.exists(self.config_file_1364232)
|
||||
if bExists:
|
||||
os.remove(self.config_file_1364232)
|
||||
|
||||
@mock.patch.object(
|
||||
emc_vmax_common.EMCVMAXCommon,
|
||||
'_get_pool_and_storage_system',
|
||||
return_value=(None, EMCVMAXCommonData.storage_system))
|
||||
@mock.patch.object(
|
||||
volume_types,
|
||||
'get_volume_type_extra_specs',
|
||||
return_value={'volume_backend_name': 'ISCSINoFAST'})
|
||||
def test_intervals_and_retries(
|
||||
self, _mock_volume_type, mock_storage_system):
|
||||
save_config_path = self.config_file_path
|
||||
def test_intervals_and_retries_override(
|
||||
self):
|
||||
self.create_fake_config_file_no_fast_with_add_ons()
|
||||
self.driver.create_volume(self.data.test_volume_v2)
|
||||
extraSpecs = self.driver.common.extraSpecs
|
||||
extraSpecs = {'volume_backend_name': 'ISCSINoFAST'}
|
||||
extraSpecs = (
|
||||
self.driver.common._get_job_extra_specs(self.config_file_path,
|
||||
extraSpecs))
|
||||
self.assertEqual(40,
|
||||
self.driver.utils._get_max_job_retries(extraSpecs))
|
||||
self.assertEqual(5,
|
||||
self.driver.utils._get_interval_in_secs(extraSpecs))
|
||||
|
||||
bExists = os.path.exists(self.config_file_path)
|
||||
if bExists:
|
||||
os.remove(self.config_file_path)
|
||||
def test_intervals_and_retries_default(self):
|
||||
extraSpecs = {'volume_backend_name': 'ISCSINoFAST'}
|
||||
extraSpecs = (
|
||||
self.driver.common._get_job_extra_specs(self.config_file_path,
|
||||
extraSpecs))
|
||||
self.assertEqual(60,
|
||||
self.driver.utils._get_max_job_retries(extraSpecs))
|
||||
self.assertEqual(10,
|
||||
self.driver.utils._get_interval_in_secs(extraSpecs))
|
||||
|
||||
self.config_file_path = save_config_path
|
||||
def test_interval_only(self):
|
||||
extraSpecs = {'volume_backend_name': 'ISCSINoFAST'}
|
||||
self.create_fake_config_file_no_fast_with_interval()
|
||||
extraSpecs = (
|
||||
self.driver.common._get_job_extra_specs(self.config_file_path,
|
||||
extraSpecs))
|
||||
self.assertEqual(60,
|
||||
self.driver.utils._get_max_job_retries(extraSpecs))
|
||||
self.assertEqual(20,
|
||||
self.driver.utils._get_interval_in_secs(extraSpecs))
|
||||
|
||||
def test_retries_only(self):
|
||||
extraSpecs = {'volume_backend_name': 'ISCSINoFAST'}
|
||||
self.create_fake_config_file_no_fast_with_retries()
|
||||
extraSpecs = (
|
||||
self.driver.common._get_job_extra_specs(self.config_file_path,
|
||||
extraSpecs))
|
||||
self.assertEqual(70,
|
||||
self.driver.utils._get_max_job_retries(extraSpecs))
|
||||
self.assertEqual(10,
|
||||
self.driver.utils._get_interval_in_secs(extraSpecs))
|
||||
|
||||
@mock.patch.object(
|
||||
emc_vmax_utils.EMCVMAXUtils,
|
||||
@@ -2568,9 +2629,14 @@ class EMCVMAXISCSIDriverNoFastTestCase(test.TestCase):
|
||||
self.data.test_ctxt, self.data.test_CG_snapshot)
|
||||
|
||||
def _cleanup(self):
|
||||
bExists = os.path.exists(self.config_file_path)
|
||||
if bExists:
|
||||
os.remove(self.config_file_path)
|
||||
if self.config_file_path:
|
||||
bExists = os.path.exists(self.config_file_path)
|
||||
if bExists:
|
||||
os.remove(self.config_file_path)
|
||||
if self.config_file_1364232:
|
||||
bExists = os.path.exists(self.config_file_1364232)
|
||||
if bExists:
|
||||
os.remove(self.config_file_1364232)
|
||||
shutil.rmtree(self.tempdir)
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -344,7 +344,7 @@ class EMCVMAXUtils(object):
|
||||
:param extraSpecs: extraSpecs dict
|
||||
:returns: JOB_RETRIES or user defined
|
||||
"""
|
||||
if extraSpecs:
|
||||
if extraSpecs and RETRIES in extraSpecs:
|
||||
jobRetries = extraSpecs[RETRIES]
|
||||
else:
|
||||
jobRetries = JOB_RETRIES
|
||||
@@ -356,7 +356,7 @@ class EMCVMAXUtils(object):
|
||||
:param extraSpecs: extraSpecs dict
|
||||
:returns: INTERVAL_10_SEC or user defined
|
||||
"""
|
||||
if extraSpecs:
|
||||
if extraSpecs and INTERVAL in extraSpecs:
|
||||
intervalInSecs = extraSpecs[INTERVAL]
|
||||
else:
|
||||
intervalInSecs = INTERVAL_10_SEC
|
||||
@@ -828,13 +828,13 @@ class EMCVMAXUtils(object):
|
||||
If it is not there then the default will be used.
|
||||
|
||||
:param fileName: the path and name of the file
|
||||
:returns: string -- interval - the interval in seconds
|
||||
:returns: interval - the interval in seconds
|
||||
"""
|
||||
interval = self._parse_from_file(fileName, 'Interval')
|
||||
if interval:
|
||||
return interval
|
||||
else:
|
||||
LOG.debug("Interval not found in config file.")
|
||||
LOG.debug("Interval not overridden, default of 10 assumed.")
|
||||
return None
|
||||
|
||||
def parse_retries_from_file(self, fileName):
|
||||
@@ -843,13 +843,13 @@ class EMCVMAXUtils(object):
|
||||
If it is not there then the default will be used.
|
||||
|
||||
:param fileName: the path and name of the file
|
||||
:returns: string -- retries - the max number of retries
|
||||
:returns: retries - the max number of retries
|
||||
"""
|
||||
retries = self._parse_from_file(fileName, 'Retries')
|
||||
if retries:
|
||||
return retries
|
||||
else:
|
||||
LOG.debug("Retries not found in config file.")
|
||||
LOG.debug("Retries not overridden, default of 60 assumed.")
|
||||
return None
|
||||
|
||||
def parse_pool_instance_id(self, poolInstanceId):
|
||||
|
||||
Reference in New Issue
Block a user