On 12/10/19 5:56 AM, Peter Krempa wrote: > On Tue, Dec 10, 2019 at 09:58:38 +0000, Daniel Berrange wrote: >> On Mon, Dec 09, 2019 at 08:15:05PM -0300, Daniel Henrique Barboza wrote: >>> (series based on master commit 97cafa610ecf5) >>> >>> This work was proposed by Cole in [1]. This is Cole's reasoning for >>> it, copy/pasted from [1]: >>> >>> ------- >>> The benefits of moving to validate time is that XML is rejected by >>> 'virsh define' rather than at 'virsh start' time. It also makes it easier >>> to follow the cli building code, and makes it easier to verify qemu_command.c >>> test suite code coverage for the important stuff like covering every CLI >>> option. It's also a good intermediate step for sharing validation with >>> domain capabilities building, like is done presently for rng models. >>> ------- >> >> I've not looked at the patches, but surely moving this validate from >> start time, to be define time errors is going to cause functional >> regressions in our ABI behaviour. >> >> My libvirtd daemons installs have many XML files defined which will >> fail validation at various points in time, depending on what QEMU >> builds I happen to have deployed. I only need them to pass the >> validation when actually starting the VM. > > Validation is not done on the persistent or status XML files exactly for > this reason. > > It's re-done when starting the VM so this should not be an issue. > Yup, that's what the VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE flag is all about. It's used to skip validation at daemon startup, and various cases like DomainDefCopy Conceptually this moves closer to IMO the ideal model: 1) Serialize XML into C struct 2) Validate contents against hypervisor capabilities 3) Serialize C struct into command line string Which has benefits: simplifies code in #1 and #3 which is the interesting stuff, easier to test full code coverage of #1 and #3, gives us the option to move validation into domaincapabilities code so we can report to the user whether a feature will be rejected or not. Also I suspect if we moved to using virtblocks for cli stuff, untangling validation from the cli builder would be a step in that direction - Cole -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list