Cloned from launchpad blueprint https://blueprints.launchpad.net/cinder/+spec/vmfs-volume-user-define-ds.
In the existing design, when an VMFS volume creation is done, the following occur
1. If normal VMFS volume is created then one database entry is inserted
2. While attaching VMFS Volume to an instance, a shadow VM with VMDK disk is created in the datastore where the instance is running.
3. Another scenario, when VMFS volume is created with an image or snapshot, then a shadow VM with VMDK disk is created in a datastore, which is chosen among all the datastores present in the VCenter. And while attaching this volume to an instance, the shadow VM is migrated to the datastore where instance is running.
Here the problem is that user has no control over where to store volume created in the second scenario. If VCenter is being shared by more than one group or cloud user is not supposed to use all the datastores in the VCenter, then there is no way to restrict vmfs driver to set of datastores only.
Proposal: If vmfs cinder driver accepts list of datastores as well while creating volume from image or snapshot, then it will choose from that list only, hence we can confine volume datastores.
We can supply lists of datastores using Volume type attributes.
Specification URL (additional information):