summaryrefslogtreecommitdiffstats
path: root/xml/test-2
diff options
context:
space:
mode:
Diffstat (limited to 'xml/test-2')
-rw-r--r--xml/test-2/010-rsc_colocation-dropped-for-noop-sa.ref60
-rw-r--r--xml/test-2/010-rsc_colocation-dropped-for-noop-sa.ref.err2
-rw-r--r--xml/test-2/010-rsc_colocation-dropped-for-noop-sa.xml62
-rw-r--r--xml/test-2/020-rsc-requires-inline.ref45
-rw-r--r--xml/test-2/020-rsc-requires-inline.ref.err1
-rw-r--r--xml/test-2/020-rsc-requires-inline.xml45
-rw-r--r--xml/test-2/021-rsc-requires-nvpair.ref47
-rw-r--r--xml/test-2/021-rsc-requires-nvpair.ref.err1
-rw-r--r--xml/test-2/021-rsc-requires-nvpair.xml48
-rw-r--r--xml/test-2/022-rsc-requires-counterexamples.ref48
-rw-r--r--xml/test-2/022-rsc-requires-counterexamples.ref.err2
-rw-r--r--xml/test-2/022-rsc-requires-counterexamples.xml50
-rw-r--r--xml/test-2/023-rsc-requires-no-override.ref56
-rw-r--r--xml/test-2/023-rsc-requires-no-override.ref.err4
-rw-r--r--xml/test-2/023-rsc-requires-no-override.xml66
-rw-r--r--xml/test-2/024-rsc-requires-no-selfclash.ref116
-rw-r--r--xml/test-2/024-rsc-requires-no-selfclash.ref.err14
-rw-r--r--xml/test-2/024-rsc-requires-no-selfclash.xml141
-rw-r--r--xml/test-2/030-clu-props-plain-rename.ref25
-rw-r--r--xml/test-2/030-clu-props-plain-rename.ref.err13
-rw-r--r--xml/test-2/030-clu-props-plain-rename.xml26
-rw-r--r--xml/test-2/031-clu-props-drop.ref14
-rw-r--r--xml/test-2/031-clu-props-drop.ref.err10
-rw-r--r--xml/test-2/031-clu-props-drop.xml21
-rw-r--r--xml/test-2/032-clu-props-move.ref18
-rw-r--r--xml/test-2/032-clu-props-move.ref.err3
-rw-r--r--xml/test-2/032-clu-props-move.xml16
-rw-r--r--xml/test-2/033-clu-props-move-merge.ref21
-rw-r--r--xml/test-2/033-clu-props-move-merge.ref.err3
-rw-r--r--xml/test-2/033-clu-props-move-merge.xml21
-rw-r--r--xml/test-2/034-clu-props-move-redef.ref14
-rw-r--r--xml/test-2/034-clu-props-move-redef.ref.err3
-rw-r--r--xml/test-2/034-clu-props-move-redef.xml15
-rw-r--r--xml/test-2/040-nodes-rename-type.ref15
-rw-r--r--xml/test-2/040-nodes-rename-type.ref.err2
-rw-r--r--xml/test-2/040-nodes-rename-type.xml16
-rw-r--r--xml/test-2/050-rsc-attrs-instance-plain-rename.ref24
-rw-r--r--xml/test-2/050-rsc-attrs-instance-plain-rename.ref.err1
-rw-r--r--xml/test-2/050-rsc-attrs-instance-plain-rename.xml25
-rw-r--r--xml/test-2/051-rsc-attrs-instance-pcmk_arg_map.ref48
-rw-r--r--xml/test-2/051-rsc-attrs-instance-pcmk_arg_map.ref.err3
-rw-r--r--xml/test-2/051-rsc-attrs-instance-pcmk_arg_map.xml51
-rw-r--r--xml/test-2/060-rsc-attrs-meta-isolation.ref25
-rw-r--r--xml/test-2/060-rsc-attrs-meta-isolation.ref.err4
-rw-r--r--xml/test-2/060-rsc-attrs-meta-isolation.xml27
-rw-r--r--xml/test-2/061-rsc-attrs-meta-exchange.ref27
-rw-r--r--xml/test-2/061-rsc-attrs-meta-exchange.ref.err3
-rw-r--r--xml/test-2/061-rsc-attrs-meta-exchange.xml30
-rw-r--r--xml/test-2/070-rsc-op-attrs-inst-requires-start.ref48
-rw-r--r--xml/test-2/070-rsc-op-attrs-inst-requires-start.ref.err1
-rw-r--r--xml/test-2/070-rsc-op-attrs-inst-requires-start.xml49
-rw-r--r--xml/test-2/071-rsc-op-attrs-inst-requires-nonstart.ref42
-rw-r--r--xml/test-2/071-rsc-op-attrs-inst-requires-nonstart.ref.err2
-rw-r--r--xml/test-2/071-rsc-op-attrs-inst-requires-nonstart.xml49
-rw-r--r--xml/test-2/072-rsc-op-attrs-inst-requires-no-override.ref54
-rw-r--r--xml/test-2/072-rsc-op-attrs-inst-requires-no-override.ref.err4
-rw-r--r--xml/test-2/072-rsc-op-attrs-inst-requires-no-override.xml61
-rw-r--r--xml/test-2/073-rsc-op-attrs-inst-meta-meaning.ref51
-rw-r--r--xml/test-2/073-rsc-op-attrs-inst-meta-meaning.ref.err4
-rw-r--r--xml/test-2/073-rsc-op-attrs-inst-meta-meaning.xml50
60 files changed, 1747 insertions, 0 deletions
diff --git a/xml/test-2/010-rsc_colocation-dropped-for-noop-sa.ref b/xml/test-2/010-rsc_colocation-dropped-for-noop-sa.ref
new file mode 100644
index 0000000..a4a4a23
--- /dev/null
+++ b/xml/test-2/010-rsc_colocation-dropped-for-noop-sa.ref
@@ -0,0 +1,60 @@
+<!--
+ Contrieved example of how rsc_colocation/@score-attribute might have been used
+
+ This was never implemented and, apparently, will not work.
+ -->
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063">
+ <instance_attributes id="virt-063-attrs">
+ <nvpair id="virt-063-AddrHttpdTogether" name="AddrHttpdTogether" value="INFINITY"/>
+ </instance_attributes>
+ </node>
+ <node id="virt-064" uname="virt-064">
+ <instance_attributes id="virt-064-attrs">
+ <nvpair id="virt-064-AddrHttpdTogether" name="AddrHttpdTogether" value="INFINITY"/>
+ </instance_attributes>
+ </node>
+ <node id="virt-069" uname="virt-069">
+ <instance_attributes id="virt-069-attrs">
+ <!-- IPaddr2 won't work here, is DNS-load-balanced or something... -->
+ <nvpair id="virt-069-AddrHttpdTogether" name="AddrHttpdTogether" value="-INFINITY"/>
+ </instance_attributes>
+ </node>
+
+ </nodes>
+ <resources>
+
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints>
+
+ <rsc_order id="order-addr-httpd" first="myAddr" then="myHttpd"/>
+
+ <!-- this never worked like that -->
+ <rsc_colocation id="colocation-addr-httpd" rsc="myHttpd" with-rsc="myAddr"/>
+
+ </constraints>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/010-rsc_colocation-dropped-for-noop-sa.ref.err b/xml/test-2/010-rsc_colocation-dropped-for-noop-sa.ref.err
new file mode 100644
index 0000000..50791bf
--- /dev/null
+++ b/xml/test-2/010-rsc_colocation-dropped-for-noop-sa.ref.err
@@ -0,0 +1,2 @@
+INFO: Constraints-colocation: colocation-addr-httpd: dropping score-attribute
+INFO: Constraints-colocation: ... was actually never in effect
diff --git a/xml/test-2/010-rsc_colocation-dropped-for-noop-sa.xml b/xml/test-2/010-rsc_colocation-dropped-for-noop-sa.xml
new file mode 100644
index 0000000..70bedfd
--- /dev/null
+++ b/xml/test-2/010-rsc_colocation-dropped-for-noop-sa.xml
@@ -0,0 +1,62 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<!--
+ Contrieved example of how rsc_colocation/@score-attribute might have been used
+
+ This was never implemented and, apparently, will not work.
+ -->
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063">
+ <instance_attributes id="virt-063-attrs">
+ <nvpair id="virt-063-AddrHttpdTogether" name="AddrHttpdTogether" value="INFINITY"/>
+ </instance_attributes>
+ </node>
+ <node id="virt-064" uname="virt-064">
+ <instance_attributes id="virt-064-attrs">
+ <nvpair id="virt-064-AddrHttpdTogether" name="AddrHttpdTogether" value="INFINITY"/>
+ </instance_attributes>
+ </node>
+ <node id="virt-069" uname="virt-069">
+ <instance_attributes id="virt-069-attrs">
+ <!-- IPaddr2 won't work here, is DNS-load-balanced or something... -->
+ <nvpair id="virt-069-AddrHttpdTogether" name="AddrHttpdTogether" value="-INFINITY"/>
+ </instance_attributes>
+ </node>
+
+ </nodes>
+ <resources>
+
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints>
+
+ <rsc_order id="order-addr-httpd" first="myAddr" then="myHttpd"/>
+
+ <!-- this never worked like that -->
+ <rsc_colocation id="colocation-addr-httpd" rsc="myHttpd" with-rsc="myAddr"
+ score-attribute="AddrHttpdTogether"/>
+
+ </constraints>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/020-rsc-requires-inline.ref b/xml/test-2/020-rsc-requires-inline.ref
new file mode 100644
index 0000000..cef2958
--- /dev/null
+++ b/xml/test-2/020-rsc-requires-inline.ref
@@ -0,0 +1,45 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <!-- relying on order (+ colocation) to guarantee "requires"
+ transitively (unfencing/fencing/quorum)? -->
+ <op id="myAddr-start" name="start" interval="0" timeout="40s"/>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ <meta_attributes id="_2TO3_myAddr-meta"><nvpair id="_2TO3_myAddr-start-meta-requires" name="requires" value="nothing"/>
+ </meta_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints>
+
+ <rsc_order id="order-addr-httpd" first="myAddr" then="myHttpd"/>
+ <rsc_colocation id="colocation-addr-httpd" rsc="myHttpd" with-rsc="myAddr" score="INFINITY"/>
+
+ </constraints>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/020-rsc-requires-inline.ref.err b/xml/test-2/020-rsc-requires-inline.ref.err
new file mode 100644
index 0000000..9c65697
--- /dev/null
+++ b/xml/test-2/020-rsc-requires-inline.ref.err
@@ -0,0 +1 @@
+DEBUG: Resources-operation: myAddr-start (rsc=myAddr): moving requires under meta_attributes as requires unless already defined there for matching start|promote
diff --git a/xml/test-2/020-rsc-requires-inline.xml b/xml/test-2/020-rsc-requires-inline.xml
new file mode 100644
index 0000000..630bb18
--- /dev/null
+++ b/xml/test-2/020-rsc-requires-inline.xml
@@ -0,0 +1,45 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <!-- relying on order (+ colocation) to guarantee "requires"
+ transitively (unfencing/fencing/quorum)? -->
+ <op id="myAddr-start" name="start" interval="0" timeout="40s"
+ requires="nothing"/>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints>
+
+ <rsc_order id="order-addr-httpd" first="myAddr" then="myHttpd"/>
+ <rsc_colocation id="colocation-addr-httpd" rsc="myHttpd" with-rsc="myAddr" score="INFINITY"/>
+
+ </constraints>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/021-rsc-requires-nvpair.ref b/xml/test-2/021-rsc-requires-nvpair.ref
new file mode 100644
index 0000000..3c239e4
--- /dev/null
+++ b/xml/test-2/021-rsc-requires-nvpair.ref
@@ -0,0 +1,47 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-start" name="start" interval="0" timeout="40s"/>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ <meta_attributes id="_2TO3_myAddr-start-metaparams">
+ <!-- relying on order (+ colocation) to guarantee "requires"
+ transitively (unfencing/fencing/quorum)? -->
+
+ <nvpair id="myAddr-start-requires" name="requires" value="nothing"/>
+ </meta_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints>
+
+ <rsc_order id="order-addr-httpd" first="myAddr" then="myHttpd"/>
+ <rsc_colocation id="colocation-addr-httpd" rsc="myHttpd" with-rsc="myAddr" score="INFINITY"/>
+
+ </constraints>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/021-rsc-requires-nvpair.ref.err b/xml/test-2/021-rsc-requires-nvpair.ref.err
new file mode 100644
index 0000000..6650f15
--- /dev/null
+++ b/xml/test-2/021-rsc-requires-nvpair.ref.err
@@ -0,0 +1 @@
+DEBUG: Resources-operation: myAddr-start (rsc=myAddr, meta=myAddr-start-metaparams): moving requires under meta_attributes as requires unless already defined there for matching start|promote
diff --git a/xml/test-2/021-rsc-requires-nvpair.xml b/xml/test-2/021-rsc-requires-nvpair.xml
new file mode 100644
index 0000000..6f75c20
--- /dev/null
+++ b/xml/test-2/021-rsc-requires-nvpair.xml
@@ -0,0 +1,48 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-start" name="start" interval="0" timeout="40s">
+ <meta_attributes id="myAddr-start-metaparams">
+ <!-- relying on order (+ colocation) to guarantee "requires"
+ transitively (unfencing/fencing/quorum)? -->
+ <nvpair id="myAddr-start-requires" name="requires" value="nothing"/>
+ </meta_attributes>
+ </op>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints>
+
+ <rsc_order id="order-addr-httpd" first="myAddr" then="myHttpd"/>
+ <rsc_colocation id="colocation-addr-httpd" rsc="myHttpd" with-rsc="myAddr" score="INFINITY"/>
+
+ </constraints>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/022-rsc-requires-counterexamples.ref b/xml/test-2/022-rsc-requires-counterexamples.ref
new file mode 100644
index 0000000..c100eef
--- /dev/null
+++ b/xml/test-2/022-rsc-requires-counterexamples.ref
@@ -0,0 +1,48 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-start" name="start" interval="0" timeout="40s">
+ <meta_attributes id="myAddr-start-metaparams">
+ <!-- fake-requires != requires -->
+ <nvpair id="myAddr-start-requires" name="fake-requires" value="nothing"/>
+ </meta_attributes>
+ </op>
+ <!-- stop != start -->
+ <op id="myAddr-stop" name="stop" interval="0" timeout="40s"/>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints>
+
+ <rsc_order id="order-addr-httpd" first="myAddr" then="myHttpd"/>
+ <rsc_colocation id="colocation-addr-httpd" rsc="myHttpd" with-rsc="myAddr" score="INFINITY"/>
+
+ </constraints>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/022-rsc-requires-counterexamples.ref.err b/xml/test-2/022-rsc-requires-counterexamples.ref.err
new file mode 100644
index 0000000..6f6a995
--- /dev/null
+++ b/xml/test-2/022-rsc-requires-counterexamples.ref.err
@@ -0,0 +1,2 @@
+INFO: Resources-operation: myAddr-stop (rsc=myAddr): dropping requires
+INFO: Resources-operation: ... only start/promote operation taken into account
diff --git a/xml/test-2/022-rsc-requires-counterexamples.xml b/xml/test-2/022-rsc-requires-counterexamples.xml
new file mode 100644
index 0000000..ce9717b
--- /dev/null
+++ b/xml/test-2/022-rsc-requires-counterexamples.xml
@@ -0,0 +1,50 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-start" name="start" interval="0" timeout="40s">
+ <meta_attributes id="myAddr-start-metaparams">
+ <!-- fake-requires != requires -->
+ <nvpair id="myAddr-start-requires" name="fake-requires" value="nothing"/>
+ </meta_attributes>
+ </op>
+ <!-- stop != start -->
+ <op id="myAddr-stop" name="stop" interval="0" timeout="40s"
+ requires="nothing"/>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints>
+
+ <rsc_order id="order-addr-httpd" first="myAddr" then="myHttpd"/>
+ <rsc_colocation id="colocation-addr-httpd" rsc="myHttpd" with-rsc="myAddr" score="INFINITY"/>
+
+ </constraints>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/023-rsc-requires-no-override.ref b/xml/test-2/023-rsc-requires-no-override.ref
new file mode 100644
index 0000000..233a66a
--- /dev/null
+++ b/xml/test-2/023-rsc-requires-no-override.ref
@@ -0,0 +1,56 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <!-- possible override from op attribute -->
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-start" name="start" interval="0" timeout="40s"/>
+ <!-- stop != start -->
+ <op id="myAddr-stop" name="stop" interval="0" timeout="40s"/>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ <meta_attributes id="myAddr-meta">
+ <nvpair id="myAddr-requires" name="requires" value="quorum"/>
+ </meta_attributes>
+ </primitive>
+
+ <!-- possible override from op's meta-attribute -->
+ <clone id="master">
+ <meta_attributes id="master-meta">
+ <nvpair id="master-promotable" name="promotable" value="true"/>
+ <nvpair id="master-promoted-node-max" name="promoted-node-max" value="1"/>
+ <nvpair id="master-clone-max" name="clone-max" value="3"/>
+ <nvpair id="master-promoted-max" name="promoted-max" value="1"/>
+ <nvpair id="master-clone-node-max" name="clone-node-max" value="1"/>
+ </meta_attributes>
+ <primitive id="stateful" class="ocf" type="Stateful" provider="pacemaker">
+ <operations>
+ <op id="stateful-monitor-15s" interval="15s" name="monitor" timeout="60s"/>
+ <op id="stateful-monitor-16s" interval="16s" name="monitor" timeout="60s" role="Master"/>
+ <op id="stateful-promote" interval="0" name="promote" timeout="40s"/>
+ <!-- demote != promote -->
+ <op id="stateful-demote" interval="0" name="demote" timeout="40s"/>
+ </operations>
+ <meta_attributes id="stateful-meta">
+ <nvpair id="stateful-requires" name="requires" value="quorum"/>
+ </meta_attributes>
+ </primitive>
+ </clone>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/023-rsc-requires-no-override.ref.err b/xml/test-2/023-rsc-requires-no-override.ref.err
new file mode 100644
index 0000000..ad680b6
--- /dev/null
+++ b/xml/test-2/023-rsc-requires-no-override.ref.err
@@ -0,0 +1,4 @@
+DEBUG: Resources-operation: myAddr-start (rsc=myAddr): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+DEBUG: Resources-operation: stateful-promote (rsc=stateful, meta=stateful-promote-meta): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+INFO: Resources-operation: stateful-demote (rsc=stateful, meta=stateful-demote-meta): dropping requires
+INFO: Resources-operation: ... only start/promote operation taken into account
diff --git a/xml/test-2/023-rsc-requires-no-override.xml b/xml/test-2/023-rsc-requires-no-override.xml
new file mode 100644
index 0000000..8f3d765
--- /dev/null
+++ b/xml/test-2/023-rsc-requires-no-override.xml
@@ -0,0 +1,66 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <!-- possible override from op attribute -->
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-start" name="start" interval="0" timeout="40s"
+ requires="nothing"/>
+ <!-- stop != start -->
+ <op id="myAddr-stop" name="stop" interval="0" timeout="40s"/>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ <meta_attributes id="myAddr-meta">
+ <nvpair id="myAddr-requires" name="requires" value="quorum"/>
+ </meta_attributes>
+ </primitive>
+
+ <!-- possible override from op's meta-attribute -->
+ <clone id="master">
+ <meta_attributes id="master-meta">
+ <nvpair id="master-promotable" name="promotable" value="true"/>
+ <nvpair id="master-promoted-node-max" name="promoted-node-max" value="1"/>
+ <nvpair id="master-clone-max" name="clone-max" value="3"/>
+ <nvpair id="master-promoted-max" name="promoted-max" value="1"/>
+ <nvpair id="master-clone-node-max" name="clone-node-max" value="1"/>
+ </meta_attributes>
+ <primitive id="stateful" class="ocf" type="Stateful" provider="pacemaker">
+ <operations>
+ <op id="stateful-monitor-15s" interval="15s" name="monitor" timeout="60s"/>
+ <op id="stateful-monitor-16s" interval="16s" name="monitor" timeout="60s" role="Master"/>
+ <op id="stateful-promote" interval="0" name="promote" timeout="40s">
+ <meta_attributes id="stateful-promote-meta">
+ <nvpair id="stateful-promote-requires" name="requires" value="nothing"/>
+ </meta_attributes>
+ </op>
+ <!-- demote != promote -->
+ <op id="stateful-demote" interval="0" name="demote" timeout="40s">
+ <meta_attributes id="stateful-demote-meta">
+ <nvpair id="stateful-demote-requires" name="requires" value="nothing"/>
+ </meta_attributes>
+ </op>
+ </operations>
+ <meta_attributes id="stateful-meta">
+ <nvpair id="stateful-requires" name="requires" value="quorum"/>
+ </meta_attributes>
+ </primitive>
+ </clone>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/024-rsc-requires-no-selfclash.ref b/xml/test-2/024-rsc-requires-no-selfclash.ref
new file mode 100644
index 0000000..358ccd7
--- /dev/null
+++ b/xml/test-2/024-rsc-requires-no-selfclash.ref
@@ -0,0 +1,116 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <!-- potential clash between pre-existing
+ meta_attributes/nvpair[@name = 'requires'] vs.
+ op[@name = 'start'
+ or
+ @name = 'promote']/@requires
+ and/or
+ op[@name = 'start'
+ or
+ @name = 'promote']/meta_attributes/nvpair[@name = 'requires'] -->
+ <primitive id="myAddr1" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr1-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr1-start" name="start" interval="0" timeout="40s"/>
+ </operations>
+ <instance_attributes id="myAddr1-params">
+ <nvpair id="myAddr1-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ <meta_attributes id="myAddr1-meta">
+ <nvpair id="myAddr1-requires" name="requires" value="quorum"/>
+ </meta_attributes>
+ </primitive>
+
+ <!-- potential clash between op[@name = 'start'
+ or
+ @name = 'promote']/@requires
+ and op[@name = 'start'
+ or
+ @name = 'promote']/meta_attributes/nvpair[@name = 'requires']
+ (would-eliminate-override-meta-attribute is missing,
+ allowing for direct clash in the propagation logic) -->
+ <primitive id="myAddr2" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr2-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr2-start" name="start" interval="0" timeout="40s"/>
+ </operations>
+ <instance_attributes id="myAddr2-params">
+ <nvpair id="myAddr2-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ <meta_attributes id="_2TO3_myAddr2-meta"><nvpair id="_2TO3_myAddr2-start-meta-requires" name="requires" value="nothing"/>
+ </meta_attributes>
+ </primitive>
+
+ <!-- potential clash between multiple op[@name = 'start'
+ or
+ @name = 'promote']/@requires
+ (would-eliminate-override-meta-attribute is missing,
+ allowing for direct clash in the propagation logic) -->
+ <clone id="master1">
+ <meta_attributes id="master1-meta">
+ <nvpair id="master1-promotable" name="promotable" value="true"/>
+ <nvpair id="master1-promoted-node-max" name="promoted-node-max" value="1"/>
+ <nvpair id="master1-clone-max" name="clone-max" value="3"/>
+ <nvpair id="master1-promoted-max" name="promoted-max" value="1"/>
+ <nvpair id="master1-clone-node-max" name="clone-node-max" value="1"/>
+ </meta_attributes>
+ <primitive id="stateful1" class="ocf" type="Stateful" provider="pacemaker">
+ <operations>
+ <op id="stateful1-monitor-15s" interval="15s" name="monitor" timeout="60s"/>
+ <op id="stateful1-monitor-16s" interval="16s" name="monitor" timeout="60s" role="Master"/>
+ <op id="stateful1-promote" interval="0" name="promote" timeout="40s"/>
+ <op id="stateful1-start" interval="0" name="start" timeout="40s"/>
+ <!-- demote != promote -->
+ <op id="stateful1-demote" interval="0" name="demote" timeout="40s"/>
+ </operations>
+ <meta_attributes id="_2TO3_stateful1-meta"><nvpair id="_2TO3_stateful1-start-meta-requires" name="requires" value="fencing"/>
+ </meta_attributes>
+ </primitive>
+ </clone>
+
+ <!-- potential clash between multiple
+ op[@name = 'start'
+ or
+ @name = 'promote']/meta_attributes/nvpair[@name = 'requires']
+ (would-eliminate-override-meta-attribute is missing,
+ allowing for direct clash in the propagation logic) -->
+ <clone id="master2">
+ <meta_attributes id="master2-meta">
+ <nvpair id="master2-promotable" name="promotable" value="true"/>
+ <nvpair id="master2-promoted-node-max" name="promoted-node-max" value="1"/>
+ <nvpair id="master2-clone-max" name="clone-max" value="3"/>
+ <nvpair id="master2-promoted-max" name="promoted-max" value="1"/>
+ <nvpair id="master2-clone-node-max" name="clone-node-max" value="1"/>
+ </meta_attributes>
+ <primitive id="stateful2" class="ocf" type="Stateful" provider="pacemaker">
+ <operations>
+ <op id="stateful2-monitor-15s" interval="15s" name="monitor" timeout="60s"/>
+ <op id="stateful2-monitor-16s" interval="16s" name="monitor" timeout="60s" role="Master"/>
+ <op id="stateful2-promote" interval="0" name="promote" timeout="40s"/>
+ <op id="stateful2-start" interval="0" name="start" timeout="40s"/>
+ <!-- demote != promote -->
+ <op id="stateful2-demote" interval="0" name="demote" timeout="40s"/>
+ </operations>
+ <meta_attributes id="_2TO3_stateful2-promote-meta3">
+
+ <nvpair id="stateful2-promote-requires3-1" name="requires" value="fencing"/>
+ </meta_attributes>
+ </primitive>
+ </clone>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/024-rsc-requires-no-selfclash.ref.err b/xml/test-2/024-rsc-requires-no-selfclash.ref.err
new file mode 100644
index 0000000..b275532
--- /dev/null
+++ b/xml/test-2/024-rsc-requires-no-selfclash.ref.err
@@ -0,0 +1,14 @@
+DEBUG: Resources-operation: myAddr1-start (rsc=myAddr1, meta=myAddr1-start-meta): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+DEBUG: Resources-operation: myAddr1-start (rsc=myAddr1): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+DEBUG: Resources-operation: myAddr2-start (rsc=myAddr2, meta=myAddr2-start-meta): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+DEBUG: Resources-operation: myAddr2-start (rsc=myAddr2): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+INFO: Resources-operation: stateful1-demote (rsc=stateful1, meta=stateful1-demote-meta): dropping requires
+INFO: Resources-operation: ... only start/promote operation taken into account
+DEBUG: Resources-operation: stateful1-promote (rsc=stateful1): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+DEBUG: Resources-operation: stateful1-start (rsc=stateful1): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+DEBUG: Resources-operation: stateful2-promote (rsc=stateful2, meta=stateful2-promote-meta1): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+DEBUG: Resources-operation: stateful2-promote (rsc=stateful2, meta=stateful2-promote-meta1): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+DEBUG: Resources-operation: stateful2-promote (rsc=stateful2, meta=stateful2-promote-meta2): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+DEBUG: Resources-operation: stateful2-start (rsc=stateful2, meta=stateful2-promote-meta3): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+INFO: Resources-operation: stateful2-demote (rsc=stateful2, meta=stateful2-promote-meta): dropping requires
+INFO: Resources-operation: ... only start/promote operation taken into account
diff --git a/xml/test-2/024-rsc-requires-no-selfclash.xml b/xml/test-2/024-rsc-requires-no-selfclash.xml
new file mode 100644
index 0000000..096c61c
--- /dev/null
+++ b/xml/test-2/024-rsc-requires-no-selfclash.xml
@@ -0,0 +1,141 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <!-- potential clash between pre-existing
+ meta_attributes/nvpair[@name = 'requires'] vs.
+ op[@name = 'start'
+ or
+ @name = 'promote']/@requires
+ and/or
+ op[@name = 'start'
+ or
+ @name = 'promote']/meta_attributes/nvpair[@name = 'requires'] -->
+ <primitive id="myAddr1" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr1-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr1-start" name="start" interval="0" timeout="40s"
+ requires="nothing">
+ <meta_attributes id="myAddr1-start-meta">
+ <nvpair id="myAddr1-start-requires" name="requires" value="stonith"/>
+ </meta_attributes>
+ </op>
+ </operations>
+ <instance_attributes id="myAddr1-params">
+ <nvpair id="myAddr1-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ <meta_attributes id="myAddr1-meta">
+ <nvpair id="myAddr1-requires" name="requires" value="quorum"/>
+ </meta_attributes>
+ </primitive>
+
+ <!-- potential clash between op[@name = 'start'
+ or
+ @name = 'promote']/@requires
+ and op[@name = 'start'
+ or
+ @name = 'promote']/meta_attributes/nvpair[@name = 'requires']
+ (would-eliminate-override-meta-attribute is missing,
+ allowing for direct clash in the propagation logic) -->
+ <primitive id="myAddr2" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr2-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr2-start" name="start" interval="0" timeout="40s"
+ requires="nothing">
+ <meta_attributes id="myAddr2-start-meta">
+ <nvpair id="myAddr2-start-requires" name="requires" value="stonith"/>
+ </meta_attributes>
+ </op>
+ </operations>
+ <instance_attributes id="myAddr2-params">
+ <nvpair id="myAddr2-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <!-- potential clash between multiple op[@name = 'start'
+ or
+ @name = 'promote']/@requires
+ (would-eliminate-override-meta-attribute is missing,
+ allowing for direct clash in the propagation logic) -->
+ <clone id="master1">
+ <meta_attributes id="master1-meta">
+ <nvpair id="master1-promotable" name="promotable" value="true"/>
+ <nvpair id="master1-promoted-node-max" name="promoted-node-max" value="1"/>
+ <nvpair id="master1-clone-max" name="clone-max" value="3"/>
+ <nvpair id="master1-promoted-max" name="promoted-max" value="1"/>
+ <nvpair id="master1-clone-node-max" name="clone-node-max" value="1"/>
+ </meta_attributes>
+ <primitive id="stateful1" class="ocf" type="Stateful" provider="pacemaker">
+ <operations>
+ <op id="stateful1-monitor-15s" interval="15s" name="monitor" timeout="60s"/>
+ <op id="stateful1-monitor-16s" interval="16s" name="monitor" timeout="60s" role="Master"/>
+ <op id="stateful1-promote" interval="0" name="promote" timeout="40s"
+ requires="quorum"/>
+ <op id="stateful1-start" interval="0" name="start" timeout="40s"
+ requires="fencing"/>
+ <!-- demote != promote -->
+ <op id="stateful1-demote" interval="0" name="demote" timeout="40s">
+ <meta_attributes id="stateful1-demote-meta">
+ <nvpair id="stateful1-demote-requires" name="requires" value="nothing"/>
+ </meta_attributes>
+ </op>
+ </operations>
+ </primitive>
+ </clone>
+
+ <!-- potential clash between multiple
+ op[@name = 'start'
+ or
+ @name = 'promote']/meta_attributes/nvpair[@name = 'requires']
+ (would-eliminate-override-meta-attribute is missing,
+ allowing for direct clash in the propagation logic) -->
+ <clone id="master2">
+ <meta_attributes id="master2-meta">
+ <nvpair id="master2-promotable" name="promotable" value="true"/>
+ <nvpair id="master2-promoted-node-max" name="promoted-node-max" value="1"/>
+ <nvpair id="master2-clone-max" name="clone-max" value="3"/>
+ <nvpair id="master2-promoted-max" name="promoted-max" value="1"/>
+ <nvpair id="master2-clone-node-max" name="clone-node-max" value="1"/>
+ </meta_attributes>
+ <primitive id="stateful2" class="ocf" type="Stateful" provider="pacemaker">
+ <operations>
+ <op id="stateful2-monitor-15s" interval="15s" name="monitor" timeout="60s"/>
+ <op id="stateful2-monitor-16s" interval="16s" name="monitor" timeout="60s" role="Master"/>
+ <op id="stateful2-promote" interval="0" name="promote" timeout="40s">
+ <meta_attributes id="stateful2-promote-meta1">
+ <nvpair id="stateful2-promote-requires1-1" name="requires" value="quorum"/>
+ <nvpair id="stateful2-promote-requires1-2" name="requires" value="nothing"/>
+ </meta_attributes>
+ <meta_attributes id="stateful2-promote-meta2">
+ <nvpair id="stateful2-promote-requires2-1" name="requires" value="unfencing"/>
+ </meta_attributes>
+ </op>
+ <op id="stateful2-start" interval="0" name="start" timeout="40s">
+ <meta_attributes id="stateful2-promote-meta3">
+ <nvpair id="stateful2-promote-requires3-1" name="requires" value="fencing"/>
+ </meta_attributes>
+ </op>
+ <!-- demote != promote -->
+ <op id="stateful2-demote" interval="0" name="demote" timeout="40s">
+ <meta_attributes id="stateful2-promote-meta">
+ <nvpair id="stateful2-promote-requires" name="requires" value="nothing"/>
+ </meta_attributes>
+ </op>
+ </operations>
+ </primitive>
+ </clone>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/030-clu-props-plain-rename.ref b/xml/test-2/030-clu-props-plain-rename.ref
new file mode 100644
index 0000000..2f446c3
--- /dev/null
+++ b/xml/test-2/030-clu-props-plain-rename.ref
@@ -0,0 +1,25 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cluster-opts">
+ <nvpair id="cluster-opts-cluster_recheck_interval" name="cluster-recheck-interval" value="10min"/>
+ <nvpair id="cluster-opts-dc_deadtime" name="dc-deadtime" value="15s"/>
+ <nvpair id="cluster-opts-election_timeout" name="election-timeout" value="90s"/>
+ <nvpair id="cluster-opts-no_quorum_policy" name="no-quorum-policy" value="freeze"/>
+ <nvpair id="cluster-opts-remove_after_stop" name="remove-after-stop" value="false"/>
+ <nvpair id="cluster-opts-shutdown_escalation" name="shutdown-escalation" value="15min"/>
+ <nvpair id="cluster-opts-startup_fencing" name="startup-fencing" value="true"/>
+ <nvpair id="cluster-opts-stonith_action" name="stonith-action" value="off"/>
+ <nvpair id="cluster-opts-stonith_enabled" name="stonith-enabled" value="off"/>
+ <nvpair id="cluster-opts-stop_orphan_actions" name="stop-orphan-actions" value="true"/>
+ <nvpair id="cluster-opts-stop_orphan_resources" name="stop-orphan-resources" value="true"/>
+ <nvpair id="cluster-opts-symmetric_cluster" name="symmetric-cluster" value="true"/>
+ <nvpair id="cluster-opts-transition_idle_timeout" name="cluster-delay" value="50s"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/030-clu-props-plain-rename.ref.err b/xml/test-2/030-clu-props-plain-rename.ref.err
new file mode 100644
index 0000000..878c504
--- /dev/null
+++ b/xml/test-2/030-clu-props-plain-rename.ref.err
@@ -0,0 +1,13 @@
+DEBUG: Cluster properties: cluster-opts-cluster_recheck_interval: renaming cluster_recheck_interval as cluster-recheck-interval
+DEBUG: Cluster properties: cluster-opts-dc_deadtime: renaming dc_deadtime as dc-deadtime
+DEBUG: Cluster properties: cluster-opts-election_timeout: renaming election_timeout as election-timeout
+DEBUG: Cluster properties: cluster-opts-no_quorum_policy: renaming no_quorum_policy as no-quorum-policy
+DEBUG: Cluster properties: cluster-opts-remove_after_stop: renaming remove_after_stop as remove-after-stop
+DEBUG: Cluster properties: cluster-opts-shutdown_escalation: renaming shutdown_escalation as shutdown-escalation
+DEBUG: Cluster properties: cluster-opts-startup_fencing: renaming startup_fencing as startup-fencing
+DEBUG: Cluster properties: cluster-opts-stonith_action: renaming stonith_action as stonith-action
+DEBUG: Cluster properties: cluster-opts-stonith_enabled: renaming stonith_enabled as stonith-enabled
+DEBUG: Cluster properties: cluster-opts-stop_orphan_actions: renaming stop_orphan_actions as stop-orphan-actions
+DEBUG: Cluster properties: cluster-opts-stop_orphan_resources: renaming stop_orphan_resources as stop-orphan-resources
+DEBUG: Cluster properties: cluster-opts-symmetric_cluster: renaming symmetric_cluster as symmetric-cluster
+DEBUG: Cluster properties: cluster-opts-transition_idle_timeout: renaming transition_idle_timeout as cluster-delay
diff --git a/xml/test-2/030-clu-props-plain-rename.xml b/xml/test-2/030-clu-props-plain-rename.xml
new file mode 100644
index 0000000..f7a0a52
--- /dev/null
+++ b/xml/test-2/030-clu-props-plain-rename.xml
@@ -0,0 +1,26 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cluster-opts">
+ <nvpair id="cluster-opts-cluster_recheck_interval" name="cluster_recheck_interval" value="10min"/>
+ <nvpair id="cluster-opts-dc_deadtime" name="dc_deadtime" value="15s"/>
+ <nvpair id="cluster-opts-election_timeout" name="election_timeout" value="90s"/>
+ <nvpair id="cluster-opts-no_quorum_policy" name="no_quorum_policy" value="freeze"/>
+ <nvpair id="cluster-opts-remove_after_stop" name="remove_after_stop" value="false"/>
+ <nvpair id="cluster-opts-shutdown_escalation" name="shutdown_escalation" value="15min"/>
+ <nvpair id="cluster-opts-startup_fencing" name="startup_fencing" value="true"/>
+ <nvpair id="cluster-opts-stonith_action" name="stonith_action" value="off"/>
+ <nvpair id="cluster-opts-stonith_enabled" name="stonith_enabled" value="off"/>
+ <nvpair id="cluster-opts-stop_orphan_actions" name="stop_orphan_actions" value="true"/>
+ <nvpair id="cluster-opts-stop_orphan_resources" name="stop_orphan_resources" value="true"/>
+ <nvpair id="cluster-opts-symmetric_cluster" name="symmetric_cluster" value="true"/>
+ <nvpair id="cluster-opts-transition_idle_timeout" name="transition_idle_timeout" value="50s"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/031-clu-props-drop.ref b/xml/test-2/031-clu-props-drop.ref
new file mode 100644
index 0000000..03e5618
--- /dev/null
+++ b/xml/test-2/031-clu-props-drop.ref
@@ -0,0 +1,14 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config>
+
+ <cluster_property_set id="cluster-opts-2">
+ <nvpair id="cluster-opts-cluster-infrastructure-2" name="cluster-infrastructure" value="corosync"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/031-clu-props-drop.ref.err b/xml/test-2/031-clu-props-drop.ref.err
new file mode 100644
index 0000000..b26de82
--- /dev/null
+++ b/xml/test-2/031-clu-props-drop.ref.err
@@ -0,0 +1,10 @@
+INFO: Cluster properties: cluster-opts-cluster-infrastructure: dropping cluster-infrastructure for matching heartbeat|openais|classic openais|classic openais (with plugin)|cman
+INFO: Cluster properties: ... corosync (2+) infrastructure can be used instead, though the value is not of significance
+INFO: Cluster properties: cluster-opts-default-migration-threshold: dropping default-migration-threshold
+INFO: Cluster properties: ... migration-threshold in rsc_defaults can be configured instead
+INFO: Cluster properties: cluster-opts-default_migration_threshold: dropping default_migration_threshold
+INFO: Cluster properties: ... migration-threshold in rsc_defaults can be configured instead
+INFO: Cluster properties: cluster-opts-expected-quorum-votes: dropping expected-quorum-votes
+INFO: Cluster properties: ... corosync (2+) infrastructure tracks quorum on its own
+INFO: Cluster properties: cluster-opts-notification-agent: dropping notification-agent
+INFO: Cluster properties: ... standalone alerts can be configured instead
diff --git a/xml/test-2/031-clu-props-drop.xml b/xml/test-2/031-clu-props-drop.xml
new file mode 100644
index 0000000..663569c
--- /dev/null
+++ b/xml/test-2/031-clu-props-drop.xml
@@ -0,0 +1,21 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cluster-opts">
+ <nvpair id="cluster-opts-cluster-infrastructure" name="cluster-infrastructure" value="heartbeat"/>
+ <nvpair id="cluster-opts-default-migration-threshold" name="default-migration-threshold" value="10"/>
+ <nvpair id="cluster-opts-default_migration_threshold" name="default_migration_threshold" value="10"/>
+ <nvpair id="cluster-opts-expected-quorum-votes" name="expected-quorum-votes" value="3"/>
+ <nvpair id="cluster-opts-notification-agent" name="notification-agent" value="/etc/pacemaker/notif.sh"/>
+ </cluster_property_set>
+ <cluster_property_set id="cluster-opts-2">
+ <nvpair id="cluster-opts-cluster-infrastructure-2" name="cluster-infrastructure" value="corosync"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/032-clu-props-move.ref b/xml/test-2/032-clu-props-move.ref
new file mode 100644
index 0000000..3477ab7
--- /dev/null
+++ b/xml/test-2/032-clu-props-move.ref
@@ -0,0 +1,18 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config>
+
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ <op_defaults><meta_attributes id="_2TO3_-op-defaults">
+ <nvpair id="cluster-opts-default-action-timeout" name="timeout" value="30s"/>
+ </meta_attributes>
+ </op_defaults><rsc_defaults><meta_attributes id="_2TO3_-rsc-defaults">
+ <nvpair id="cluster-opts-default-resource-stickiness" name="resource-stickiness" value="100"/>
+ <nvpair id="cluster-opts-is-managed-default" name="is-managed" value="true"/>
+ </meta_attributes>
+ </rsc_defaults></configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/032-clu-props-move.ref.err b/xml/test-2/032-clu-props-move.ref.err
new file mode 100644
index 0000000..ed5d3d3
--- /dev/null
+++ b/xml/test-2/032-clu-props-move.ref.err
@@ -0,0 +1,3 @@
+DEBUG: Cluster properties: cluster-opts-default-action-timeout: moving default-action-timeout under op_defaults as timeout unless already defined there
+DEBUG: Cluster properties: cluster-opts-default-resource-stickiness: moving default-resource-stickiness under rsc_defaults as resource-stickiness unless already defined there
+DEBUG: Cluster properties: cluster-opts-is-managed-default: moving is-managed-default under rsc_defaults as is-managed unless already defined there
diff --git a/xml/test-2/032-clu-props-move.xml b/xml/test-2/032-clu-props-move.xml
new file mode 100644
index 0000000..1f34d7b
--- /dev/null
+++ b/xml/test-2/032-clu-props-move.xml
@@ -0,0 +1,16 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cluster-opts">
+ <nvpair id="cluster-opts-default-action-timeout" name="default-action-timeout" value="30s"/>
+ <nvpair id="cluster-opts-default-resource-stickiness" name="default-resource-stickiness" value="100"/>
+ <nvpair id="cluster-opts-is-managed-default" name="is-managed-default" value="true"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/033-clu-props-move-merge.ref b/xml/test-2/033-clu-props-move-merge.ref
new file mode 100644
index 0000000..f8e5a9f
--- /dev/null
+++ b/xml/test-2/033-clu-props-move-merge.ref
@@ -0,0 +1,21 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config>
+
+ </crm_config>
+ <rsc_defaults>
+ <meta_attributes id="rsc-defaults">
+ <nvpair id="rsc-defaults-is-managed" name="is-managed" value="false"/>
+
+ <nvpair id="cluster-opts-default-resource-stickiness" name="resource-stickiness" value="100"/>
+ </meta_attributes>
+ </rsc_defaults>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ <op_defaults><meta_attributes id="_2TO3_-op-defaults">
+ <nvpair id="cluster-opts-default-action-timeout" name="timeout" value="30s"/>
+ </meta_attributes>
+ </op_defaults></configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/033-clu-props-move-merge.ref.err b/xml/test-2/033-clu-props-move-merge.ref.err
new file mode 100644
index 0000000..ed5d3d3
--- /dev/null
+++ b/xml/test-2/033-clu-props-move-merge.ref.err
@@ -0,0 +1,3 @@
+DEBUG: Cluster properties: cluster-opts-default-action-timeout: moving default-action-timeout under op_defaults as timeout unless already defined there
+DEBUG: Cluster properties: cluster-opts-default-resource-stickiness: moving default-resource-stickiness under rsc_defaults as resource-stickiness unless already defined there
+DEBUG: Cluster properties: cluster-opts-is-managed-default: moving is-managed-default under rsc_defaults as is-managed unless already defined there
diff --git a/xml/test-2/033-clu-props-move-merge.xml b/xml/test-2/033-clu-props-move-merge.xml
new file mode 100644
index 0000000..c34085b
--- /dev/null
+++ b/xml/test-2/033-clu-props-move-merge.xml
@@ -0,0 +1,21 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cluster-opts">
+ <nvpair id="cluster-opts-default-action-timeout" name="default-action-timeout" value="30s"/>
+ <nvpair id="cluster-opts-default-resource-stickiness" name="default-resource-stickiness" value="100"/>
+ <nvpair id="cluster-opts-is-managed-default" name="is-managed-default" value="true"/>
+ </cluster_property_set>
+ </crm_config>
+ <rsc_defaults>
+ <meta_attributes id="rsc-defaults">
+ <nvpair id="rsc-defaults-is-managed" name="is-managed" value="false"/>
+ </meta_attributes>
+ </rsc_defaults>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/034-clu-props-move-redef.ref b/xml/test-2/034-clu-props-move-redef.ref
new file mode 100644
index 0000000..88fb44c
--- /dev/null
+++ b/xml/test-2/034-clu-props-move-redef.ref
@@ -0,0 +1,14 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config>
+
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ <rsc_defaults><meta_attributes id="_2TO3_-rsc-defaults">
+ <nvpair id="cluster-opts-default-resource-failure-stickiness" name="migration-threshold" value="1"/>
+ </meta_attributes>
+ </rsc_defaults></configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/034-clu-props-move-redef.ref.err b/xml/test-2/034-clu-props-move-redef.ref.err
new file mode 100644
index 0000000..f8c148f
--- /dev/null
+++ b/xml/test-2/034-clu-props-move-redef.ref.err
@@ -0,0 +1,3 @@
+DEBUG: Cluster properties: cluster-opts-default-resource-failure-stickiness: moving default-resource-failure-stickiness under rsc_defaults as migration-threshold unless already defined there, redefined as 1, for matching -INFINITY
+INFO: Cluster properties: cluster-opts-default_resource_failure_stickiness: dropping default_resource_failure_stickiness
+INFO: Cluster properties: ... migration-threshold in rsc_defaults can be configured instead
diff --git a/xml/test-2/034-clu-props-move-redef.xml b/xml/test-2/034-clu-props-move-redef.xml
new file mode 100644
index 0000000..fcadf20
--- /dev/null
+++ b/xml/test-2/034-clu-props-move-redef.xml
@@ -0,0 +1,15 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config>
+ <cluster_property_set id="cluster-opts">
+ <nvpair id="cluster-opts-default-resource-failure-stickiness" name="default-resource-failure-stickiness" value="-INFINITY"/>
+ <nvpair id="cluster-opts-default_resource_failure_stickiness" name="default_resource_failure_stickiness" value="0"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes/>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/040-nodes-rename-type.ref b/xml/test-2/040-nodes-rename-type.ref
new file mode 100644
index 0000000..58d58d8
--- /dev/null
+++ b/xml/test-2/040-nodes-rename-type.ref
@@ -0,0 +1,15 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063" type="member"/>
+ <node id="virt-064" uname="virt-064" type="member"/>
+ <node id="virt-069" uname="virt-069" type="member"/>
+
+ </nodes>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/040-nodes-rename-type.ref.err b/xml/test-2/040-nodes-rename-type.ref.err
new file mode 100644
index 0000000..ce68fa4
--- /dev/null
+++ b/xml/test-2/040-nodes-rename-type.ref.err
@@ -0,0 +1,2 @@
+DEBUG: Cluster node: virt-063 (id=virt-063): keeping type as type, redefined as member, for matching normal
+DEBUG: Cluster node: virt-064 (id=virt-064): keeping type as type, redefined as member, for matching normal
diff --git a/xml/test-2/040-nodes-rename-type.xml b/xml/test-2/040-nodes-rename-type.xml
new file mode 100644
index 0000000..939b768
--- /dev/null
+++ b/xml/test-2/040-nodes-rename-type.xml
@@ -0,0 +1,16 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063" type="normal"/>
+ <node id="virt-064" uname="virt-064" type="normal"/>
+ <node id="virt-069" uname="virt-069" type="member"/>
+
+ </nodes>
+ <resources/>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/050-rsc-attrs-instance-plain-rename.ref b/xml/test-2/050-rsc-attrs-instance-plain-rename.ref
new file mode 100644
index 0000000..1fd7c44
--- /dev/null
+++ b/xml/test-2/050-rsc-attrs-instance-plain-rename.ref
@@ -0,0 +1,24 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes/>
+ <resources>
+
+ <primitive class="stonith" id="fence-vbox" type="fence_vbox">
+ <instance_attributes id="fence-vbox-params">
+ <nvpair id="fence-vbox-params-ipaddr" name="ipaddr" value="192.0.3.10"/>
+ <nvpair id="fence-vbox-params-login" name="login" value="vboxadmin"/>
+ <nvpair id="fence-vbox-params-passwd_script" name="passwd_script" value="/usr/local/cluster/vboxpass.sh"/>
+ <nvpair id="fence-vbox-params-plug" name="plug" value="vboxhost"/>
+ <nvpair id="fence-vbox-pcmk_monitor_cmd" name="pcmk_monitor_action" value="metadata"/>
+ </instance_attributes>
+ <operations>
+ <op id="fence-vbox-monitor" interval="60s" name="monitor"/>
+ </operations>
+ </primitive>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/050-rsc-attrs-instance-plain-rename.ref.err b/xml/test-2/050-rsc-attrs-instance-plain-rename.ref.err
new file mode 100644
index 0000000..a3129e5
--- /dev/null
+++ b/xml/test-2/050-rsc-attrs-instance-plain-rename.ref.err
@@ -0,0 +1 @@
+DEBUG: Resource instance_attributes: fence-vbox-pcmk_monitor_cmd: renaming pcmk_monitor_cmd as pcmk_monitor_action
diff --git a/xml/test-2/050-rsc-attrs-instance-plain-rename.xml b/xml/test-2/050-rsc-attrs-instance-plain-rename.xml
new file mode 100644
index 0000000..ccf2404
--- /dev/null
+++ b/xml/test-2/050-rsc-attrs-instance-plain-rename.xml
@@ -0,0 +1,25 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes/>
+ <resources>
+
+ <primitive class="stonith" id="fence-vbox" type="fence_vbox">
+ <instance_attributes id="fence-vbox-params">
+ <nvpair id="fence-vbox-params-ipaddr" name="ipaddr" value="192.0.3.10"/>
+ <nvpair id="fence-vbox-params-login" name="login" value="vboxadmin"/>
+ <nvpair id="fence-vbox-params-passwd_script" name="passwd_script" value="/usr/local/cluster/vboxpass.sh"/>
+ <nvpair id="fence-vbox-params-plug" name="plug" value="vboxhost"/>
+ <nvpair id="fence-vbox-pcmk_monitor_cmd" name="pcmk_monitor_cmd" value="metadata"/>
+ </instance_attributes>
+ <operations>
+ <op id="fence-vbox-monitor" interval="60s" name="monitor"/>
+ </operations>
+ </primitive>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/051-rsc-attrs-instance-pcmk_arg_map.ref b/xml/test-2/051-rsc-attrs-instance-pcmk_arg_map.ref
new file mode 100644
index 0000000..8aa8047
--- /dev/null
+++ b/xml/test-2/051-rsc-attrs-instance-pcmk_arg_map.ref
@@ -0,0 +1,48 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes/>
+ <resources>
+
+ <primitive class="stonith" id="fence-vbox1" type="fence_vbox">
+ <instance_attributes id="fence-vbox1-params">
+ <nvpair id="fence-vbox1-params-ipaddr" name="ipaddr" value="192.0.3.10"/>
+ <nvpair id="fence-vbox1-params-login" name="login" value="vboxadmin"/>
+ <nvpair id="fence-vbox1-params-passwd_script" name="passwd_script" value="/usr/local/cluster/vboxpass.sh"/>
+ <nvpair id="fence-vbox1-params-plug" name="plug" value="vboxhost"/>
+ <nvpair id="fence-vbox1-pcmk_arg_map" name="pcmk_host_argument" value="port"/>
+ </instance_attributes>
+ <operations>
+ <op id="fence-vbox1-monitor" interval="60s" name="monitor"/>
+ </operations>
+ </primitive>
+
+ <primitive class="stonith" id="fence-vbox2" type="fence_vbox">
+ <instance_attributes id="fence-vbox2-params">
+ <nvpair id="fence-vbox2-params-ipaddr" name="ipaddr" value="192.0.3.10"/>
+ <nvpair id="fence-vbox2-params-login" name="login" value="vboxadmin"/>
+ <nvpair id="fence-vbox2-params-passwd_script" name="passwd_script" value="/usr/local/cluster/vboxpass.sh"/>
+ <nvpair id="fence-vbox2-params-plug" name="plug" value="vboxhost"/>
+ </instance_attributes>
+ <operations>
+ <op id="fence-vbox2-monitor" interval="60s" name="monitor"/>
+ </operations>
+ </primitive>
+
+ <primitive class="stonith" id="fence-vbox3" type="fence_vbox">
+ <instance_attributes id="fence-vbox3-params">
+ <nvpair id="fence-vbox3-params-ipaddr" name="ipaddr" value="192.0.3.10"/>
+ <nvpair id="fence-vbox3-params-login" name="login" value="vboxadmin"/>
+ <nvpair id="fence-vbox3-params-passwd_script" name="passwd_script" value="/usr/local/cluster/vboxpass.sh"/>
+ <nvpair id="fence-vbox3-params-plug" name="plug" value="vboxhost"/>
+ </instance_attributes>
+ <operations>
+ <op id="fence-vbox3-monitor" interval="60s" name="monitor"/>
+ </operations>
+ </primitive>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/051-rsc-attrs-instance-pcmk_arg_map.ref.err b/xml/test-2/051-rsc-attrs-instance-pcmk_arg_map.ref.err
new file mode 100644
index 0000000..a0149c1
--- /dev/null
+++ b/xml/test-2/051-rsc-attrs-instance-pcmk_arg_map.ref.err
@@ -0,0 +1,3 @@
+DEBUG: Resource instance_attributes: fence-vbox1-pcmk_arg_map: renaming pcmk_arg_map as pcmk_host_argument for matching port: prefix that will, meanwhile, get dropped
+DEBUG: Resource instance_attributes: fence-vbox2-pcmk_arg_map: dropping pcmk_arg_map
+DEBUG: Resource instance_attributes: fence-vbox3-pcmk_arg_map: dropping pcmk_arg_map
diff --git a/xml/test-2/051-rsc-attrs-instance-pcmk_arg_map.xml b/xml/test-2/051-rsc-attrs-instance-pcmk_arg_map.xml
new file mode 100644
index 0000000..75ad2a7
--- /dev/null
+++ b/xml/test-2/051-rsc-attrs-instance-pcmk_arg_map.xml
@@ -0,0 +1,51 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes/>
+ <resources>
+
+ <primitive class="stonith" id="fence-vbox1" type="fence_vbox">
+ <instance_attributes id="fence-vbox1-params">
+ <nvpair id="fence-vbox1-params-ipaddr" name="ipaddr" value="192.0.3.10"/>
+ <nvpair id="fence-vbox1-params-login" name="login" value="vboxadmin"/>
+ <nvpair id="fence-vbox1-params-passwd_script" name="passwd_script" value="/usr/local/cluster/vboxpass.sh"/>
+ <nvpair id="fence-vbox1-params-plug" name="plug" value="vboxhost"/>
+ <nvpair id="fence-vbox1-pcmk_arg_map" name="pcmk_arg_map" value="port:port"/>
+ </instance_attributes>
+ <operations>
+ <op id="fence-vbox1-monitor" interval="60s" name="monitor"/>
+ </operations>
+ </primitive>
+
+ <primitive class="stonith" id="fence-vbox2" type="fence_vbox">
+ <instance_attributes id="fence-vbox2-params">
+ <nvpair id="fence-vbox2-params-ipaddr" name="ipaddr" value="192.0.3.10"/>
+ <nvpair id="fence-vbox2-params-login" name="login" value="vboxadmin"/>
+ <nvpair id="fence-vbox2-params-passwd_script" name="passwd_script" value="/usr/local/cluster/vboxpass.sh"/>
+ <nvpair id="fence-vbox2-params-plug" name="plug" value="vboxhost"/>
+ <nvpair id="fence-vbox2-pcmk_arg_map" name="pcmk_arg_map" value="dropme:sure,port:port"/>
+ </instance_attributes>
+ <operations>
+ <op id="fence-vbox2-monitor" interval="60s" name="monitor"/>
+ </operations>
+ </primitive>
+
+ <primitive class="stonith" id="fence-vbox3" type="fence_vbox">
+ <instance_attributes id="fence-vbox3-params">
+ <nvpair id="fence-vbox3-params-ipaddr" name="ipaddr" value="192.0.3.10"/>
+ <nvpair id="fence-vbox3-params-login" name="login" value="vboxadmin"/>
+ <nvpair id="fence-vbox3-params-passwd_script" name="passwd_script" value="/usr/local/cluster/vboxpass.sh"/>
+ <nvpair id="fence-vbox3-params-plug" name="plug" value="vboxhost"/>
+ <nvpair id="fence-vbox3-pcmk_arg_map" name="pcmk_arg_map" value="port:port,dropme:justhope"/>
+ </instance_attributes>
+ <operations>
+ <op id="fence-vbox3-monitor" interval="60s" name="monitor"/>
+ </operations>
+ </primitive>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/060-rsc-attrs-meta-isolation.ref b/xml/test-2/060-rsc-attrs-meta-isolation.ref
new file mode 100644
index 0000000..91c43c0
--- /dev/null
+++ b/xml/test-2/060-rsc-attrs-meta-isolation.ref
@@ -0,0 +1,25 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes/>
+ <resources>
+
+ <!-- from c713bbe39:pengine/test10/isolation-restart-all.xml -->
+ <primitive class="ocf" id="fake" provider="heartbeat" type="Dummy">
+ <instance_attributes id="fake-instance_attributes">
+ <nvpair id="fake-instance_attributes-docker_image" name="pcmk_docker_image" value="centos:dock-wrapper-test"/>
+ <nvpair id="fake-instance_attributes-docker_privileged" name="pcmk_docker_privileged" value="false"/>
+ </instance_attributes>
+ <operations>
+ <op id="fake-monitor-interval-60s" interval="60s" name="monitor"/>
+ </operations>
+ <meta_attributes id="fake-meta_attributes">
+ <nvpair id="fake-meta_attributes-isolation-wrapper" name="target-role" value="Stopped"/>
+ </meta_attributes>
+ </primitive>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/060-rsc-attrs-meta-isolation.ref.err b/xml/test-2/060-rsc-attrs-meta-isolation.ref.err
new file mode 100644
index 0000000..fb40cc4
--- /dev/null
+++ b/xml/test-2/060-rsc-attrs-meta-isolation.ref.err
@@ -0,0 +1,4 @@
+WARNING: Resource meta_attributes: fake (meta=fake-meta_attributes): renaming isolation-wrapper as target-role, redefined as Stopped
+WARNING: Resource meta_attributes: ... i.e. resource at hand disabled; isolation wrappers obsoleted with bundle resources
+WARNING: Resource meta_attributes: fake (meta=fake-meta_attributes): renaming isolation-wrapper as target-role, redefined as Stopped
+WARNING: Resource meta_attributes: ... i.e. resource at hand disabled; isolation wrappers obsoleted with bundle resources
diff --git a/xml/test-2/060-rsc-attrs-meta-isolation.xml b/xml/test-2/060-rsc-attrs-meta-isolation.xml
new file mode 100644
index 0000000..9c7dcb9
--- /dev/null
+++ b/xml/test-2/060-rsc-attrs-meta-isolation.xml
@@ -0,0 +1,27 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes/>
+ <resources>
+
+ <!-- from c713bbe39:pengine/test10/isolation-restart-all.xml -->
+ <primitive class="ocf" id="fake" provider="heartbeat" type="Dummy">
+ <instance_attributes id="fake-instance_attributes">
+ <nvpair id="fake-instance_attributes-docker_image" name="pcmk_docker_image" value="centos:dock-wrapper-test"/>
+ <nvpair id="fake-instance_attributes-docker_privileged" name="pcmk_docker_privileged" value="false"/>
+ </instance_attributes>
+ <operations>
+ <op id="fake-monitor-interval-60s" interval="60s" name="monitor"/>
+ </operations>
+ <meta_attributes id="fake-meta_attributes">
+ <nvpair id="fake-meta_attributes-isolation-wrapper" name="isolation-wrapper" value="docker-wrapper"/>
+ <nvpair id="fake-meta_attributes-isolation-wrapper2" name="isolation-wrapper" value="docker-wrapper"/>
+ </meta_attributes>
+ </primitive>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/061-rsc-attrs-meta-exchange.ref b/xml/test-2/061-rsc-attrs-meta-exchange.ref
new file mode 100644
index 0000000..8148d76
--- /dev/null
+++ b/xml/test-2/061-rsc-attrs-meta-exchange.ref
@@ -0,0 +1,27 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes/>
+ <resources>
+
+ <primitive class="ocf" id="res1" provider="heartbeat" type="Dummy">
+ <operations>
+ <op id="res1-monitor-interval-60s" interval="60s" name="monitor"/>
+ </operations>
+ <meta_attributes id="res1-meta_attributes">
+ <nvpair id="res1-resource-failure-stickiness" name="migration-threshold" value="1"/>
+ </meta_attributes>
+ </primitive>
+
+ <primitive class="ocf" id="res2" provider="heartbeat" type="Dummy">
+ <operations>
+ <op id="res2-monitor-interval-60s" interval="60s" name="monitor"/>
+ </operations>
+
+ </primitive>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/061-rsc-attrs-meta-exchange.ref.err b/xml/test-2/061-rsc-attrs-meta-exchange.ref.err
new file mode 100644
index 0000000..2938b77
--- /dev/null
+++ b/xml/test-2/061-rsc-attrs-meta-exchange.ref.err
@@ -0,0 +1,3 @@
+DEBUG: Resource meta_attributes: res1 (meta=res1-meta_attributes): renaming resource-failure-stickiness as migration-threshold, redefined as 1, for matching -INFINITY
+INFO: Resource meta_attributes: res2 (meta=res2-meta_attributes): dropping resource-failure-stickiness
+INFO: Resource meta_attributes: ... migration-threshold can be configured instead
diff --git a/xml/test-2/061-rsc-attrs-meta-exchange.xml b/xml/test-2/061-rsc-attrs-meta-exchange.xml
new file mode 100644
index 0000000..cb0c0eb
--- /dev/null
+++ b/xml/test-2/061-rsc-attrs-meta-exchange.xml
@@ -0,0 +1,30 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes/>
+ <resources>
+
+ <primitive class="ocf" id="res1" provider="heartbeat" type="Dummy">
+ <operations>
+ <op id="res1-monitor-interval-60s" interval="60s" name="monitor"/>
+ </operations>
+ <meta_attributes id="res1-meta_attributes">
+ <nvpair id="res1-resource-failure-stickiness" name="resource-failure-stickiness" value="-INFINITY"/>
+ </meta_attributes>
+ </primitive>
+
+ <primitive class="ocf" id="res2" provider="heartbeat" type="Dummy">
+ <operations>
+ <op id="res2-monitor-interval-60s" interval="60s" name="monitor"/>
+ </operations>
+ <meta_attributes id="res2-meta_attributes">
+ <nvpair id="res2-resource-failure-stickiness" name="resource-failure-stickiness" value="0"/>
+ </meta_attributes>
+ </primitive>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/070-rsc-op-attrs-inst-requires-start.ref b/xml/test-2/070-rsc-op-attrs-inst-requires-start.ref
new file mode 100644
index 0000000..20aba39
--- /dev/null
+++ b/xml/test-2/070-rsc-op-attrs-inst-requires-start.ref
@@ -0,0 +1,48 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <!-- borrowed from 021-rsc-requires-nvpair -->
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-start" name="start" interval="0" timeout="40s"/>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ <meta_attributes id="_2TO3_myAddr-start-instanceparams">
+ <!-- relying on order (+ colocation) to guarantee "requires"
+ transitively (unfencing/fencing/quorum)? -->
+
+ <nvpair id="myAddr-start-requires" name="requires" value="nothing"/>
+ </meta_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints>
+
+ <rsc_order id="order-addr-httpd" first="myAddr" then="myHttpd"/>
+ <rsc_colocation id="colocation-addr-httpd" rsc="myHttpd" with-rsc="myAddr" score="INFINITY"/>
+
+ </constraints>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/070-rsc-op-attrs-inst-requires-start.ref.err b/xml/test-2/070-rsc-op-attrs-inst-requires-start.ref.err
new file mode 100644
index 0000000..6f707bb
--- /dev/null
+++ b/xml/test-2/070-rsc-op-attrs-inst-requires-start.ref.err
@@ -0,0 +1 @@
+DEBUG: Resources-operation instance_attributes: myAddr-start (rsc=myAddr, meta=myAddr-start-instanceparams): moving requires under per-resource-meta_attributes as requires unless already defined there for matching start|promote
diff --git a/xml/test-2/070-rsc-op-attrs-inst-requires-start.xml b/xml/test-2/070-rsc-op-attrs-inst-requires-start.xml
new file mode 100644
index 0000000..2661f7d
--- /dev/null
+++ b/xml/test-2/070-rsc-op-attrs-inst-requires-start.xml
@@ -0,0 +1,49 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <!-- borrowed from 021-rsc-requires-nvpair -->
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-start" name="start" interval="0" timeout="40s">
+ <instance_attributes id="myAddr-start-instanceparams">
+ <!-- relying on order (+ colocation) to guarantee "requires"
+ transitively (unfencing/fencing/quorum)? -->
+ <nvpair id="myAddr-start-requires" name="requires" value="nothing"/>
+ </instance_attributes>
+ </op>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints>
+
+ <rsc_order id="order-addr-httpd" first="myAddr" then="myHttpd"/>
+ <rsc_colocation id="colocation-addr-httpd" rsc="myHttpd" with-rsc="myAddr" score="INFINITY"/>
+
+ </constraints>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/071-rsc-op-attrs-inst-requires-nonstart.ref b/xml/test-2/071-rsc-op-attrs-inst-requires-nonstart.ref
new file mode 100644
index 0000000..3dd5168
--- /dev/null
+++ b/xml/test-2/071-rsc-op-attrs-inst-requires-nonstart.ref
@@ -0,0 +1,42 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <!-- borrowed from 021-rsc-requires-nvpair -->
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-stop" name="stop" interval="0" timeout="40s"/>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints>
+
+ <rsc_order id="order-addr-httpd" first="myAddr" then="myHttpd"/>
+ <rsc_colocation id="colocation-addr-httpd" rsc="myHttpd" with-rsc="myAddr" score="INFINITY"/>
+
+ </constraints>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/071-rsc-op-attrs-inst-requires-nonstart.ref.err b/xml/test-2/071-rsc-op-attrs-inst-requires-nonstart.ref.err
new file mode 100644
index 0000000..6b6f8f7
--- /dev/null
+++ b/xml/test-2/071-rsc-op-attrs-inst-requires-nonstart.ref.err
@@ -0,0 +1,2 @@
+INFO: Resources-operation instance_attributes: myAddr-stop (rsc=myAddr, meta=myAddr-stop-instanceparams): dropping requires
+INFO: Resources-operation instance_attributes: ... only start/promote operation taken into account
diff --git a/xml/test-2/071-rsc-op-attrs-inst-requires-nonstart.xml b/xml/test-2/071-rsc-op-attrs-inst-requires-nonstart.xml
new file mode 100644
index 0000000..4f364f4
--- /dev/null
+++ b/xml/test-2/071-rsc-op-attrs-inst-requires-nonstart.xml
@@ -0,0 +1,49 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <!-- borrowed from 021-rsc-requires-nvpair -->
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-stop" name="stop" interval="0" timeout="40s">
+ <instance_attributes id="myAddr-stop-instanceparams">
+ <!-- relying on order (+ colocation) to guarantee "requires"
+ transitively (unfencing/fencing/quorum)? -->
+ <nvpair id="myAddr-stop-requires" name="requires" value="nothing"/>
+ </instance_attributes>
+ </op>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s"/>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints>
+
+ <rsc_order id="order-addr-httpd" first="myAddr" then="myHttpd"/>
+ <rsc_colocation id="colocation-addr-httpd" rsc="myHttpd" with-rsc="myAddr" score="INFINITY"/>
+
+ </constraints>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/072-rsc-op-attrs-inst-requires-no-override.ref b/xml/test-2/072-rsc-op-attrs-inst-requires-no-override.ref
new file mode 100644
index 0000000..c63230c
--- /dev/null
+++ b/xml/test-2/072-rsc-op-attrs-inst-requires-no-override.ref
@@ -0,0 +1,54 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <!-- possible override from op's instance attribute over
+ op attribute -->
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-start" name="start" interval="0" timeout="40s"/>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ <meta_attributes id="_2TO3_myAddr-meta"><nvpair id="_2TO3_myAddr-start-meta-requires" name="requires" value="nothing"/>
+ </meta_attributes>
+ </primitive>
+
+ <!-- possible override from op's instance attribute over
+ op's meta-attribute -->
+ <clone id="master">
+ <meta_attributes id="master-meta">
+ <nvpair id="master-promotable" name="promotable" value="true"/>
+ <nvpair id="master-promoted-node-max" name="promoted-node-max" value="1"/>
+ <nvpair id="master-clone-max" name="clone-max" value="3"/>
+ <nvpair id="master-promoted-max" name="promoted-max" value="1"/>
+ <nvpair id="master-clone-node-max" name="clone-node-max" value="1"/>
+ </meta_attributes>
+ <primitive id="stateful" class="ocf" type="Stateful" provider="pacemaker">
+ <operations>
+ <op id="stateful-monitor-15s" interval="15s" name="monitor" timeout="60s"/>
+ <op id="stateful-monitor-16s" interval="16s" name="monitor" timeout="60s" role="Master"/>
+ <op id="stateful-promote" interval="0" name="promote" timeout="40s"/>
+ </operations>
+ <meta_attributes id="_2TO3_stateful-promote-meta">
+
+ <nvpair id="stateful-promote-meta-requires" name="requires" value="nothing"/>
+ </meta_attributes>
+ </primitive>
+ </clone>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/072-rsc-op-attrs-inst-requires-no-override.ref.err b/xml/test-2/072-rsc-op-attrs-inst-requires-no-override.ref.err
new file mode 100644
index 0000000..cc5dd7d
--- /dev/null
+++ b/xml/test-2/072-rsc-op-attrs-inst-requires-no-override.ref.err
@@ -0,0 +1,4 @@
+DEBUG: Resources-operation instance_attributes: myAddr-start (rsc=myAddr, meta=myAddr-start-instance): moving requires under per-resource-meta_attributes as requires unless already defined there for matching start|promote
+DEBUG: Resources-operation: myAddr-start (rsc=myAddr): moving requires under meta_attributes as requires unless already defined there for matching start|promote
+DEBUG: Resources-operation instance_attributes: stateful-promote (rsc=stateful, meta=stateful-promote-instance): moving requires under per-resource-meta_attributes as requires unless already defined there for matching start|promote
+DEBUG: Resources-operation: stateful-promote (rsc=stateful, meta=stateful-promote-meta): moving requires under meta_attributes as requires unless already defined there for matching start|promote
diff --git a/xml/test-2/072-rsc-op-attrs-inst-requires-no-override.xml b/xml/test-2/072-rsc-op-attrs-inst-requires-no-override.xml
new file mode 100644
index 0000000..8af4bf1
--- /dev/null
+++ b/xml/test-2/072-rsc-op-attrs-inst-requires-no-override.xml
@@ -0,0 +1,61 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <!-- possible override from op's instance attribute over
+ op attribute -->
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-start" name="start" interval="0" timeout="40s"
+ requires="nothing">
+ <instance_attributes id="myAddr-start-instance">
+ <nvpair id="myAddr-start-instance-requires" name="requires" value="quorum"/>
+ </instance_attributes>
+ </op>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <!-- possible override from op's instance attribute over
+ op's meta-attribute -->
+ <clone id="master">
+ <meta_attributes id="master-meta">
+ <nvpair id="master-promotable" name="promotable" value="true"/>
+ <nvpair id="master-promoted-node-max" name="promoted-node-max" value="1"/>
+ <nvpair id="master-clone-max" name="clone-max" value="3"/>
+ <nvpair id="master-promoted-max" name="promoted-max" value="1"/>
+ <nvpair id="master-clone-node-max" name="clone-node-max" value="1"/>
+ </meta_attributes>
+ <primitive id="stateful" class="ocf" type="Stateful" provider="pacemaker">
+ <operations>
+ <op id="stateful-monitor-15s" interval="15s" name="monitor" timeout="60s"/>
+ <op id="stateful-monitor-16s" interval="16s" name="monitor" timeout="60s" role="Master"/>
+ <op id="stateful-promote" interval="0" name="promote" timeout="40s">
+ <meta_attributes id="stateful-promote-meta">
+ <nvpair id="stateful-promote-meta-requires" name="requires" value="nothing"/>
+ </meta_attributes>
+ <instance_attributes id="stateful-promote-instance">
+ <nvpair id="stateful-promote-instance-requires" name="requires" value="quorum"/>
+ </instance_attributes>
+ </op>
+ </operations>
+ </primitive>
+ </clone>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/073-rsc-op-attrs-inst-meta-meaning.ref b/xml/test-2/073-rsc-op-attrs-inst-meta-meaning.ref
new file mode 100644
index 0000000..28b1d17
--- /dev/null
+++ b/xml/test-2/073-rsc-op-attrs-inst-meta-meaning.ref
@@ -0,0 +1,51 @@
+<cib validate-with="pacemaker-3.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-start" name="start" interval="0" timeout="40s">
+
+ <meta_attributes id="_2TO3_myAddr-start-meta">
+ <nvpair id="myAddr-start-instance-on-fail" name="on-fail" value="standby"/>
+ <nvpair id="myAddr-start-instance-record-pending" name="record-pending" value="true"/>
+ </meta_attributes>
+ </op>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s">
+ <instance_attributes id="myHttpd-monitor-instance">
+ <nvpair id="myHttpd-monitor-instance-statusurl" name="statusurl" value="http://localhost/server-status"/>
+ </instance_attributes>
+
+ <meta_attributes id="_2TO3_myHttpd-monitor-meta">
+
+ <nvpair id="myHttpd-monitor-instance2-timeout" name="timeout" value="30"/>
+ </meta_attributes>
+ </op>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>
diff --git a/xml/test-2/073-rsc-op-attrs-inst-meta-meaning.ref.err b/xml/test-2/073-rsc-op-attrs-inst-meta-meaning.ref.err
new file mode 100644
index 0000000..18beb3a
--- /dev/null
+++ b/xml/test-2/073-rsc-op-attrs-inst-meta-meaning.ref.err
@@ -0,0 +1,4 @@
+DEBUG: Resources-operation instance_attributes: myAddr-start (rsc=myAddr, meta=myAddr-start-instance): moving on-fail under meta_attributes as on-fail unless already defined there
+DEBUG: Resources-operation instance_attributes: myAddr-start (rsc=myAddr, meta=myAddr-start-instance): moving record-pending under meta_attributes as record-pending unless already defined there
+DEBUG: Resources-operation instance_attributes: myHttpd-monitor (rsc=myHttpd, meta=myHttpd-monitor-instance): moving timeout under meta_attributes as timeout unless already defined there
+DEBUG: Resources-operation instance_attributes: myHttpd-monitor (rsc=myHttpd, meta=myHttpd-monitor-instance2): moving timeout under meta_attributes as timeout unless already defined there
diff --git a/xml/test-2/073-rsc-op-attrs-inst-meta-meaning.xml b/xml/test-2/073-rsc-op-attrs-inst-meta-meaning.xml
new file mode 100644
index 0000000..1a1f73f
--- /dev/null
+++ b/xml/test-2/073-rsc-op-attrs-inst-meta-meaning.xml
@@ -0,0 +1,50 @@
+<?xml-stylesheet href="../assets/upgrade-2.10-htmldiff.xsl" type="text/xsl"?>
+<cib validate-with="pacemaker-2.0" admin_epoch="0" epoch="0" num_updates="0">
+ <configuration>
+ <crm_config/>
+ <nodes>
+
+ <node id="virt-063" uname="virt-063"/>
+ <node id="virt-064" uname="virt-064"/>
+ <node id="virt-069" uname="virt-069"/>
+
+ </nodes>
+ <resources>
+
+ <primitive id="myAddr" class="ocf" provider="heartbeat" type="IPaddr2">
+ <operations>
+ <op id="myAddr-monitor" name="monitor" interval="30s"/>
+ <op id="myAddr-start" name="start" interval="0" timeout="40s">
+ <instance_attributes id="myAddr-start-instance">
+ <nvpair id="myAddr-start-instance-on-fail" name="on-fail" value="standby"/>
+ <nvpair id="myAddr-start-instance-record-pending" name="record-pending" value="true"/>
+ </instance_attributes>
+ </op>
+ </operations>
+ <instance_attributes id="myAddr-params">
+ <nvpair id="myAddr-ip" name="ip" value="192.0.2.10"/>
+ </instance_attributes>
+ </primitive>
+
+ <primitive id="myHttpd" class="ocf" provider="heartbeat" type="apache">
+ <operations>
+ <op id="myHttpd-monitor" name="monitor" interval="30s">
+ <instance_attributes id="myHttpd-monitor-instance">
+ <nvpair id="myHttpd-monitor-instance-timeout" name="timeout" value="20"/>
+ <nvpair id="myHttpd-monitor-instance-statusurl" name="statusurl" value="http://localhost/server-status"/>
+ </instance_attributes>
+ <instance_attributes id="myHttpd-monitor-instance2">
+ <nvpair id="myHttpd-monitor-instance2-timeout" name="timeout" value="30"/>
+ </instance_attributes>
+ </op>
+ </operations>
+ <instance_attributes id="myHttpd-params">
+ <nvpair id="myHttpd-configfile" name="configfile" value="/etc/httpd/conf/httpd.conf"/>
+ </instance_attributes>
+ </primitive>
+
+ </resources>
+ <constraints/>
+ </configuration>
+ <status/>
+</cib>