On 2/20/19 9:53 AM, Eric Blake wrote:
Right now, copying the state of a transient domain with snapshots
from one host to another requires multiple API calls on both
machines - on the host: get the domain XML, get a list of the
snapshots, and then for each snapshot get the snapshot's XML;
then on the destination: create the domain, then multiple
domain snapshot create calls with the REDEFINE flag. This
patch aims to make the process use fewer APIs by making it
possible to grab the XML for all snapshots at the same time as
grabbing the domain XML. Note that we had to do the modification
to virDomainGetXMLDesc(), rather than virDomainSnapshotGetXMLDesc(),
since the latter requires a single non-NULL snapshot object,
whereas we want the list of all snapshots for the domain (even
if the list has 0 elements).
Plumb the new flag into the test and qemu driver, and into virsh
dumpxml.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
include/libvirt/libvirt-domain.h | 1 +
src/conf/domain_conf.c | 13 ++++++++-----
src/libvirt-domain.c | 5 +++++
src/qemu/qemu_domain.c | 23 +++++++++++++++++------
src/qemu/qemu_driver.c | 4 ++--
src/test/test_driver.c | 7 ++++---
tools/virsh-domain.c | 7 +++++++
7 files changed, 44 insertions(+), 16 deletions(-)
diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
Needs this squashed in, now that I've rebased on top of the flag cleanups:
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index da0fde78a6..dad1db2eb9 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -7727,7 +7727,8 @@ qemuDomainDefFormatBufInternal(virQEMUDriverPtr
driver,
virQEMUCapsPtr qemuCaps = NULL;
bool snapshots = flags & VIR_DOMAIN_XML_SNAPSHOTS;
- virCheckFlags(VIR_DOMAIN_XML_COMMON_FLAGS |
VIR_DOMAIN_XML_UPDATE_CPU, -1);
+ virCheckFlags(VIR_DOMAIN_XML_COMMON_FLAGS | VIR_DOMAIN_XML_UPDATE_CPU |
+ VIR_DOMAIN_XML_SNAPSHOTS, -1);
if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
goto cleanup;
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization:
qemu.org |
libvirt.org