mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-25 23:25:24 +00:00
eda3af2488
The XML allows <encryption format='unencrypted'/>, this implementation canonicalizes the internal representation so that "vol->encryption" is non-NULL iff the volume is encrypted. Note that partial encryption information (e.g. specifying an encryption format, but not the key/passphrase) is valid, libvirt will automatically choose value for the missing information during volume creation. The user can read the volume XML, and use the unmodified <encryption> tag in future operations (without having to be able to understand) its contents. * docs/formatstorage.html, docs/formatstorage.html.in: Document storage volume encryption options * src/storage_conf.c, src/storage_conf.h: Hook up storage encryption XML handling * tests/storagevolschemadata/vol-qcow2.xml: Test case for encryption schema changes
203 lines
3.9 KiB
Plaintext
203 lines
3.9 KiB
Plaintext
<!-- 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">
|
|
<start>
|
|
<ref name='vol'/>
|
|
</start>
|
|
|
|
<include href='storageencryption.rng'/>
|
|
|
|
|
|
<define name='vol'>
|
|
<element name='volume'>
|
|
<element name='name'>
|
|
<ref name='name'/>
|
|
</element>
|
|
<optional>
|
|
<element name='key'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
<ref name='source'/>
|
|
<ref name='sizing'/>
|
|
<ref name='target'/>
|
|
<optional>
|
|
<ref name='backingStore'/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='sizing'>
|
|
<optional>
|
|
<element name='capacity'>
|
|
<optional>
|
|
<attribute name='unit'>
|
|
<ref name='unit'/>
|
|
</attribute>
|
|
</optional>
|
|
<ref name='uint'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='allocation'>
|
|
<ref name='uint'/>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='permissions'>
|
|
<optional>
|
|
<element name='permissions'>
|
|
<element name='mode'>
|
|
<ref name='uint'/>
|
|
</element>
|
|
<element name='owner'>
|
|
<ref name='uint'/>
|
|
</element>
|
|
<element name='group'>
|
|
<ref name='uint'/>
|
|
</element>
|
|
<optional>
|
|
<element name='label'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='target'>
|
|
<element name='target'>
|
|
<optional>
|
|
<element name='path'>
|
|
<ref name='path'/>
|
|
</element>
|
|
</optional>
|
|
<ref name='format'/>
|
|
<ref name='permissions'/>
|
|
<optional>
|
|
<ref name='encryption'/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='backingStore'>
|
|
<element name='backingStore'>
|
|
<element name='path'>
|
|
<ref name='path'/>
|
|
</element>
|
|
<ref name='format'/>
|
|
<ref name='permissions'/>
|
|
</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='path'/>
|
|
</attribute>
|
|
<choice>
|
|
<empty/>
|
|
<ref name='devextents'/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='devextents'>
|
|
<oneOrMore>
|
|
<element name='extent'>
|
|
<attribute name='start'>
|
|
<ref name='uint'/>
|
|
</attribute>
|
|
<attribute name='end'>
|
|
<ref name='uint'/>
|
|
</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>
|
|
</choice>
|
|
|
|
</define>
|
|
|
|
|
|
<define name='formatfile'>
|
|
<choice>
|
|
<value>raw</value>
|
|
<value>dir</value>
|
|
<value>bochs</value>
|
|
<value>cloop</value>
|
|
<value>cow</value>
|
|
<value>dmg</value>
|
|
<value>iso</value>
|
|
<value>qcow</value>
|
|
<value>qcow2</value>
|
|
<value>vmdk</value>
|
|
<value>vpc</value>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name='format'>
|
|
<optional>
|
|
<element name='format'>
|
|
<attribute name='type'>
|
|
<choice>
|
|
<ref name='formatfile'/>
|
|
<ref name='formatdev'/>
|
|
</choice>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='name'>
|
|
<data type='string'>
|
|
<param name="pattern">[a-zA-Z0-9_\+\-\.]+</param>
|
|
</data>
|
|
</define>
|
|
|
|
<define name='uint'>
|
|
<data type='string'>
|
|
<param name="pattern">[0-9]+</param>
|
|
</data>
|
|
</define>
|
|
|
|
<define name='path'>
|
|
<data type='string'>
|
|
<param name="pattern">/[a-zA-Z0-9_\+\-\./%]+</param>
|
|
</data>
|
|
</define>
|
|
|
|
<define name='unit'>
|
|
<data type='string'>
|
|
<param name="pattern">[kKmMgGtTpPyYzZ]</param>
|
|
</data>
|
|
</define>
|
|
|
|
|
|
</grammar>
|