mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-10 05:17:59 +03:00
storage: allow interleave in volume XML
The RNG grammar did not allow arbitrary interleaving, which makes
it harder than necessary to create a new volume from handwritten XML.
(Compare also to commit caf516db
for pools).
* docs/schemas/storagevol.rng: Support interleaving.
* tests/storagevolxml2xmlin/vol-file-backing.xml: Test it.
Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
d68f16447d
commit
f5580bd6d6
@ -13,55 +13,61 @@
|
||||
|
||||
<define name='vol'>
|
||||
<element name='volume'>
|
||||
<element name='name'>
|
||||
<ref name='volName'/>
|
||||
</element>
|
||||
<optional>
|
||||
<element name='key'>
|
||||
<text/>
|
||||
<interleave>
|
||||
<element name='name'>
|
||||
<ref name='volName'/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='source'/>
|
||||
</optional>
|
||||
<ref name='sizing'/>
|
||||
<ref name='target'/>
|
||||
<optional>
|
||||
<ref name='backingStore'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='key'>
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='source'/>
|
||||
</optional>
|
||||
<ref name='sizing'/>
|
||||
<ref name='target'/>
|
||||
<optional>
|
||||
<ref name='backingStore'/>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='sizing'>
|
||||
<optional>
|
||||
<element name='capacity'>
|
||||
<ref name='scaledInteger'/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='allocation'>
|
||||
<ref name='scaledInteger'/>
|
||||
</element>
|
||||
</optional>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name='capacity'>
|
||||
<ref name='scaledInteger'/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name='allocation'>
|
||||
<ref name='scaledInteger'/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</define>
|
||||
|
||||
<define name='permissions'>
|
||||
<optional>
|
||||
<element name='permissions'>
|
||||
<element name='mode'>
|
||||
<ref name='octalMode'/>
|
||||
</element>
|
||||
<element name='owner'>
|
||||
<ref name='unsignedInt'/>
|
||||
</element>
|
||||
<element name='group'>
|
||||
<ref name='unsignedInt'/>
|
||||
</element>
|
||||
<optional>
|
||||
<element name='label'>
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
<interleave>
|
||||
<element name='mode'>
|
||||
<ref name='octalMode'/>
|
||||
</element>
|
||||
<element name='owner'>
|
||||
<ref name='unsignedInt'/>
|
||||
</element>
|
||||
<element name='group'>
|
||||
<ref name='unsignedInt'/>
|
||||
</element>
|
||||
<optional>
|
||||
<element name='label'>
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
@ -103,36 +109,40 @@
|
||||
|
||||
<define name='target'>
|
||||
<element name='target'>
|
||||
<optional>
|
||||
<element name='path'>
|
||||
<choice>
|
||||
<data type='anyURI'/>
|
||||
<ref name='absFilePath'/>
|
||||
</choice>
|
||||
</element>
|
||||
</optional>
|
||||
<ref name='format'/>
|
||||
<ref name='permissions'/>
|
||||
<ref name='timestamps'/>
|
||||
<optional>
|
||||
<ref name='encryption'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='compat'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='fileFormatFeatures'/>
|
||||
</optional>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name='path'>
|
||||
<choice>
|
||||
<data type='anyURI'/>
|
||||
<ref name='absFilePath'/>
|
||||
</choice>
|
||||
</element>
|
||||
</optional>
|
||||
<ref name='format'/>
|
||||
<ref name='permissions'/>
|
||||
<ref name='timestamps'/>
|
||||
<optional>
|
||||
<ref name='encryption'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='compat'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='fileFormatFeatures'/>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='backingStore'>
|
||||
<element name='backingStore'>
|
||||
<element name='path'>
|
||||
<ref name='absFilePath'/>
|
||||
</element>
|
||||
<ref name='format'/>
|
||||
<ref name='permissions'/>
|
||||
<interleave>
|
||||
<element name='path'>
|
||||
<ref name='absFilePath'/>
|
||||
</element>
|
||||
<ref name='format'/>
|
||||
<ref name='permissions'/>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
|
@ -1,25 +1,26 @@
|
||||
<volume>
|
||||
<name>sparse.img</name>
|
||||
<!-- lines scrambled to test interleaves -->
|
||||
<key>/var/lib/libvirt/images/sparse.img</key>
|
||||
<source/>
|
||||
<capacity unit='GB'>10</capacity>
|
||||
<allocation unit='MiB'>0</allocation>
|
||||
<source/>
|
||||
<target>
|
||||
<path>/var/lib/libvirt/images/sparse.img</path>
|
||||
<permissions>
|
||||
<mode>0</mode>
|
||||
<owner>0744</owner>
|
||||
<mode>0</mode>
|
||||
<group>0</group>
|
||||
</permissions>
|
||||
<path>/var/lib/libvirt/images/sparse.img</path>
|
||||
</target>
|
||||
<allocation unit='MiB'>0</allocation>
|
||||
<backingStore>
|
||||
<path>/var/lib/virt/images/master.img</path>
|
||||
<format type='vmdk'/>
|
||||
<path>/var/lib/virt/images/master.img</path>
|
||||
<permissions>
|
||||
<mode>0744</mode>
|
||||
<label>virt_image_t</label>
|
||||
<owner>1</owner>
|
||||
<group>1</group>
|
||||
<label>virt_image_t</label>
|
||||
</permissions>
|
||||
</backingStore>
|
||||
<name>sparse.img</name>
|
||||
</volume>
|
||||
|
Loading…
Reference in New Issue
Block a user