The cinder.volume.drivers.dell_emc.scaleio.driver Module

Driver for Dell EMC ScaleIO based on ScaleIO remote CLI.

class ScaleIODriver(*args, **kwargs)

Bases: cinder.volume.driver.VolumeDriver

Dell EMC ScaleIO Driver.

CI_WIKI_NAME = ‘EMC_ScaleIO_CI’
VERSION = ‘2.0.2’
check_for_export(context, volume_id)

Make sure volume is exported.

check_for_setup_error()
copy_image_to_volume(context, volume, image_service, image_id)

Fetch the image from image_service and write it to the volume.

copy_volume_to_image(context, volume, image_service, image_meta)

Copy the volume to the specified image.

create_cloned_volume(volume, src_vref)

Creates a cloned volume.

create_export(context, volume, connector)

Driver entry point to get the export info for a new volume.

create_group(context, group)

Creates a group.

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

model_update

ScaleIO won’t create CG until cg-snapshot creation, db will maintain the volumes and CG relationship.

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

Creates a scaleio snapshot.

create_volume(volume)

Creates a scaleIO volume.

create_volume_from_snapshot(volume, snapshot)

Creates a volume from a snapshot.

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

ScaleIO will delete the volumes of the CG.

delete_group_snapshot(context, group_snapshot, snapshots)

Deletes a 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 ScaleIO snapshot.

delete_volume(volume)

Deletes a self.logical volume

ensure_export(context, volume)

Driver entry point to get the export info for an existing volume.

extend_volume(volume, new_size)

Extends the size of an existing available ScaleIO volume.

This action will round up the volume to the nearest size that is a granularity of 8 GBs.

get_manageable_volumes(cinder_volumes, marker, limit, offset, sort_keys, sort_dirs)

List volumes on the backend available for management by Cinder.

Rule out volumes that are mapped to an SDC or are already in the list of cinder_volumes. Return references of the volume ids for any others.

get_volume_stats(refresh=False)

Get volume stats.

If ‘refresh’ is True, run update the stats first.

initialize_connection(volume, connector, **kwargs)

Initializes the connection and returns connection info.

The scaleio driver returns a driver_volume_type of ‘scaleio’.

manage_existing(volume, existing_ref)

Manage an existing ScaleIO volume.

existing_ref is a dictionary of the form: {‘source-id’: <id of ScaleIO volume>}

manage_existing_get_size(volume, existing_ref)
manage_existing_snapshot(snapshot, existing_ref)

Manage an existing ScaleIO snapshot.

Parameters:
  • snapshot – the snapshot to manage
  • existing_ref – dictionary of the form: {‘source-id’: <id of ScaleIO snapshot>}
manage_existing_snapshot_get_size(snapshot, existing_ref)
remove_export(context, volume)

Driver entry point to remove an export for a volume.

scaleio_qos_keys = (‘maxIOPS’, ‘maxBWS’, ‘maxIOPSperGB’, ‘maxBWSperGB’)
terminate_connection(volume, connector, **kwargs)
update_group(context, group, add_volumes=None, remove_volumes=None)

Update 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

ScaleIO does not handle volume grouping. Cinder maintains volumes and CG relationship.

update_migrated_volume(ctxt, volume, new_volume, original_volume_status)

Return the update from ScaleIO migrated volume.

This method updates the volume name of the new ScaleIO volume to match the updated volume ID. The original volume is renamed first since ScaleIO does not allow multiple volumes to have the same name.