in src/com/vmware/vim25/mox/VirtualMachineDeviceManager.java [391:420]
public void addHardDisk(String diskFilePath, VirtualDiskMode diskMode) throws Exception
{
VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec();
VirtualDeviceConfigSpec diskSpec = new VirtualDeviceConfigSpec();
VirtualDeviceConfigSpec[] vdiskSpecArray = {diskSpec};
vmConfigSpec.setDeviceChange(vdiskSpecArray);
VirtualDiskFlatVer2BackingInfo diskfileBacking = new VirtualDiskFlatVer2BackingInfo();
diskfileBacking.setFileName(diskFilePath);
diskfileBacking.setDiskMode(diskMode.toString());
VirtualSCSIController scsiController = getFirstAvailableController(VirtualSCSIController.class);
int unitNumber = getFirstFreeUnitNumberForController(scsiController);
VirtualDisk disk = new VirtualDisk();
disk.setControllerKey(scsiController.key);
disk.setUnitNumber(unitNumber);
disk.setBacking(diskfileBacking);
//Unlike required by API ref, the capacityKB is optional. So skip setCapacityInKB() method.
disk.setKey(-100);
diskSpec.setOperation(VirtualDeviceConfigSpecOperation.add);
diskSpec.setDevice(disk);
Task task = vm.reconfigVM_Task(vmConfigSpec);
task.waitForTask(200, 100);
}