Hi Siva,
There is a __sizeBootOrder - which I think would be one per harddisk and in sequce based on their boot order. I don't understand how to identify which object is for which virtualdrive.
I am not quite sure what you mean by that. Just looking at what you have provided and combining that with the docs BootOptions, BootableDevice I would interpret as follows:
- **bootOrder is the array of pointers to VirtualMachineBootOptionsBootableDevice
- __sizeBoodOrder is the actual size of the that array
To build the boot order, i.e. which device/disk is the first, second, third to boot from you have to associate the VirtualMachineBootOptionsBootableDiskDevice via the actual device key. As you rewrite the device keys from the backed up ConfigInfo to negative values in the ConfigSpec you will have to rewrite the VirtualMachineBootOptionsBootableDiskDevice.deviceKey to same negative value. This holds also true for VirtualMachineBootOptionsBootableEthernetDevice. VirtualMachineBootOptionsBootableFloppyDevice and VirtualMachineBootOptionsBootableCdromDevice do not show a property deviceKey.
Further be aware of the fact that VirtualMachineBootOptions.bootOrder is only available Since vSphere API 5.0. That is for 4.1 4.0 etc the above will not work. Therefore check out RDM Disks and Virtual BIOS where there is the recommendation to backup the .nvram file. This approach should work on all vSphere editions as I understand it.
Does that help?