get running domains info using python + libvirt

Disco picture Disco · Jan 17, 2011 · Viewed 7.2k times · Source

I'm trying to do a simple script that 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)

Answer

Lennart Regebro picture Lennart Regebro · Jan 17, 2011

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