Hey!
Back when channels were introduced in libxl (in answer to Michal[0]) I
suggested the idea of integrating qemu guest agent (which currently lives
qemu driver).
This series is an attempt at pulling qemu agent from qemu driver into util in
using it in libxl in subsequent patches. What do folks think of the idea? Note
that this is still all very RFC because 1) there's a lot of code we could
potentially share between qemu and libxl with respect to finding guest agent
config and keeping some of its state (see patch 3); 2) also we need to ignore
"execute" messages to be able to query the agent and see it's returned data
(patch 2). Which despite the commit not being incorrect I am not sure yet why
we need it yet.
As PoC I only implemented domainQemuAgentCommand/domainInterfaceAddresses, but
there's a lot more driver APIs we can potentially introduce after this. Tracing
all driver APIs that might require a guest agent:
* domainFSThaw, domainFSFreeze, domainFSTrim, domainGetFSInfo
* domainSetUserPassword
* domainGetTime, domainSetTime
* domainShutdown (with VIR_DOMAIN_SHUTDOWN_GUEST_AGENT)
* domainReboot (with VIR_DOMAIN_REBOOT_GUEST_AGENT)
* domainGetGuestVcpus
* domainSetGuestVcpus
* domainSetVcpusFlags (with VIR_DOMAIN_VCPU_GUEST)
* domainGetVcpusFlags (with VIR_DOMAIN_VCPU_GUEST)
Comments/Feedback is appreciated :)
Cheers,
Joao
[0]
https://www.spinics.net/linux/fedora/libvir/msg136685.html
Joao Martins (4):
qemu_agent: move agent into util
qemu_agent: ignore requests echoed back by guest
libxl: implement qemu-agent-command
libxl: domainInterfaceAddresses agent support
po/POTFILES.in | 2 +-
src/Makefile.am | 2 +-
src/libvirt_private.syms | 21 +
src/libxl/libxl_domain.c | 239 ++++-
src/libxl/libxl_domain.h | 16 +
src/libxl/libxl_driver.c | 69 ++
src/qemu/qemu_agent.c | 2248 -----------------------------------------
src/qemu/qemu_agent.h | 123 ---
src/qemu/qemu_domain.h | 2 +-
src/qemu/qemu_driver.c | 2 +-
src/util/virqemuagent.c | 2249 ++++++++++++++++++++++++++++++++++++++++++
src/util/virqemuagent.h | 123 +++
tests/qemuagenttest.c | 2 +-
tests/qemumonitortestutils.c | 2 +-
tests/qemumonitortestutils.h | 2 +-
15 files changed, 2723 insertions(+), 2379 deletions(-)
delete mode 100644 src/qemu/qemu_agent.c
delete mode 100644 src/qemu/qemu_agent.h
create mode 100644 src/util/virqemuagent.c
create mode 100644 src/util/virqemuagent.h
--
2.1.4