The cinder.volume.drivers.dell_emc.xtremio Module

The cinder.volume.drivers.dell_emc.xtremio Module

Driver for Dell 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
1.0.8 - support for volume retype, CG fixes
1.0.9 - performance improvements, support force detach, support for X2
1.0.10 - option to clean unused IGs
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_extra_capabilities()
get_fc_up_ports()
get_initiator(port_address)
get_initiators_igs(port_addresses)
handle_errors(response, key, object_type)
req(object_type='volumes', method='GET', data=None, name=None, idx=None, ver='v1')
update_data(data, cluster_id)
update_url(data, cluster_id)
class XtremIOClient3(configuration, cluster_id)

Bases: cinder.volume.drivers.dell_emc.xtremio.XtremIOClient

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
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.dell_emc.xtremio.XtremIOClient

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
find_lunmap(ig_name, vol_name)
get_cluster()
get_extra_capabilities()
get_fc_up_ports()
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 XtremIOClient42(configuration, cluster_id)

Bases: cinder.volume.drivers.dell_emc.xtremio.XtremIOClient4

get_initiators_igs(port_addresses)
class XtremIOFCDriver(*args, **kwargs)

Bases: cinder.volume.drivers.dell_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.dell_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)

Allow connection to connector and return connection info.

Parameters:
  • volume – The volume to be attached
  • connector – Dictionary containing information about what is being connected to.
Returns conn_info:
 

A dictionary of connection information.

class XtremIOVolumeDriver(*args, **kwargs)

Bases: cinder.volume.drivers.san.san.SanDriver

Executes commands relating to Volumes.

CI_WIKI_NAME = 'EMC_XIO_CI'
MIN_XMS_VERSION = [3, 0, 0]
VERSION = '1.0.10'
check_for_export(context, volume_id)

Make sure volume is exported.

check_for_setup_error()

Returns an error if prerequisites aren’t met.

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_group(context, group)

Creates a group.

Parameters:
  • context – the context of the caller.
  • group – the group object.
Returns:

model_update

create_group_from_src(context, group, volumes, group_snapshot=None, snapshots=None, source_group=None, source_vols=None)

Creates a group from source.

Parameters:
  • context – the context of the caller.
  • group – the Group object to be created.
  • volumes – a list of Volume objects in the group.
  • group_snapshot – the GroupSnapshot object as source.
  • snapshots – a list of snapshot objects in group_snapshot.
  • source_group – the Group object as source.
  • source_vols – a list of volume objects in the source_group.
Returns:

model_update, volumes_model_update

create_group_snapshot(context, group_snapshot, snapshots)

Creates a group_snapshot.

Parameters:
  • context – the context of the caller.
  • group_snapshot – the GroupSnapshot object to be created.
  • snapshots – a list of Snapshot objects in the group_snapshot.
Returns:

model_update, snapshots_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_group(context, group, volumes)

Deletes a group.

Parameters:
  • context – the context of the caller.
  • group – the group object.
  • volumes – a list of volume objects in the group.
Returns:

model_update, volumes_model_update

delete_group_snapshot(context, group_snapshot, snapshots)

Deletes a group_snapshot.

Parameters:
  • context – the context of the caller.
  • group_snapshot – the GroupSnapshot object to be deleted.
  • snapshots – a list of snapshot objects in the group_snapshot.
Returns:

model_update, snapshots_model_update

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, is_snapshot=False)

Manages an existing LV.

manage_existing_get_size(volume, existing_ref, is_snapshot=False)

Return size of an existing LV for manage_existing.

manage_existing_snapshot(snapshot, existing_ref)
manage_existing_snapshot_get_size(snapshot, existing_ref)
terminate_connection(volume, connector, **kwargs)

Disallow connection from connector

unmanage(volume, is_snapshot=False)

Removes the specified volume from Cinder management.

unmanage_snapshot(snapshot)
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

update_group(context, group, add_volumes=None, remove_volumes=None)

Updates a group.

Parameters:
  • context – the context of the caller.
  • group – the group object.
  • add_volumes – a list of volume objects to be added.
  • remove_volumes – a list of volume objects to be removed.
Returns:

model_update, add_volumes_update, remove_volumes_update

update_migrated_volume(ctxt, volume, new_volume, original_volume_status)

Return model update for migrated volume.

Each driver implementing this method needs to be responsible for the values of _name_id and provider_location. If None is returned or either key is not set, it means the volume table does not need to change the value(s) for the key(s). The return format is {“_name_id”: value, “provider_location”: value}.

Parameters:
  • volume – The original volume that was migrated to this backend
  • new_volume – The migration volume object that was created on this backend as part of the migration process
  • original_volume_status – The status of the original volume
Returns:

model_update to update DB with any needed changes

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.