2020-09-30 13:54:58 +02:00
<?xml version="1.0"?>
2018-06-11 22:12:21 -05:00
<!-- A Relax NG schema for the libvirt domain checkpoint properties XML format -->
2020-09-30 13:54:58 +02:00
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2018-06-11 22:12:21 -05:00
<start>
2020-09-30 13:54:58 +02:00
<ref name="domaincheckpoint"/>
2018-06-11 22:12:21 -05:00
</start>
2020-09-30 13:54:58 +02:00
<include href="domaincommon.rng"/>
2018-06-11 22:12:21 -05:00
2020-09-30 13:54:58 +02:00
<define name="domaincheckpoint">
<element name="domaincheckpoint">
2018-06-11 22:12:21 -05:00
<interleave>
<optional>
2020-09-30 13:54:58 +02:00
<element name="name">
<ref name="checkpointName"/>
2018-06-11 22:12:21 -05:00
</element>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<element name="description">
2018-06-11 22:12:21 -05:00
<text/>
</element>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<element name="creationTime">
<ref name="unsignedLong"/>
2018-06-11 22:12:21 -05:00
</element>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<element name="disks">
2018-06-11 22:12:21 -05:00
<oneOrMore>
2020-09-30 13:54:58 +02:00
<ref name="diskcheckpoint"/>
2018-06-11 22:12:21 -05:00
</oneOrMore>
</element>
</optional>
<optional>
<!-- Nested grammar ensures that any of our overrides of
storagecommon/domaincommon defines do not conflict
with any domain.rng overrides. -->
<grammar>
2020-09-30 13:54:58 +02:00
<include href="domain.rng"/>
2018-06-11 22:12:21 -05:00
</grammar>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<element name="parent">
<element name="name">
<ref name="checkpointName"/>
2018-06-11 22:12:21 -05:00
</element>
</element>
</optional>
</interleave>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="diskcheckpoint">
<element name="disk">
<attribute name="name">
2018-06-11 22:12:21 -05:00
<choice>
2020-09-30 13:54:58 +02:00
<ref name="diskTarget"/>
<ref name="absFilePath"/>
2018-06-11 22:12:21 -05:00
</choice>
</attribute>
<choice>
2020-09-30 13:54:58 +02:00
<attribute name="checkpoint">
2018-06-11 22:12:21 -05:00
<value>no</value>
</attribute>
<group>
<optional>
2020-09-30 13:54:58 +02:00
<attribute name="checkpoint">
2018-06-11 22:12:21 -05:00
<value>bitmap</value>
</attribute>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<attribute name="bitmap">
2018-06-11 22:12:21 -05:00
<text/>
</attribute>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<attribute name="size">
<ref name="unsignedLong"/>
2018-06-11 22:12:21 -05:00
</attribute>
</optional>
</group>
</choice>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="checkpointName">
<data type="string">
<!-- Notably: no leading "." and no embedded "/" or newline -->
<param name="pattern">[a-zA-Z0-9_\-][a-zA-Z0-9_\-.]*</param>
2018-06-11 22:12:21 -05:00
</data>
</define>
</grammar>