schema: fix idmap validation

When idmap was added to LXC, we forgot to cover it in the testsuite.
The schema was missing an <element> layer, and as a result,
virt-xml-validate was failing on valid dumpxml output.

Reported by Eduard - Gabriel Munteanu on IRC.

* docs/schemas/domaincommon.rng (idmap): Include <idmap> element,
and support interleaves.
* tests/lxcxml2xmldata/lxc-idmap.xml: New file.
* tests/lxcxml2xmltest.c (mymain): Test it.

Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Eric Blake 2014-01-10 10:40:01 -07:00
parent 558ffad55e
commit dd0dda2e4a
3 changed files with 71 additions and 26 deletions

View File

@ -506,32 +506,38 @@
</interleave>
</define>
<define name="idmap">
<zeroOrMore>
<element name="uid">
<attribute name="start">
<ref name="unsignedInt"/>
</attribute>
<attribute name="target">
<ref name="unsignedInt"/>
</attribute>
<attribute name="count">
<ref name="unsignedInt"/>
</attribute>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="gid">
<attribute name="start">
<ref name="unsignedInt"/>
</attribute>
<attribute name="target">
<ref name="unsignedInt"/>
</attribute>
<attribute name="count">
<ref name="unsignedInt"/>
</attribute>
</element>
</zeroOrMore>
<element name="idmap">
<interleave>
<zeroOrMore>
<element name="uid">
<attribute name="start">
<ref name="unsignedInt"/>
</attribute>
<attribute name="target">
<ref name="unsignedInt"/>
</attribute>
<attribute name="count">
<ref name="unsignedInt"/>
</attribute>
<empty/>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="gid">
<attribute name="start">
<ref name="unsignedInt"/>
</attribute>
<attribute name="target">
<ref name="unsignedInt"/>
</attribute>
<attribute name="count">
<ref name="unsignedInt"/>
</attribute>
<empty/>
</element>
</zeroOrMore>
</interleave>
</element>
</define>
<!--
Resources usage defines the amount of memory (maximum and possibly

View File

@ -0,0 +1,38 @@
<domain type='lxc'>
<name>jessie</name>
<uuid>e21987a5-e98e-9c99-0e35-803e4d9ad1fe</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64'>exe</type>
<init>/sbin/init</init>
</os>
<idmap>
<uid start='0' target='100000' count='100000'/>
<gid start='0' target='100000' count='100000'/>
</idmap>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/libvirt_lxc</emulator>
<filesystem type='mount' accessmode='passthrough'>
<source dir='/mach/jessie'/>
<target dir='/'/>
</filesystem>
<interface type='bridge'>
<mac address='00:16:3e:0f:ef:8a'/>
<source bridge='bri0'/>
<target dev='veth0'/>
</interface>
<console type='pty'>
<target type='lxc' port='0'/>
</console>
</devices>
<seclabel type='none'/>
</domain>

View File

@ -138,6 +138,7 @@ mymain(void)
DO_TEST("disk-formats");
DO_TEST_DIFFERENT("filesystem-ram");
DO_TEST("filesystem-root");
DO_TEST("idmap");
virObjectUnref(caps);
virObjectUnref(xmlopt);