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