-
-
Save wiggin15/319b5e828c42af3aed40 to your computer and use it in GitHub Desktop.
def add_pci_to_vm(host_object, vm_object, host_pci_dev): | |
""" | |
host_pci_dev must be one of the devices from the host_object.hardware.pciDevice list | |
which is configured as a PCI passthrough device | |
""" | |
pci_passthroughs = vm_object.environmentBrowser.QueryConfigTarget(host=None).pciPassthrough | |
systemid_by_pciid = {item.pciDevice.id: item.systemId for item in pci_passthroughs} | |
if host_pci_dev.id not in systemid_by_pciid: | |
raise Exception("Not a passthrough device") | |
# According to the documentation, the deviceId is a signed short but the server expects the PCI device ID | |
# to be unsigned. TODO the modulu here is because of this, but I think it's not needed | |
deviceId = hex(host_pci_dev.deviceId % 2**16).lstrip('0x') | |
backing = vim.VirtualPCIPassthroughDeviceBackingInfo(deviceId=deviceId, | |
id=host_pci_dev.id, | |
systemId=systemid_by_pciid[host_pci_dev.id], | |
vendorId=host_pci_dev.vendorId, | |
deviceName=host_pci_dev.deviceName) | |
hba_object = vim.VirtualPCIPassthrough(key=-100, backing=backing) | |
new_device_config = vim.VirtualDeviceConfigSpec(device=hba_object) | |
new_device_config.operation = "add" | |
vm_object.ReconfigVM_Task(spec=new_device_config) |
Hello I'm not able to configure how to set memory reservation through the code so that my vm can start automatically through code.
Any help would be awesome.
regards.
EDIT
I figured it out how to set reserved memory.
For anyone wants to know add
vmConfigSpec.memoryReservationLockedToMax = True above vm_object.ReconfigVM_Task(spec=vmConfigSpec)
Cheers!
Basic question but How to set values of host_object, vm_object, host_pci_dev
To get vm_object
you can take a look at the pyvmomi community samples, or infi.pyvmomi_wrapper. Make sure it is not None
. host_object
can be the VM's runtime host - vm.summary.runtime.host
. For host_pci_dev
see the docstring.
what's docstring?
Does anyone know how to list VirtualPCIPassthrough's all VMs?
How to plugin dynamic Passthrough device to a VM using pyvmomi sdk? Does anyone know anything about this?
Hi Guys,
I am wondering How I can remove PCI card in a similar way you are discussing here,
according to https://github.com/vmware/pyvmomi/blob/master/docs/vim/vm/device/VirtualDeviceSpec/Operation.rst
it seem strait forward that the only modification needed is "remove" instead of the "add"
but I get the notorious, Invalid configuration for device '0',
What can I be missing?
regards.
EDIT
One way to remove vm pci's card is as follows: