Re: [python PATCH 1/2] qemu: support arbitrary monitor events

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
---

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


--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]