如何使用python在vcenter上获取过滤的VM列表

时间:2017-06-07 16:58:12

标签: python vmware vcenter pyvmomi pysphere

我试图在我的vcenter中获取已注册虚拟机的列表 - 按名称命名。我有很多vms(~5K)的问题,而且我做了很多次(O(1000)/小时)。

我使用的SDK会导致大量流量(1-2MB /请求):

  1. pysphere:请求客户端的所有虚拟机和过滤器。

  2. pyVmomi,需要使用递归来列出所有vms(我在reboot_vm.py上看到SI.content.searchIndex.FindByDnsName,但我的机器&DNS配置不正确)

  3. 查看SOAP文档并没有帮助(进入RetrievePropertiesEx.objectSet但它看起来没有过滤任何东西),而新的REST(v6.5)也没有帮助(因为我需要得到它的#34;数据存储路径",我能得到的就是名字)

2 个答案:

答案 0 :(得分:1)

您是否尝试使用属性收集器,如pyVmomi.vmodl.query.PropertyCollector.FilterSpec

pyVmomi社区示例包含使用此API的示例,例如 https://github.com/vmware/pyvmomi-community-samples/blob/master/samples/filter_vms.py

答案 1 :(得分:0)

vAPI基于REST,甚至更多,它每次都会进行网络请求,因此速度很慢。另一种方法是使用VCDB,其中存储了所有虚拟机(我们有这样的虚拟机,但我在这里无法帮助你),请参阅https://pubs.vmware.com/vsphere-4-esx-vcenter/index.jsp?topic=/com.vmware.vsphere.installclassic.doc_41/install/prep_db/c_preparing_the_vmware_infrastructure_databases.htmlhttps://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1025914