使用Python和XenAPI模块列出XenCenter清单

使用Python和XenAPI模块列出XenCenter清单,python,xen,Python,Xen,我试图使用python shell中的XenAPI从Xencenter获得一个简单的服务器清单(按主机名)。然而,关于XenAPI的文档似乎非常稀少,我甚至无法对需要进一步了解的对象执行dir() 我安装了它并按如下方式运行: # pip install XenAPI # python >>> session = XenAPI.Session("http://myhost") >>> session.xenapi.login_with_password("my

我试图使用python shell中的XenAPI从Xencenter获得一个简单的服务器清单(按主机名)。然而,关于XenAPI的文档似乎非常稀少,我甚至无法对需要进一步了解的对象执行dir()

我安装了它并按如下方式运行:

# pip install XenAPI
# python
>>> session = XenAPI.Session("http://myhost")
>>> session.xenapi.login_with_password("myuser", "mypass")
我被困在这里了。pysphere有一种简单的方法来拉取所有VM,我不知道如何在XenAPI中做同样的事情。dir(session)不允许我查看对象——它看起来像是dict的实现没有正确完成

是否有人有使用此模块的经验?

例如:

>>> for opaque_ref, vm in session.xenapi.VM.get_all_records().items():
...     print vm["name_label"]
您无法通过
dir(session)
获取api方法,因为XenAPI的底层协议是XML-RPC,而
XenAPI.session
对象只是代理您的请求

对于每个类,都有许多关于字段名和方法的综合信息

因为您使用的是
XenAPI
库,所以不应该向所有请求添加会话引用并从结果中获取值:不是
。获取所有记录(“会话”)['value']
,而是
。获取所有记录()。
您可以使用
XenAPI.Failure
Exception捕捉所有XenAPI错误


是的,
XenAPI
的XenServer对象表示是dict。

您还可以通过在会话上调用
system.listMethods()
列出所有对象及其方法。您甚至不需要登录,通过
XenAPI.Session(“http://myhost)