Driver for EMC XtremIO Storage.
supported XtremIO version 2.4 and up
1.0.0 - initial release
1.0.1 - enable volume extend
1.0.2 - added FC support, improved error handling
1.0.3 - update logging level, add translation
1.0.4 - support for FC zones
1.0.5 - add support for XtremIO 4.0
1.0.6 - add support for iSCSI multipath, CA validation, consistency groups,
R/O snapshots, CHAP discovery authentication
1.0.7 - cache glance images on the array
- 
class XtremIOClient(configuration, cluster_id)
 
Bases: object
- 
add_vol_to_cg(vol_id, cg_id)
 
- 
create_snapshot(src, dest, ro=False)
 
Create a snapshot of a volume on the array.
XtreamIO array snapshots are also volumes.
| Src: | name of the source volume to be cloned | 
| Dest: | name for the new snapshot | 
| Ro: | new snapshot type ro/regular. only applicable to Client4 | 
- 
get_base_url(ver)
 
- 
get_cluster()
 
- 
get_initiator(port_address)
 
- 
handle_errors(response, key, object_type)
 
- 
req(*args, **kwargs)
 
- 
update_data(data, cluster_id)
 
- 
update_url(data, cluster_id)
 
- 
class XtremIOClient3(configuration, cluster_id)
 
Bases: cinder.volume.drivers.emc.xtremio.XtremIOClient
- 
create_snapshot(src, dest, ro=False)
 
- 
find_lunmap(ig_name, vol_name)
 
- 
get_initiator(port_address)
 
- 
get_iscsi_portals()
 
- 
num_of_mapped_volumes(initiator)
 
- 
class XtremIOClient4(configuration, cluster_id)
 
Bases: cinder.volume.drivers.emc.xtremio.XtremIOClient
- 
add_vol_to_cg(vol_id, cg_id)
 
- 
create_snapshot(src, dest, ro=False)
 
- 
find_lunmap(ig_name, vol_name)
 
- 
get_cluster()
 
- 
get_initiator(port_address)
 
- 
get_iscsi_portals()
 
- 
num_of_mapped_volumes(initiator)
 
- 
req(object_type='volumes', method='GET', data=None, name=None, idx=None, ver='v2')
 
- 
update_data(data, cluster_id)
 
- 
update_url(data, cluster_id)
 
- 
class XtremIOFibreChannelDriver(*args, **kwargs)
 
Bases: cinder.volume.drivers.emc.xtremio.XtremIOVolumeDriver, cinder.volume.driver.FibreChannelDriver
- 
get_targets()
 
- 
initialize_connection(*args, **kwargs)
 
- 
terminate_connection(*args, **kwargs)
 
- 
class XtremIOISCSIDriver(*args, **kwargs)
 
Bases: cinder.volume.drivers.emc.xtremio.XtremIOVolumeDriver, cinder.volume.driver.ISCSIDriver
Executes commands relating to ISCSI volumes.
We make use of model provider properties as follows:
- provider_location
 
- if present, contains the iSCSI target information in the same
format as an ietadm discovery
i.e. ‘<ip>:<port>,<portal> <target IQN>’
 
- provider_auth
 
- if present, contains a space-separated triple:
‘<auth method> <auth username> <auth password>’.
CHAP is the only auth_method in use at the moment.
 
- 
driver_name = 'XtremIO_ISCSI'
 
- 
initialize_connection(volume, connector)
 
- 
class XtremIOVolumeDriver(*args, **kwargs)
 
Bases: cinder.volume.drivers.san.san.SanDriver
Executes commands relating to Volumes.
- 
MIN_XMS_VERSION = [3, 0, 0]
 
- 
VERSION = '1.0.7'
 
- 
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 clone of the specified volume.
- 
create_consistencygroup(context, group)
 
Creates a consistency group.
| Parameters: | 
- context – the context
 
- group – the group object to be created
 
 
 | 
| Returns: | dict – modelUpdate = {‘status’: ‘available’} 
 | 
| Raises: | VolumeBackendAPIException 
 | 
- 
create_consistencygroup_from_src(context, group, volumes, cgsnapshot=None, snapshots=None, source_cg=None, source_vols=None)
 
Creates a consistencygroup from source.
| Parameters: | 
- context – the context of the caller.
 
- group – the dictionary of the consistency group to be created.
 
- volumes – a list of volume dictionaries in the group.
 
- cgsnapshot – the dictionary of the cgsnapshot as source.
 
- snapshots – a list of snapshot dictionaries in the cgsnapshot.
 
- source_cg – the dictionary of a consistency group as source.
 
- source_vols – a list of volume dictionaries in the source_cg.
 
 
 | 
:returns model_update, volumes_model_update
- 
create_lun_map(volume, ig, lun_num=None)
 
- 
create_snapshot(snapshot)
 
Creates a snapshot.
- 
create_volume(volume)
 
Creates a 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 a volume.
- 
driver_name = 'XtremIO'
 
- 
extend_volume(volume, new_size)
 
Extend an existing volume’s size.
- 
get_volume_stats(refresh=False)
 
Get volume stats.
If ‘refresh’ is True, run update the stats first.
- 
manage_existing(volume, existing_ref)
 
Manages an existing LV.
- 
manage_existing_get_size(volume, existing_ref)
 
Return size of an existing LV for manage_existing.
- 
terminate_connection(volume, connector, **kwargs)
 
Disallow connection from connector
- 
unmanage(volume)
 
Removes the specified volume from Cinder management.
- 
update_consistencygroup(context, group, add_volumes=None, remove_volumes=None)
 
Updates a consistency group.
| Parameters: | 
- context – the context of the caller.
 
- group – the dictionary of the consistency group to be updated.
 
- add_volumes – a list of volume dictionaries to be added.
 
- remove_volumes – a list of volume dictionaries to be removed.
 
 
 | 
| Returns: | model_update, add_volumes_update, remove_volumes_update 
 |