VMAX driver - minor metadata additions

Adding metadata for delete operation and adding OpenStack display
name to all operations.

Change-Id: Ia21a2688fc4ec2d974d866703abef38ae25a0048
This commit is contained in:
Helen Walsh 2018-07-20 14:33:00 +01:00
parent a244db46e7
commit 07c1b85419
3 changed files with 35 additions and 5 deletions

View File

@ -8213,6 +8213,13 @@ class VMAXVolumeMetadataDebugTest(test.TestCase):
"test_group_id", self.data.extra_specs, {}, 'create', None) "test_group_id", self.data.extra_specs, {}, 'create', None)
mock_uvim.assert_called_once() mock_uvim.assert_called_once()
@mock.patch.object(metadata.VMAXVolumeMetadata,
'update_volume_info_metadata',
return_value={})
def test_capture_delete_info(self, mock_uvim):
self.volume_metadata.capture_delete_info(self.data.test_volume)
mock_uvim.assert_called_once()
@mock.patch.object(metadata.VMAXVolumeMetadata, @mock.patch.object(metadata.VMAXVolumeMetadata,
'update_volume_info_metadata', 'update_volume_info_metadata',
return_value={}) return_value={})
@ -8275,7 +8282,7 @@ class VMAXVolumeMetadataDebugTest(test.TestCase):
return_value={}) return_value={})
def test_capture_retype_info(self, mock_uvim): def test_capture_retype_info(self, mock_uvim):
self.volume_metadata.capture_retype_info( self.volume_metadata.capture_retype_info(
self.data.test_volume.id, 20, self.data.device_id, self.data.array, self.data.test_volume, self.data.device_id, self.data.array,
self.data.srp, self.data.slo, self.data.workload, self.data.srp, self.data.slo, self.data.workload,
self.data.storagegroup_name_target, False, None, self.data.storagegroup_name_target, False, None,
False) False)

View File

@ -427,6 +427,7 @@ class VMAXCommon(object):
LOG.info("Deleting Volume: %(volume)s", LOG.info("Deleting Volume: %(volume)s",
{'volume': volume.name}) {'volume': volume.name})
volume_name = self._delete_volume(volume) volume_name = self._delete_volume(volume)
self.volume_metadata.capture_delete_info(volume)
LOG.info("Leaving delete_volume: %(volume_name)s.", LOG.info("Leaving delete_volume: %(volume_name)s.",
{'volume_name': volume_name}) {'volume_name': volume_name})
@ -2605,7 +2606,7 @@ class VMAXCommon(object):
rep_mode, is_rep_enabled, target_extra_specs) rep_mode, is_rep_enabled, target_extra_specs)
self.volume_metadata.capture_retype_info( self.volume_metadata.capture_retype_info(
volume.id, volume.size, device_id, array, srp, target_slo, volume, device_id, array, srp, target_slo,
target_workload, target_sg_name, is_rep_enabled, rep_mode, target_workload, target_sg_name, is_rep_enabled, rep_mode,
is_compression_disabled) is_compression_disabled)

View File

@ -331,6 +331,7 @@ class VMAXVolumeMetadata(object):
port_group=port_group, port_group=port_group,
host=host, is_multipath=is_multipath, host=host, is_multipath=is_multipath,
identifier_name=self.utils.get_volume_element_name(volume.id), identifier_name=self.utils.get_volume_element_name(volume.id),
openstack_name=volume.display_name,
mv_list=mv_list, sg_list=sg_list) mv_list=mv_list, sg_list=sg_list)
volume_metadata = self.update_volume_info_metadata( volume_metadata = self.update_volume_info_metadata(
@ -357,6 +358,7 @@ class VMAXVolumeMetadata(object):
workload=extra_specs[utils.WORKLOAD], srp=extra_specs[utils.SRP], workload=extra_specs[utils.WORKLOAD], srp=extra_specs[utils.SRP],
default_sg_name=default_sg, default_sg_name=default_sg,
identifier_name=self.utils.get_volume_element_name(volume.id), identifier_name=self.utils.get_volume_element_name(volume.id),
openstack_name=volume.display_name,
mv_list=mv_list, sg_list=sg_list mv_list=mv_list, sg_list=sg_list
) )
volume_metadata = self.update_volume_info_metadata( volume_metadata = self.update_volume_info_metadata(
@ -383,6 +385,7 @@ class VMAXVolumeMetadata(object):
workload=extra_specs[utils.WORKLOAD], workload=extra_specs[utils.WORKLOAD],
srp=extra_specs[utils.SRP], srp=extra_specs[utils.SRP],
identifier_name=self.utils.get_volume_element_name(volume.id), identifier_name=self.utils.get_volume_element_name(volume.id),
openstack_name=volume.display_name,
is_compression_disabled=self.utils.is_compression_disabled( is_compression_disabled=self.utils.is_compression_disabled(
extra_specs)) extra_specs))
volume_metadata = self.update_volume_info_metadata( volume_metadata = self.update_volume_info_metadata(
@ -416,6 +419,7 @@ class VMAXVolumeMetadata(object):
srp=extra_specs[utils.SRP], srp=extra_specs[utils.SRP],
identifier_name=( identifier_name=(
self.utils.get_volume_element_name(source.id)), self.utils.get_volume_element_name(source.id)),
openstack_name=source.display_name,
snapshot_count=snapshot_count, snapshot_count=snapshot_count,
last_ss_name=last_ss_name) last_ss_name=last_ss_name)
volume_metadata = self.update_volume_info_metadata( volume_metadata = self.update_volume_info_metadata(
@ -494,6 +498,7 @@ class VMAXVolumeMetadata(object):
workload=extra_specs[utils.WORKLOAD], workload=extra_specs[utils.WORKLOAD],
srp=extra_specs[utils.SRP], srp=extra_specs[utils.SRP],
identifier_name=self.utils.get_volume_element_name(volume.id), identifier_name=self.utils.get_volume_element_name(volume.id),
openstack_name=volume.display_name,
source_volid=volume.source_volid, source_volid=volume.source_volid,
group_name=group_name, group_id=group_id, group_name=group_name, group_id=group_id,
rdf_group_no=rdf_group_no, rdf_group_no=rdf_group_no,
@ -558,6 +563,7 @@ class VMAXVolumeMetadata(object):
workload=extra_specs[utils.WORKLOAD], workload=extra_specs[utils.WORKLOAD],
srp=extra_specs[utils.SRP], srp=extra_specs[utils.SRP],
identifier_name=self.utils.get_volume_element_name(volume.id), identifier_name=self.utils.get_volume_element_name(volume.id),
openstack_name=volume.display_name,
source_volid=volume.source_volid, source_volid=volume.source_volid,
rdf_group_no=rdf_group, remote_array=array, rdf_group_no=rdf_group, remote_array=array,
target_device_id=device_id, vol_grp_name=vol_grp_name, target_device_id=device_id, vol_grp_name=vol_grp_name,
@ -605,6 +611,7 @@ class VMAXVolumeMetadata(object):
workload=extra_specs[utils.WORKLOAD], workload=extra_specs[utils.WORKLOAD],
srp=extra_specs[utils.SRP], srp=extra_specs[utils.SRP],
identifier_name=self.utils.get_volume_element_name(volume.id), identifier_name=self.utils.get_volume_element_name(volume.id),
openstack_name=volume.display_name,
source_volid=volume.source_volid, source_volid=volume.source_volid,
rdf_group_no=rdf_group_no, rdf_group_no=rdf_group_no,
target_name=target_name, remote_array=remote_array, target_name=target_name, remote_array=remote_array,
@ -618,7 +625,7 @@ class VMAXVolumeMetadata(object):
@debug_required @debug_required
def capture_retype_info( def capture_retype_info(
self, volume_id, volume_size, device_id, array, srp, target_slo, self, volume, device_id, array, srp, target_slo,
target_workload, target_sg_name, is_rep_enabled, rep_mode, target_workload, target_sg_name, is_rep_enabled, rep_mode,
is_compression_disabled): is_compression_disabled):
"""Captures manage existing info in volume metadata """Captures manage existing info in volume metadata
@ -636,14 +643,15 @@ class VMAXVolumeMetadata(object):
""" """
operation = "retype" operation = "retype"
datadict = self.gather_volume_info( datadict = self.gather_volume_info(
volume_id, operation, False, volume_size=volume_size, volume.id, operation, False, volume_size=volume.size,
device_id=device_id, device_id=device_id,
target_sg_name=target_sg_name, target_sg_name=target_sg_name,
serial_number=array, serial_number=array,
target_service_level=target_slo, target_service_level=target_slo,
target_workload=target_workload, target_workload=target_workload,
srp=srp, srp=srp,
identifier_name=self.utils.get_volume_element_name(volume_id), identifier_name=self.utils.get_volume_element_name(volume.id),
openstack_name=volume.display_name,
is_rep_enabled=('yes' if is_rep_enabled else 'no'), is_rep_enabled=('yes' if is_rep_enabled else 'no'),
rep_mode=rep_mode, is_compression_disabled = ( rep_mode=rep_mode, is_compression_disabled = (
'yes' if is_compression_disabled else 'no') 'yes' if is_compression_disabled else 'no')
@ -651,3 +659,17 @@ class VMAXVolumeMetadata(object):
volume_metadata = self.update_volume_info_metadata( volume_metadata = self.update_volume_info_metadata(
datadict, self.version_dict) datadict, self.version_dict)
self.print_pretty_table(volume_metadata) self.print_pretty_table(volume_metadata)
@debug_required
def capture_delete_info(self, volume):
"""Captures delete info in volume metadata
:param volume: the volume object
"""
datadict = self.gather_volume_info(
volume.id, 'delete', False,
identifier_name=self.utils.get_volume_element_name(volume.id),
openstack_name=volume.display_name)
volume_metadata = self.update_volume_info_metadata(
datadict, self.version_dict)
self.print_pretty_table(volume_metadata)