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. Regards, Daniel -- |: 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 :| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list