On Thu, Jan 29, 2015 at 04:12:15PM +0100, Michal Privoznik wrote:
On 29.01.2015 11:25, Martin Kletzander wrote:
> On Wed, Jan 28, 2015 at 06:23:08PM +0100, Michal Privoznik wrote:
>> There are some interface types (notably 'server' and 'client')
>> which instead of allowing the default set of elements and
>> attributes (like the rest do), try to enumerate only the elements
>> they know of. This way it's, however, easy to miss something. For
>> instance, the <address/> element was not mentioned at all. This
>> resulted in a strange behavior: when such interface was added
>> into XML, the address was automatically generated by parsing
>> code. Later, the formatted XML hasn't passed the RNG schema. This
>> became more visible once we've turned on the XML validation on
>> domain XML changes: appending an empty line at the end of
>> formatted XML (to trick virsh think the XML had changed) made
>> libvirt to refuse the very same XML it formatted.
>>
>> Instead of trying to find each element and attribute we are
>> missing in the schema, lets just allow all the elements and
>> attributes like we're doing that for the rest of types. It's no
>> harm if the schema is wider than our parser allows.
>>
>
> I'm pretty sure that separating it was the original intention, but
> until it's separated properly without breaking things, I agree with
> this fix.
>
>> Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
>> ---
>> docs/schemas/domaincommon.rng | 28 +---
>> .../qemuxml2argv-interface-server.xml | 157
>> +++++++++++++++++++++
>
> So this file is added only for domainschematest? Why not check it by
> xml2xml as well?
Good point.
>
> This effectively allows interface-options to be used with any
> interface, why not move it after the <choice/> element, so we're not
> redundant?
Not a good point. I mean, I don't think one is allowed to:
<element>
<interlave>
<choice>
<group/>
<group/>
<choice>
</interleave>
</element>
simply because the choice groups may be defined by the value of an
attribute to the top parent element. Well, at least if I did it that way
I got an error from xmllint (and don't even get me started on it's error
reporting capabilities. For a long while I thought we have the worst
error reporting ever. Then I met xmllint).
Um... Yes! And I've found out why. It's simply because of that
reference to the 'interface-options' definition. And you can't get
that info from xmllint. Anyway, it is possible, albeit not so
beautiful patch-wise. I'll Cc you on the patches that fix that.
>
> ACK if you fix those two things.
So I'm fixing the first issue and pushing. Thanks.
Michal