2017-02-13 13 views
0

В объекте virtualDisk я могу найти diskObjectId, который является долговечным и не поддающимся проверке идентификатором (согласно документам VMware: https://pubs.vmware.com/vsphere-55/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.vm.device.VirtualDisk.html). Но если я отсоединяю виртуальный жесткий диск и снова присоединяю его к экземпляру, то также diskObjectId для этого виртуального жесткого диска остается таким же, как перед отсоединением. Например, diskObjectId был «2086-2001», и даже после отсоединения жесткого диска я создал новый жесткий диск, и ему был назначен тот же diskObjectId («2086-2001»).Как получить UUID для VirtualDisk в vSphere 5.5 java api?

Я хочу определить виртуальный жесткий диск с уникальным идентификатором (uuid). Как я могу получить uuid для Virtual Disk?

ответ

0

Объект VirtualDisk имеет 2 id (vmware documentation):

  • diskObjectId: виртуальный диск прочный и неизменяемый идентификатор. Виртуальный диск имеет поле UUID, но может быть установлено через API VirtualDiskManager. Этот идентификатор является универсальным уникальным идентификатором, который не может быть установлен. VirtualDisk может существовать, даже если он не связан с VM.
  • UUID

Но я предпочитаю использовать «diskObjectId» из-за упомянутой выше причине.

Я получаю уникальный идентификатор по указанным ниже способом:

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

Ниже, как я извлечение жесткой Детали диска

Сначала получите все устройства ВМ

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

Тогда Найти HARDDISK в принесенных устройствах, найти их Архивацию информации и Fetch UUID оттуда

Код образца

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

Это всегда лучше, чтобы проверить, если virtualDevice является экземпляром класса VirtualDisk перед тем, как UUID. Фильтрация виртуального диска из любого виртуального диска на основе метки не подходит для этого. 'VirtualMachineConfigInfo vmConfig = vm.getConfig(); \t \t VirtualDevice [] vds = vmConfig.getHardware(). GetDevice(); \t \t для (VirtualDevice VD: VDS) { \t \t \t, если (Vd InstanceOf VirtualDisk) { \t \t \t \t System.out.println (vd.getDiskObjectId()); \t \t \t \t \t} –

 Смежные вопросы

  • Нет связанных вопросов^_^