lar*_*sks 7 python virtualization qemu libvirt
我想编写一些代码来监控由libvirt管理的QEMU下运行的域的事件.但是,尝试注册事件处理程序会产生以下错误:
>>> import libvirt
>>> conn = libvirt.openReadOnly('qemu:///system')
>>> conn.domainEventRegister(callback, None)
libvir: Remote error : this function is not supported by the connection driver: no event support
Run Code Online (Sandbox Code Playgroud)
(在这种情况下,"回调"是一个简单打印其参数的存根函数.)
我能够找到关于libvirt事件处理的示例似乎并不具体说明哪些后端虚拟机管理程序支持哪些功能.这预计适用于QEMU后端吗?
我正在运行Fedora 16系统,其中包括libvirt 0.9.6和qemu-kvm 0.15.1.
对于那些通过<searchengine>找到自己的人:
更新2013-10-04
许多月和一些Fedora版本之后,libvirt git存储库中的event-test.py代码在Fedora 19上正确运行.
在注册事件之前,请确保已在libvirt事件循环中注册(或设置自己的).
libvirt源附带了一个很好的事件处理示例(文件名为event-test.py).我附上了一个基于该代码的例子;
import libvirt
import time
import threading
def callback(conn, dom, event, detail, opaque):
print "EVENT: Domain %s(%s) %s %s" % (dom.name(),
dom.ID(),
event,
detail)
eventLoopThread = None
def virEventLoopNativeRun():
while True:
libvirt.virEventRunDefaultImpl()
def virEventLoopNativeStart():
global eventLoopThread
libvirt.virEventRegisterDefaultImpl()
eventLoopThread = threading.Thread(target=virEventLoopNativeRun,
name="libvirtEventLoop")
eventLoopThread.setDaemon(True)
eventLoopThread.start()
if __name__ == '__main__':
virEventLoopNativeStart()
conn = libvirt.openReadOnly('qemu:///system')
conn.domainEventRegister(callback, None)
conn.setKeepAlive(5, 3)
while conn.isAlive() == 1:
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
祝好运!
//濑
| 归档时间: |
|
| 查看次数: |
2948 次 |
| 最近记录: |