Add a generic domain event that fires when libvirt detects a state
change on any virtio-serial channel of a domain (connected /
disconnected). The existing VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE
event is restricted to the QEMU guest agent channel
("org.qemu.guest_agent.0"), making it impossible for management
applications to observe lifecycle transitions of other channels
(custom guest agents, SPICE, etc.) without polling the domain XML
status file.The new event is emitted for every virtio-serial channel, including the guest agent channel, and carries the affected channels name. The hypervisor must support virtio-serial port state notifications (e.g. QEMU's VSERPORT_CHANGE event) for the event to be delivered. Some parts were lifted from the v2 series originally posted to libvirt-devel in 2016 by Matt Broadstone <[email protected]>. Lucas Kornicki (2): conf,remote: add channel lifecycle domain event qemu: emit channel lifecycle event examples/c/misc/event-test.c | 57 +++++++++++++++++ include/libvirt/libvirt-domain.h | 65 +++++++++++++++++++ src/conf/domain_event.c | 97 +++++++++++++++++++++++++++++ src/conf/domain_event.h | 12 ++++ src/libvirt_private.syms | 2 + src/qemu/qemu_driver.c | 8 +++ src/qemu/qemu_process.c | 28 +++++++-- src/remote/remote_daemon_dispatch.c | 34 ++++++++++ src/remote/remote_driver.c | 34 ++++++++++ src/remote/remote_protocol.x | 16 ++++- src/remote_protocol-structs | 8 +++ tools/virsh-domain-event.c | 35 +++++++++++ 12 files changed, 389 insertions(+), 7 deletions(-) -- 2.43.0
