On Mon, Oct 10, 2011 at 11:54:08PM +0800, shaohef@xxxxxxxxxxxxxxxxxx wrote: > From: Shaohe Feng <shaohef@xxxxxxxxxxxxxxxxxx> > > Basically, this feature can go along with qemu monitor passthrough. > That way, if we use new commands in the monitor that generate new events, we want > some way to receive those new events too. I agree that this patch is very complimentary to the existing tools for qemu interaction (qemu_monitor_command, qemu_attach, etc). It allows API users to subscribe to events that are not yet handled by libvirt. I have a couple of design questions about this feature. 1) This feature seems to be a bit qemu specific. Other qemu-specific APIs (mentioned above) are build into libvirt-qemu.so so that they are kept apart from the hypervisor-neutral parts of the API. Is it possible to do that for an event handler like this patch implements? Do we want to enforce such a limit? 2) This patch causes a string representing a raw JSON event object to be passed to the callbacks that are registered for the default event. This seems fine to me. I do wonder if relying on a 'default' event is a bad thing for an application to do. Let's say an app decides to handle NEW_EVENT using this default handler. Then, libvirt gains official support for NEW_EVENT. When the libvirt package is updated in the application's environment, NEW_EVENT will no longer trigger via the default handler. Thus, the application is broken by a libvirt upgrade. Would it be better to have a 'raw event' sink where all events (whether supported or not) would be sent? > In order to test this patch, see the attached python test case. When domains are started, > it will be able to catch RESUME events. Tested-by: Adam Litke <agl@xxxxxxxxxx> > Signed-off-by: Shaohe Feng <shaohef@xxxxxxxxxxxxxxxxxx> > --- > daemon/remote.c | 34 ++++++++++++++++++++++ > include/libvirt/libvirt.h.in | 14 +++++++++ > python/libvirt-override-virConnect.py | 12 ++++++++ > python/libvirt-override.c | 50 +++++++++++++++++++++++++++++++++ > src/conf/domain_event.c | 46 ++++++++++++++++++++++++++++++ > src/conf/domain_event.h | 5 +++ > src/libvirt_private.syms | 2 + > src/qemu/qemu_monitor.c | 9 ++++++ > src/qemu/qemu_monitor.h | 6 ++++ > src/qemu/qemu_monitor_json.c | 31 ++++++++++++++++++++ > src/qemu/qemu_process.c | 23 +++++++++++++++ > src/remote/remote_driver.c | 31 ++++++++++++++++++++ > src/remote/remote_protocol.x | 8 ++++- > src/remote_protocol-structs | 5 +++ > 14 files changed, 275 insertions(+), 1 deletions(-) -- Adam Litke <agl@xxxxxxxxxx> IBM Linux Technology Center -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list