2015-03-20 1 views
1

Я создал serviceInstance из VCENTER 6.0 с помощью vijava5.5searchManagedEntity для Datastore в vSphere6.0 возвращает нуль: VIjava

Когда я пытаюсь извлечь свойства Datastore с помощью SerachManagedEntity я получаю нулевой отклик даже для доступного датастора

Datastore ds = (Datastore) new InventoryNavigator (rootFolder) .searchManagedEntity ("Datastore", "scsi_10_3");

DS является нулевым http://prntscr.com/6izkxi

Но датастор доступна: в VCENTER http://prntscr.com/6izl1b

Что может быть проблема, ее работать должным образом в VCENTER 5,5

ответ

4

Проблема заключается в том, что то, что вы делаете, использует InventoryNavigator + VIJAVA + vSphere 6.0. Если вы используете бета-версию vijava 5.5 или любую версию, выпущенную до этого, она жестко закодирована для поиска версии 4 или 5 API для загрузки соответствующего пути инвентаризации для InventoryNavigator. Я предлагаю использовать YAVIJAVA, это вилка VIJAVA, которую я создал и поддерживаю. Я исправил эту ошибку в версии 5.5.10, и в настоящее время она доступна в GitHub и была выпущена для общественности Maven на сегодняшний день.

Если вы используете версию GitHub вы должны

gradle build 

Если вы хотите использовать Maven это может занять несколько часов, прежде чем он синхронизируется в центральные операции РЕПО.

Просто FYI, но версия vijava youre, использующая также, имеет еще одну ошибку, где она только когда-либо выдает RemoteException. Я исправил это тоже в YAVIJAVA. Кроме того, я также добавил запись в него. Официальная поддержка 6.0 также активно обрабатывается, если вы посмотрите 6.0 branch.

-1

Я надеюсь, что вы не можете получить «DataStore» из инвентаря , Его можно получить только из HostSystem. Из HostSystem вы можете получить все DataStores. Из этого вы можете повторить и получить его.

+0

Да ... на самом деле это не самая лучшая практика, необходимо получить форму HostSystem, но раньше она работала – asvignesh

+0

Вы должны удалить комментарий. Его 100% неверно. Вы можете получить Datastore из Inventory. Это управляемый объект, как и HostSystem. Его часть Datacenter точно так же, как HostSystem. –

+0

Michael Rice исправьте меня, если я ошибаюсь, мой vCenter может иметь несколько хранилищ данных с одинаковым именем в разных центрах обработки данных, если я получаю от rootFolder, он может не дать точного результата, что мне нужно ... – asvignesh

1

Если вам нужно получить DataStore и StoragePod от vSphere 6.0 через vijava 5.1, но без InventoryNavigator, то вы можете получить доступ через объект Datacenter.

 ManagedEntity[] meArr = rootFolder.getChildEntity(); 
     for (ManagedEntity me : meArr) { 
      if (me instanceof Datacenter) { 
       Datacenter dc = (Datacenter) me; 
       // All datastores related to the Datacenter 
       Datastore[] dsArr = dc.getDatastores(); 
       // You can also get StoragePod 
       StoragePod sp = (StoragePod) ds.getParent(); 
       } 
      } 

Конечно, это очень неоптимизированная путь и могут быть использованы только если вы не хотите использовать yavijava по какой-то причине. В противном случае yavijava лучше, делает вашу жизнь легкой.

0

Вы можете получить хранилище данных следующим образом из InventoryNavigator.

сниппет:

ServiceInstance si = new ServiceInstance(new URL("https://" + hostname + "/sdk/"), username, password, true); 
InventoryNavigator invNav = new InventoryNavigator(si.getRootFolder()); 
ManagedEntity[] mes = invNav.searchManagedEntities("HostSystem"); 
HostSystem hostSystem = (HostSystem)mes[0]; 
HostDatastoreSystem hds = hostSystem.getHostDatastoreSystem(); 
datastores = hds.getDatastores(); 

Проверьте это.

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