【问题标题】:How to search the ManagedEntity by regular expression in ViJava如何在 ViJava 中通过正则表达式搜索 ManagedEntity
【发布时间】:2015-07-30 09:12:21
【问题描述】:

我正在使用 ViJava 5.5-beta。 例如,我想查找名称中包含“SQL”的所有 VM。 为了搜索,我得到所有“VirtalMachine”类型的 ManagedEntities 并迭代它们。 你能告诉我,有没有什么快速的搜索方法可以做到这一点?

serviceInstance = new ServiceInstance(new URL(vCenter), Constants.USERNAME, Constants.PASSWORD, true);
            Folder rootFolder = serviceInstance.getRootFolder();
            ManagedEntity[] mes = new InventoryNavigator(rootFolder).searchManagedEntities("VirtualMachine");
            for (ManagedEntity me : mes) {
// ....if (name.contains("SQL"))......
}

【问题讨论】:

  • 恐怕这是唯一的方法。无法将过滤传递给服务器。我们做了类似的事情,但不使用 String.contains() 方法,而是使用 Java 的模式匹配器。我们所做的一项优化是预先编译我们想要匹配的模式(在 for 循环之外)。这样,我们可能会在每个循环中节省几毫秒

标签: java sdk vmware vsphere


【解决方案1】:

您正在做的事情将是最好的方法。无法将过滤器传递到服务器以便过滤发生在服务器端,并且您使用的方法执行属性收集器并且仅获取“名称”属性,因此它是最有效的。

只是一个建议:yavijava 是 vijava 的开源替代品,完全支持 vSphere 6.0 我们有一个活跃的社区和许多 vijava 缺乏的增强功能。

【讨论】:

  • 我支持 yavijava 插件。我们将它用于我们的产品,我认为这是前进的方向。 vijava 的开源版本 (vijava.sourceforge.net) 似乎已经死了,作者史蒂夫已经转向其他事情。
猜你喜欢
  • 1970-01-01
  • 2017-01-17
  • 2018-08-24
  • 2015-02-25
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 2011-04-08
相关资源
最近更新 更多