The cinder.volume.drivers.hgst Module

The cinder.volume.drivers.hgst Module

Desc : Driver to store Cinder volumes using HGST Flash Storage Suite Require : HGST Flash Storage Suite Author : Earle F. Philhower, III <>

class HGSTDriver(*args, **kwargs)

Bases: cinder.volume.driver.VolumeDriver

This is the Class to set in cinder.conf (volume_driver).

Implements a Cinder Volume driver which creates a HGST Space for each Cinder Volume or Snapshot requested. Use the vgc-cluster CLI to do all management operations.

The Cinder host will nominally have all Spaces made visible to it, while individual compute nodes will only have Spaces connected to KVM instances connected.

CI_WIKI_NAME = 'HGST_Solutions_CI'
SPACEGB = 984000000
VERSION = '1.0.0'
VGCCLUSTER = 'vgc-cluster'

Throw an exception if configuration values/setup isn’t okay.

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)

Create a cloned volume from an existing one.

No cloning operation in the current release so simply copy using DD to a new space. This could be a lengthy operation.

create_export(context, volume, connector)

Create a snapshot volume.

We don’t yet support snaps in SW so make a new volume and dd the source one into it. This could be a lengthy operation.

create_volume(*args, **kwargs)

API entry to create a volume on the cluster as a HGST space.

Creates a volume, adjusting for GiB/GB sizing. Locked to ensure we don’t have race conditions on the name we pick to use for the space.

create_volume_from_snapshot(volume, snapshot)

Create volume from a snapshot, but snaps still full volumes.


Delete a snapshot. For now, snapshots are full volumes.


Delete a Volume’s underlying space.

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

Extend an existing volume.

We may not actually need to resize the space because it’s size is always rounded up to a function of the GiB/GB and number of storage nodes.


Return Volume statistics, potentially cached copy.

initialize_connection(volume, connector)

Return connection information.

Need to return noremovehost so that the Nova host doesn’t accidentally remove us from the apphost list if it is running on the same host (like in devstack testing).


Query the provider_id to figure out the proper devnode.

remove_export(context, volume)
terminate_connection(volume, connector, **kwargs)

Parse the JSON output of vgc-cluster to find space available.

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.