domainsnapshot.rng 5.6 KB
Newer Older
1
<?xml version="1.0"?>
2 3 4 5 6 7
<!-- 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>

8 9
  <include href='domaincommon.rng'/>

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  <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'>
25
            <ref name='state'/>
26 27 28 29 30 31 32
          </element>
        </optional>
        <optional>
          <element name='creationTime'>
            <text/>
          </element>
        </optional>
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
        <optional>
          <element name='memory'>
            <choice>
              <attribute name='snapshot'>
                <choice>
                  <value>no</value>
                  <value>internal</value>
                </choice>
              </attribute>
              <group>
                <optional>
                  <attribute name='snapshot'>
                    <value>external</value>
                  </attribute>
                </optional>
                <attribute name='file'>
                  <ref name='absFilePath'/>
                </attribute>
              </group>
            </choice>
            <empty/>
          </element>
        </optional>
56 57 58 59 60 61 62
        <optional>
          <element name='disks'>
            <zeroOrMore>
              <ref name='disksnapshot'/>
            </zeroOrMore>
          </element>
        </optional>
63 64
        <optional>
          <element name='active'>
65 66 67 68
            <choice>
              <value>0</value>
              <value>1</value>
            </choice>
69 70 71
          </element>
        </optional>
        <optional>
72 73 74 75 76
          <choice>
            <element name='domain'>
              <element name='uuid'>
                <ref name="UUID"/>
              </element>
77
            </element>
78 79 80 81 82 83
            <!-- Nested grammar ensures that any of our overrides of
                 storagecommon/domaincommon defines do not conflict
                 with any domain.rng overrides.  -->
            <grammar>
              <include href='domain.rng'/>
            </grammar>
84
          </choice>
85 86 87 88 89 90 91 92 93 94 95 96
        </optional>
        <optional>
          <element name='parent'>
            <element name='name'>
              <text/>
            </element>
          </element>
        </optional>
      </interleave>
    </element>
  </define>

97 98 99 100 101 102 103 104 105 106 107 108 109
  <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>

110 111 112 113 114
  <define name='storageSourceExtra' combine='choice'>
    <!-- overrides the no-op version in storagecommon.rng -->
    <ref name='disksnapshotdriver'/>
  </define>

115 116 117
  <define name='disksnapshot'>
    <element name='disk'>
      <attribute name='name'>
118 119 120 121
        <choice>
          <ref name='diskTarget'/>
          <ref name='absFilePath'/>
        </choice>
122 123 124 125 126 127 128 129 130 131 132 133 134 135
      </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>
136 137 138 139 140 141 142 143
          <choice>
            <group>
              <optional>
                <attribute name='type'>
                  <value>file</value>
                </attribute>
              </optional>
              <interleave>
144
                <optional>
145 146 147 148 149 150
                  <element name='source'>
                    <optional>
                      <attribute name='file'>
                        <ref name='absFilePath'/>
                      </attribute>
                    </optional>
151 152 153
                    <optional>
                      <ref name='storageStartupPolicy'/>
                    </optional>
154 155
                    <empty/>
                  </element>
156
                </optional>
157
                <ref name='storageSourceExtra'/>
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
              </interleave>
            </group>
            <group>
              <attribute name='type'>
                <value>block</value>
              </attribute>
              <interleave>
                <optional>
                  <element name="source">
                    <attribute name="dev">
                      <ref name="absFilePath"/>
                    </attribute>
                    <empty/>
                  </element>
                </optional>
173
                <ref name='storageSourceExtra'/>
174 175 176 177 178 179 180 181 182 183 184 185
              </interleave>
            </group>
            <group>
              <attribute name="type">
                <value>network</value>
              </attribute>
              <interleave>
                <optional>
                  <element name="source">
                    <ref name='diskSourceNetwork'/>
                  </element>
                </optional>
186
                <ref name='storageSourceExtra'/>
187 188 189
              </interleave>
            </group>
          </choice>
190 191 192 193 194
        </group>
      </choice>
    </element>
  </define>

195 196 197 198 199
  <define name='disksnapshotdriver'>
    <optional>
      <element name='driver'>
        <optional>
          <attribute name='type'>
200
            <ref name='storageFormatBacking'/>
201 202 203 204 205 206 207
          </attribute>
        </optional>
        <empty/>
      </element>
    </optional>
  </define>

208
</grammar>