The cinder.volume.drivers.netapp.eseries.library Module

class NetAppESeriesLibrary(*args, **kwargs)

Bases: object

Executes commands relating to Volumes.

AUTOSUPPORT_INTERVAL_SECONDS = 3600
DA_UQ_SPEC = 'netapp_eseries_data_assurance'
DEFAULT_CHAP_USER_NAME = 'eserieschapuser'
DEFAULT_HOST_TYPE = 'linux_dm_mp'
DISK_TYPE_UQ_SPEC = 'netapp_disk_type'
DRIVER_NAME = 'NetApp_iSCSI_ESeries'
ENCRYPTION_UQ_SPEC = 'netapp_disk_encryption'
FLASH_CACHE_UQ_SPEC = 'netapp_eseries_flash_read_cache'
HOST_TYPES = {'windows_clustered': 'W2KNETCL', 'linux_pathmanager': 'LnxTPGSALUA_PM', 'windows_atto': 'WinTPGSALUA', 'ontap': 'ONTAP_ALUA', 'linux_mpp_rdac': 'LNX', 'vmware': 'VmwTPGSALUA', 'windows': 'W2KNETNCL', 'linux_atto': 'LnxTPGSALUA', 'linux_sf': 'LnxTPGSALUA_SF', 'linux_dm_mp': 'LnxALUA', 'ontap_rdac': 'ONTAP_RDAC', 'factoryDefault': 'FactoryDefault'}
MAX_SNAPSHOT_COUNT = 32
MAX_SNAPSHOT_GROUP_COUNT = 4
RAID_UQ_SPEC = 'netapp_raid_type'
READ_CACHE_Q_SPEC = 'netapp:read_cache'
REQUIRED_FLAGS = ['netapp_server_hostname', 'netapp_controller_ips', 'netapp_login', 'netapp_password']
RESERVED_SNAPSHOT_GROUP_COUNT = 1
SA_COMM_TIMEOUT = 30
SLEEP_SECS = 5
SNAPSHOT_PERSISTENT_STORE_KEY = 'cinder-snapshots'
SNAPSHOT_PERSISTENT_STORE_LOCK = '8a0be05f-401b-4b52-bdec-7ab9e60684dc'
SNAPSHOT_VOL_COPY_SUFFIX = 'SGCV'
SNAPSHOT_VOL_DEL_SUFFIX = '_DEL'
SPINDLE_SPD_UQ_SPEC = 'netapp_eseries_disk_spindle_speed'
SSC_DISK_TYPE_MAPPING = {'sas': 'SAS', 'fibre': 'FCAL', 'scsi': 'SCSI', 'ssd': 'SSD', 'sata': 'SATA'}
SSC_RAID_TYPE_MAPPING = {'raidDiskPool': 'DDP', 'raid5': 'raid5', 'raid6': 'raid6', 'raid1': 'raid1', 'raid0': 'raid0', 'raid3': 'raid5'}
SSC_UPDATE_INTERVAL = 60
THIN_UQ_SPEC = 'netapp_thin_provisioned'
VERSION = '1.0.0'
WORLDWIDENAME = 'worldWideName'
WRITE_CACHE_Q_SPEC = 'netapp:write_cache'
check_for_setup_error(*args, **kwargs)
create_cgsnapshot(*args, **kwargs)

Creates a cgsnapshot.

create_cloned_volume(*args, **kwargs)

Creates a clone of the specified volume.

create_consistencygroup(*args, **kwargs)

Define a consistency group.

create_consistencygroup_from_src(*args, **kwargs)

Define a consistency group based on an existing group

Define a new consistency group from a source consistency group. If only a source_cg is provided, then clone each base volume and add it to a new consistency group. If a cgsnapshot is provided, clone each snapshot image to a new volume and add it to the cg.

Parameters:
  • group – The new consistency group to define
  • volumes – The volumes to add to the consistency group
  • cgsnapshot – The cgsnapshot to base the group on
  • snapshots – The list of snapshots on the source cg
  • source_cg – The source consistency group
  • source_vols – The volumes added to the source cg
create_export(*args, **kwargs)

Exports the volume.

create_snapshot(*args, **kwargs)

Creates a snapshot.

Parameters:
  • snapshot – The Cinder snapshot
  • group_name – An optional label for the snapshot group
Returns:

An E-Series snapshot image

create_volume(*args, **kwargs)

Creates a volume.

create_volume_from_snapshot(*args, **kwargs)

Creates a volume from a snapshot.

delete_cgsnapshot(*args, **kwargs)

Deletes a cgsnapshot.

delete_consistencygroup(*args, **kwargs)

Deletes a consistency group.

delete_snapshot(*args, **kwargs)

Delete a snapshot.

delete_volume(*args, **kwargs)

Deletes a volume.

do_setup(*args, **kwargs)

Any initialization the volume driver does while starting.

ensure_export(*args, **kwargs)

Synchronously recreates an export for a volume.

extend_volume(*args, **kwargs)

Extend an existing volume to the new size.

get_pool(*args, **kwargs)

Return pool name where volume resides.

Parameters:volume – The volume hosted by the driver.
Returns:Name of the pool where given volume is hosted.
get_volume_stats(*args, **kwargs)

Return the current state of the volume service.

initialize_connection_fc(*args, **kwargs)

Initializes the connection and returns connection info.

Assigns the specified volume to a compute node/host so that it can be used from that host.

The driver returns a driver_volume_type of ‘fibre_channel’. The target_wwn can be a single entry or a list of wwns that correspond to the list of remote wwn(s) that will export the volume. Example return values:

{
    'driver_volume_type': 'fibre_channel'
    'data': {
        'target_discovered': True,
        'target_lun': 1,
        'target_wwn': '500a098280feeba5',
        'initiator_target_map': {
            '21000024ff406cc3': ['500a098280feeba5'],
            '21000024ff406cc2': ['500a098280feeba5']
        }
    }
}

or

 {
    'driver_volume_type': 'fibre_channel'
    'data': {
        'target_discovered': True,
        'target_lun': 1,
        'target_wwn': ['500a098280feeba5', '500a098290feeba5',
                       '500a098190feeba5', '500a098180feeba5'],
        'initiator_target_map': {
            '21000024ff406cc3': ['500a098280feeba5',
                                 '500a098290feeba5'],
            '21000024ff406cc2': ['500a098190feeba5',
                                 '500a098180feeba5']
        }
    }
}
initialize_connection_iscsi(*args, **kwargs)

Allow connection to connector and return connection info.

manage_existing(*args, **kwargs)

Brings an existing storage object under Cinder management.

manage_existing_get_size(*args, **kwargs)

Return size of volume to be managed by manage_existing.

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

map_volume_to_host(*args, **kwargs)

Ensures the specified initiator has access to the volume.

remove_export(*args, **kwargs)

Removes an export for a volume.

terminate_connection_fc(*args, **kwargs)

Disallow connection from connector.

Return empty data if other volumes are in the same zone. The FibreChannel ZoneManager doesn’t remove zones if there isn’t an initiator_target_map in the return of terminate_connection.

Returns:data - the target_wwns and initiator_target_map if the zone is to be removed, otherwise the same map with an empty dict for the ‘data’ key
terminate_connection_iscsi(*args, **kwargs)

Disallow connection from connector.

unmanage(*args, **kwargs)

Removes the specified volume from Cinder management.

Does not delete the underlying backend storage object. Logs a message to indicate the volume is no longer under Cinder’s control.

update_consistencygroup(*args, **kwargs)

Add or remove volumes from an existing consistency group