Hello, I'm new to the sdk development. I'm trying to add nvdimm controller and device to my VM via pyvmomi package. The adding of nvdimm controller works fine, but not the device. The same operation works fine with vCenter (7.0) web interface. Here is the captured code from the developer center (adding 10G nvdimm device, the nvdimm controller already added with controller key of 27000):
#---------------ReconfigVM_Task---------------
spec = vim.vm.ConfigSpec()
spec_deviceChange_0 = vim.vm.device.VirtualDeviceSpec()
spec_deviceChange_0.fileOperation = create
spec_deviceChange_0.device = vim.vm.device.VirtualNVDIMM()
spec_deviceChange_0.device.backing = vim.vm.device.VirtualNVDIMM.BackingInfo()
spec_deviceChange_0.device.backing.fileName = ''
spec_deviceChange_0.device.controllerKey = 27000
spec_deviceChange_0.device.capacityInMB = 10240
spec_deviceChange_0.device.deviceInfo = vim.Description()
spec_deviceChange_0.device.deviceInfo.summary = 'New NVDIMM'
spec_deviceChange_0.device.deviceInfo.label = 'New NVDIMM'
spec_deviceChange_0.device.key = -111
spec_deviceChange_0.operation = add
spec.deviceChange = [spec_deviceChange_0]
spec.cpuFeatureMask = []
managedObject.ReconfigVM_Task(spec) # VirtualMachine-vm-933962
The test code to add another device of 8GB to the same vm:
def add_nvdimm_device(si, vm_obj):
# Add NVDIMM device
nvdimm_spec = vim.vm.device.VirtualDeviceSpec()
nvdimm_spec.fileOperation = "create"
nvdimm_spec.operation = vim.vm.device.VirtualDeviceSpec.Operation.add
nvdimm_spec.device = vim.vm.device.VirtualNVDIMM()
nvdimm_spec.device.deviceInfo = vim.Description()
nvdimm_spec.device.deviceInfo.summary = "New NVDIMM"
nvdimm_spec.device.deviceInfo.label = "New NVDIMM"
nvdimm_spec.device.backing = vim.vm.device.VirtualNVDIMM.BackingInfo()
nvdimm_spec.device.backing.fileName = ""
nvdimm_spec.device.capacityInMB = 8192
nvdimm_spec.device.key = -114
nvdimm_spec.device.controllerKey = 27000
spec = vim.vm.ConfigSpec()
spec.deviceChange = [nvdimm_spec]
spec.cpuFeatureMask = []
task = vm_obj.ReconfigVM_Task(spec=spec)
tasks.wait_for_tasks(si, [task])
return True
Error msg:
pyVmomi.VmomiSupport.InvalidDeviceSpec: (vim.fault.InvalidDeviceSpec) {
dynamicType = ,
dynamicProperty = (vmodl.DynamicProperty) [],
msg = "Invalid configuration for device '0'.",
faultCause = ,
faultMessage = (vmodl.LocalizableMessage) [
(vmodl.LocalizableMessage) {
dynamicType = ,
dynamicProperty = (vmodl.DynamicProperty) [],
key = 'com.vmware.vim.vpxd.vmprov.invalidNVDIMMPolicy',
arg = (vmodl.KeyAnyValue) [],
message = 'com.vmware.vim.vpxd.vmprov.invalidNVDIMMPolicy'
},
(vmodl.LocalizableMessage) {
dynamicType = ,
dynamicProperty = (vmodl.DynamicProperty) [],
key = 'com.vmware.vim.vpxd.vpx.vmprov.DeviceStr',
arg = (vmodl.KeyAnyValue) [
(vmodl.KeyAnyValue) {
dynamicType = ,
dynamicProperty = (vmodl.DynamicProperty) [],
key = 'deviceStr',
value = 'New NVDIMM'
}
],
message = 'Device: New NVDIMM.'
}
],
property = '',
deviceIndex = 0
}
Hi,
This forum is for the vSphere Client SDK and UI plugins.
Please try the vSphere-Management SDK forum for this kind of questions.
Cheers,
Vladi
Thanks. Will do.