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 <mpriv...@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

Attachment: pgpgY2W7bxxfL.pgp
Description: PGP signature

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to