VIJAVA:获取虚拟机的精确列表';这是我们要求的,而不是把所有的东西都分类

VIJAVA:获取虚拟机的精确列表';这是我们要求的,而不是把所有的东西都分类,java,virtual-machine,vmware,vsphere,Java,Virtual Machine,Vmware,Vsphere,有没有办法通过vijava获得我想要的VM的确切列表,同时也获得它们的“类型信息”(例如运行时、配置、来宾对象)?目前,您必须通过InventoryNavigator获取所有列出的VM,并进行迭代,直到找到与您感兴趣的名称匹配的VM。这似乎太过分了。不管怎样,我是否可以在不首先检索所有内容的情况下获得我想要的确切VM String [][] typeInfo = new String[][] {new String[]{"guest", "config", "runtime"}}; Manage

有没有办法通过vijava获得我想要的VM的确切列表,同时也获得它们的“类型信息”(例如运行时、配置、来宾对象)?目前,您必须通过InventoryNavigator获取所有列出的VM,并进行迭代,直到找到与您感兴趣的名称匹配的VM。这似乎太过分了。不管怎样,我是否可以在不首先检索所有内容的情况下获得我想要的确切VM

String [][] typeInfo = new String[][] {new String[]{"guest", "config", "runtime"}};
ManagedEntity entity = new InventoryNavigator().searchManagedEntity(typeInfo, "hello-world-vm");

在调试过程中发现,这个调用返回列出的所有VM,API在该列表中搜索以找到与传递的名称匹配的VM。出于性能原因,我不想返回所有列出的虚拟机,只返回“hello world VM”。

您应该使用一些独特的东西来定位您正在寻找的虚拟机,比如它的UUID

例如:

ServiceInstance si = new ServiceInstance(xxx)
String uuid = "some uuid here"
VirtualMachine vm = si.searchIndex.findByUuid(null, uuid, true)

这将只返回具有给定uuid的VM。上面的代码是groovy而不是Java,我想你需要在Java中使用分号和getxxx方法(自从我编写实际的Java以来已经有很多年了)

你能给我们看看你的代码吗?代码片段已经发布了这种方法的问题是,我现在必须多次调用才能获得typeinfo(例如guest对象、runtime对象、config对象等)而使用“searchEntities”路由,我可以在1次调用中获取所有内容,字面上是所有内容,但也可以获取我想要的typeInfo。您的路由将为我获取ManagedEntity对象,但随后每次调用“get-config”或“get-runtime”将导致一个额外的调用…除非我遗漏了一些明显的内容。如果我们可以使用typeinfo执行你的方法,那将非常好,但通过API我看不到它…在你的问题中,你问:“我是否可以在不首先检索所有内容的情况下获得我想要的确切VM?”我的例子是如何在没有得到任何东西的情况下得到一个vm对象。那么你到底想要什么呢?如果我知道你真正想要的是什么,我可以帮助你得到它。你是正确的,我应该在这个问题上说得更清楚。我已经修改了上面的内容,以更准确地反映我的意思。我们希望尽可能少地在电线上行走可能。我们希望能够在一次调用中请求VM-1和VM-2,同时获取它们的配置、运行时和来宾对象。@Michael your way将为我们获取对象,但不包括基本版本。以后每次调用“getConfig()”或“getRuntime()”将通过网络产生另一个呼叫。如果可能的话,我们希望绕开它。我不能100%确定这是否可能。我将深入研究。基本上你需要做的是巧妙地使用搜索过滤器规范和属性收集器。我不确定是否可能的部分是抓取特定虚拟机,而只获取道具例如,如果两个虚拟机都在一个文件夹中,你可以使用遍历和对象规范,说我想要这些虚拟机的属性,然后从这个文件夹开始,然后如果这个文件夹中只有这两个虚拟机,你就会得到你想要的东西,但你的清单不太可能是这样布置的。我没有成功地n制作一个能满足您所需的示例。如果您碰巧找到了,请与我们分享。我觉得这可能是API的一个局限性。在这样的搜索中,它确实没有最好的搜索能力。我能做的最好的方法是让一个属性收集器点击给定的文件夹或数据中心,然后返回所有的数据l具有我在对象规范中设置的属性列表的虚拟机。