Page MenuHomeClusterLabs Projects

rule-3.10.rng
No OneTemporary

rule-3.10.rng

<?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>

File Metadata

Mime Type
text/xml
Expires
Tue, Oct 29, 7:28 PM (1 d, 16 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
907530
Default Alt Text
rule-3.10.rng (13 KB)

Event Timeline