The cinder.volume.drivers.solidfire Module

class SolidFireDriver(*args, **kwargs)

Bases: cinder.volume.drivers.san.san.SanISCSIDriver

OpenStack driver to enable SolidFire cluster.

Version history:
1.0 - Initial driver 1.1 - Refactor, clone support, qos by type and minor bug fixes 1.2 - Add xfr and retype support 1.2.1 - Add export/import support 1.2.2 - Catch VolumeNotFound on accept xfr
VERSION = '1.2.2'
accept_transfer(context, volume, new_user, new_project)
attach_volume(context, volume, instance_uuid, host_name, mountpoint)
cluster_stats = {}
create_cloned_volume(volume, src_vref)

Create a clone of an existing volume.

create_export(context, volume)

Setup the iscsi export info.

create_snapshot(snapshot)

Create a snapshot of a volume on the SolidFire cluster.

Note that for SolidFire Clusters currently there is no snapshot implementation. Due to the way SF does cloning there’s no performance hit or extra space used. The only thing that’s lacking from this is the abilit to restore snaps.

After GA a true snapshot implementation will be available with restore at which time we’ll rework this appropriately.

create_volume(volume)

Create volume on SolidFire device.

The account is where CHAP settings are derived from, volume is created and exported. Note that the new volume is immediately ready for use.

One caveat here is that an existing user account must be specified in the API call to create a new volume. We use a set algorithm to determine account info based on passed in cinder volume object. First we check to see if the account already exists (and use it), or if it does not already exist, we’ll go ahead and create it.

create_volume_from_snapshot(volume, snapshot)

Create a volume from the specified snapshot.

delete_snapshot(snapshot)

Delete the specified snapshot from the SolidFire cluster.

delete_volume(volume)

Delete SolidFire Volume from device.

SolidFire allows multiple volumes with same name, volumeID is what’s guaranteed unique.

detach_volume(context, volume)
ensure_export(context, volume)

Verify the iscsi export info.

extend_volume(volume, new_size)

Extend an existing volume.

get_volume_stats(refresh=False)

Get volume status.

If ‘refresh’ is True, run update first. The name is a bit misleading as the majority of the data here is cluster data

manage_existing(volume, external_ref)

Manages an existing SolidFire 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 LV for manage_existing.

existing_ref is a dictionary of the form: {‘name’: <name of existing volume on SF Cluster>}

retype(ctxt, volume, new_type, diff, host)

Convert the volume to be of the new type.

Returns a boolean indicating whether the retype occurred.

Parameters:
  • ctxt – Context
  • volume – A dictionary describing the volume to migrate
  • new_type – A dictionary describing the volume type to convert to
  • diff – A dictionary with the difference between the two types
  • host – A dictionary describing the host to migrate to, where host[‘host’] is its name, and host[‘capabilities’] is a dictionary of its reported capabilities (Not Used).
sf_qos_dict = {'performant': {'burstIOPS': 4000, 'minIOPS': 2000, 'maxIOPS': 4000}, 'medium': {'burstIOPS': 400, 'minIOPS': 200, 'maxIOPS': 400}, 'slow': {'burstIOPS': 200, 'minIOPS': 100, 'maxIOPS': 200}, 'off': None, 'fast': {'burstIOPS': 1000, 'minIOPS': 500, 'maxIOPS': 1000}}
sf_qos_keys = ['minIOPS', 'maxIOPS', 'burstIOPS']
unmanage(volume)

Mark SolidFire Volume as unmanaged (export from Cinder).

Previous topic

The cinder.volume.drivers.smbfs Module

Next topic

The cinder.volume.drivers.vmware.api Module

This Page