2017-08-17 82 views
0

如何使用VI Java SDK獲取Vmware中的PoweredOn VM數量?有沒有辦法根據電源狀態過濾虛擬機?使用VI獲取poweredOn Vmware中VM的數量Java

以下代碼給出了VM引用對象。

ManagedEntity[] vms = new InventoryNavigator(clusterEntity).searchManagedEntities("VirtualMachine"); 

要過濾PoweredOn狀態的虛擬機,我們通過管理實體必須循環和檢索VM對象,這是一個耗時的操作。那麼有沒有辦法單獨獲取計數信息?

回答

2

這樣做的一種方法是通過PropertyCollectorRetrievePropertiesEx方法。

請注意,PropertyCollector是一個相當複雜的野獸 - 非常簡短,您需要爲其提供遞歸策略(例如遞歸到子文件夾)以及您希望提取的屬性。如果您之前從未使用過PropertyCollector,那麼您應該在線查找示例程序並對其進行修改。

關於PropertyCollector的好處是它是一次調用,可以爲大量實體檢索特定的信息。所以在這方面它非常有效。你也可以很容易地得到計數。

正如您所指出的,另一種方法是逐個查詢每個虛擬機,執行多個查詢並接收更多您必須處理的數據。根據您擁有/期望擁有的虛擬機數量以及性能要求,您可以爲您選擇最佳方案。

如果您使用vSphere 6.5,請考慮使用REST API。它對接受查詢參數的VM有list操作,並且電源狀態是通過該API公開的少數屬性之一。因此,您可以通過使用URL GET https://{server}/rest/vcenter/vm?filter.power_states.1=POWERED_ON來獲得啓動VM上的列表。請注意,這僅限於1000個虛擬機。