The cinder.volume.drivers.vmware.volumeops Module

The cinder.volume.drivers.vmware.volumeops Module

Implements operations on volumes residing on VMware datastores.

class ControllerType

Bases: object

Encapsulate various controller types.

BUS_LOGIC = 'VirtualBusLogicController'
CONTROLLER_TYPE_DICT = {'paraVirtual': 'ParaVirtualSCSIController', 'ide': 'VirtualIDEController', 'busLogic': 'VirtualBusLogicController', 'lsiLogicsas': 'VirtualLsiLogicSASController', 'lsiLogic': 'VirtualLsiLogicController'}
IDE = 'VirtualIDEController'
LSI_LOGIC = 'VirtualLsiLogicController'
LSI_LOGIC_SAS = 'VirtualLsiLogicSASController'
PARA_VIRTUAL = 'ParaVirtualSCSIController'
static get_controller_type(adapter_type)

Get the disk controller type based on the given adapter type.

Parameters:adapter_type – disk adapter type
Returns:controller type corresponding to the given adapter type
Raises:InvalidAdapterTypeException
static is_scsi_controller(controller_type)

Check if the given controller is a SCSI controller.

Parameters:controller_type – controller type
Returns:True if the controller is a SCSI controller
class FcdLocation(fcd_id, ds_ref_val)

Bases: object

classmethod create(fcd_id_obj, ds_ref)
ds_ref()
classmethod from_provider_location(provider_location)
id(cf)
provider_location()
class FlatExtentVirtualDiskPath(ds_name, folder_path, disk_name)

Bases: cinder.volume.drivers.vmware.volumeops.VirtualDiskPath

Paths of files in a non-monolithic disk with a single flat extent.

get_flat_extent_ds_file_path()

Get datastore file path of the flat extent.

get_flat_extent_file_path()

Get absolute file path of the flat extent.

class MonolithicSparseVirtualDiskPath(ds_name, folder_path, disk_name)

Bases: cinder.volume.drivers.vmware.volumeops.VirtualDiskPath

Paths of file comprising a monolithic sparse disk.

class VMwareVolumeOps(session, max_objects, extension_key, extension_type)

Bases: object

Manages volume operations.

attach_disk_to_backing(backing, size_in_kb, disk_type, adapter_type, profile_id, vmdk_ds_file_path)

Attach an existing virtual disk to the backing VM.

Parameters:
  • backing – reference to the backing VM
  • size_in_kb – disk size in KB
  • disk_type – virtual disk type
  • adapter_type – disk adapter type
  • profile_id – storage policy profile identification
  • vmdk_ds_file_path – datastore file path of the virtual disk to be attached
attach_fcd(backing, fcd_location)
build_backing_ref_cache(name_regex=None)
cancel_retrieval(retrieve_result)

Cancel retrieval of results if necessary.

Parameters:retrieve_result – Result from RetrievePropertiesEx
change_backing_profile(backing, profile_id)

Change storage profile of the backing VM.

The current profile is removed if the new profile is None.

clone_backing(name, backing, snapshot, clone_type, datastore, disk_type=None, host=None, resource_pool=None, extra_config=None, folder=None, disks_to_clone=None)

Clone backing.

If the clone_type is ‘full’, then a full clone of the source volume backing will be created. Else, if it is ‘linked’, then a linked clone of the source volume backing will be created.

Parameters:
  • name – Name for the clone
  • backing – Reference to the backing entity
  • snapshot – Snapshot point from which the clone should be done
  • clone_type – Whether a full clone or linked clone is to be made
  • datastore – Reference to the datastore entity
  • disk_type – Disk type of the clone
  • host – Target host
  • resource_pool – Target resource pool
  • extra_config – Key-value pairs to be written to backing’s extra-config
  • folder – The location of the clone
  • disks_to_clone – UUIDs of disks to clone
clone_fcd(name, fcd_location, dest_ds_ref, disk_type)
continue_retrieval(retrieve_result)

Continue retrieval of results if necessary.

Parameters:retrieve_result – Result from RetrievePropertiesEx
copy_datastore_file(vsphere_url, dest_dc_ref, dest_ds_file_path)

Copy file to datastore location.

Parameters:
  • vsphere_url – vsphere URL of the file
  • dest_dc_ref – Reference to destination datacenter
  • dest_file_path – Destination datastore file path
copy_vmdk_file(src_dc_ref, src_vmdk_file_path, dest_vmdk_file_path, dest_dc_ref=None)

Copy contents of the src vmdk file to dest vmdk file.

Parameters:
  • src_dc_ref – Reference to datacenter containing src datastore
  • src_vmdk_file_path – Source vmdk file path
  • dest_vmdk_file_path – Destination vmdk file path
  • dest_dc_ref – Reference to datacenter of dest datastore. If unspecified, source datacenter is used.
create_backing(name, size_kb, disk_type, folder, resource_pool, host, ds_name, profileId=None, adapter_type='lsiLogic', extra_config=None)

Create backing for the volume.

Creates a VM with one VMDK based on the given inputs.

Parameters:
  • name – Name of the backing
  • size_kb – Size in KB of the backing
  • disk_type – VMDK type for the disk
  • folder – Folder, where to create the backing under
  • resource_pool – Resource pool reference
  • host – Host reference
  • ds_name – Datastore name where the disk is to be provisioned
  • profileId – Storage profile ID to be associated with backing
  • adapter_type – Disk adapter type
  • extra_config – Key-value pairs to be written to backing’s extra-config
Returns:

Reference to the created backing entity

create_backing_disk_less(name, folder, resource_pool, host, ds_name, profileId=None, extra_config=None)

Create disk-less volume backing.

This type of backing is useful for creating volume from image. The downloaded image from the image service can be copied to a virtual disk of desired provisioning type and added to the backing VM.

Parameters:
  • name – Name of the backing
  • folder – Folder where the backing is created
  • resource_pool – Resource pool reference
  • host – Host reference
  • ds_name – Name of the datastore used for VM storage
  • profileId – Storage profile ID to be associated with backing
  • extra_config – Key-value pairs to be written to backing’s extra-config
Returns:

Reference to the created backing entity

create_datastore_folder(ds_name, folder_path, datacenter)

Creates a datastore folder.

This method returns silently if the folder already exists.

Parameters:
  • ds_name – datastore name
  • folder_path – path of folder to create
  • datacenter – datacenter of target datastore
create_fcd(name, size_mb, ds_ref, disk_type)
create_flat_extent_virtual_disk_descriptor(dc_ref, path, size_in_kb, adapter_type, disk_type)

Create descriptor for a single flat extent virtual disk.

To create the descriptor, we create a virtual disk and delete its flat extent.

Parameters:
  • dc_ref – reference to the datacenter
  • path – descriptor datastore file path
  • size_in_kb – size of the virtual disk in KB
  • adapter_type – virtual disk adapter type
  • disk_type – type of the virtual disk
create_folder(parent_folder, child_folder_name)

Creates child folder under the given parent folder.

Parameters:
  • parent_folder – Reference to the parent folder
  • child_folder_name – Name of the child folder
Returns:

Reference to the child folder

create_snapshot(backing, name, description, quiesce=False)

Create snapshot of the backing with given name and description.

Parameters:
  • backing – Reference to the backing entity
  • name – Snapshot name
  • description – Snapshot description
  • quiesce – Whether to quiesce the backing when taking snapshot
Returns:

Created snapshot entity reference

create_virtual_disk(dc_ref, vmdk_ds_file_path, size_in_kb, adapter_type='busLogic', disk_type='preallocated')

Create virtual disk with the given settings.

Parameters:
  • dc_ref – datacenter reference
  • vmdk_ds_file_path – datastore file path of the virtual disk
  • size_in_kb – disk size in KB
  • adapter_type – disk adapter type
  • disk_type – vmdk type
create_vm_inventory_folder(datacenter, path_comp)

Create and return a VM inventory folder.

This method caches references to inventory folders returned.

Parameters:
  • datacenter – Reference to datacenter
  • path_comp – Path components as a list
delete_backing(backing)

Delete the backing.

Parameters:backing – Managed object reference to the backing
delete_fcd(fcd_location)
delete_file(file_path, datacenter=None)

Delete file or folder on the datastore.

Parameters:file_path – Datastore path of the file or folder
delete_snapshot(backing, name)

Delete a given snapshot from volume backing.

Parameters:
  • backing – Reference to the backing entity
  • name – Snapshot name
delete_vmdk_file(vmdk_file_path, dc_ref)

Delete given vmdk files.

Parameters:
  • vmdk_file_path – VMDK file path to be deleted
  • dc_ref – Reference to datacenter that contains this VMDK file
detach_disk_from_backing(backing, disk_device)

Detach the given disk from backing.

detach_fcd(backing, fcd_location)
extend_fcd(fcd_location, new_size_mb)
extend_virtual_disk(requested_size_in_gb, path, dc_ref, eager_zero=False)

Extend the virtual disk to the requested size.

Parameters:
  • requested_size_in_gb – Size of the volume in GB
  • path – Datastore path of the virtual disk to extend
  • dc_ref – Reference to datacenter
  • eager_zero – Boolean determining if the free space is zeroed out
get_backing(name, backing_uuid)

Get the backing based on name or uuid.

Parameters:
  • name – Name of the backing
  • backing_uuid – UUID of the backing
Returns:

Managed object reference to the backing

get_backing_by_uuid(uuid)
get_cluster_hosts(cluster)

Get hosts in the given cluster.

Parameters:cluster – cluster reference
Returns:references to hosts in the cluster
get_cluster_refs(names)

Get references to given clusters.

Parameters:names – list of cluster names
Returns:Dictionary of cluster names to references
get_connected_hosts(datastore)

Get all the hosts to which the datastore is connected and usable.

The datastore is considered to be usable for a host only if it is writable, mounted and accessible.

Parameters:datastore – Reference to the datastore entity
Returns:List of managed object references of all connected hosts
get_create_spec(name, size_kb, disk_type, ds_name, profile_id=None, adapter_type='lsiLogic', extra_config=None)

Return spec for creating backing with a single disk.

Parameters:
  • name – name of the backing
  • size_kb – disk size in KB
  • disk_type – disk provisioning type
  • ds_name – datastore name where the disk is to be provisioned
  • profile_id – storage policy profile identification
  • adapter_type – disk adapter type
  • extra_config – key-value pairs to be written to backing’s extra-config
Returns:

spec for creation

get_datastore(backing)

Get datastore where the backing resides.

Parameters:backing – Reference to the backing
Returns:Datastore reference to which the backing belongs
get_dc(child)

Get parent datacenter up the hierarchy via ‘parent’ property.

Parameters:child – Reference of the child entity
Returns:Parent Datacenter of the param child entity
get_disk_device(vm, vmdk_path)

Get the disk device of the VM which corresponds to the given path.

Parameters:
  • vm – VM reference
  • vmdk_path – Datastore path of virtual disk
Returns:

Matching disk device

get_disk_size(backing)

Get disk size of the backing.

Parameters:backing – backing VM reference
Returns:disk size in bytes
get_entity_by_inventory_path(path)

Returns the managed object identified by the given inventory path.

Parameters:path – Inventory path
Returns:Reference to the managed object
get_entity_name(entity)

Get name of the managed entity.

Parameters:entity – Reference to the entity
Returns:Name of the managed entity
get_host(instance)

Get host under which instance is present.

Parameters:instance – Managed object reference of the instance VM
Returns:Host managing the instance VM
get_hosts()

Get all host from the inventory.

Returns:All the hosts from the inventory
get_inventory_path(entity)
get_path_name(backing)

Get path name of the backing.

Parameters:backing – Reference to the backing entity
Returns:Path name of the backing
get_snapshot(backing, name)

Get snapshot of the backing with given name.

Parameters:
  • backing – Reference to the backing entity
  • name – Snapshot name
Returns:

Snapshot entity of the backing with given name

get_summary(datastore)

Get datastore summary.

Parameters:datastore – Reference to the datastore
Returns:‘summary’ property of the datastore
get_vmdk_path(backing)

Get the vmdk file name of the backing.

The vmdk file path of the backing returned is of the form: “[datastore1] my_folder/my_vm.vmdk”

Parameters:backing – Reference to the backing
Returns:VMDK file path of the backing
get_vmfolder(datacenter)

Get the vmFolder.

Parameters:datacenter – Reference to the datacenter entity
Returns:vmFolder property of the datacenter
is_datastore_accessible(datastore, host)

Check if the datastore is accessible to the given host.

Parameters:datastore – datastore reference
Returns:True if the datastore is accessible
mark_backing_as_template(backing)
move_backing_to_folder(backing, folder)

Move the volume backing to the folder.

Parameters:
  • backing – Reference to the backing
  • folder – Reference to the folder
move_vmdk_file(src_dc_ref, src_vmdk_file_path, dest_vmdk_file_path, dest_dc_ref=None)

Move the given vmdk file to another datastore location.

Parameters:
  • src_dc_ref – Reference to datacenter containing src datastore
  • src_vmdk_file_path – Source vmdk file path
  • dest_vmdk_file_path – Destination vmdk file path
  • dest_dc_ref – Reference to datacenter of dest datastore. If unspecified, source datacenter is used.
register_disk(vmdk_url, name, ds_ref)
relocate_backing(backing, datastore, resource_pool, host, disk_type=None)

Relocates backing to the input datastore and resource pool.

The implementation uses moveAllDiskBackingsAndAllowSharing disk move type.

Parameters:
  • backing – Reference to the backing
  • datastore – Reference to the datastore
  • resource_pool – Reference to the resource pool
  • host – Reference to the host
  • disk_type – destination disk type
rename_backing(backing, new_name)

Rename backing VM.

Parameters:
  • backing – VM to be renamed
  • new_name – new VM name
revert_to_snapshot(backing, name)
set_vmx_version(vmx_version)
snapshot_exists(backing)

Check if the given backing contains snapshots.

update_backing_disk_uuid(backing, disk_uuid)

Update backing VM’s disk UUID.

Parameters:
  • backing – Reference to backing VM
  • disk_uuid – New disk UUID
update_backing_extra_config(backing, extra_config)
update_backing_uuid(backing, uuid)
class VirtualDiskAdapterType

Bases: object

Supported virtual disk adapter types.

BUS_LOGIC = 'busLogic'
IDE = 'ide'
LSI_LOGIC = 'lsiLogic'
LSI_LOGIC_SAS = 'lsiLogicsas'
PARA_VIRTUAL = 'paraVirtual'
static get_adapter_type(extra_spec_adapter)

Get the adapter type to be used in VirtualDiskSpec.

Parameters:extra_spec_adapter – adapter type in the extra_spec
Returns:adapter type to be used in VirtualDiskSpec
static is_valid(adapter_type)

Check if the given adapter type is valid.

Parameters:adapter_type – adapter type to check
Returns:True if valid
static validate(extra_spec_adapter_type)

Validate the given adapter type in extra_spec.

This method throws an instance of InvalidAdapterTypeException if the given adapter type is invalid.

Parameters:extra_spec_adapter_type – adapter type in extra_spec
Raises:InvalidAdapterTypeException
class VirtualDiskPath(ds_name, folder_path, disk_name)

Bases: object

Class representing paths of files comprising a virtual disk.

get_datastore_file_path(ds_name, file_path)

Get datastore path corresponding to the given file path.

Parameters:
  • ds_name – name of the datastore containing the file represented by the given file path
  • file_path – absolute path of the file
Returns:

datastore file path

get_descriptor_ds_file_path()

Get datastore file path of the virtual disk descriptor.

get_descriptor_file_path()

Get absolute file path of the virtual disk descriptor.

class VirtualDiskType

Bases: object

Supported virtual disk types.

EAGER_ZEROED_THICK = 'eagerZeroedThick'
EXTRA_SPEC_DISK_TYPE_DICT = {'thick': 'preallocated', 'eagerZeroedThick': 'eagerZeroedThick', 'thin': 'thin'}
PREALLOCATED = 'preallocated'
THIN = 'thin'
static get_virtual_disk_type(extra_spec_disk_type)

Return disk type corresponding to the extra_spec disk type.

Parameters:extra_spec_disk_type – disk type in extra_spec
Returns:virtual disk type
Raises:InvalidDiskTypeException
static is_valid(extra_spec_disk_type)

Check if the given disk type in extra_spec is valid.

Parameters:extra_spec_disk_type – disk type in extra_spec
Returns:True if valid
static validate(extra_spec_disk_type)

Validate the given disk type in extra_spec.

This method throws an instance of InvalidDiskTypeException if the given disk type is invalid.

Parameters:extra_spec_disk_type – disk type in extra_spec
Raises:InvalidDiskTypeException
split_datastore_path(datastore_path)

Split the datastore path to components.

return the datastore name, relative folder path and the file name

E.g. datastore_path = [datastore1] my_volume/my_volume.vmdk, returns (datastore1, my_volume/, my_volume.vmdk)

Parameters:datastore_path – Datastore path of a file
Returns:Parsed datastore name, relative folder path and file name
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.