[libvirt] [python PATCH 1/2] qemu: support arbitrary monitor events
Pavel Hrdina
phrdina at redhat.com
Mon Mar 24 14:32:13 UTC 2014
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 at 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
More information about the libvir-list
mailing list