Hi
I am not able to add SRIOV adapter. Can you help me debug my code:
Foreach ($VM in ($vmlist)) {
Write-host $VM
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$dev = New-Object Vmware.Vim.VirtualDeviceConfigSpec
$dev.Operation = 'add'
$dev.Device = New-Object VMware.Vim.VirtualSriovEthernetCard
$dev.Device.SriovBacking = New-Object VMware.Vim.VirtualSriovEthernetCardSriovBackingInfo
$pciBackingInfo = New-Object VMware.Vim.VirtualPCIPassthroughDeviceBackingInfo
$pciBackingInfo.deviceName = "sriov11"
$pciBackingInfo.deviceId = "0"
$pciBackingInfo.vendorId = "0"
$pciBackingInfo.systemId = "BYPASS"
$pciBackingInfo.id = "00000:000:00.00"
$dev.Device.SriovBacking.physicalFunctionBacking = $pciBackingInfo
$spec.DeviceChange += $dev
$VM.ExtensionData.ReconfigVM($spec)
break
}
I am getting the following error:
Exception calling "ReconfigVM" with "1" argument(s): "Invalid configuration for device '0'."
At /var/software/esxi_expts_powercli/sriovvm.ps1:67 char:5
+ $VM.ExtensionData.ReconfigVM($spec)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : VimException
Btw, which PowerCLI version are you using?
In PowerCLI 11.3.0 the SriovEthernetCard Type was added to the New-NetworkAdapter cmdlet.
---------------------------------------------------------------------------------------------------------------------------
Was it helpful? Let us know by completing this short survey here.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Can't really test since I don't have a SR-IOV card in my lab, but the Key field is normally a required property.
Try adding, use a negative number to ensure you are not using an existing key.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Hi LucD
It didn't help. The device in question VMware.Vim.VirtualSriovEthernetCard doesn't have that attribute.
Do you know anyone who has been able to achieve this?
The experiment attempted below doesn't work either:
Regards
Jayant
No, I'm afraid not.
I'm not sure your claim "doesn't have that attribute" is correct.
Every VirtualDevice has the Key property.
And all devices are derived from VirtualDevice.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Hi Luc
This is the error that I saw:
The property 'key' cannot be found on this object. Verify that the property exists and can be set.
At /var/software/esxi_expts_powercli/sriovvm.ps1:51 char:5
+ $dev.Device.key = -1
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFound
Exception calling "ReconfigVM" with "1" argument(s): "Invalid configuration for device '0'."
At /var/software/esxi_expts_powercli/sriovvm.ps1:68 char:5
+ $VM.ExtensionData.ReconfigVM($spec)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : VimException
Regards
Jayant
Not sure where you added that line, but seems to be working for me.
Write-host $VM
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$dev = New-Object Vmware.Vim.VirtualDeviceConfigSpec
$dev.Operation = 'add'
$dev.Device = New-Object VMware.Vim.VirtualSriovEthernetCard
$dev.Device.Key = -1
$dev.Device.SriovBacking = New-Object VMware.Vim.VirtualSriovEthernetCardSriovBackingInfo
$pciBackingInfo = New-Object VMware.Vim.VirtualPCIPassthroughDeviceBackingInfo
$pciBackingInfo.deviceName = "sriov11"
$pciBackingInfo.deviceId = "0"
$pciBackingInfo.vendorId = "0"
$pciBackingInfo.systemId = "BYPASS"
$pciBackingInfo.id = "00000:000:00.00"
$dev.Device.SriovBacking.physicalFunctionBacking = $pciBackingInfo
$spec.DeviceChange += $dev
$VM.ExtensionData.ReconfigVM($spec)
}
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Hi Luc
Sorry, that was my bad. I think I used it wrongly. However, I am still at a loss of how to achieve this.
I am seeing that some option maybe available if I use a PCi-passthrough configuration for SRIOV. I was hoping you could help me with that in the meantime.
$pt = New-Object VMware.Vim.PciPassthroughDevice
This is not working.
New-Object : Cannot find type [VMware.Vim.PciPassthroughDevice]: verify that the assembly containing this type is loaded.
At /var/software/esxi_expts_powercli/passthru.ps1:37 char:20
+ $pt = New-Object VMware.Vim.PciPassthroughDevice
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException
+ FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
Any idea about this one?
Thanks
Jayant
That should be.
New-Object -TypeName VMware.Vim.VirtualPCIPassthrough
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Hi Luc
I have figured out PCI passthrough part at least. I am able to change the property of a pass through capable device and then reboot it to make it working.
For SRIOV, the below command works to attach the networkadapter.
New-NetworkAdapter -VM $VM -NetworkName "PG6" -WakeOnLan -StartConnected -Type SriovEthernetCard
However, the VM doesn't start after using the above command and complains of bad configuration.
At the same time, if a network adapter is added from GUI, the VM starts.
Can you help me in this regard?
I'm afraid not.
I don't have that HW available, so I can't really test anything.
If you are on vSphere 6.7U1 (or higher), you could try to capture your actions in the Web Client via CodeCapture.
That might show you how the Web Client does it.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Hi
I have installed this one update-from-esxi6.7-6.7_update02
I will try CodeCapture with this. There is an example here: Introducing Code Capture - VMware PowerCLI Blog - VMware Blogs
Hope this will suffice, if not, please share with me something that you know to be working perfectly fine
Also, note the environment that I am using. This is normal web login with ESXi host. Will this support code capture?
Thanks
Jayant
No, I'm afraid you will need a vCenter connection.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Btw, which PowerCLI version are you using?
In PowerCLI 11.3.0 the SriovEthernetCard Type was added to the New-NetworkAdapter cmdlet.
---------------------------------------------------------------------------------------------------------------------------
Was it helpful? Let us know by completing this short survey here.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Hi Luc
I am using the same. And I have tried that. After using that option, the VM doesn't power on for me. I had highlighted this in my previous reply as well.
What does work is keeping a backup of my SRIOV vmx configuration and keeping a backup of non-SRIOV vmx file and switching between those. I am gonna try a few things out and see the behavior
Regards
Jayant
Hi Luc
I am happy to inform that the command actually works. I am new to powershell and I had a bug in my code where it wasn't applying the interface properties on the VM correctly.
I have fixed the code and now I can see that the VM boots up.
The command is: $newnet = New-NetworkAdapter -VM $myvm1 -NetworkName <pg_name> -WakeOnLan -StartConnected -Type SriovEthernetCard
However, this command has its caveats. While it does allow you to attach a SRIOV network adapter, it offers no control whatsoever on the base physical function from which the virtual function is chosen to attach to the network. This control is also desirable.
Once the interface is created, it maybe possible to update that information before powering on the VM.
Nevertheless, I will mark your answer as correct and close this case and raise another one if I need any further discussions.
Thanks for all the brainstorming
Jayant
That is good to hear.
If you want to further fine-tune the configuration of the card, you might still want to have a look at the ReconfigVM method, with the 'edit' operation.
It gives you access to the properties on the card object, see VirtualSriovEthernetCard and VirtualSriovEthernetCardSriovBackingInfo
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference