[libvirt] [PATCH RFC 0/4] libxl: qemu agent support

Joao Martins posted 4 patches 7 years, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/1486572280-2212-1-git-send-email-joao.m.martins@oracle.com
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
[libvirt] [PATCH RFC 0/4] libxl: qemu agent support
Posted by Joao Martins 7 years, 1 month ago
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

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