VMware: support for vSAN datastores

Registered by Vui Lam

Currently the vmwareapi compute driver only support deploying instances to
NFS, and VMFS datastores. This blueprint proposes to add support for using vSAN
storage as well.

The main difference visible to the compute driver when employing vSAN over
existing datastore types that is is that virtual disk data files are not
directly addressable as datastore paths. This means that existing code that
maniuplate disk data files has to be modified to account for that. In
particular disk images will have to be imported to a vSAN datastore along as a
shadow VM (a VM container to hold a reference to the base disk disk, and is not
meant to be powered on) using the ImportVApp API, and exported out of vSAN
(e.g. during nova snapshot) using the ExportVm API. The above-mentioned APIs
only works with VMDK disk of the 'streamOptimized' format. Hence, the driver
will be modified recognize Glance vmdk images tagged with the property
vmware_disktype='streamOptimized' as disks of such format. Images not tagged
with the streamOptimized disk type will not be deployed on vSAN.

The set of changes can be roughly broken down to:

1. Add support for the shadow VM import/export workflow
2. Allow datastores of vSAN type be selectable as storage candidates

Blueprint information

John Garbutt
Vui Lam
Vui Lam
Series goal:
Accepted for kilo
Milestone target:
milestone icon 2015.1.0
Started by
Russell Bryant
Completed by
John Garbutt

Related branches



Gerrit topic: https://review.openstack.org/#q,topic:bp/vmware-vsan-support,n,z

Addressed by: https://review.openstack.org/71173
    VMware: support spawn of stream-optimized image

Addressed by: https://review.openstack.org/74300
    vmwareapi: allow selection of vSAN datastores

Given the abandoned patch was marked as do not merge, it seems this did not meet the proposal freeze deadline on Feb 18th, apologies for not spotting this until now, however I will overlook this since it was more to do with the oslo dependency --johnthetubaguy (4th March 2014)

The abandoned patch (70008) was originally there as a standin until the oslo.vmware lands. Now that we are using oslo.vmware, the patch is abandoned and taken out of the dependency chain. --vui

Apologies, this missed the deadline for Feature Freeze. Please rebase patches as soon as Juno opens, and we will try to get this in during that period. --johnthetubaguy (5th March 2014)

Addressed by: https://review.openstack.org/78488
    vmwareapi: snapshot as stream-optimized image

Unapproved - please re-submit via nova-spec --johnthetubagy (20th March 2014)

Addressed by: https://review.openstack.org/85635
    vmware: support for vSAN datastores

This has been accepted into juno, now the nova-spec has merged. Once an appropriate milestone is chosen, and code is uploaded for review to prove that is achievable, we can look at approving this spec. --johnthetubaguy (23rd March 2014)

So it seems some of this code get merged, but some patches are left abandoned, need to have more info on what work is left to do. Once the patches are restored, we can look at what to do next --johnthetubaguy (30th May 2014)

Doesn't seem like all the code is up for review yet, punting to Juno-3 --johnthetubaguy (15th July 2014)

Sorry, this does not have enough positive reviews to make it for juno-3, please resubmit for kilo. For more information, please contact me (johnthetubaguy) via IRC or email. --johnthetubaguy 2nd September 2014

Addressed by: https://review.openstack.org/127839
    VMware: optimize resource pool usage

Addressed by: https://review.openstack.org/127838
    VMware: remove ESX support for getting resource pool

Approved for kilo. --johnthetubaguy 17th October 2014

Addressed by: https://review.openstack.org/130521
    VMware: refactor utility functions related to VMDK


Still needing to merge:


Seems like all patches are up for review now, marking as NeedsCodeReview. Its too late for kilo-1 now given no +2s, so moving to kilo-2 --johnthetubaguy


Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.