代码之家  ›  专栏  ›  技术社区  ›  CodeFunda

在java中从vmware中的模板克隆vm时更改磁盘大小

  •  1
  • CodeFunda  · 技术社区  · 7 年前

    我对vmware非常陌生。我有要求改变硬盘大小,而从模板创建虚拟机。基本上是克隆。但当我试图超越时,它给了我错误。” 指定的参数不是正确的设备。钥匙 ".

    这是我的代码:

    VirtualMachineRelocateSpec relocateSpec = new VirtualMachineRelocateSpec();
    VirtualMachineCloneSpec cloneSpec = new VirtualMachineCloneSpec();
    VirtualDeviceConfigSpec diskSpec = new VirtualDeviceConfigSpec();
    diskSpec.setOperation(VirtualDeviceConfigSpecOperation.edit);
    VirtualDisk vd = new VirtualDisk();
    long diskSizeKB = 1000000;
    int cKey = 1000;
    vd.setCapacityInKB(diskSizeKB);
    diskSpec.setDevice(vd);
    vd.setControllerKey(cKey);
    vd.setKey(1);
    vd.setUnitNumber(2);
    VirtualDiskFlatVer2BackingInfo diskfileBacking =  new VirtualDiskFlatVer2BackingInfo();
    String fileName = "[TestDataStore]";
    diskfileBacking.setFileName(fileName);
    diskfileBacking.setDiskMode("persistent");
    diskfileBacking.setThinProvisioned(true);
    vd.setBacking(diskfileBacking);
    relocateSpec.setDatastore(vmInstace.getDatastores()[0].getMOR());
    relocateSpec.setHost(hostSystem.getMOR());
    relocateSpec.setPool(resourcePool.getMOR());
    cloneSpec.setPowerOn(false);
    cloneSpec.setLocation(relocateSpec);
    VirtualMachineConfigSpec vmSpec = new VirtualMachineConfigSpec();
    vmSpec.setMemoryMB(4000L);
    vmSpec.setNumCPUs(3);
    vmSpec.setDeviceChange(new VirtualDeviceConfigSpec[] {diskSpec});
    cloneSpec.setConfig(vmSpec);
    Task task = vmInstace.cloneVM_Task((Folder) vmInstace.getParent(),"TestVM", cloneSpec);
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   YSK    7 年前

    key 以及新配置。

    vd.setKey(1) ,VMware告诉您,您提供了一个无效的 钥匙

    你从哪里得到值1?如果非要我猜的话,它是任意选择的。您需要查看模板的配置并从中提取磁盘设备密钥。然后在调用中使用此键 vd.setKey .