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
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)¶ 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
-
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)¶ 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
-
continue_retrieval
(retrieve_result)¶ Continue retrieval of results if necessary.
Parameters: retrieve_result – Result from RetrievePropertiesEx
-
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_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_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.
-
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)¶ Get the backing based on name.
Parameters: name – Name of the backing Returns: Managed object reference to the backing
-
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_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
-
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.
-
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
-
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