The cinder.volume.drivers.emc.emc_vmax_iscsi Module

ISCSI Drivers for EMC VMAX arrays based on SMI-S.

class EMCVMAXISCSIDriver(*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)
VERSION = '2.3.0'
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_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 EMC 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.

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',
    }
}
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.

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_do_iscsi_discovery(volume)

Calls iscsiadm with each iscsi ip address in the list

smis_get_iscsi_properties(volume, connector)

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.

unmanage(volume)

Export VMAX volume and leave 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.

Previous topic

The cinder.volume.drivers.emc.emc_vmax_https Module

Next topic

The cinder.volume.drivers.emc.emc_vmax_masking Module

Project Source

This Page