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

标签 java templates virtual-machine clone vmware

我对 vmware 非常陌生。我需要在从模板创建虚拟机时更改硬盘大小。基本上是它的克隆。但是当我尝试执行时,它给我错误“指定的参数不正确的device.key”。

你能帮我一下吗?

这是我的代码:

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);

最佳答案

虚拟机的每个设备(磁盘、 Controller 等)都有自己唯一的 key 。虚拟机配置更改的工作方式是您提供要更改的设备的 key 以及新配置。

在您的代码中,您调用 vd.setKey(1),VMware 会告诉您您提供了无效的 key

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

关于java - 在java中从vmware中的模板克隆vm时更改磁盘大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46323797/

相关文章:

java - JDBC:socketTimeout 和 networkTimeout 的区别

c++ - 我的 GUI 模板化小部件系统出现问题

c++ - 为什么模板参数推导不适用于仅指定前两个参数的可变参数模板类?

amazon-web-services - AWS Import/Export 任务的磁盘验证失败

linux - 从命令行创建 Linux 虚拟机

azure 从已删除的虚拟机中分离磁盘

java - 当应用程序已经运行时读取应用程序的实时输出

java - 使用 Java 从文件中读取特定行和列

java - 为什么 void 方法中不允许使用 this() ?

c++ - map 比较构造函数参数