The cinder.volume.drivers.zfssa.zfssaiscsi Module

ZFS Storage Appliance Cinder Volume Driver

class MigrateVolumeCleanUp(name=None, provides=None, requires=None, auto_extract=True, rebind=None, inject=None, ignore_list=None, revert_rebind=None, revert_requires=None)

Bases: taskflow.task.Task

execute(driver, volume, tgt_zfssa)
class MigrateVolumeCreateAction(name=None, provides=None, requires=None, auto_extract=True, rebind=None, inject=None, ignore_list=None, revert_rebind=None, revert_requires=None)

Bases: taskflow.task.Task

execute(src_zfssa, volume, src_pool, src_project, target, tgt_pool)
revert(src_zfssa, **kwargs)
class MigrateVolumeInit(name=None, provides=None, requires=None, auto_extract=True, rebind=None, inject=None, ignore_list=None, revert_rebind=None, revert_requires=None)

Bases: taskflow.task.Task

execute(src_zfssa, volume, src_pool, src_project)
revert(src_zfssa, volume, src_pool, src_project, **kwargs)
class MigrateVolumeMoveVol(name=None, provides=None, requires=None, auto_extract=True, rebind=None, inject=None, ignore_list=None, revert_rebind=None, revert_requires=None)

Bases: taskflow.task.Task

execute(tgt_zfssa, tgt_pool, tgt_project, action_id, volume)
revert(tgt_zfssa, tgt_pool, tgt_project, action_id, volume, **kwargs)
class MigrateVolumeSendReplUpdate(name=None, provides=None, requires=None, auto_extract=True, rebind=None, inject=None, ignore_list=None, revert_rebind=None, revert_requires=None)

Bases: taskflow.task.Task

execute(src_zfssa, action_id)
class MigrateVolumeSeverRepl(name=None, provides=None, requires=None, auto_extract=True, rebind=None, inject=None, ignore_list=None, revert_rebind=None, revert_requires=None)

Bases: taskflow.task.Task

execute(tgt_zfssa, src_asn, action_id, driver)
class ZFSSAISCSIDriver(*args, **kwargs)

Bases: cinder.volume.driver.ISCSIDriver

ZFSSA Cinder iSCSI volume driver.

Version history:

1.0.1:
    Backend enabled volume migration.
    Local cache feature.
1.0.2:
    Volume manage/unmanage support.
CI_WIKI_NAME = ‘Oracle_ZFSSA_CI’
VERSION = ‘1.0.2’
check_for_setup_error()

Check that driver can login.

Check also pool, project, initiators, initiatorgroup, target and targetgroup.

clone_image(*args, **kwargs)

Create a volume efficiently from an existing image.

Verify the image ID being used:

(1) If there is no existing cache volume, create one and transfer image data to it. Take a snapshot.

(2) If a cache volume already exists, verify if it is either alternated or updated. If so try to remove it, raise exception if removal fails. Create a new cache volume as in (1).

Clone a volume from the cache volume and returns it to Cinder.

A file lock is placed on this method to prevent:

(a) a race condition when a cache volume has been verified, but then gets deleted before it is cloned.

(b) failure of subsequent clone_image requests if the first request is still pending.

create_cloned_volume(volume, src_vref)

Create a clone of the specified volume.

create_export(context, volume, connector)
create_snapshot(snapshot)

Creates a snapshot of a volume.

Snapshot name: snapshot[‘name’] Volume name: snapshot[‘volume_name’]

create_volume(volume)

Create a volume on ZFSSA.

create_volume_from_snapshot(volume, snapshot)

Creates a volume from a snapshot - clone a snapshot.

delete_snapshot(snapshot)

Deletes a snapshot.

delete_volume(volume)

Deletes a volume with the given volume[‘name’].

do_setup(context)

Setup - create multiple elements.

Project, initiators, initiatorgroup, target and targetgroup.

ensure_export(context, volume)
extend_volume(volume, new_size)

Driver entry point to extent volume size.

get_volume_stats(refresh=False)

Get volume status.

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

initialize_connection(volume, connector)
local_path(volume)

Not implemented.

manage_existing(volume, existing_ref)

Manage an existing volume in the ZFSSA backend.

Parameters:
  • volume – Reference to the new volume.
  • existing_ref – Reference to the existing volume to be managed.
manage_existing_get_size(volume, existing_ref)

Return size of the volume to be managed by manage_existing.

migrate_volume(ctxt, volume, host)
protocol = ‘iSCSI’
remove_export(context, volume)
terminate_connection(volume, connector, **kwargs)

Driver entry point to terminate a connection for a volume.

unmanage(volume)

Remove an existing volume from cinder management.

Parameters:volume – Reference to the volume to be unmanaged.
update_migrated_volume(ctxt, volume, new_volume, original_volume_status)

Return model update for migrated volume.

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

factory_zfssa()