diff --git a/cts/schemas/test-3/ref/nagios.ref-4 b/cts/schemas/test-3/ref/nagios.ref-4 index 6d5ecca944..4719168f78 100644 --- a/cts/schemas/test-3/ref/nagios.ref-4 +++ b/cts/schemas/test-3/ref/nagios.ref-4 @@ -1,188 +1,111 @@ <cib crm_feature_set="3.19.7" validate-with="pacemaker-4.0" epoch="8" num_updates="0" admin_epoch="0" original="1"> <configuration original="1"> <!-- The essential elements of this test are: * There is an nagios template and an ocf template. * There are nagios and ocf primitives, defined either inline or by reference to the corresponding template. * There is a group with only nagios primitives and a group with both nagios and ocf primitives. * There is a cloned nagios resource and a cloned ocf resource. * There is a cloned group containing only nagios primitives and a cloned group containing both nagios and ocf primitives. * There is a bundle containing an nagios primitive. * There are various constraints, many of which reference nagios resources. In this situation: * The nagios templates and primitives should be dropped, while the ocf ones should be kept. * Groups and clones that would become empty should be dropped. * Groups containing ocf primitives should be kept; only their nagios members should be dropped. * The bundle should be kept so that its container remains managed; its primitive should be dropped. * Constraints with attributes referencing nagios resources should be dropped. * Resource sets containing only references to nagios resources should be dropped. * Constraints with resource sets should be dropped if all of their resource sets should be dropped. --> <crm_config original="1"/> <nodes original="1"/> <resources original="1"> - <template id="template_drop" class="nagios" type="Dummy" original="1"/> <template id="template_keep" class="ocf" provider="pacemaker" type="Dummy" original="1"/> - <primitive id="primitive1_drop" class="nagios" type="Dummy" original="1"/> <primitive id="primitive2_keep" class="ocf" provider="pacemaker" type="Dummy" original="1"/> - <primitive id="primitive3_drop" template="template_drop" original="1"/> <primitive id="primitive4_keep" template="template_keep" original="1"/> - <group id="grp1_drop" original="1"> - <primitive id="grp1_rsc1_drop" class="nagios" type="Dummy" original="1"/> - <primitive id="grp1_rsc2_drop" template="template_drop" original="1"/> - </group> <group id="grp2_keep" original="1"> - <primitive id="grp2_rsc1_drop" class="nagios" type="Dummy" original="1"/> <primitive id="grp2_rsc2_keep" class="ocf" provider="pacemaker" type="Dummy" original="1"/> - <primitive id="grp2_rsc3_drop" template="template_drop" original="1"/> <primitive id="grp2_rsc4_keep" template="template_keep" original="1"/> </group> - <clone id="clone1_drop" original="1"> - <primitive id="clone1_rsc_drop" class="nagios" type="Dummy" original="1"/> - </clone> <clone id="clone2_keep" original="1"> <primitive id="clone2_rsc_keep" class="ocf" provider="pacemaker" type="Dummy" original="1"/> </clone> - <clone id="clone3_drop" original="1"> - <group id="clone3_grp_drop" original="1"> - <primitive id="clone3_grp_rsc1_drop" class="nagios" type="Dummy" original="1"/> - <primitive id="clone3_grp_rsc2_drop" template="template_drop" original="1"/> - </group> - </clone> <clone id="clone4_keep" original="1"> <group id="clone4_grp_keep" original="1"> - <primitive id="clone4_grp_rsc1_drop" class="nagios" type="Dummy" original="1"/> <primitive id="clone4_grp_rsc2_keep" class="ocf" provider="pacemaker" type="Dummy" original="1"/> - <primitive id="clone4_grp_rsc3_drop" template="template_drop" original="1"/> <primitive id="clone4_grp_rsc4_keep" template="template_keep" original="1"/> </group> </clone> <bundle id="bundle_keep" original="1"> <podman image="image" original="1"/> - <primitive id="bundle_rsc_drop" class="nagios" type="Dummy" original="1"/> </bundle> </resources> <constraints original="1"> - <rsc_location id="location1_drop" rsc="primitive1_drop" node="node1" score="INFINITY" original="1"/> <rsc_location id="location2_keep" rsc="primitive2_keep" node="node1" score="INFINITY" original="1"/> - <rsc_location id="location3_drop" node="node1" score="INFINITY" original="1"> - <resource_set id="location3_drop-set" original="1"> - <resource_ref id="grp1_drop" original="1"/> - <resource_ref id="clone1_drop" original="1"/> - </resource_set> - </rsc_location> <rsc_location id="location4_keep" node="node1" score="INFINITY" original="1"> <resource_set id="location4_keep-set" original="1"> <resource_ref id="clone2_keep" original="1"/> - <resource_ref id="clone3_drop" original="1"/> <resource_ref id="clone4_keep" original="1"/> </resource_set> </rsc_location> <rsc_location id="location5_keep" node="node1" score="INFINITY" original="1"> - <resource_set id="location5_keep-set_drop" original="1"> - <resource_ref id="grp1_drop" original="1"/> - <resource_ref id="clone1_drop" original="1"/> - </resource_set> <resource_set id="location5_keep-set_keep" original="1"> <resource_ref id="clone2_keep" original="1"/> - <resource_ref id="clone3_drop" original="1"/> <resource_ref id="clone4_keep" original="1"/> </resource_set> </rsc_location> <rsc_location id="location6_keep" rsc-pattern="primitive1_drop" node="node1" score="INFINITY" original="1"/> - <rsc_colocation id="colocation1_drop" rsc="primitive1_drop" with-rsc="primitive2_keep" original="1"/> - <rsc_colocation id="colocation2_drop" rsc="primitive2_keep" with-rsc="primitive1_drop" original="1"/> - <rsc_colocation id="colocation3_drop" rsc="primitive3_drop" with-rsc="primitive1_drop" original="1"/> <rsc_colocation id="colocation4_keep" rsc="primitive4_keep" with-rsc="primitive2_keep" original="1"/> - <rsc_colocation id="colocation5_drop" original="1"> - <resource_set id="colocation5_drop-set" original="1"> - <resource_ref id="grp1_drop" original="1"/> - <resource_ref id="clone1_drop" original="1"/> - </resource_set> - </rsc_colocation> <rsc_colocation id="colocation6_keep" original="1"> <resource_set id="colocation6_keep-set" original="1"> <resource_ref id="clone2_keep" original="1"/> - <resource_ref id="clone3_drop" original="1"/> <resource_ref id="clone4_keep" original="1"/> </resource_set> </rsc_colocation> <rsc_colocation id="colocation7_keep" original="1"> - <resource_set id="colocation7_keep-set_drop" original="1"> - <resource_ref id="grp1_drop" original="1"/> - <resource_ref id="clone1_drop" original="1"/> - </resource_set> <resource_set id="colocation7_keep-set_keep" original="1"> <resource_ref id="clone2_keep" original="1"/> - <resource_ref id="clone3_drop" original="1"/> <resource_ref id="clone4_keep" original="1"/> </resource_set> </rsc_colocation> - <rsc_order id="order1_drop" first="primitive1_drop" then="primitive2_keep" original="1"/> - <rsc_order id="order2_drop" first="primitive2_keep" then="primitive1_drop" original="1"/> - <rsc_order id="order3_drop" first="primitive3_drop" then="primitive1_drop" original="1"/> <rsc_order id="order4_keep" first="primitive4_keep" then="primitive2_keep" original="1"/> - <rsc_order id="order5_drop" original="1"> - <resource_set id="order5_drop-set" original="1"> - <resource_ref id="grp1_drop" original="1"/> - <resource_ref id="clone1_drop" original="1"/> - </resource_set> - </rsc_order> <rsc_order id="order6_keep" original="1"> <resource_set id="order6_keep-set" original="1"> <resource_ref id="clone2_keep" original="1"/> - <resource_ref id="clone3_drop" original="1"/> <resource_ref id="clone4_keep" original="1"/> </resource_set> </rsc_order> <rsc_order id="order7_keep" original="1"> - <resource_set id="order7_keep-set_drop" original="1"> - <resource_ref id="grp1_drop" original="1"/> - <resource_ref id="clone1_drop" original="1"/> - </resource_set> <resource_set id="order7_keep-set_keep" original="1"> <resource_ref id="clone2_keep" original="1"/> - <resource_ref id="clone3_drop" original="1"/> <resource_ref id="clone4_keep" original="1"/> </resource_set> </rsc_order> - <rsc_ticket id="ticket1_drop" rsc="primitive1_drop" ticket="ticket1" original="1"/> <rsc_ticket id="ticket2_keep" rsc="primitive2_keep" ticket="ticket1" original="1"/> - <rsc_ticket id="ticket3_drop" ticket="ticket1" original="1"> - <resource_set id="ticket3_drop-set" original="1"> - <resource_ref id="grp1_drop" original="1"/> - <resource_ref id="clone1_drop" original="1"/> - </resource_set> - </rsc_ticket> <rsc_ticket id="ticket4_keep" ticket="ticket1" original="1"> <resource_set id="ticket4_keep-set" original="1"> <resource_ref id="clone2_keep" original="1"/> - <resource_ref id="clone3_drop" original="1"/> <resource_ref id="clone4_keep" original="1"/> </resource_set> </rsc_ticket> <rsc_ticket id="ticket5_keep" ticket="ticket1" original="1"> - <resource_set id="ticket5_keep-set_drop" original="1"> - <resource_ref id="grp1_drop" original="1"/> - <resource_ref id="clone1_drop" original="1"/> - </resource_set> <resource_set id="ticket5_keep-set_keep" original="1"> <resource_ref id="clone2_keep" original="1"/> - <resource_ref id="clone3_drop" original="1"/> <resource_ref id="clone4_keep" original="1"/> </resource_set> </rsc_ticket> </constraints> </configuration> <status original="1"/> </cib> diff --git a/cts/schemas/test-3/ref/nagios.ref-99 b/cts/schemas/test-3/ref/nagios.ref-99 index 315d9d2587..4b4aa496e0 100644 --- a/cts/schemas/test-3/ref/nagios.ref-99 +++ b/cts/schemas/test-3/ref/nagios.ref-99 @@ -1,188 +1,111 @@ <cib crm_feature_set="3.19.7" validate-with="pacemaker-4.0" epoch="8" num_updates="0" admin_epoch="0"> <configuration> <!-- The essential elements of this test are: * There is an nagios template and an ocf template. * There are nagios and ocf primitives, defined either inline or by reference to the corresponding template. * There is a group with only nagios primitives and a group with both nagios and ocf primitives. * There is a cloned nagios resource and a cloned ocf resource. * There is a cloned group containing only nagios primitives and a cloned group containing both nagios and ocf primitives. * There is a bundle containing an nagios primitive. * There are various constraints, many of which reference nagios resources. In this situation: * The nagios templates and primitives should be dropped, while the ocf ones should be kept. * Groups and clones that would become empty should be dropped. * Groups containing ocf primitives should be kept; only their nagios members should be dropped. * The bundle should be kept so that its container remains managed; its primitive should be dropped. * Constraints with attributes referencing nagios resources should be dropped. * Resource sets containing only references to nagios resources should be dropped. * Constraints with resource sets should be dropped if all of their resource sets should be dropped. --> <crm_config/> <nodes/> <resources> - <template id="template_drop" class="nagios" type="Dummy"/> <template id="template_keep" class="ocf" provider="pacemaker" type="Dummy"/> - <primitive id="primitive1_drop" class="nagios" type="Dummy"/> <primitive id="primitive2_keep" class="ocf" provider="pacemaker" type="Dummy"/> - <primitive id="primitive3_drop" template="template_drop"/> <primitive id="primitive4_keep" template="template_keep"/> - <group id="grp1_drop"> - <primitive id="grp1_rsc1_drop" class="nagios" type="Dummy"/> - <primitive id="grp1_rsc2_drop" template="template_drop"/> - </group> <group id="grp2_keep"> - <primitive id="grp2_rsc1_drop" class="nagios" type="Dummy"/> <primitive id="grp2_rsc2_keep" class="ocf" provider="pacemaker" type="Dummy"/> - <primitive id="grp2_rsc3_drop" template="template_drop"/> <primitive id="grp2_rsc4_keep" template="template_keep"/> </group> - <clone id="clone1_drop"> - <primitive id="clone1_rsc_drop" class="nagios" type="Dummy"/> - </clone> <clone id="clone2_keep"> <primitive id="clone2_rsc_keep" class="ocf" provider="pacemaker" type="Dummy"/> </clone> - <clone id="clone3_drop"> - <group id="clone3_grp_drop"> - <primitive id="clone3_grp_rsc1_drop" class="nagios" type="Dummy"/> - <primitive id="clone3_grp_rsc2_drop" template="template_drop"/> - </group> - </clone> <clone id="clone4_keep"> <group id="clone4_grp_keep"> - <primitive id="clone4_grp_rsc1_drop" class="nagios" type="Dummy"/> <primitive id="clone4_grp_rsc2_keep" class="ocf" provider="pacemaker" type="Dummy"/> - <primitive id="clone4_grp_rsc3_drop" template="template_drop"/> <primitive id="clone4_grp_rsc4_keep" template="template_keep"/> </group> </clone> <bundle id="bundle_keep"> <podman image="image"/> - <primitive id="bundle_rsc_drop" class="nagios" type="Dummy"/> </bundle> </resources> <constraints> - <rsc_location id="location1_drop" rsc="primitive1_drop" node="node1" score="INFINITY"/> <rsc_location id="location2_keep" rsc="primitive2_keep" node="node1" score="INFINITY"/> - <rsc_location id="location3_drop" node="node1" score="INFINITY"> - <resource_set id="location3_drop-set"> - <resource_ref id="grp1_drop"/> - <resource_ref id="clone1_drop"/> - </resource_set> - </rsc_location> <rsc_location id="location4_keep" node="node1" score="INFINITY"> <resource_set id="location4_keep-set"> <resource_ref id="clone2_keep"/> - <resource_ref id="clone3_drop"/> <resource_ref id="clone4_keep"/> </resource_set> </rsc_location> <rsc_location id="location5_keep" node="node1" score="INFINITY"> - <resource_set id="location5_keep-set_drop"> - <resource_ref id="grp1_drop"/> - <resource_ref id="clone1_drop"/> - </resource_set> <resource_set id="location5_keep-set_keep"> <resource_ref id="clone2_keep"/> - <resource_ref id="clone3_drop"/> <resource_ref id="clone4_keep"/> </resource_set> </rsc_location> <rsc_location id="location6_keep" rsc-pattern="primitive1_drop" node="node1" score="INFINITY"/> - <rsc_colocation id="colocation1_drop" rsc="primitive1_drop" with-rsc="primitive2_keep"/> - <rsc_colocation id="colocation2_drop" rsc="primitive2_keep" with-rsc="primitive1_drop"/> - <rsc_colocation id="colocation3_drop" rsc="primitive3_drop" with-rsc="primitive1_drop"/> <rsc_colocation id="colocation4_keep" rsc="primitive4_keep" with-rsc="primitive2_keep"/> - <rsc_colocation id="colocation5_drop"> - <resource_set id="colocation5_drop-set"> - <resource_ref id="grp1_drop"/> - <resource_ref id="clone1_drop"/> - </resource_set> - </rsc_colocation> <rsc_colocation id="colocation6_keep"> <resource_set id="colocation6_keep-set"> <resource_ref id="clone2_keep"/> - <resource_ref id="clone3_drop"/> <resource_ref id="clone4_keep"/> </resource_set> </rsc_colocation> <rsc_colocation id="colocation7_keep"> - <resource_set id="colocation7_keep-set_drop"> - <resource_ref id="grp1_drop"/> - <resource_ref id="clone1_drop"/> - </resource_set> <resource_set id="colocation7_keep-set_keep"> <resource_ref id="clone2_keep"/> - <resource_ref id="clone3_drop"/> <resource_ref id="clone4_keep"/> </resource_set> </rsc_colocation> - <rsc_order id="order1_drop" first="primitive1_drop" then="primitive2_keep"/> - <rsc_order id="order2_drop" first="primitive2_keep" then="primitive1_drop"/> - <rsc_order id="order3_drop" first="primitive3_drop" then="primitive1_drop"/> <rsc_order id="order4_keep" first="primitive4_keep" then="primitive2_keep"/> - <rsc_order id="order5_drop"> - <resource_set id="order5_drop-set"> - <resource_ref id="grp1_drop"/> - <resource_ref id="clone1_drop"/> - </resource_set> - </rsc_order> <rsc_order id="order6_keep"> <resource_set id="order6_keep-set"> <resource_ref id="clone2_keep"/> - <resource_ref id="clone3_drop"/> <resource_ref id="clone4_keep"/> </resource_set> </rsc_order> <rsc_order id="order7_keep"> - <resource_set id="order7_keep-set_drop"> - <resource_ref id="grp1_drop"/> - <resource_ref id="clone1_drop"/> - </resource_set> <resource_set id="order7_keep-set_keep"> <resource_ref id="clone2_keep"/> - <resource_ref id="clone3_drop"/> <resource_ref id="clone4_keep"/> </resource_set> </rsc_order> - <rsc_ticket id="ticket1_drop" rsc="primitive1_drop" ticket="ticket1"/> <rsc_ticket id="ticket2_keep" rsc="primitive2_keep" ticket="ticket1"/> - <rsc_ticket id="ticket3_drop" ticket="ticket1"> - <resource_set id="ticket3_drop-set"> - <resource_ref id="grp1_drop"/> - <resource_ref id="clone1_drop"/> - </resource_set> - </rsc_ticket> <rsc_ticket id="ticket4_keep" ticket="ticket1"> <resource_set id="ticket4_keep-set"> <resource_ref id="clone2_keep"/> - <resource_ref id="clone3_drop"/> <resource_ref id="clone4_keep"/> </resource_set> </rsc_ticket> <rsc_ticket id="ticket5_keep" ticket="ticket1"> - <resource_set id="ticket5_keep-set_drop"> - <resource_ref id="grp1_drop"/> - <resource_ref id="clone1_drop"/> - </resource_set> <resource_set id="ticket5_keep-set_keep"> <resource_ref id="clone2_keep"/> - <resource_ref id="clone3_drop"/> <resource_ref id="clone4_keep"/> </resource_set> </rsc_ticket> </constraints> </configuration> <status/> </cib> diff --git a/xml/resources-4.0.rng b/xml/resources-4.0.rng index 44cd16e51e..8f019d09b6 100644 --- a/xml/resources-4.0.rng +++ b/xml/resources-4.0.rng @@ -1,377 +1,374 @@ <?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-resources"/> </start> <!-- Include rule definitions so that we can override element-nvset.rule based on context --> <include href="rule-4.0.rng"> <start combine="choice"> <notAllowed/> </start> </include> <define name="element-resources"> <element name="resources"> <zeroOrMore> <choice> <ref name="element-primitive"/> <ref name="element-template"/> <ref name="element-group"/> <ref name="element-clone"/> <ref name="element-bundle"/> </choice> </zeroOrMore> </element> </define> <define name="element-primitive"> <element name="primitive"> <interleave> <attribute name="id"><data type="ID"/></attribute> <choice> <group> <ref name="element-resource-class"/> <attribute name="type"><text/></attribute> </group> <attribute name="template"><data type="IDREF"/></attribute> </choice> <optional> <attribute name="description"><text/></attribute> </optional> <ref name="element-resource-extra.primitive-template"/> <ref name="element-operations"/> </interleave> </element> </define> <define name="element-template"> <element name="template"> <interleave> <attribute name="id"><data type="ID"/></attribute> <ref name="element-resource-class"/> <attribute name="type"><text/></attribute> <optional> <attribute name="description"><text/></attribute> </optional> <ref name="element-resource-extra.primitive-template"/> <ref name="element-operations"/> </interleave> </element> </define> <define name="element-bundle"> <element name="bundle"> <interleave> <attribute name="id"><data type="ID"/></attribute> <optional> <attribute name="description"><text/></attribute> </optional> <ref name="element-resource-extra"/> <choice> <element name="docker"> <attribute name="image"><text/></attribute> <optional> <attribute name="replicas"><data type="integer"/></attribute> </optional> <optional> <attribute name="replicas-per-host"><data type="integer"/></attribute> </optional> <optional> <attribute name="promoted-max"><data type="integer"/></attribute> </optional> <optional> <attribute name="run-command"> <text/></attribute> </optional> <optional> <attribute name="network"><text/></attribute> </optional> <optional> <attribute name="options"><text/></attribute> </optional> </element> <!-- @COMPAT rkt containers in bundles are deprecated since 2.1.8 --> <element name="rkt"> <attribute name="image"><text/></attribute> <optional> <attribute name="replicas"><data type="integer"/></attribute> </optional> <optional> <attribute name="replicas-per-host"><data type="integer"/></attribute> </optional> <optional> <attribute name="promoted-max"><data type="integer"/></attribute> </optional> <optional> <attribute name="run-command"> <text/></attribute> </optional> <optional> <attribute name="network"><text/></attribute> </optional> <optional> <attribute name="options"><text/></attribute> </optional> </element> <element name="podman"> <attribute name="image"><text/></attribute> <optional> <attribute name="replicas"><data type="integer"/></attribute> </optional> <optional> <attribute name="replicas-per-host"><data type="integer"/></attribute> </optional> <optional> <attribute name="promoted-max"><data type="integer"/></attribute> </optional> <optional> <attribute name="run-command"> <text/></attribute> </optional> <optional> <attribute name="network"><text/></attribute> </optional> <optional> <attribute name="options"><text/></attribute> </optional> </element> </choice> <optional> <element name="network"> <optional> <attribute name="ip-range-start"><text/></attribute> </optional> <optional> <attribute name="control-port"><data type="integer"/></attribute> </optional> <optional> <attribute name="host-interface"><text/></attribute> </optional> <optional> <attribute name="host-netmask"><data type="integer"/></attribute> </optional> <optional> <attribute name="add-host"><data type="boolean"/></attribute> </optional> <zeroOrMore> <element name="port-mapping"> <attribute name="id"><data type="ID"/></attribute> <choice> <group> <attribute name="port"><data type="integer"/></attribute> <optional> <attribute name="internal-port"><data type="integer"/></attribute> </optional> </group> <attribute name="range"> <data type="string"> <param name="pattern">([0-9\-]+)</param> </data> </attribute> </choice> </element> </zeroOrMore> </element> </optional> <optional> <element name="storage"> <zeroOrMore> <element name="storage-mapping"> <attribute name="id"><data type="ID"/></attribute> <choice> <attribute name="source-dir"><text/></attribute> <attribute name="source-dir-root"><text/></attribute> </choice> <attribute name="target-dir"><text/></attribute> <optional> <attribute name="options"><text/></attribute> </optional> </element> </zeroOrMore> </element> </optional> <optional> <ref name="element-primitive"/> </optional> </interleave> </element> </define> <define name="element-group"> <element name="group"> <attribute name="id"><data type="ID"/></attribute> <optional> <attribute name="description"><text/></attribute> </optional> <interleave> <ref name="element-resource-extra"/> <oneOrMore> <ref name="element-primitive"/> </oneOrMore> </interleave> </element> </define> <define name="element-clone"> <element name="clone"> <attribute name="id"><data type="ID"/></attribute> <optional> <attribute name="description"><text/></attribute> </optional> <interleave> <ref name="element-resource-extra"/> <choice> <ref name="element-primitive"/> <ref name="element-group"/> </choice> </interleave> </element> </define> <define name="element-resource-extra"> <zeroOrMore> <choice> <ref name="element-instance_attributes"/> <element name="meta_attributes"> <externalRef href="nvset-4.0.rng"/> </element> </choice> </zeroOrMore> </define> <define name="element-resource-extra.primitive-template"> <zeroOrMore> <choice> <ref name="element-instance_attributes"/> <element name="meta_attributes"> <externalRef href="nvset-4.0.rng"/> </element> <element name="utilization"> <externalRef href="nvset-4.0.rng"/> </element> </choice> </zeroOrMore> </define> <define name="element-resource-extra.op"> <zeroOrMore> <choice> <ref name="element-instance_attributes"/> <element name="meta_attributes"> <grammar> <include href="nvset-4.0.rng"> <!-- @COMPAT: Support for node attribute expressions is deprecated here. We can just delete this define when we drop support. --> <define name="element-nvset.rule"> <parentRef name="element-rule-node-allowed"/> </define> </include> </grammar> </element> </choice> </zeroOrMore> </define> <define name="element-operations"> <optional> <element name="operations"> <optional> <attribute name="id"><data type="ID"/></attribute> </optional> <optional> <attribute name="id-ref"><data type="IDREF"/></attribute> </optional> <zeroOrMore> <element name="op"> <attribute name="id"><data type="ID"/></attribute> <attribute name="name"><text/></attribute> <attribute name="interval"><text/></attribute> <optional> <attribute name="description"><text/></attribute> </optional> <optional> <choice> <attribute name="start-delay"><text/></attribute> <attribute name="interval-origin"><text/></attribute> </choice> </optional> <optional> <attribute name="timeout"><text/></attribute> </optional> <optional> <attribute name="enabled"><data type="boolean"/></attribute> </optional> <optional> <attribute name="record-pending"><data type="boolean"/></attribute> </optional> <optional> <attribute name="role"> <choice> <value>Stopped</value> <value>Started</value> <value>Promoted</value> <value>Unpromoted</value> <value>Slave</value> <value>Master</value> </choice> </attribute> </optional> <optional> <attribute name="on-fail"> <choice> <value>ignore</value> <value>block</value> <value>demote</value> <value>stop</value> <value>restart</value> <value>standby</value> <value>fence</value> <value>restart-container</value> </choice> </attribute> </optional> <ref name="element-resource-extra.op"/> </element> </zeroOrMore> </element> </optional> </define> <define name="element-resource-class"> <choice> <group> <attribute name="class"><value>ocf</value></attribute> <attribute name="provider"><text/></attribute> </group> <attribute name="class"> <choice> <value>lsb</value> <value>heartbeat</value> <value>stonith</value> <value>service</value> <value>systemd</value> - - <!-- @COMPAT nagios resources are deprecated since 2.1.6 --> - <value>nagios</value> </choice> </attribute> </choice> </define> <define name="element-instance_attributes"> <element name="instance_attributes"> <grammar> <include href="nvset-4.0.rng"> <define name="element-nvset.rule"> <parentRef name="element-rule-node-allowed"/> </define> </include> </grammar> </element> </define> </grammar> diff --git a/xml/upgrade-3.10-4.xsl b/xml/upgrade-3.10-4.xsl index 5c7bd8cc35..7e286e31e0 100644 --- a/xml/upgrade-3.10-4.xsl +++ b/xml/upgrade-3.10-4.xsl @@ -1,162 +1,164 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- Use comments liberally as future maintainers may be unfamiliar with XSLT. --> <!-- upgrade-3.10-4.xsl Guarantees after this transformation: - * There are no upstart-class resources. If there were any prior to this - transformation, they have been dropped. + * There are no nagios-class or upstart-class resources. If there were any prior + to this transformation, they have been dropped. --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:import href="upgrade-3.10-common.xsl"/> <!-- XSLT 1.0 lacks upper-case() and lower-case() functions --> <xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/> <xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/> <!-- Index all resource templates by ID --> <xsl:key name="template_id" match="template" use="@id"/> <!-- Copy everything unaltered by default --> <xsl:template match="/|@*|node()"> <xsl:call-template name="identity"/> </xsl:template> <!-- Resources --> <!-- The following XSL templates use XPath 1.0 set intersection idioms --> <!-- Upstart-class templates --> <xsl:variable name="dropped_templates" select="//template - [translate(@class, $upper, $lower) = 'upstart']"/> + [(translate(@class, $upper, $lower) = 'nagios') + or (translate(@class, $upper, $lower) = 'upstart')]"/> <!-- Upstart-class primitives --> <xsl:variable name="dropped_primitives" select="//primitive - [(translate(@class, $upper, $lower) = 'upstart') + [(translate(@class, $upper, $lower) = 'nagios') + or (translate(@class, $upper, $lower) = 'upstart') or (@template and (count(key('template_id', @template) |$dropped_templates) = count($dropped_templates)))]"/> -<!-- Groups containing only upstart-class primitives --> +<!-- Groups containing only nagios- and upstart-class primitives --> <xsl:variable name="dropped_groups" select="//group[count(primitive|$dropped_primitives) = count($dropped_primitives)]"/> -<!-- Clones containing only upstart-class primitives --> +<!-- Clones containing only nagios- and upstart-class primitives --> <xsl:variable name="dropped_clones" select="//clone[count(.//primitive|$dropped_primitives) = count($dropped_primitives)]"/> <!-- All dropped resources --> <xsl:variable name="dropped_resources" select="$dropped_primitives|$dropped_groups|$dropped_clones"/> -<!-- Drop upstart-class resource templates --> +<!-- Drop nagios- and upstart-class resource templates --> <xsl:template match="template"> <xsl:if test="count(.|$dropped_templates) != count($dropped_templates)"> <xsl:call-template name="identity"/> </xsl:if> </xsl:template> -<!-- Drop upstart-class primitives --> +<!-- Drop nagios- and upstart-class primitives --> <xsl:template match="primitive"> <xsl:if test="count(.|$dropped_primitives) != count($dropped_primitives)"> <xsl:call-template name="identity"/> </xsl:if> </xsl:template> <!-- Drop groups that would become empty --> <xsl:template match="group"> <xsl:if test="count(.|$dropped_groups) != count($dropped_groups)"> <xsl:call-template name="identity"/> </xsl:if> </xsl:template> <!-- Drop clones that would become empty --> <xsl:template match="clone"> <xsl:if test="count(.|$dropped_clones) != count($dropped_clones)"> <xsl:call-template name="identity"/> </xsl:if> </xsl:template> <!-- Constraints --> <!-- Drop resource refs that refer to dropped resources --> <xsl:variable name="dropped_resource_refs" select="//resource_ref[@id = $dropped_resources/@id]"/> <xsl:template match="resource_ref"> <xsl:if test="count(.|$dropped_resource_refs) != count($dropped_resource_refs)"> <xsl:call-template name="identity"/> </xsl:if> </xsl:template> <!-- Drop resource sets that would become empty --> <xsl:variable name="dropped_resource_sets" select="//resource_set [count(resource_ref|$dropped_resource_refs) = count($dropped_resource_refs)]"/> <xsl:template match="resource_set"> <xsl:if test="count(.|$dropped_resource_sets) != count($dropped_resource_sets)"> <xsl:call-template name="identity"/> </xsl:if> </xsl:template> <!-- Drop constraints that would contain no valid resource references --> <xsl:template match="rsc_location|rsc_ticket"> <xsl:choose> <xsl:when test="@rsc = $dropped_resources/@id"/> <!-- The constraint contained resource sets, and they're all dropped --> <xsl:when test="resource_set and (count(resource_set|$dropped_resource_sets) = count($dropped_resource_sets))"/> <xsl:otherwise> <xsl:call-template name="identity"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="rsc_colocation"> <xsl:choose> <xsl:when test="@rsc = $dropped_resources/@id"/> <xsl:when test="@with-rsc = $dropped_resources/@id"/> <xsl:when test="resource_set and (count(resource_set|$dropped_resource_sets) = count($dropped_resource_sets))"/> <xsl:otherwise> <xsl:call-template name="identity"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="rsc_order"> <xsl:choose> <xsl:when test="@first = $dropped_resources/@id"/> <xsl:when test="@then = $dropped_resources/@id"/> <xsl:when test="resource_set and (count(resource_set|$dropped_resource_sets) = count($dropped_resource_sets))"/> <xsl:otherwise> <xsl:call-template name="identity"/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>