I'd like to automatically obtain a list or array of the VMs (mac address/name/resource pool) currently created on a vSphere server and use it in a python app. Can someone please suggest a good approach or solution to do this? I'm rather new to the vSphere platform. Thanks.
4 Answers
You should probably look at VMWare VIX API:
http://www.vmware.com/support/developer/vix-api/
Unfortunately it doesn't have python support. I don't know if it would be possible to make python use the C support? You could use perl or Powershell
If it has to be python then there is pyvix:
http://sourceforge.net/projects/pyvix/
I've never used it and don't know if it works.

- 10,057
- 1
- 42
- 36
-
+1 for introducing me to pyvix – Jed Daniels Jun 08 '10 at 18:41
I've recently released pysphere: http://code.google.com/p/pysphere/
For your case in particular
from pysphere import *
server = VIServer()
server.connect("your.esx.or.vcenter.hostname", "user", "password")
vms = server.get_registered_vms()
vm = server.get_vm_by_path(vms[0])
print vm.get_property("mac_address")
print vm.get_property("ip_address")
print vm.get_property("name")
print vm.get_resource_pool_name()

- 31
- 2
Take a look at the pyVmomi project which is the official Python SDK for the VMware vSphere API that allows you to manage ESX, ESXi and vCenter.
Moreover, the pyvmomi-community-samples repository contains lot of examples.

- 285
- 2
- 11
It's time that Python got vSphere/VMware bindings.
I've got an API started on top of suds. You might want to follow (or join) my project on BitBucket:
http://jkinred.bitbucket.org/psphere/
I'm new to Python but at the minimum it will show you how to use suds to talk to the web services SDK.