2011-01-17 3 views
4

Я пытаюсь сделать простой скрипт, который получит различную информацию о запуске доменов на хосте xen.получить информацию о доменах с помощью python + libvirt

До сих пор, у меня есть:

import libvirt 
import pprint 
conn = libvirt.open('xen:///') 

for id in conn.listDomainsID(): 
    dom = conn.lookupByID(id) 
    infos = libvirt.virDomainGetInfo(dom) 

, который дает мне следующую ошибку:

AttributeError: 'module' object has no attribute 'virDomainGetInfo' 

Который, в соответствии с API (http://www.libvirt.org/html/ libvirt-libvirt.html # virDomainGetInfo) должен хотя бы вернуть мне что-то.

Любой ключ? (Я питон новичок)

ответ

5

Из документации: 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 
+2

Это означает, что 'infos = libvirt.virDomainGetInfo (dom)' должен быть 'infos = dom.info()' вместо этого. –

+0

ОК, пошел слишком быстро. :) – Disco

4

Чтобы получить документацию о Libvirt API, в питоне, используйте встроенную помощь.

Запустите свой интерпретатор python (просто введите python в оболочку).

>>> import libvirt 
>>> help(libvirt) 

Это должно предоставить подробную документацию по libvirt.

0
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') 
Смежные вопросы