2017-09-20 42 views
1

我對vmware非常陌生。我有要求在從模板創建虛擬機時更改硬盤大小。基本上是它的克隆。但是,當我嘗試超越它給我的錯誤「指定的參數是不正確device.key」。更改磁盤大小,同時在java中以vmware模板克隆vm

你能幫我在這裏。

這裏是我的代碼:

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

回答

0

每個設備(磁盤,控制器等)的虛擬機都有自己獨特的密鑰。 VM配置更改的工作方式是,您提供要更改的設備的key以及新配置。

在您的代碼中,您可以撥打vd.setKey(1),VMware會告訴您,您提供了一個無效的key

你從哪裏得到1的值?如果我不得不猜測,它是任意選擇的。您需要查看模板的配置並從那裏提取磁盤設備密鑰。然後在撥打vd.setKey時使用此密鑰。

相關問題