The cinder.volume.drivers.dell_emc.vmax.iscsi
Module¶
ISCSI Drivers for EMC VMAX arrays based on SMI-S.
-
class
VMAXISCSIDriver
(*args, **kwargs)¶ Bases:
cinder.volume.driver.ISCSIDriver
EMC ISCSI Drivers for VMAX using SMI-S.
Version history:
1.0.0 - Initial driver 1.1.0 - Multiple pools and thick/thin provisioning, performance enhancement. 2.0.0 - Add driver requirement functions 2.1.0 - Add consistency group functions 2.1.1 - Fixed issue with mismatched config (bug #1442376) 2.1.2 - Clean up failed clones (bug #1440154) 2.1.3 - Fixed a problem with FAST support (bug #1435069) 2.2.0 - Add manage/unmanage 2.2.1 - Support for SE 8.0.3 2.2.2 - Update Consistency Group 2.2.3 - Pool aware scheduler(multi-pool) support 2.2.4 - Create CG from CG snapshot 2.3.0 - Name change for MV and SG for FAST (bug #1515181) - Fix for randomly choosing port group. (bug #1501919) - get_short_host_name needs to be called in find_device_number (bug #1520635) - Proper error handling for invalid SLOs (bug #1512795) - Extend Volume for VMAX3, SE8.1.0.3 https://blueprints.launchpad.net/cinder/+spec/vmax3-extend-volume - Incorrect SG selected on an attach (#1515176) - Cleanup Zoning (bug #1501938) NOTE: FC only - Last volume in SG fix - _remove_last_vol_and_delete_sg is not being called for VMAX3 (bug #1520549) - necessary updates for CG changes (#1534616) - Changing PercentSynced to CopyState (bug #1517103) - Getting iscsi ip from port in existing masking view - Replacement of EMCGetTargetEndpoints api (bug #1512791) - VMAX3 snapvx improvements (bug #1522821) - Operations and timeout issues (bug #1538214) 2.4.0 - EMC VMAX - locking SG for concurrent threads (bug #1554634) - SnapVX licensing checks for VMAX3 (bug #1587017) - VMAX oversubscription Support (blueprint vmax-oversubscription) - QoS support (blueprint vmax-qos) - VMAX2/VMAX3 iscsi multipath support (iscsi only) https://blueprints.launchpad.net/cinder/+spec/vmax-iscsi-multipath 2.5.0 - Attach and detach snapshot (blueprint vmax-attach-snapshot) - MVs and SGs not reflecting correct protocol (bug #1640222) - Storage assisted volume migration via retype (bp vmax-volume-migration) - Support for compression on All Flash - Volume replication 2.1 (bp add-vmax-replication) - rename and restructure driver (bp vmax-rename-dell-emc)
-
CI_WIKI_NAME
= 'EMC_VMAX_CI'¶
-
VERSION
= '2.5.0'¶
-
backup_use_temp_snapshot
()¶
-
check_for_export
(context, volume_id)¶ Make sure volume is exported.
-
check_for_setup_error
()¶
-
create_cgsnapshot
(context, cgsnapshot, snapshots)¶ Creates a cgsnapshot.
-
create_cloned_volume
(volume, src_vref)¶ Creates a cloned volume.
-
create_consistencygroup
(context, group)¶ Creates a consistencygroup.
-
create_consistencygroup_from_src
(context, group, volumes, cgsnapshot=None, snapshots=None, source_cg=None, source_vols=None)¶ Creates the consistency group from source.
Currently the source can only be a cgsnapshot.
Parameters: - context – the context
- group – the consistency group object to be created
- volumes – volumes in the consistency group
- cgsnapshot – the source consistency group snapshot
- snapshots – snapshots of the source volumes
- source_cg – the dictionary of a consistency group as source.
- source_vols – a list of volume dictionaries in the source_cg.
-
create_export
(context, volume, connector)¶ Driver entry point to get the export info for a new volume.
-
create_export_snapshot
(context, snapshot, connector)¶ Driver entry point to get the export info for a new snapshot.
-
create_snapshot
(snapshot)¶ Creates a snapshot.
-
create_volume
(volume)¶ Creates a VMAX volume.
-
create_volume_from_snapshot
(volume, snapshot)¶ Creates a volume from a snapshot.
-
delete_cgsnapshot
(context, cgsnapshot, snapshots)¶ Deletes a cgsnapshot.
-
delete_consistencygroup
(context, group, volumes)¶ Deletes a consistency group.
-
delete_snapshot
(snapshot)¶ Deletes a snapshot.
-
delete_volume
(volume)¶ Deletes an VMAX volume.
-
ensure_export
(context, volume)¶ Driver entry point to get the export info for an existing volume.
-
extend_volume
(volume, new_size)¶ Extend an existing volume.
-
failover_host
(context, volumes, secondary_id=None)¶ Failover volumes to a secondary host/ backend.
Parameters: - context – the context
- volumes – the list of volumes to be failed over
- secondary_id – the backend to be failed over to, is ‘default’ if fail back
Returns: secondary_id, volume_update_list
-
get_iscsi_dict
(device_info, volume, connector)¶ Populate iscsi dict to pass to nova.
Parameters: - device_info – device info dict
- volume – volume object
- connector – connector object
Returns: iscsi dict
-
get_volume_stats
(refresh=False)¶ Get volume stats.
If ‘refresh’ is True, run update the stats first.
-
initialize_connection
(volume, connector)¶ Initializes the connection and returns connection info.
The iscsi driver returns a driver_volume_type of ‘iscsi’. the format of the driver data is defined in smis_get_iscsi_properties. Example return value:
{ 'driver_volume_type': 'iscsi' 'data': { 'target_discovered': True, 'target_iqn': 'iqn.2010-10.org.openstack:volume-00000001', 'target_portal': '127.0.0.0.1:3260', 'volume_id': '12345678-1234-4321-1234-123456789012', } }
- Example return value (multipath is enabled)::
- {
‘driver_volume_type’: ‘iscsi’ ‘data’: {
‘target_discovered’: True, ‘target_iqns’: [‘iqn.2010-10.org.openstack:volume-00001’,
‘iqn.2010-10.org.openstack:volume-00002’],‘target_portals’: [‘127.0.0.1:3260’, ‘127.0.1.1:3260’], ‘target_luns’: [1, 1],
}
}
-
initialize_connection_snapshot
(snapshot, connector, **kwargs)¶ Allows connection to snapshot.
Parameters: - snapshot – the snapshot object
- connector – the connector object
- kwargs – additional parameters
Returns: iscsi dict
-
manage_existing
(volume, external_ref)¶ Manages an existing VMAX Volume (import to Cinder).
Renames the Volume to match the expected name for the volume. Also need to consider things like QoS, Emulation, account/tenant.
-
manage_existing_get_size
(volume, external_ref)¶ Return size of an existing VMAX volume to manage_existing.
Parameters: - self – reference to class
- volume – the volume object including the volume_type_id
- external_ref – reference to the existing volume
Returns: size of the volume in GB
-
migrate_volume
(ctxt, volume, host)¶ Migrate a volume from one Volume Backend to another.
Parameters: - ctxt – context
- volume – the volume object including the volume_type_id
- host – the host dict holding the relevant target information
Returns: boolean – Always returns True
Returns: dict – Empty dict {}
-
remove_export
(context, volume)¶ Driver entry point to remove an export for a volume.
-
remove_export_snapshot
(context, snapshot)¶ Driver entry point to remove an export for a snapshot.
-
retype
(ctxt, volume, new_type, diff, host)¶ Migrate volume to another host using retype.
Parameters: - ctxt – context
- volume – the volume object including the volume_type_id
- new_type – the new volume type.
- diff – Unused parameter in common.retype
- host – the host dict holding the relevant target information
Returns: boolean – True if retype succeeded, False if error
-
smis_get_iscsi_properties
(volume, connector, ip_and_iqn, is_multipath)¶ Gets iscsi configuration.
We ideally get saved information in the volume entity, but fall back to discovery if need be. Discovery may be completely removed in future The properties are: :target_discovered: boolean indicating whether discovery was used :target_iqn: the IQN of the iSCSI target :target_portal: the portal of the iSCSI target :target_lun: the lun of the iSCSI target :volume_id: the UUID of the volume :auth_method:, :auth_username:, :auth_password:
the authentication details. Right now, either auth_method is not present meaning no authentication, or auth_method == CHAP meaning use CHAP with the specified credentials.
-
terminate_connection
(volume, connector, **kwargs)¶ Disallow connection from connector.
-
terminate_connection_snapshot
(snapshot, connector, **kwargs)¶ Disallows connection to snapshot.
Parameters: - snapshot – the snapshot object
- connector – the connector object
- kwargs – additional parameters
-
unmanage
(volume)¶ Export VMAX volume from Cinder.
Leave the volume intact on the backend array.
-
update_consistencygroup
(context, group, add_volumes, remove_volumes)¶ Updates LUNs in consistency group.
-
update_volume_stats
()¶ Retrieve stats info from volume group.
-