2017-02-13 3 views
0

In virtualDisk-Objekt kann ich DiskObjectId finden, die dauerhafte und unveränderliche Bezeichner ist (nach VMware Dokumente: https://pubs.vmware.com/vsphere-55/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.vm.device.VirtualDisk.html). Aber wenn ich die virtuelle Festplatte löse und erneut an die Instanz anschließe, bleibt auch diskObjectId für diese virtuelle Festplatte die gleiche wie vor dem Trennen. ZB war diskObjectId "2086-2001" und selbst nach dem Entfernen der Festplatte habe ich eine neue Festplatte erstellt und dieselbe diskObjectId ("2086-2001") zugewiesen bekommen.Wie UUID für VirtualDisk in vSphere 5.5 Java API erhalten?

Ich möchte virtuelle Festplatte mit eindeutiger Kennung (UUID) identifizieren. Wie kann ich für Virtual Disk Uuid erhalten?

Antwort

0

VirtualDisk-Objekt hat 2 ID Begifier (vmware documentation):

  • diskObjectId: dauerhafte und unverwählbare Kennung der virtuellen Festplatte. Virtuelle Festplatte verfügt über ein UUID-Feld, das jedoch über VirtualDiskManager-APIs festgelegt werden kann. Diese Kennung ist eine universell eindeutige Kennung, die nicht einstellbar ist. VirtualDisk kann auch dann bestehen bleiben, wenn es nicht mit der VM verknüpft ist.
  • Uuid

Aber ich lieber mit 'diskObjectId' wegen des oben genannten Grundes.

ich von unten genannten Weise eindeutige Kennung bin immer:

VirtualMachineConfigInfo vmConfig = vm.getConfig(); 
    VirtualDevice[] vds = vmConfig.getHardware().getDevice(); 
    for(VirtualDevice vd : vds){ 
     if(vd instanceof VirtualDisk){ 
      System.out.println(vd.getDiskObjectId()); 
     } 
    } 
0

unten, wie ich das Abrufen Hard Disk-Details

zuerst alle Geräte Ihrer VM erhalten

 VirtualDevice[] device=vm.getConfig().getHardware().getDevice(); 

Dann HardDisk finden in hergeholt Devices, finden ihre Informationen sichern und UUID Fetch von dort

VirtualDevice[] device=vm.getConfig().getHardware().getDevice(); 



     for (VirtualDevice disk : device) 
     { 
      if(disk.getDeviceInfo().getLabel().contains("Hard disk")) 
      { 
       VirtualDiskFlatVer2BackingInfo backing = (VirtualDiskFlatVer2BackingInfo) disk.getBacking(); 
       System.out.println(backing.uuid); 
      } 
     } 
+0

Es ist immer besser zu überprüfen, ob Virtualdevice Instanz von Virtualdisk-Klasse ist vor Uuid bekommen. Das Filtern von virtualDisk von allen virtuellen Geräten basierend auf dem Label ist nicht der richtige Weg. 'VirtualMachineConfigInfo vmConfig = vm.getConfig(); \t \t VirtualDevice [] vds = vmConfig.getHardware(). GetDevice(); \t \t für (Virtualdevice vd: VDS) { \t \t \t if (vd Instanceof Virtualdisk) { \t \t \t \t System.out.printin (vd.getDiskObjectId()); \t \t \t} \t \t} ' –