Add function for getting recommended datastore

Add utility function which returns the most recommended datastore from a
datastore cluster where a VM can be cloned to.

Change-Id: Ic532bb9c52270ba34f70d2b7977de49f8753d1d1
This commit is contained in:
Radoslav Gerganov 2018-07-10 13:28:45 +03:00
parent 80112baaf6
commit 02192f7c30
2 changed files with 56 additions and 0 deletions

View File

@ -55,6 +55,34 @@ def get_datastore_by_ref(session, ds_ref):
type=props.get("summary.type"))
def get_recommended_datastore_clone(session,
dsc_ref,
clone_spec,
vm_ref,
folder,
name,
resource_pool=None,
host_ref=None):
"""Returns a key which identifies the most recommended datastore from the
specified datastore cluster where the specified VM can be cloned to.
"""
sp_spec = vim_util.storage_placement_spec(session.vim.client.factory,
dsc_ref,
'clone',
clone_spec=clone_spec,
vm_ref=vm_ref,
folder=folder,
clone_name=name,
res_pool_ref=resource_pool,
host_ref=host_ref)
spr = session.invoke_api(
session.vim,
"RecommendDatastores",
session.vim.service_content.storageResourceManager,
storageSpec=sp_spec)
return spr.recommendations[0].key
def get_dsc_ref_and_name(session, dsc_val):
"""Return reference and name of the specified datastore cluster.

View File

@ -628,3 +628,31 @@ def propset_dict(propset):
return {}
return {prop.name: prop.val for prop in propset}
def storage_placement_spec(client_factory,
dsc_ref,
type,
clone_spec=None,
config_spec=None,
relocate_spec=None,
vm_ref=None,
folder=None,
clone_name=None,
res_pool_ref=None,
host_ref=None):
pod_sel_spec = client_factory.create('ns0:StorageDrsPodSelectionSpec')
pod_sel_spec.storagePod = dsc_ref
spec = client_factory.create('ns0:StoragePlacementSpec')
spec.podSelectionSpec = pod_sel_spec
spec.type = type
spec.vm = vm_ref
spec.folder = folder
spec.cloneSpec = clone_spec
spec.configSpec = config_spec
spec.relocateSpec = relocate_spec
spec.cloneName = clone_name
spec.resourcePool = res_pool_ref
spec.host = host_ref
return spec