Merge "PowerMax Driver - allow for None values in metadata"

This commit is contained in:
Zuul 2022-06-30 21:11:21 +00:00 committed by Gerrit Code Review
commit 71cf8996e7
3 changed files with 47 additions and 8 deletions

View File

@ -412,6 +412,14 @@ class PowerMaxData(object):
'array': array,
'interval': 3,
'retries': 120}
extra_specs_no_workload = {
'pool_name': u'Diamond+NONE+SRP_1+000197800123',
'slo': slo,
'srp': srp,
'workload': 'NONE',
'array': array,
'interval': 3,
'retries': 120}
extra_specs_optimized = {
'pool_name': u'Optimized+None+SRP_1+000197800123',
'slo': 'Optimized', 'workload': 'None',

View File

@ -13,7 +13,9 @@
# License for the specific language governing permissions and limitations
# under the License.
from datetime import datetime
import platform
import time
from unittest import mock
from cinder.objects import fields
@ -25,6 +27,9 @@ from cinder.volume.drivers.dell_emc.powermax import metadata
from cinder.volume.drivers.dell_emc.powermax import rest
from cinder.volume.drivers.dell_emc.powermax import utils
mock_time = mock.MagicMock()
mock_time.return_value = time.mktime(datetime(1970, 1, 1).timetuple())
class PowerMaxVolumeMetadataNoDebugTest(test.TestCase):
def setUp(self):
@ -106,6 +111,32 @@ class PowerMaxVolumeMetadataDebugTest(test.TestCase):
self.data.extra_specs)
mock_uvim.assert_called_once()
@mock.patch.object(
metadata.PowerMaxVolumeMetadata, 'update_volume_info_metadata',
return_value={})
@mock.patch('time.time', mock_time)
def test_capture_manage_existing_no_backup_id(self, mock_uvim):
manage_existing_metadata = (
{'1e5177e7-95e5-4a0f-b170-e45f4b469f6a': {
'volume_id': '1e5177e7-95e5-4a0f-b170-e45f4b469f6a',
'successful_operation': 'manage_existing_volume',
'volume_size': 2, 'device_id': '00001',
'default_sg_name': 'OS-SRP_1-Diamond-NONE-SG',
'serial_number': '000197800123', 'service_level': 'Diamond',
'workload': 'None', 'srp': 'SRP_1',
'identifier_name': 'OS-1e5177e7-95e5-4a0f-b170-e45f4b469f6a',
'rdf_group_no': '70', 'target_name': 'test_vol',
'remote_array': '000197800124', 'target_device_id': '00002',
'rep_mode': 'Metro', 'replication_status': 'Enabled',
'rdf_group_label': '23_24_007',
'volume_updated_time': '1970-01-01 00:00:00'}})
self.volume_metadata.capture_manage_existing(
self.data.test_volume, self.data.rep_info_dict,
self.data.device_id,
self.data.extra_specs_no_workload)
mock_uvim.assert_called_with(manage_existing_metadata, {})
@mock.patch.object(
metadata.PowerMaxVolumeMetadata, 'update_volume_info_metadata',
return_value={})

View File

@ -606,14 +606,14 @@ class PowerMaxVolumeMetadata(object):
rep_mode, replication_status, rdf_group_label, backend_id = (
None, None, None, None)
if rep_info_dict:
rdf_group_no = rep_info_dict['rdf_group_no']
target_name = rep_info_dict['target_name']
remote_array = rep_info_dict['remote_array']
target_device_id = rep_info_dict['target_device_id']
rep_mode = rep_info_dict['rep_mode']
replication_status = rep_info_dict['replication_status']
rdf_group_label = rep_info_dict['rdf_group_label']
backend_id = rep_info_dict['backend_id']
rdf_group_no = rep_info_dict.get('rdf_group_no')
target_name = rep_info_dict.get('target_name')
remote_array = rep_info_dict.get('remote_array')
target_device_id = rep_info_dict.get('target_device_id')
rep_mode = rep_info_dict.get('rep_mode')
replication_status = rep_info_dict.get('replication_status')
rdf_group_label = rep_info_dict.get('rdf_group_label')
backend_id = rep_info_dict.get('backend_id')
default_sg = self.utils.derive_default_sg_from_extra_specs(
extra_specs, rep_mode)