The Module

The Module

Volume driver for HNAS NFS storage.

class HNASNFSDriver(*args, **kwargs)

Bases: cinder.volume.drivers.nfs.NfsDriver

Base class for Hitachi NFS driver.

Executes commands relating to Volumes.

Version history:

Version 1.0.0: Initial driver version
Version 2.2.0: Added support to SSH authentication
Version 3.0.0: Added pool aware scheduling
Version 4.0.0: Added manage/unmanage features
Version 4.1.0: Fixed XML parser checks on blank options
Version 5.0.0: Remove looping in driver initialization
               Code cleaning up
               New communication interface between the driver and HNAS
               Removed the option to use local SSC (ssh_enabled=False)
               Updated to use versioned objects
               Changed the class name to HNASNFSDriver
               Deprecated XML config file
               Added support to manage/unmanage snapshots features
               Fixed driver stats reporting
Version 6.0.0: Deprecated hnas_svcX_vol_type configuration
               Added list-manageable volumes/snapshots support
               Rename snapshots to link with its original volume
VERSION = '6.0.0'
create_cloned_volume(*args, **kwargs)

Creates a clone of the specified volume.

  • volume – reference to the volume being created
  • src_vref – reference to the source volume

the provider_location of the cloned volume

create_snapshot(*args, **kwargs)

Create a snapshot.

Parameters:snapshot – dictionary snapshot reference
Returns:the provider_location of the snapshot created
create_volume(*args, **kwargs)

Creates a volume.

Parameters:volume – volume reference
Returns:the volume provider_location
create_volume_from_snapshot(*args, **kwargs)

Creates a volume from a snapshot.

  • volume – volume to be created
  • snapshot – source snapshot

the provider_location of the volume created

delete_snapshot(*args, **kwargs)

Deletes a snapshot.

Parameters:snapshot – dictionary snapshot reference

Perform internal driver setup.

extend_volume(*args, **kwargs)

Extend an existing volume.

  • volume – dictionary volume reference
  • new_size – int size in GB to extend


get_manageable_snapshots(*args, **kwargs)

List snapshots on the backend available for management by Cinder.

get_manageable_volumes(*args, **kwargs)

List volumes on the backend available for management by Cinder.


Get volume stats.

Parameters:refresh – if it is True, update the stats first.
Returns:dictionary with the stats from HNAS
_stats['pools'] = {
    'total_capacity_gb': total size of the pool,
    'free_capacity_gb': the available size,
    'QoS_support': bool to indicate if QoS is supported,
    'reserved_percentage': percentage of size reserved,
    'max_over_subscription_ratio': oversubscription rate,
    'thin_provisioning_support': thin support (True),
manage_existing(*args, **kwargs)

Manages an existing volume.

The specified Cinder volume is to be taken into Cinder management. The driver will verify its existence and then rename it to the new Cinder volume name. It is expected that the existing volume reference is an NFS share point and some [/path]/volume; e.g., or

  • volume – cinder volume to manage
  • existing_vol_ref – driver-specific information used to identify a volume

the provider location



manage_existing_get_size(*args, **kwargs)

Returns the size of volume to be managed by manage_existing.

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

  • volume – cinder volume to manage
  • existing_vol_ref – existing volume to take under management

the size of the volume or raise error



manage_existing_snapshot(*args, **kwargs)

Brings an existing backend storage object under Cinder management.

  • snapshot – Cinder volume snapshot to manage
  • existing_ref – Driver-specific information used to identify a volume snapshot
manage_existing_snapshot_get_size(*args, **kwargs)
unmanage(*args, **kwargs)

Removes the specified volume from Cinder management.

It does not delete the underlying backend storage object. A log entry will be made to notify the Admin that the volume is no longer being managed.

Parameters:volume – cinder volume to unmanage
unmanage_snapshot(*args, **kwargs)

Removes the specified snapshot from Cinder management.

Does not delete the underlying backend storage object.

Parameters:snapshot – Cinder volume snapshot to unmanage
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.