Open
Description
networkObj = None
try:
content = si.RetrieveContent()
view = content.viewManager.CreateContainerView(content.rootFolder, [vim.HostSystem], True)
hostObj = [v for v in view.view]
view.Destroy()
for network in hostObj[0].network:
if network.name == networkName:
networkObj = network
except Exception as e:
log.error(e)
raise
networkMapping = vim.OvfManager.NetworkMapping(name=networkName, network=networkObj)
propertyMappingList = []
if propertyMappingDict:
**for key in propertyMappingDict:
propertyMappingList.append(vim.KeyValue(key=key, value=propertyMappingDict[key]))**
try:
cisp = vim.OvfManager.CreateImportSpecParams(entityName=vmName, diskProvisioning=diskProvisioning,
networkMapping=[networkMapping], propertyMapping=propertyMappingList)
except Exception as e:
log.error(e)
raise
cisr = ovfManager.CreateImportSpec(ovf_handle.get_descriptor(), rp, ds, cisp)
if len(cisr.error):
log.error("The following errors will prevent import of this OVA:")
for error in cisr.error:
log.error("%s" % error)
raise Exception("cisr error.")
ovf_handle.set_spec(cisr)
lease = rp.ImportVApp(cisr.importSpec, dc.vmFolder)
while lease.state == vim.HttpNfcLease.State.initializing:
log.info("Waiting for lease to be ready...")
time.sleep(1)
if lease.state == vim.HttpNfcLease.State.error:
log.info("Lease error: %s" % lease.error)
raise Exception("Lease error: %s" % lease.error)
if lease.state == vim.HttpNfcLease.State.done:
return 0
log.info("Starting deploy...")
try:
ovf_handle.upload_disks(lease, host)
except Exception:
raise
return 0
I refer the document esxi6.7 , I find propertyMapping is KeyValue[], then I fill the ovfkey into the list.
But it not work.
Can somebody help me ?
Thanks a lot.