python + libvirtを使用して実行中のドメイン情報を取得します
質問
XENホストでドメインを実行することに関するさまざまな情報を取得する簡単なスクリプトを作成しようとしています。
これまでのところ、私は持っています:
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)によると、少なくとも私に何かを返すはずです。
どんな手掛かり ? (私はPython初心者です)
解決
ドキュメントから: 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
他のヒント
PythonのLibvirt APIに関するドキュメントを取得するには、インラインヘルプを使用します。
Pythonインタープリターを起動します(タイプのみ python
シェル内)。
>>> import libvirt
>>> help(libvirt)
これにより、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')
所属していません StackOverflow