Question

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)

Was it helpful?

Solution

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

OTHER TIPS

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')
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top