有没有办法通过 vijava 获取我想要的 VM 的确切列表,同时还获取它们的“类型信息”(例如运行时、配置、 guest 对象)?目前,您必须通过 InventoryNavigator,它会获取所有列出的 VM 并进行迭代,直到找到与您感兴趣的名称相匹配的 VM。这似乎有些过分了。无论如何,我是否可以在不先检索所有内容的情况下获得我所要求的确切虚拟机?
String [][] typeInfo = new String[][] {new String[]{"guest", "config", "runtime"}};
ManagedEntity entity = new InventoryNavigator().searchManagedEntity(typeInfo, "hello-world-vm");
在调试过程中,我们发现这个单一调用会返回列出的所有虚拟机,并且 API 会搜索该列表以查找与传递的名称匹配的虚拟机。出于性能原因,我不想返回每个列出的虚拟机,而只返回“hello-world-vm”。
您应该使用一些独特的东西来定位您正在寻找的虚拟机,例如它的 UUID。
例如:
ServiceInstance si = new ServiceInstance(xxx)
String uuid = "some uuid here"
VirtualMachine vm = si.searchIndex.findByUuid(null, uuid, true)
这将仅返回具有给定 uuid 的虚拟机。上面的代码是groovy而不是Java,我认为你需要在Java中使用分号和getxxx方法(自从我编写实际的Java以来已经很久了)
我是一名优秀的程序员,十分优秀!