使用VI Java API修改虚拟磁盘大小

时间:2016-08-23 16:58:05

标签: api virtual-machine vmware vsphere

我正在尝试克隆VM,我想更改磁盘容量。

    int virtualDisksCount = 0;
    VirtualDisk virtualDisk = null;
    for (VirtualDevice virtualDevice : virtualHardware.getDevice()) {
        if (virtualDevice instanceof VirtualDisk) {
            virtualDisksCount++;
            virtualDisk = (VirtualDisk) virtualDevice;
        }
    }
    if (virtualDisksCount == 1) {
        VirtualDeviceConfigSpec discSpec = new VirtualDeviceConfigSpec();
        discSpec.setOperation(VirtualDeviceConfigSpecOperation.EDIT);

        virtualDisk.setCapacityInBytes(155500000000l);
        virtualDisk.setCapacityInKB(155500000000000000l);


        discSpec.setDevice(virtualDisk);

       return discSpec;
    } 

代码抛出异常:设备' 0'的操作无效。 我在CloneVm_Task和ReconfigureVM_Task中传递了这些参数,发生了相同的错误

如何更改虚拟磁盘容量?使用Vsphere 5.5

1 个答案:

答案 0 :(得分:1)

我不是用Java编写代码,但它足够接近C#供我使用。首先,您需要获取磁盘信息,然后拔出virtualdeviceconfigspec,更改它,然后添加将其附加回磁盘。您正在创建新规范,然后设置属性。另外,为什么要设置字节大小,然后是kb ???

以下是我能召集的所有Java ......

CustomEmailBackend