使用VI-javaapi修改VM磁盘大小

使用VI-javaapi修改VM磁盘大小,java,api,vmware,Java,Api,Vmware,我的任务是为各种管理任务开发一个“通用”web界面,目前我正在进行虚拟机创建/克隆/配置。具体地说,我试图弄清楚如何使用VI-javaapi()修改现有机器的硬盘大小 我可以看到如何删除磁盘()和添加磁盘(),但我不太清楚如何修改现有磁盘 我想我需要在现有磁盘上安装一个MOR,然后以某种方式将其转换为一个VirtualDeviceConfigSpec,然后将其转换为一个VirtualMachine ConfigSpec。。。我走对了吗?有人能告诉我怎么做吗?主要的变化是 diskSpec.set

我的任务是为各种管理任务开发一个“通用”web界面,目前我正在进行虚拟机创建/克隆/配置。具体地说,我试图弄清楚如何使用VI-javaapi()修改现有机器的硬盘大小

我可以看到如何删除磁盘()和添加磁盘(),但我不太清楚如何修改现有磁盘


我想我需要在现有磁盘上安装一个MOR,然后以某种方式将其转换为一个VirtualDeviceConfigSpec,然后将其转换为一个VirtualMachine ConfigSpec。。。我走对了吗?有人能告诉我怎么做吗?

主要的变化是

diskSpec.setOperation(VirtualDeviceConfigSpecOperation.edit);
但我不确定这是创建还是替换

diskSpec.setFileOperation(VirtualDeviceConfigSpecFileOperation.replace)

使用鲁本的起始助手查看对象

,以下是我的手稿:

VirtualMachine vm = (VirtualMachine) new \
      InventoryNavigator(rootFolder).searchManagedEntity("VirtualMachine", guestName);
VirtualMachineConfigInfo vmci = vm.getConfig();
VirtualDevice [] devices = vmci.getHardware().getDevice();
VirtualDisk theDisk = null;
for ( int i=0; devices!=null && i<devices.length; i++) {
  if ( devices[i].getDeviceInfo().getLabel().equals("Hard disk 1")) {
    theDisk = (VirtualDisk)devices[i];
  }
}
if ( theDisk == null ) {
  return "False - disk not found";
}
theDisk.setCapacityInKB(Long.parseLong(diskSize)*1024*1024);
VirtualDeviceConfigSpec vdcs = new VirtualDeviceConfigSpec();
vdcs.setDevice(theDisk);
vdcs.setOperation(VirtualDeviceConfigSpecOperation.edit);
VirtualMachineConfigSpec vmcs = new VirtualMachineConfigSpec();
vmcs.setDeviceChange(new VirtualDeviceConfigSpec[]{vdcs});
Task task = vm.reconfigVM_Task(vmcs);
VirtualMachine vm=(VirtualMachine)新建\
InventoryNavigator(rootFolder).SearchManageIdentity(“VirtualMachine”,guestName);
VirtualMachineConfigInfo vmci=vm.getConfig();
VirtualDevice[]设备=vmci.getHardware().getDevice();
VirtualDisk theDisk=null;

对于(inti=0;devices!=null&&it),我开始使用它,但是完整的解决方案变得有点复杂。