The Module

The Module

class XIVProxy(storage_info, logger, exception, driver=None, active_backend_id=None)


Proxy between the Cinder Volume and Spectrum Accelerate Storage.

Supports IBM XIV, Spectrum Accelerate, A9000, A9000R Version: 2.1.0 Required pyxcli version: 1.1.4

2.0 - First open source driver version
2.1.0 - Support Consistency groups through Generic volume groups
      - Support XIV/A9000 Volume independent QoS
      - Support groups replication
check_for_splitbrain(volumes, pool_master, pool_slave)
create_cloned_volume(*args, **kwargs)

Create cloned volume.

create_group(*args, **kwargs)

Creates a group.

create_group_from_src(*args, **kwargs)

Create volume group from volume group or volume group snapshot.

create_group_snapshot(*args, **kwargs)

Create volume group snapshot.

create_snapshot(*args, **kwargs)

create snapshot.

create_volume(*args, **kwargs)

Creates a volume.

create_volume_from_snapshot(*args, **kwargs)

create volume from snapshot.

delete_group(*args, **kwargs)

Deletes a group.

delete_group_snapshot(*args, **kwargs)

Delete volume group snapshot.

delete_snapshot(*args, **kwargs)

delete snapshot.

delete_volume(*args, **kwargs)

Deletes a volume on the Storage machine.

disable_replication(*args, **kwargs)

disables CG replication

enable_replication(*args, **kwargs)

Enable cg replication

extend_volume(*args, **kwargs)

Resize volume.

failover_host(*args, **kwargs)

Failover a full backend.

Fails over the volume back and forth, if secondary_id is ‘default’, volumes will be failed back, otherwize failed over.

Note that the resulting status depends on the direction: in case of failover it will be ‘failed-over’ and in case of failback it will be ‘available’

failover_replication(context, group, volumes, secondary_backend_id)

Failover a cg with all it’s volumes.

if secondery_id is default, cg needs to be failed back.


Notify the backend that it’s frozen.

get_replication_status(*args, **kwargs)

Return replication status.

handle_created_vol_properties(replication_info, volume)
initialize_connection(*args, **kwargs)

Initialize connection to instance.

Maps the created volume to the nova volume node, and returns the iSCSI target to be used in the instance

manage_volume(*args, **kwargs)

Brings an existing backend storage object under Cinder management.

reference value is passed straight from the get_volume_list helper function. it is up to the driver how this should be interpreted. It should be sufficient to identify a storage object that the driver should somehow associate with the newly-created cinder volume structure. There are two ways to do this:

  1. Rename the backend storage object so that it matches the, volume[‘name’] which is how drivers traditionally map between a cinder volume and the associated backend storage object.
  2. Place some metadata on the volume, or somewhere in the backend, that allows other driver requests (e.g. delete, clone, attach, detach…) to locate the backend storage object when required.

If the reference doesn’t make sense, or doesn’t refer to an existing backend storage object, raise a ManageExistingInvalidReference exception.

The volume may have a volume_type, and the driver can inspect that and compare against the properties of the referenced backend storage object. If they are incompatible, raise a ManageExistingVolumeTypeMismatch, specifying a reason for the failure.

manage_volume_get_size(*args, **kwargs)

Return size of volume to be managed by manage_volume.

When calculating the size, round up to the next GB.

migrate_volume(*args, **kwargs)

Migrate volume to another backend.

Optimize the migration if the destination is on the same server.

If the specified host is another back-end on the same server, and the volume is not attached, we can do the migration locally without going through iSCSI.

Storage-assisted migration…

retype(*args, **kwargs)

Change volume type.

Returns a boolean indicating whether the retype occurred.

  • 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
setup(*args, **kwargs)
terminate_connection(*args, **kwargs)

Terminate connection.

Unmaps volume. If this is the last connection from the host, undefines the host from the storage.


Notify the backend that it’s unfrozen/thawed.

unmanage_volume(*args, **kwargs)

Removes the specified volume from Cinder management.

Does not delete the underlying backend storage object.

update_group(*args, **kwargs)

Updates a group.

volume_exists(*args, **kwargs)

Checks if a volume exists on xiv.

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.