You can configure a virtual machine during creation (Folder.CreateVM_Task) or cloning (VirtualMachine.CloneVM_Task). You can also reconfigure a virtual machine using VirtualMachine.ReconfigVM_Task.
In vSphere 5.5 and later, the ReconfigVM_Task method will throw an error when it attempts to change certain virtual machine properties while the virtual machine is powered on. In previous releases, the server would modify the properties in the configuration specification and the changes would take effect after the virtual machine resets, reboots, or performs a fast suspend and resume.
Since vSphere 5.5, a reconfigure operation modifies the virtual machine in real time, so that the virtual machine properties have been changed by the time the method returns control to the client.
You cannot reconfigure a powered on virtual machine successfully if you specify any of the following properties in the VirtualMachineConfigSpec when you call the ReconfigVM_Task method.
Property | VirtualMachineConfigSpec Path |
---|---|
VirtualDevice.unitNumber | deviceChange.device.unitNumber |
VirtualDevicePciBuslSlotInfo.pciSlotNumber | deviceChange.device.slotInfo.pciSlotNumber |
VirtualDiskFlatVer1BackingInfo.diskMode VirtualDiskFlatVer2BackingInfo.diskMode VirtualDiskRawDiskMappingVer1BackingInfo.diskMode VirtualDiskSeSparseBackingInfo.diskMode VirtualDiskSparseVer1BackingInfo.diskMode VirtualDiskSparseVer2BackingInfo.diskMode |
deviceChange.device.backing.diskMode |
VirtualDiskFlatVer2BackingInfo.digestEnabled VirtualDiskSeSparseBackingInfo.digestEnabled |
deviceChange.device.backing.digestEnabled |
VirtualMachineConfigSpec.changeTrackingEnabled | changeTrackingEnabled |
VirtualEthernetCard.addressType | deviceChange.device.addressType |
VirtualEthernetCard.macAddress | deviceChange.device.macAddress |
VirtualEthernetCard.wakeOnLanEnabled | deviceChange.device.wakeOnLanEnabled |
VirtualSCSIController.sharedBus | deviceChange.device.sharedBus |
VirtualSerialPort.yieldOnPoll | deviceChange.device.yieldOnPoll |
VirtualUSBController.autoConnectDevices VirtualUSBXHCIController.autoConnectDevices |
deviceChange.device.autoConnectDevices |
VirtualUSBController.ehciEnabled | deviceChange.device.ehciEnabled |
VirtualMachineVideoCard.useAutoDetect | deviceChange.device.useAutoDetect |
VirtualMachineVideoCard.videoRamSizeInKB | deviceChange.device.videoRamSizeInKB |
VirtualMachineVideoCard.numDisplays | deviceChange.device.numDisplays |
VirtualMachineVideoCard.use3dRendererSupported | deviceChange.device.use3dRendererSupported |
The API Reference lists all properties and includes information about required permissions for these configuration methods. The following sections describe some commonly specified attributes.