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:
parent
80112baaf6
commit
02192f7c30
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue