Quantcast
Channel: VMware Communities : All Content - vSphere Management SDK
Viewing all articles
Browse latest Browse all 1860

pyvmomi - add disk - RecommendDatastores

$
0
0

I am trying to add a disk to an existing VM.

if vm:    for cluster in ds_cluster:        print cluster.name        spec = vim.vm.ConfigSpec()        # get all disks on a VM, set unit_number to the next available        for dev in vm.config.hardware.device:            if hasattr(dev.backing, 'fileName'):                unit_number = int(dev.unitNumber) + 1                # unit_number 7 reserved for scsi controller                if unit_number == 7:                    unit_number += 1                if unit_number >= 16:                    print "we don't support this many disks"                    return            if isinstance(dev, vim.vm.device.VirtualSCSIController):                controller = dev        # add disk here        dev_changes = []        new_disk_kb = INSTANCE_TYPE['standard']['diskSize']  * 1024 * 1024 #int(args.disksize) * 1024 * 1024        disk_spec = vim.vm.device.VirtualDeviceSpec()        disk_spec.fileOperation = "create"        disk_spec.operation = vim.vm.device.VirtualDeviceSpec.Operation.add        disk_spec.device = vim.vm.device.VirtualDisk()        disk_spec.device.backing = \            vim.vm.device.VirtualDisk.FlatVer2BackingInfo()        disk_spec.device.backing.datastore = datastore        disk_spec.device.backing.thinProvisioned = True        disk_spec.device.backing.diskMode = 'persistent'        disk_spec.device.unitNumber = unit_number        disk_spec.device.capacityInKB = new_disk_kb        disk_spec.device.controllerKey = controller.key        dev_changes.append(disk_spec)        spec.deviceChange = dev_changes        spec.name = vm.summary.config.name        podsel = vim.storageDrs.PodSelectionSpec()        podsel.storagePod = cluster        vmpodconfig = vim.storageDrs.PodSelectionSpec.VmPodConfig()        vmpodconfig.storagePod = cluster        disklocator=vim.storageDrs.PodSelectionSpec.DiskLocator()        disklocator.diskId = unit_number        disklocator.diskBackingInfo = disk_spec.device.backing        vmconfiginfo = vim.storageDrs.VmConfigInfo()        vmconfiginfo.vm  = vm        vmconfiginfo.enabled = True        vmpodconfig.vmConfig = vmconfiginfo        vmpodconfig.disk.append(disklocator)        podsel.initialVmConfig.append(vmpodconfig)        storagespec = vim.storageDrs.StoragePlacementSpec()        storagespec.podSelectionSpec = podsel        storagespec.vm = vm        storagespec.type = 'reconfigure'        storagespec.folder = datacenter.vmFolder        storagespec.configSpec = spec        storagespec.resourcePool = resource_pool        print storagespec        rec = content.storageResourceManager.RecommendDatastores(storageSpec=storagespec)        rec_key = rec.recommendations[0].key        print rec_key        #task = content.storageResourceManager.ApplyStorageDrsRecommendation_Task(rec_key)        #wait_for_task(task, 'Applying Disk Recommendations')        #task = vm.ReconfigVM_Task(spec=spec)        #wait_for_task(task,"Adding disk")        print "%sGB disk added to %s" % ('4', vm.config.name)    #reboot(vm,content,args)else:    print 'VM not found'

 

I keep getting the error:

Caught vmodl fault : A specified parameter was not correct: StoragePlacementSpec.podSelectionSpec and configSpec

Any idea what i am missing?

The documentation here https://github.com/vmware/pyvmomi/blob/master/docs/vim/StorageResourceManager.rst#recommendDatastores

seems confusing.


Viewing all articles
Browse latest Browse all 1860

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>