mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 09:17:52 +03:00
e2c41e4860
At one point, the code passed through arbitrary strings for file formats, which supposedly lets qemu handle a new file type even before libvirt has been taught to handle it. However, to properly label files, libvirt has to learn the file type anyway, so we might as well make our life easier by only accepting file types that we are prepared to handle. This patch lets the RNG validation ensure that only known strings are let through. * docs/schemas/domaincommon.rng (driverFormat): Limit to list of supported strings. * docs/schemas/domainsnapshot.rng (driver): Likewise.
131 lines
3.2 KiB
XML
131 lines
3.2 KiB
XML
<?xml version="1.0"?>
|
|
<!-- A Relax NG schema for the libvirt domain snapshot properties XML format -->
|
|
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
|
|
<start>
|
|
<ref name='domainsnapshot'/>
|
|
</start>
|
|
|
|
<include href='domaincommon.rng'/>
|
|
|
|
<define name='domainsnapshot'>
|
|
<element name='domainsnapshot'>
|
|
<interleave>
|
|
<optional>
|
|
<element name='name'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='description'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='state'>
|
|
<ref name='state'/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='creationTime'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='disks'>
|
|
<zeroOrMore>
|
|
<ref name='disksnapshot'/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='active'>
|
|
<choice>
|
|
<value>0</value>
|
|
<value>1</value>
|
|
</choice>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<choice>
|
|
<element name='domain'>
|
|
<element name='uuid'>
|
|
<ref name="UUID"/>
|
|
</element>
|
|
</element>
|
|
<ref name='domain'/>
|
|
</choice>
|
|
</optional>
|
|
<optional>
|
|
<element name='parent'>
|
|
<element name='name'>
|
|
<text/>
|
|
</element>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='state'>
|
|
<choice>
|
|
<value>nostate</value>
|
|
<value>running</value>
|
|
<value>blocked</value>
|
|
<value>paused</value>
|
|
<value>shutdown</value>
|
|
<value>shutoff</value>
|
|
<value>crashed</value>
|
|
<value>disk-snapshot</value>
|
|
</choice>
|
|
</define>
|
|
|
|
<define name='disksnapshot'>
|
|
<element name='disk'>
|
|
<attribute name='name'>
|
|
<choice>
|
|
<ref name='diskTarget'/>
|
|
<ref name='absFilePath'/>
|
|
</choice>
|
|
</attribute>
|
|
<choice>
|
|
<attribute name='snapshot'>
|
|
<value>no</value>
|
|
</attribute>
|
|
<attribute name='snapshot'>
|
|
<value>internal</value>
|
|
</attribute>
|
|
<group>
|
|
<optional>
|
|
<attribute name='snapshot'>
|
|
<value>external</value>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
<optional>
|
|
<element name='driver'>
|
|
<optional>
|
|
<attribute name='type'>
|
|
<ref name='diskFormat'/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='source'>
|
|
<optional>
|
|
<attribute name='file'>
|
|
<ref name='absFilePath'/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</group>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
</grammar>
|