基於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中的指令即可得到相應運行結果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM