summaryrefslogtreecommitdiffstats
path: root/xml/rule-3.10.rng
diff options
context:
space:
mode:
Diffstat (limited to 'xml/rule-3.10.rng')
-rw-r--r--xml/rule-3.10.rng433
1 files changed, 433 insertions, 0 deletions
diff --git a/xml/rule-3.10.rng b/xml/rule-3.10.rng
new file mode 100644
index 0000000..6ef362f
--- /dev/null
+++ b/xml/rule-3.10.rng
@@ -0,0 +1,433 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ xmlns:ann="http://relaxng.org/ns/compatibility/annotations/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <ref name="element-rule"/>
+ </start>
+
+ <!--
+ Rule elements allow different syntax depending on their context, each of
+ which gets their own rule definition below:
+
+ 1. rsc_location
+ 2. meta_attributes within rsc_defaults
+ 3. meta_attributes within op_defaults
+ 4. all other contexts that allow node attribute expressions
+ (instance_attributes elements within bundle, clone, group, op, primitive,
+ and template elements; and meta_attributes elements within op elements)
+ 5. all other contexts (cluster_property_set elements; instance_attributes
+ within alert, node, and recipient elements; meta_attributes within alert,
+ bundle, clone, group, primitive, recipient, and template elements; and
+ utilization elements within node, primitive, and template elements)
+
+ The COMPAT comments below mark items that are invalid in their given context
+ and should be removed at a compatibility break.
+ -->
+
+ <!-- 1. rule element within rsc_location -->
+ <define name="element-rule-location">
+ <element name="rule">
+ <choice>
+ <attribute name="id-ref"><data type="IDREF"/></attribute>
+ <group>
+ <ref name="rule-common"/>
+ <oneOrMore>
+ <choice>
+ <ref name="expression-location"/>
+ <ref name="date_expression"/>
+ <ref name="element-rule-location"/>
+
+ <!-- @COMPAT: The below expression types are invalid here -->
+ <ref name="rsc_expression"/>
+ <ref name="op_expression"/>
+ </choice>
+ </oneOrMore>
+ <optional>
+ <choice>
+ <externalRef href="score.rng"/>
+ <attribute name="score-attribute"><text/></attribute>
+ </choice>
+ </optional>
+ </group>
+ </choice>
+ </element>
+ </define>
+
+ <!-- 2. rule element within rsc_defaults -->
+ <define name="element-rule-rsc_defaults">
+ <element name="rule">
+ <choice>
+ <attribute name="id-ref"><data type="IDREF"/></attribute>
+ <group>
+ <ref name="rule-common"/>
+ <oneOrMore>
+ <choice>
+ <ref name="date_expression"/>
+ <ref name="rsc_expression"/>
+ <ref name="element-rule-rsc_defaults"/>
+
+ <!-- @COMPAT: The below expression type is deprecated here -->
+ <ref name="expression"/>
+
+ <!-- @COMPAT: The below expression type is invalid here -->
+ <ref name="op_expression"/>
+ </choice>
+ </oneOrMore>
+
+ <!-- @COMPAT: The below score attributes are invalid here -->
+ <optional>
+ <choice>
+ <externalRef href="score.rng"/>
+ <attribute name="score-attribute"><text/></attribute>
+ </choice>
+ </optional>
+ </group>
+ </choice>
+ </element>
+ </define>
+
+ <!-- 3. rule element within op_defaults -->
+ <define name="element-rule-op_defaults">
+ <element name="rule">
+ <choice>
+ <attribute name="id-ref"><data type="IDREF"/></attribute>
+ <group>
+ <ref name="rule-common"/>
+ <oneOrMore>
+ <choice>
+ <ref name="date_expression"/>
+ <ref name="rsc_expression"/>
+ <ref name="op_expression"/>
+ <ref name="element-rule-op_defaults"/>
+
+ <!-- @COMPAT: The below expression type is deprecated here -->
+ <ref name="expression"/>
+ </choice>
+ </oneOrMore>
+
+ <!-- @COMPAT: The below score attributes are invalid here -->
+ <optional>
+ <choice>
+ <externalRef href="score.rng"/>
+ <attribute name="score-attribute"><text/></attribute>
+ </choice>
+ </optional>
+ </group>
+ </choice>
+ </element>
+ </define>
+
+
+ <!-- 4. rule element in other contexts allowing node attribute expressions -->
+ <define name="element-rule-node-allowed">
+ <element name="rule">
+ <choice>
+ <attribute name="id-ref"><data type="IDREF"/></attribute>
+ <group>
+ <ref name="rule-common"/>
+ <oneOrMore>
+ <choice>
+ <ref name="expression"/>
+ <ref name="date_expression"/>
+ <ref name="element-rule-node-allowed"/>
+
+ <!-- @COMPAT: The below expression types are invalid here -->
+ <ref name="rsc_expression"/>
+ <ref name="op_expression"/>
+ </choice>
+ </oneOrMore>
+
+ <!-- @COMPAT: The below score attributes are invalid here -->
+ <optional>
+ <choice>
+ <externalRef href="score.rng"/>
+ <attribute name="score-attribute"><text/></attribute>
+ </choice>
+ </optional>
+ </group>
+ </choice>
+ </element>
+ </define>
+
+ <!-- 5. rule element within all other contexts -->
+ <define name="element-rule">
+ <element name="rule">
+ <choice>
+ <attribute name="id-ref"><data type="IDREF"/></attribute>
+ <group>
+ <ref name="rule-common"/>
+ <oneOrMore>
+ <choice>
+ <ref name="date_expression"/>
+ <ref name="element-rule"/>
+
+ <!-- @COMPAT: The below expression types are invalid here -->
+ <ref name="expression"/>
+ <ref name="rsc_expression"/>
+ <ref name="op_expression"/>
+ </choice>
+ </oneOrMore>
+
+ <!-- @COMPAT: The below score attributes are invalid here -->
+ <optional>
+ <choice>
+ <externalRef href="score.rng"/>
+ <attribute name="score-attribute"><text/></attribute>
+ </choice>
+ </optional>
+ </group>
+ </choice>
+ </element>
+ </define>
+
+ <!-- Attributes that are common to all rule elements -->
+ <define name="rule-common">
+ <attribute name="id"><data type="ID"/></attribute>
+ <optional>
+ <attribute name="boolean-op">
+ <choice>
+ <value>or</value>
+ <value>and</value>
+ </choice>
+ </attribute>
+ </optional>
+
+ <!--
+ @COMPAT Role applies only to rules within location constraints. When we can
+ break behavioral backward compatibility, move this to
+ rule-element-location.
+ -->
+ <optional>
+ <attribute name="role"><text/></attribute>
+ </optional>
+ </define>
+
+ <!-- A node attribute expression -->
+ <define name="expression">
+ <element name="expression">
+ <ref name="expression-common"/>
+
+ <optional>
+ <attribute name="value-source" ann:defaultValue="literal">
+ <choice>
+ <value>literal</value>
+ <!-- @COMPAT: These value-source choices are invalid here -->
+ <value>param</value>
+ <value>meta</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+
+ <!-- A node attribute expression in a location constraint -->
+ <define name="expression-location">
+ <element name="expression">
+ <ref name="expression-common"/>
+ <optional>
+ <attribute name="value-source" ann:defaultValue="literal">
+ <choice>
+ <value>literal</value>
+ <value>param</value>
+ <value>meta</value>
+ </choice>
+ </attribute>
+ </optional>
+ </element>
+ </define>
+
+ <!-- Attributes that are common to all <expression> elements -->
+ <define name="expression-common">
+ <attribute name="id"><data type="ID"/></attribute>
+ <attribute name="attribute"><text/></attribute>
+ <choice>
+ <group>
+ <attribute name="operation">
+ <choice>
+ <value>defined</value>
+ <value>not_defined</value>
+ </choice>
+ </attribute>
+ <!-- @COMPAT value attribute should be prohibited here -->
+ <optional>
+ <attribute name="value"><text/></attribute>
+ </optional>
+ </group>
+ <group>
+ <attribute name="operation">
+ <choice>
+ <value>lt</value>
+ <value>gt</value>
+ <value>lte</value>
+ <value>gte</value>
+ <value>eq</value>
+ <value>ne</value>
+ </choice>
+ </attribute>
+ <!-- @COMPAT value attribute should be required here -->
+ <optional>
+ <attribute name="value"><text/></attribute>
+ </optional>
+ </group>
+ </choice>
+ <optional>
+ <attribute name="type" ann:defaultValue="string">
+ <choice>
+ <value>string</value>
+ <value>integer</value>
+ <value>number</value>
+ <value>version</value>
+ </choice>
+ </attribute>
+ </optional>
+ </define>
+
+ <define name="date_expression">
+ <element name="date_expression">
+ <attribute name="id"><data type="ID"/></attribute>
+ <choice>
+ <group>
+ <attribute name="operation"><value>in_range</value></attribute>
+ <choice>
+ <attribute name="start"><text/></attribute>
+ <attribute name="end"><text/></attribute>
+ <group>
+ <attribute name="start"><text/></attribute>
+ <attribute name="end"><text/></attribute>
+ </group>
+ </choice>
+ <optional>
+ <ref name="duration"/>
+ </optional>
+ </group>
+ <group>
+ <attribute name="operation"><value>gt</value></attribute>
+ <attribute name="start"><text/></attribute>
+ </group>
+ <group>
+ <attribute name="operation"><value>lt</value></attribute>
+ <attribute name="end"><text/></attribute>
+ </group>
+ <group>
+ <attribute name="operation"><value>date_spec</value></attribute>
+ <ref name="date_spec"/>
+ </group>
+ </choice>
+ </element>
+ </define>
+
+ <define name="rsc_expression">
+ <element name="rsc_expression">
+ <attribute name="id"><data type="ID"/></attribute>
+ <optional>
+ <attribute name="class"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="provider"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="type"><text/></attribute>
+ </optional>
+ </element>
+ </define>
+
+ <define name="op_expression">
+ <element name="op_expression">
+ <attribute name="id"><data type="ID"/></attribute>
+ <attribute name="name"><text/></attribute>
+ <optional>
+ <attribute name="interval"><text/></attribute>
+ </optional>
+ </element>
+ </define>
+
+ <define name="duration">
+ <element name="duration">
+ <attribute name="id"><data type="ID"/></attribute>
+ <optional>
+ <attribute name="years"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="months"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="weeks"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="days"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="hours"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="minutes"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="seconds"><text/></attribute>
+ </optional>
+
+ <!-- @COMPAT: The below attributes are invalid here -->
+ <optional>
+ <attribute name="monthdays"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="weekdays"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="yearsdays"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="weekyears"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="moon"><text/></attribute>
+ </optional>
+ </element>
+ </define>
+
+ <define name="date_spec">
+ <element name="date_spec">
+ <attribute name="id"><data type="ID"/></attribute>
+ <optional>
+ <attribute name="years"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="months"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="monthdays"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="hours"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="minutes"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="seconds"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="yeardays"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="weekyears"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="weeks"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="weekdays"><text/></attribute>
+ </optional>
+ <optional>
+ <attribute name="moon"><text/></attribute>
+ </optional>
+
+ <!-- @COMPAT: The below attributes are invalid here -->
+ <optional>
+ <attribute name="yearsdays"><text/></attribute>
+ </optional>
+ </element>
+ </define>
+
+</grammar>