2017-09-20 5 views
1

Je suis très nouveau sur le vmware. J'ai l'obligation de changer la taille du disque dur lors de la création de vm à partir du modèle. Fondamentalement, son clonage. Mais quand j'essaie d'exécuter il me donne l'erreur "un paramètre spécifié n'était pas correct device.key".Modifier la taille du disque tout en clonant vm à partir du modèle dans vmware en Java

Pouvez-vous s'il vous plaît aidez-moi ici.

Voici mon code:

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

Répondre

0

Chaque périphérique (disque, contrôleur, etc.) d'une machine virtuelle a sa propre clé unique. La façon dont les modifications de configuration de machine virtuelle fonctionnent est que vous fournissez le key du périphérique que vous souhaitez modifier, ainsi que la nouvelle configuration.

Dans votre code, vous appelez vd.setKey(1) et VMware vous indique que vous avez donné un key non valide.

Où avez-vous obtenu la valeur 1? Si je devais deviner, il a été choisi arbitrairement. Vous devrez examiner la configuration du modèle et extraire la clé du périphérique de disque à partir de là. Ensuite, utilisez cette touche dans l'appel à vd.setKey.