On 5.2.2014 03:01, Eric Blake wrote:
Wrap the new virConnectDomainQemuMonitorEventRegister function
being added in libvirt 1.2.2. This patch copies heavily from
network events (commit 6ea5be0) and from event loop callbacks
in libvirt-override.c, since in the libvirt_qemu module, we
must expose top-level functions rather than class members.
* generator.py (qemu_skip_function): Don't generate event code.
(qemuBuildWrappers): Delay manual portion until after imports.
* libvirt-qemu-override.py (qemuMonitorEventRegister)
(qemuMonitorEventDeregister): New file.
* libvirt-qemu-override.c
(libvirt_qemu_virConnectDomainQemuMonitorEventFreeFunc)
(libvirt_qemu_virConnectDomainQemuMonitorEventCallback)
(libvirt_qemu_virConnectDomainQemuMonitorEventRegister)
(libvirt_qemu_virConnectDomainQemuMonitorEventDeregister)
(libvirt_qemu_lookupPythonFunc, getLibvirtQemuDictObject)
(getLibvirtQemuModuleObject): New functions.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
diff --git a/libvirt-qemu-override.py b/libvirt-qemu-override.py
new file mode 100644
index 0000000..ab48bec
--- /dev/null
+++ b/libvirt-qemu-override.py
@@ -0,0 +1,36 @@
+# Manually written part of python bindings for libvirt-qemu
+
+def _dispatchQemuMonitorEventCallback(conn, dom, event, seconds, micros, details,
cbData):
+ """Dispatches events to python user qemu monitor event callbacks
+ """
+ cb = cbData["cb"]
+ opaque = cbData["opaque"]
+
+ cb(conn, libvirt.virDomain(conn, _obj=dom), event, seconds, micros, details,
opaque)
+ return 0
+
+def qemuMonitorEventDeregister(conn, callbackID):
+ """Removes a qemu monitor event callback. De-registering for a
callback
+ will disable delivery of this event type"""
+ try:
+ ret = libvirtmod_qemu.virConnectDomainQemuMonitorEventDeregister(conn._o,
callbackID)
+ if ret == -1: raise libvirt.libvirtError
('virConnectDomainQemuMonitorEventDeregister() failed')
+ del conn.qemuMonitorEventCallbackID[callbackID]
+ except AttributeError:
+ pass
+
+def qemuMonitorEventRegister(conn, dom, event, cb, opaque, flags=0):
+ """Adds a qemu monitor event callback. Registering for a monitor
+ callback will enable delivery of the events"""
+ if not hasattr(conn, 'qemuMonitorEventCallbackID'):
+ conn.qemuMonitorEventCallbackID = {}
+ cbData = { "cb": cb, "conn": conn, "opaque": opaque }
+ if dom is None:
+ ret = libvirtmod_qemu.virConnectDomainQemuMonitorEventRegister(conn._o, None,
event, cbData, flags)
+ else:
+ ret = libvirtmod_qemu.virConnectDomainQemuMonitorEventRegister(conn._o, dom._o,
event, cbData, flags)
+ if ret == -1:
+ raise libvirt.libvirtError ('virConnectDomainQemuMonitorEventRegister()
failed')
+ conn.qemuMonitorEventCallbackID[ret] = opaque
+ return ret
+
Also remove the blank line. And please try to fix it and push it asap
as Jenkins tests depend on this patch, thanks.
Pavel