dhodovsk / source-git / pacemaker

Forked from source-git/pacemaker 3 years ago
Clone
Blob Blame History Raw
<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" 
         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <start>
      <ref name="element-constraints"/>
  </start>

  <define name="element-constraints">
    <element name="constraints">
      <zeroOrMore>
        <choice>
          <ref name="element-location"/>
          <ref name="element-colocation"/>
          <ref name="element-order"/>
          <ref name="element-rsc_ticket"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>

  <define name="element-location">
    <element name="rsc_location">
      <attribute name="id"><data type="ID"/></attribute>
      <choice>
        <group>
          <attribute name="rsc"><data type="IDREF"/></attribute>
          <optional>
            <attribute name="role">
              <ref name="attribute-roles"/>
            </attribute>
          </optional>
        </group>
        <oneOrMore>
          <ref name="element-resource-set"/>
        </oneOrMore>
      </choice>
      <choice>
        <group>
          <externalRef href="score.rng"/>
          <attribute name="node"><text/></attribute>
        </group>
        <oneOrMore>
          <externalRef href="rule.rng"/>
        </oneOrMore>
      </choice>
      <optional>
        <ref name="element-lifetime"/>
      </optional>
      <optional>
        <attribute name="resource-discovery">
          <ref name="attribute-discovery"/>
        </attribute>
      </optional>
    </element>
  </define>

  <define name="element-resource-set">
    <element name="resource_set">
      <choice>
        <attribute name="id-ref"><data type="IDREF"/></attribute>
        <group>
          <attribute name="id"><data type="ID"/></attribute>
          <optional>
            <attribute name="sequential"><data type="boolean"/></attribute>
          </optional>
          <optional>
            <attribute name="require-all"><data type="boolean"/></attribute>
          </optional>
          <optional>
            <attribute name="ordering">
              <choice>
                <value>group</value>
                <value>listed</value>
              </choice>
            </attribute>
          </optional>
          <optional>
            <attribute name="action">
              <ref name="attribute-actions"/>
            </attribute>
          </optional>
          <optional>
            <attribute name="role">
              <ref name="attribute-roles"/>
            </attribute>
          </optional>
          <optional>
            <externalRef href="score.rng"/>
          </optional>
          <oneOrMore>
            <element name="resource_ref">
              <attribute name="id"><data type="IDREF"/></attribute>
            </element>
          </oneOrMore>
        </group>
      </choice>
    </element>
  </define>

  <define name="element-colocation">
    <element name="rsc_colocation">
      <attribute name="id"><data type="ID"/></attribute>
      <optional>
        <choice>
          <externalRef href="score.rng"/>
          <attribute name="score-attribute"><text/></attribute>
          <attribute name="score-attribute-mangle"><text/></attribute>
        </choice>
      </optional>
      <optional>
        <ref name="element-lifetime"/>
      </optional>
      <choice>
        <oneOrMore>
          <ref name="element-resource-set"/>
        </oneOrMore>
        <group>
          <attribute name="rsc"><data type="IDREF"/></attribute>
          <attribute name="with-rsc"><data type="IDREF"/></attribute>
          <optional>
            <attribute name="node-attribute"><text/></attribute>
          </optional>
          <optional>
            <attribute name="rsc-role">
              <ref name="attribute-roles"/>
            </attribute>
          </optional>
          <optional>
            <attribute name="with-rsc-role">
              <ref name="attribute-roles"/>
            </attribute>
          </optional>
        </group>
      </choice>
    </element>
  </define>

  <define name="element-order">
    <element name="rsc_order">
      <attribute name="id"><data type="ID"/></attribute>
      <optional>
        <ref name="element-lifetime"/>
      </optional>
      <optional>
        <attribute name="symmetrical"><data type="boolean"/></attribute>
      </optional>
      <optional>
        <choice>
          <externalRef href="score.rng"/>
          <attribute name="kind">
            <ref name="order-types"/>
          </attribute>
        </choice>
      </optional>
      <choice>
        <oneOrMore>
          <ref name="element-resource-set"/>
        </oneOrMore>
        <group>
          <attribute name="first"><data type="IDREF"/></attribute>
          <attribute name="then"><data type="IDREF"/></attribute>
          <optional>
            <attribute name="first-action">
              <ref name="attribute-actions"/>
            </attribute>
          </optional>
          <optional>
            <attribute name="then-action">
              <ref name="attribute-actions"/>
            </attribute>
          </optional>
        </group>
      </choice>
    </element>
  </define>
 
  <define name="element-rsc_ticket">
    <element name="rsc_ticket">
      <attribute name="id"><data type="ID"/></attribute>
      <choice>
        <oneOrMore>
          <ref name="element-resource-set"/>
        </oneOrMore>
        <group>
          <attribute name="rsc"><data type="IDREF"/></attribute>
          <optional>
            <attribute name="rsc-role">
              <ref name="attribute-roles"/>
            </attribute>
          </optional>
        </group>
      </choice>
      <attribute name="ticket"><text/></attribute>
      <optional>
        <attribute name="loss-policy">
          <choice>
            <value>stop</value>
            <value>demote</value>
            <value>fence</value>
            <value>freeze</value>
          </choice>
        </attribute>
      </optional>
    </element>
  </define>

  <define name="attribute-discovery">
    <choice>
      <value>always</value>
      <value>never</value>
      <value>exclusive</value>
    </choice>
  </define>

  <define name="attribute-actions">
    <choice>
      <value>start</value>
      <value>promote</value>
      <value>demote</value>
      <value>stop</value>
    </choice>
  </define>
      
  <define name="attribute-roles">
    <choice>
      <value>Stopped</value>
      <value>Started</value>
      <value>Master</value>
      <value>Slave</value>
    </choice>
  </define>

  <define name="order-types">
    <choice>
      <value>Optional</value>
      <value>Mandatory</value>
      <value>Serialize</value>
    </choice>
  </define>

  <define name="element-lifetime">
    <element name="lifetime">
      <oneOrMore>
        <externalRef href="rule.rng"/>
      </oneOrMore>
    </element>
  </define>
  
</grammar>