1

我使用 vijava5.5 创建了 vCenter 6.0 的 serviceInstance

当我尝试使用 SerachManagedEntity 获取数据存储的属性时,即使对于可用的数据存储,也会收到空响应

数据存储 ds = (Datastore) new InventoryNavigator(rootFolder).searchManagedEntity("Datastore", "scsi_10_3");

ds 为空http://prntscr.com/6izkxi

但是数据存储在 vCenter http://prntscr.com/6izl1b中可用

可能是什么问题,它在 vCenter 5.5 中正常工作

4

4 回答 4

4

问题是由于您正在执行的操作使用 InventoryNavigator + VIJAVA + vSphere 6.0。如果您使用的是 vijava 5.5 beta 或之前发布的任何版本,则需要通过硬编码来查找 API 的版本 4 或 5,以便为 InventoryNavigator 加载正确的库存路径。我建议使用 YAVIJAVA,它是我创建和维护的 VIJAVA 的一个分支。我在 5.5.10 版本中修复了该错误,它目前在GitHub中可用,并且已于今天发布到公共 Maven。

如果您使用 GitHub 版本,则需要

gradle build

如果你想使用 Maven,它可能需要几个小时才能同步到中央存储库。

仅供参考,但您使用的 vijava 版本还有另一个错误,它只会抛出 RemoteException。我在 YAVIJAVA 中也解决了这个问题。我还添加了日志记录。如果您查看6.0 分支,官方 6.0 支持也正在积极工作中。

于 2015-03-22T15:28:52.647 回答
1

如果您必须从 vSphere 6.0 到 vijava 5.1 但没有 InventoryNavigator 获取 DataStore 和 StoragePod,那么您可以通过 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 肯定会更好,让你的生活更轻松。

于 2015-05-14T22:31:09.323 回答
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();

看一下这个。

于 2015-12-01T17:47:19.037 回答
-1

我希望你不能从库存中获得“DataStore”。它只能从 HostSystem 获取。从 HostSystem 中,您可以获得所有 DataStore。从那里你可以迭代并得到它。

于 2015-03-20T13:59:19.237 回答