I'm trying to do a simple script that开发者_如何学Python will get various informations about running domains on a xen host.
So far, i have :
import libvirt
import pprint
conn = libvirt.open('xen:///')
for id in conn.listDomainsID():
dom = conn.lookupByID(id)
infos = libvirt.virDomainGetInfo(dom)
which gives me the following error :
AttributeError: 'module' object has no attribute 'virDomainGetInfo'
Which, according to the API (http://www.libvirt.org/html/libvirt-libvirt.html#virDomainGetInfo) should at least return me something.
Any clue ? (i'm a python newbie)
From the documentation: http://www.libvirt.org/python.html
There is a couple of function who don't map directly to their C counterparts due to specificities in their argument conversions:
* virConnectListDomains is replaced by virDomain::listDomainsID(self) which returns a list of the integer ID for the currently running domains
* virDomainGetInfo is replaced by virDomain::info() which returns a list of
1. state: one of the state values (virDomainState)
2. maxMemory: the maximum memory used by the domain
3. memory: the current amount of memory used by the domain
4. nbVirtCPU: the number of virtual CPU
5. cpuTime: the time used by the domain in nanoseconds
To get documentations about the libvirt APIs in python, use the inline help.
Start your python interpreter (just type python
in the shell).
>>> import libvirt
>>> help(libvirt)
This should give you a detailed documentation on libvirt.
import libvirt
import xml.etree.ElementTree as ET
conn = libvirt.open(name)
domain = conn.lookupByName(domain_name)
domain_config = ET.fromstring(domain.XMLDesc())
domain_disks = domain_config.findall('//disk')
精彩评论