mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-27 08:05:24 +00:00
4f596a070d
We had incomplete RelaxNG support for storage formats listed
in virstoragefile.h: commit 027bf2e
added 'vdi' but forgot
to update the <volume> and <domain> xml lists; the <volume>
list was also missing 'fat' and 'vhd'. Maintaining two lists
is a recipe for them getting out of sync, so make the list
common so that both contexts benefit the next time we add a
format in a single location.
* docs/schemas/domaincommon.rng (storageFormat): Move...
* docs/schemas/storagecommon.rng: ...here, and add vdi.
* docs/schemas/storagevol.rng (formatfile): Use common list.
Signed-off-by: Eric Blake <eblake@redhat.com>
247 lines
5.6 KiB
XML
247 lines
5.6 KiB
XML
<?xml version="1.0"?>
|
|
<!-- A Relax NG schema for the libvirt storage volume XML format -->
|
|
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<include href='basictypes.rng'/>
|
|
<start>
|
|
<ref name='vol'/>
|
|
</start>
|
|
|
|
<include href='storagecommon.rng'/>
|
|
|
|
|
|
<define name='vol'>
|
|
<element name='volume'>
|
|
<optional>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<value>file</value>
|
|
<value>block</value>
|
|
<value>dir</value>
|
|
<value>network</value>
|
|
<value>netdir</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<element name='name'>
|
|
<ref name='volName'/>
|
|
</element>
|
|
<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'>
|
|
<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'>
|
|
<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>
|
|
|
|
<define name='timestamps'>
|
|
<optional>
|
|
<element name='timestamps'>
|
|
<interleave>
|
|
<optional>
|
|
<element name='atime'>
|
|
<ref name='timestamp'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='btime'>
|
|
<ref name='timestamp'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='ctime'>
|
|
<ref name='timestamp'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='mtime'>
|
|
<ref name='timestamp'/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='timestamp'>
|
|
<data type='string'>
|
|
<param name="pattern">[0-9]+(\.[0-9]{0,9})?</param>
|
|
</data>
|
|
</define>
|
|
|
|
<define name='target'>
|
|
<element name='target'>
|
|
<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'>
|
|
<interleave>
|
|
<element name='path'>
|
|
<ref name='absFilePath'/>
|
|
</element>
|
|
<ref name='format'/>
|
|
<ref name='permissions'/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
|
|
<define name='source'>
|
|
<element name='source'>
|
|
<zeroOrMore>
|
|
<ref name='sourcedev'/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sourcedev'>
|
|
<element name='device'>
|
|
<attribute name='path'>
|
|
<ref name='absFilePath'/>
|
|
</attribute>
|
|
<choice>
|
|
<empty/>
|
|
<ref name='devextents'/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='devextents'>
|
|
<oneOrMore>
|
|
<element name='extent'>
|
|
<attribute name='start'>
|
|
<ref name='unsignedLong'/>
|
|
</attribute>
|
|
<attribute name='end'>
|
|
<ref name='unsignedLong'/>
|
|
</attribute>
|
|
</element>
|
|
</oneOrMore>
|
|
</define>
|
|
|
|
<define name='formatdev'>
|
|
<choice>
|
|
<value>none</value>
|
|
<value>auto</value>
|
|
<value>ext2</value>
|
|
<value>ext3</value>
|
|
<value>ext4</value>
|
|
<value>ufs</value>
|
|
<value>iso9660</value>
|
|
<value>udf</value>
|
|
<value>gfs</value>
|
|
<value>gfs2</value>
|
|
<value>vfat</value>
|
|
<value>hfs+</value>
|
|
<value>xfs</value>
|
|
<value>ocfs2</value>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name='formatfile'>
|
|
<choice>
|
|
<value>unknown</value>
|
|
<ref name='storageFormat'/>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name='formatdisk'>
|
|
<choice>
|
|
<value>none</value>
|
|
<value>linux</value>
|
|
<value>fat16</value>
|
|
<value>fat32</value>
|
|
<value>linux-swap</value>
|
|
<value>linux-lvm</value>
|
|
<value>linux-raid</value>
|
|
<value>extended</value>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name='format'>
|
|
<optional>
|
|
<element name='format'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<ref name='formatfile'/>
|
|
<ref name='formatdev'/>
|
|
<ref name='formatdisk'/>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
</grammar>
|