[libvirt] My beefs with the libvirt XML configuration format

Daniel P. Berrange berrange at redhat.com
Fri Dec 11 10:12:48 UTC 2009

On Fri, Dec 11, 2009 at 08:09:33AM +0100, Daniel Veillard wrote:
> On Thu, Dec 10, 2009 at 06:07:13PM +0000, Daniel P. Berrange wrote:
> > There should be an option to validate the XML input, either by 
> > providing a VIR_DOMAIN_XML_VALIDATE flag with the APIs which 
> > accept XML as input, or by having virsh edit doing validation
> > after the editor exits. 
>   I think I suggested a couple of time to have the input XML data
> be validated at the API level, but we don't want to do this
> systematically, this would create IMHO more problems it can solve.
> Using a flag and/or activating it when libvirt conf is in debug mode
> would both make sense.
> > This would also allow virsh to re-launch the editor upon error
> > and let you correct the mistake instead of forcing you to start
> > again from scratch.
>   The schemas validation won't be perfect in any way, for example
> trying to limit the list of allowed ethernet adapter based on the
> hypervisor type is nearly impossible even with Relax-NG since we
> differentiate based on an attribute in the top level element (this
> would force to basically write parallel schemas and become completely
> unmaintainable). Relax-NG validation also will provide out of context
> error messages, while the conf parser can give way better diagnostics.

I think it is a mistake that our current schemas try to validate the
content of attributes such as ethernet adapter name. Increasingly we
in a situation where the allowed values are dynamically determined on
the fly. The schema would be more useful if it simply validated that
it was a string a-Z,0-9, and didn't try to check explicit enumeration
of values there. ie just validate basic syntax, and not semantics.
The original poster's problem of 'pc' vs 'pc-0.11' is a good example
of validating the individual values is bad - 'pc-0.11' is dynamically
pulled from the QEMU binary so there's no hope of the schema ever
being aware of that.

|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

More information about the libvir-list mailing list