The cinder.volume.drivers.zfssa.zfssanfs Module

ZFS Storage Appliance NFS Cinder Volume Driver

class ZFSSANFSDriver(*args, **kwargs)

Bases: cinder.volume.drivers.nfs.NfsDriver

ZFSSA Cinder NFS 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 for properly configured pool, project and share Check that the http and nfs services are enabled

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)

Creates a snapshot and then clones the snapshot into a volume.

create_snapshot(snapshot)

Creates a snapshot of a volume.

create_volume(volume)
create_volume_from_snapshot(volume, snapshot, method='COPY')
delete_snapshot(snapshot)

Deletes a snapshot.

delete_volume(volume)
do_setup(context)
driver_prefix = 'nfs'
driver_volume_type = 'nfs'
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 = 'nfs'
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

volume_backend_name = 'ZFSSA_NFS'
factory_zfssa()