snapshot: Add VIR_DOMAIN_SNAPSHOT_CREATE_VALIDATE flag
commit95f8e3237e5486f487324c64e881b1fa714b7a5c
authorEric Blake <eblake@redhat.com>
Sat, 6 Jul 2019 03:05:37 +0000 (5 22:05 -0500)
committerEric Blake <eblake@redhat.com>
Wed, 10 Jul 2019 22:34:58 +0000 (10 17:34 -0500)
treed539e88ee34c6c6f46611e68dea34448c904507e
parent88ae8b8b0c6d479fa68eca366b31d07c6cf11ecd
snapshot: Add VIR_DOMAIN_SNAPSHOT_CREATE_VALIDATE flag

We've been doing a terrible job of performing XML validation in our
various API that parse XML with a corresponding schema (we started
with domains back in commit dd69a14f, v1.2.12, but didn't catch all
domain-related APIs, didn't document the use of the flag, and didn't
cover other XML). New APIs (like checkpoints) should do the validation
unconditionally, but it doesn't hurt to continue retrofitting existing
APIs to at least allow the option.

While there are many APIs that could be improved, this patch focuses
on wiring up a new snapshot XML creation flag through all the
hypervisors that support snapshots, as well as exposing it in 'virsh
snapshot-create'.  For 'virsh snapshot-create-as', we blindly set the
flag without a command-line option, since the XML we create from the
command line should generally always comply (note that validation
might cause failures where it used to succeed, such as if we tighten
the RNG to reject a name of '../\n'); but blindly passing the flag
means we also have to add in fallback code to disable validation if
the server is too old to understand the flag.

Signed-off-by: Eric Blake <eblake@redhat.com>
Acked-by: Peter Krempa <pkrempa@redhat.com>
include/libvirt/libvirt-domain-snapshot.h
src/esx/esx_driver.c
src/libvirt-domain-snapshot.c
src/qemu/qemu_driver.c
src/test/test_driver.c
src/vbox/vbox_common.c
src/vz/vz_driver.c
tests/virsh-snapshot
tools/virsh-snapshot.c
tools/virsh.pod