[PATCH 2/2] daemon: Introduce the possibility for users to register custom XML validator

Ján Tomko jtomko at redhat.com
Mon Sep 26 12:09:23 UTC 2022


On a Monday in 2022, Daniel P. Berrangé wrote:
>On Fri, Sep 23, 2022 at 05:42:13PM +0200, Peter Krempa wrote:
>> Introduce a new config option 'xml_validator' into the daemon config
>> file which will allow users to make libvirt daemons use a custom XML
>> validator.
>>
>> The rationale is that validators such as 'jing'[1] provide drastically
>> better error specification when compared to the native libxml2 validator
>> we use. A drawback though is that jing is written in Java and thus
>> unusable by libvirt directly and also not a popular package present in
>> distros.
>>
>> For power users and developers it still is worth having this feature to
>> provide better errors in a native way.
>
>I kinda wonder if those users need it integrated in libvirt
>though, as opposed to just calling jing themselves when
>needed. It feels like a fairly narrow set of users benefitting
>here from this change, made even smaller by the fact that those
>users have to remember to reconfigure libvirt to enable this.
>
>

I would be more convinced if jing was still packaged for Fedora.

>
>> An example showing the quality of the errors:
>>
>> XML used:
>>
>>   <vcpu placement='static' current='1'>asdf8</vcpu>
>>
>> native validator:
>>   error: XML document failed to validate against schema: Unable to validate doc against /home/pipo/libvirt/src/conf/schemas/domain.rng
>>   Extra element vcpu in interleave
>>   Invalid sequence in interleave
>>   Element domain failed to validate content
>>
>> jing:
>>   error: XML document failed to validate against schema: Unable to validate doc against /home/pipo/libvirt/src/conf/schemas/domain.rng
>>   /dev/stdin:6:52: error: character content of element "vcpu" invalid; must be an integer
>
>No doubt the errors are way better, but a power user
>can just invoke this script below themselves if they
>ever want to understand a XML problem better.
>
>>
>> Example script to make this feature work with jing:
>>
>>   #!/bin/bash
>>   java -jar /home/pipo/git/jing-trang/build/jing.jar $1 /dev/stdin 2>&1 || exit 1
>>
>> [1] https://github.com/relaxng/jing-trang
>
>To me this is only compelling if there's an option we can reasonably
>wire up out of the box.

Would switching to a different schema format make finding a validator
with frendlier messages easier?

Jano

>
>With regards,
>Daniel
>-- 
>|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
>|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
>|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
>


More information about the libvir-list mailing list