基于python调用libvirt API

基于python调用libvirt API

1、程序代码

 

#!/usr/bin/python

import libvirt
import sys

def createConnection():
    conn = libvirt.openReadOnly(None)
    if conn == None:
		print 'Failed to open connection to QEMU/KVM'
		sys.exit(1)
    else:
		print '-----Connection is created successfully-----'
		return conn

def closeConnection(conn):
	print ''
	try:
		conn.close()
	except:
		print 'Failed to close the connection'
		return 1
	print 'Connection is closed'

def getDomInfoByName(conn, name):
	print ''
	print '----- get domain info by name -----'
	try:
		myDom = conn.lookupByName(name)
	except:
		print 'Failed to find the domain with name "%s"' % name
		return 1
		
	print "Dom id: %d name: %s" % (myDom.ID(), myDom.name())
	print "Dom state: %s" % myDom.state(0)
	print "Dom info: %s" % myDom.info()
	print "memory: %d MB" % (myDom.maxMemory()/1024)
	print "memory status: %s" % myDom.memoryStatus()
	print "vCPUs: %d" % myDom.maxVcpus()
	
def getDomInfoByID(conn, id):
	print ''
	print '----- get domain info by ID -----'
	try:
		myDom = conn.lookupByID(id)
	except:
		print 'Failed to find the domain with ID "%d"' % id
		return 1
		
	print "Domain id is %d ; Name is %s" % (myDom.ID(), myDom.name())

if __name__ == '__main__':
	name1 = "kvm-guest"
	name2 = "notExist"
	id1 = 3
	id2 = 9999
	print "---Get domain info via libvirt python API---"
	conn = createConnection()
	getDomInfoByName(conn, name1)
	getDomInfoByName(conn, name2)
	getDomInfoByID(conn, id1)
	getDomInfoByID(conn, id2)
	closeConnection(conn)
	

 2、运行,结果如图1所示

python libvirt-test.py 2>/dev/null

 

图 1 

3、中间过程错误说明

执行运行命令时出现如图2所示的错误

图 2

本文实验环境是利用编译安装的qemu和libvirt,没有安装libvirt-python的依赖包,所以需要python官网上下载相应的包,下载链接如下

https://pypi.python.org/pypi/libvirt-python/3.10.0

下载后解压编译安装,操作如下

tar -zxvf libvirt-python-3.10.0.tar.gz
python setup.py build
python setup.py install

安装完成后,查看/usr/local/lib/python2.7/dist-packages/目录下是否有相应的包,如图3所示

图 3

即可继续执行步骤2中的指令即可得到相应运行结果。

原文地址:https://www.cnblogs.com/grglym/p/8064161.html