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