Blame SOURCES/036-crm_resource.patch

a216ed
From 82ae2f1b652c361dadacf25dece42a43340776ee Mon Sep 17 00:00:00 2001
a216ed
From: Chris Lumens <clumens@redhat.com>
a216ed
Date: Thu, 11 Feb 2021 09:57:21 -0500
a216ed
Subject: [PATCH 1/3] Low: tools: Rename the result of cli_resource_search.
a216ed
a216ed
The result of cli_resource_search is a list of nodes, not a list of
a216ed
resources.  Change the variable name appropriately.
a216ed
---
a216ed
 tools/crm_resource.c         | 4 ++--
a216ed
 tools/crm_resource_runtime.c | 4 ++--
a216ed
 2 files changed, 4 insertions(+), 4 deletions(-)
a216ed
a216ed
diff --git a/tools/crm_resource.c b/tools/crm_resource.c
a216ed
index 564600e..78b2246 100644
a216ed
--- a/tools/crm_resource.c
a216ed
+++ b/tools/crm_resource.c
a216ed
@@ -1873,8 +1873,8 @@ main(int argc, char **argv)
a216ed
             break;
a216ed
 
a216ed
         case cmd_locate: {
a216ed
-            GListPtr resources = cli_resource_search(out, rsc, options.rsc_id, data_set);
a216ed
-            rc = out->message(out, "resource-search-list", resources, rsc, options.rsc_id);
a216ed
+            GListPtr nodes = cli_resource_search(out, rsc, options.rsc_id, data_set);
a216ed
+            rc = out->message(out, "resource-search-list", nodes, rsc, options.rsc_id);
a216ed
             break;
a216ed
         }
a216ed
 
a216ed
diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c
a216ed
index b6e4df1..adfdfba 100644
a216ed
--- a/tools/crm_resource_runtime.c
a216ed
+++ b/tools/crm_resource_runtime.c
a216ed
@@ -1780,8 +1780,8 @@ cli_resource_execute(pcmk__output_t *out, pe_resource_t *rsc,
a216ed
         action = rsc_action+6;
a216ed
 
a216ed
         if(pe_rsc_is_clone(rsc)) {
a216ed
-            GListPtr rscs = cli_resource_search(out, rsc, requested_name, data_set);
a216ed
-            if(rscs != NULL && force == FALSE) {
a216ed
+            GListPtr nodes = cli_resource_search(out, rsc, requested_name, data_set);
a216ed
+            if(nodes != NULL && force == FALSE) {
a216ed
                 out->err(out, "It is not safe to %s %s here: the cluster claims it is already active",
a216ed
                          action, rsc->id);
a216ed
                 out->err(out, "Try setting target-role=Stopped first or specifying "
a216ed
-- 
a216ed
1.8.3.1
a216ed
a216ed
a216ed
From e8b320aaaabdd60b7ac851e5b70a2a1b3c2180a3 Mon Sep 17 00:00:00 2001
a216ed
From: Chris Lumens <clumens@redhat.com>
a216ed
Date: Thu, 11 Feb 2021 11:07:07 -0500
a216ed
Subject: [PATCH 2/3] Test: cts: Add a test for a promotable clone resource.
a216ed
a216ed
Note that for the moment, the crm_resource output in
a216ed
regression.tools.exp is incorrect.  There's a bug in that tool, but I
a216ed
wanted to get a test case working before fixing it.
a216ed
---
a216ed
 cts/cli/crm_mon.xml            |  32 +++-
a216ed
 cts/cli/regression.crm_mon.exp | 401 +++++++++++++++++++++++++++++------------
a216ed
 cts/cli/regression.tools.exp   |  18 ++
a216ed
 cts/cts-cli.in                 |  20 ++
a216ed
 4 files changed, 357 insertions(+), 114 deletions(-)
a216ed
a216ed
diff --git a/cts/cli/crm_mon.xml b/cts/cli/crm_mon.xml
a216ed
index d8d5d35..f0f14fd 100644
a216ed
--- a/cts/cli/crm_mon.xml
a216ed
+++ b/cts/cli/crm_mon.xml
a216ed
@@ -1,4 +1,4 @@
a216ed
-<cib crm_feature_set="3.3.0" validate-with="pacemaker-3.3" epoch="1" num_updates="1" admin_epoch="1" cib-last-written="Tue May  5 12:04:36 2020" update-origin="cluster01" update-client="crmd" update-user="hacluster" have-quorum="1" dc-uuid="2">
a216ed
+<cib crm_feature_set="3.3.0" validate-with="pacemaker-3.3" epoch="1" num_updates="135" admin_epoch="1" cib-last-written="Tue May  5 12:04:36 2020" update-origin="cluster01" update-client="crmd" update-user="hacluster" have-quorum="1" dc-uuid="2">
a216ed
   <configuration>
a216ed
     <crm_config>
a216ed
       <cluster_property_set id="cib-bootstrap-options">
a216ed
@@ -99,9 +99,25 @@
a216ed
           </primitive>
a216ed
         </group>
a216ed
       </clone>
a216ed
+      <clone id="promotable-clone">
a216ed
+        <meta_attributes id="promotable-clone-meta_attributes">
a216ed
+          <nvpair id="promotable-clone-meta_attributes-promotable" name="promotable" value="true"/>
a216ed
+        </meta_attributes>
a216ed
+        <primitive id="promotable-rsc" class="ocf" provider="pacemaker" type="Stateful">
a216ed
+          <operations id="promotable-rsc-operations">
a216ed
+            <op id="promotable-rsc-monitor-master-5" name="monitor" interval="5" role="Master"/>
a216ed
+            <op id="promotable-rsc-monitor-slave-10" name="monitor" interval="10" role="Slave"/>
a216ed
+          </operations>
a216ed
+        </primitive>
a216ed
+      </clone>
a216ed
     </resources>
a216ed
     <constraints>
a216ed
       <rsc_location id="not-on-cluster1" rsc="dummy" node="cluster01" score="-INFINITY"/>
a216ed
+      <rsc_location id="loc-promotable-clone" rsc="promotable-clone">
a216ed
+        <rule id="loc-promotable-clone-rule" role="Master" score="10">
a216ed
+          <expression attribute="#uname" id="loc-promotable-clone-expression" operation="eq" value="cluster02"/>
a216ed
+        </rule>
a216ed
+      </rsc_location>
a216ed
     </constraints>
a216ed
     <tags>
a216ed
       <tag id="all-nodes">
a216ed
@@ -153,6 +169,13 @@
a216ed
             <lrm_rsc_op id="mysql-proxy_last_0" operation_key="mysql-proxy_start_0" operation="start" crm-debug-origin="crm_simulate" crm_feature_set="3.4.1" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" last-rc-change="1596126852" last-run="1596126852" exec-time="0" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
a216ed
             <lrm_rsc_op id="mysql-proxy_monitor_10000" operation_key="mysql-proxy_monitor_10000" operation="monitor" crm-debug-origin="crm_simulate" crm_feature_set="3.4.1" transition-key="3:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;3:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="3" rc-code="0" op-status="0" interval="10000" last-rc-change="1596126852" exec-time="0" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
a216ed
           </lrm_resource>
a216ed
+          <lrm_resource id="promotable-rsc" class="ocf" provider="pacemaker" type="Stateful">
a216ed
+            <lrm_rsc_op id="promotable-rsc_last_0" operation_key="promotable-rsc_promote_0" operation="promote" crm-debug-origin="crm_simulate" crm_feature_set="3.7.1" transition-key="6:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;6:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="6" rc-code="0" op-status="0" interval="0" last-rc-change="1613059546" last-run="1613059546" exec-time="0" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
a216ed
+            <lrm_rsc_op id="promotable-rsc_post_notify_start_0" operation_key="promotable-rsc_notify_0" operation="notify" crm-debug-origin="crm_simulate" crm_feature_set="3.7.1" transition-key="3:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;3:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="3" rc-code="0" op-status="0" interval="0" last-rc-change="1613058809" last-run="1613058809" exec-time="0" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
a216ed
+            <lrm_rsc_op id="promotable-rsc_monitor_10000" operation_key="promotable-rsc_monitor_10000" operation="monitor" crm-debug-origin="crm_simulate" crm_feature_set="3.7.1" transition-key="4:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;4:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="4" rc-code="0" op-status="0" interval="10000" last-rc-change="1613058809" exec-time="0" queue-time="0" op-digest="79643b49fcd2a15282788271c56eddb4"/>
a216ed
+            <lrm_rsc_op id="promotable-rsc_cancel_10000" operation_key="promotable-rsc_cancel_10000" operation="cancel" crm-debug-origin="crm_simulate" crm_feature_set="3.7.1" transition-key="5:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;5:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="5" rc-code="0" op-status="0" interval="10000" last-rc-change="1613059546" exec-time="0" queue-time="0" op-digest="79643b49fcd2a15282788271c56eddb4"/>
a216ed
+            <lrm_rsc_op id="promotable-rsc_monitor_5000" operation_key="promotable-rsc_monitor_5000" operation="monitor" crm-debug-origin="crm_simulate" crm_feature_set="3.7.1" transition-key="7:-1:8:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:8;7:-1:8:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="7" rc-code="8" op-status="0" interval="5000" last-rc-change="1613059546" exec-time="0" queue-time="0" op-digest="79643b49fcd2a15282788271c56eddb4"/>
a216ed
+          </lrm_resource>
a216ed
         </lrm_resources>
a216ed
       </lrm>
a216ed
       <transient_attributes id="2">
a216ed
@@ -170,7 +193,7 @@
a216ed
           </lrm_resource>
a216ed
           <lrm_resource id="Fencing" type="fence_xvm" class="stonith">
a216ed
             <lrm_rsc_op id="Fencing_last_0" operation_key="Fencing_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.3.0" transition-key="12:1:0:4a9e64d6-e1dd-4395-917c-1596312eafe4" transition-magic="0:0;12:1:0:4a9e64d6-e1dd-4395-917c-1596312eafe4" exit-reason="" on_node="cluster01" call-id="15" rc-code="0" op-status="0" interval="0" last-rc-change="1588951272" last-run="1588951272" exec-time="36" queue-time="0" op-digest="7da16842ab2328e41f737cab5e5fc89c"/>
a216ed
-            <lrm_rsc_op id="Fencing_monitor_60000" operation_key="Fencing_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.3.0" transition-key="13:1:0:4a9e64d6-e1dd-4395-917c-1596312eafe4" transition-magic="0:0;13:1:0:4a9e64d6-e1dd-4395-917c-1596312eafe4" exit-reason="" on_node="cluster01" call-id="19" rc-code="0" op-status="0" interval="60000" last-rc-change="1588951276" exec-time="24" queue-time="0" op-digest="f85d77708ad4ea02a9099e1e548aff0d"/>
a216ed
+            <lrm_rsc_op id="Fencing_monitor_60000" operation_key="Fencing_monitor_60000" operation="monitor" crm-debug-origin="crm_simulate" crm_feature_set="3.7.1" transition-key="20:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;20:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" on_node="cluster01" call-id="20" rc-code="0" op-status="0" interval="60000" last-rc-change="1613056690" exec-time="0" queue-time="0" op-digest="d4ee02dc1c7ce16eb0f72e06c2cc9193"/>
a216ed
           </lrm_resource>
a216ed
           <lrm_resource id="dummy" type="Dummy" class="ocf" provider="pacemaker">
a216ed
             <lrm_rsc_op id="dummy_last_0" operation_key="dummy_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.3.0" transition-key="3:1:0:4a9e64d6-e1dd-4395-917c-1596312eafe4" transition-magic="0:0;3:1:0:4a9e64d6-e1dd-4395-917c-1596312eafe4" exit-reason="" on_node="cluster01" call-id="16" rc-code="0" op-status="0" interval="0" last-rc-change="1588951272" last-run="1588951272" exec-time="6048" queue-time="0" op-digest="aa0f9b7caf28600646551adb55bd9b95" op-force-restart=" envfile  op_sleep  passwd  state " op-restart-digest="aa0f9b7caf28600646551adb55bd9b95" op-secure-params=" passwd " op-secure-digest="aa0f9b7caf28600646551adb55bd9b95"/>
a216ed
@@ -185,6 +208,11 @@
a216ed
             <lrm_rsc_op id="mysql-proxy_last_0" operation_key="mysql-proxy_start_0" operation="start" crm-debug-origin="crm_simulate" crm_feature_set="3.4.1" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" last-rc-change="1596126852" last-run="1596126852" exec-time="0" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
a216ed
             <lrm_rsc_op id="mysql-proxy_monitor_10000" operation_key="mysql-proxy_monitor_10000" operation="monitor" crm-debug-origin="crm_simulate" crm_feature_set="3.4.1" transition-key="3:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;3:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="3" rc-code="0" op-status="0" interval="10000" last-rc-change="1596126852" exec-time="0" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
a216ed
           </lrm_resource>
a216ed
+          <lrm_resource id="promotable-rsc" class="ocf" provider="pacemaker" type="Stateful">
a216ed
+            <lrm_rsc_op id="promotable-rsc_last_0" operation_key="promotable-rsc_start_0" operation="start" crm-debug-origin="crm_simulate" crm_feature_set="3.7.1" transition-key="2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;2:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="2" rc-code="0" op-status="0" interval="0" last-rc-change="1613058809" last-run="1613058809" exec-time="0" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
a216ed
+            <lrm_rsc_op id="promotable-rsc_post_notify_start_0" operation_key="promotable-rsc_notify_0" operation="notify" crm-debug-origin="crm_simulate" crm_feature_set="3.7.1" transition-key="3:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;3:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="3" rc-code="0" op-status="0" interval="0" last-rc-change="1613058809" last-run="1613058809" exec-time="0" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
a216ed
+            <lrm_rsc_op id="promotable-rsc_monitor_10000" operation_key="promotable-rsc_monitor_10000" operation="monitor" crm-debug-origin="crm_simulate" crm_feature_set="3.7.1" transition-key="4:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" transition-magic="0:0;4:-1:0:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" exit-reason="" call-id="4" rc-code="0" op-status="0" interval="10000" last-rc-change="1613058809" exec-time="0" queue-time="0" op-digest="79643b49fcd2a15282788271c56eddb4"/>
a216ed
+          </lrm_resource>
a216ed
         </lrm_resources>
a216ed
       </lrm>
a216ed
       <transient_attributes id="1">
a216ed
diff --git a/cts/cli/regression.crm_mon.exp b/cts/cli/regression.crm_mon.exp
a216ed
index dd20116..c223b7f 100644
a216ed
--- a/cts/cli/regression.crm_mon.exp
a216ed
+++ b/cts/cli/regression.crm_mon.exp
a216ed
@@ -5,7 +5,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -20,6 +20,9 @@ Active Resources:
a216ed
     * Email	(lsb:exim):	 Started cluster02
a216ed
   * Clone Set: mysql-clone-group [mysql-group]:
a216ed
     * Started: [ cluster01 cluster02 ]
a216ed
+  * Clone Set: promotable-clone [promotable-rsc] (promotable):
a216ed
+    * Masters: [ cluster02 ]
a216ed
+    * Slaves: [ cluster01 ]
a216ed
 =#=#=#= End test: Basic text output - OK (0) =#=#=#=
a216ed
 * Passed: crm_mon        - Basic text output
a216ed
 =#=#=#= Begin test: XML output =#=#=#=
a216ed
@@ -30,12 +33,12 @@ Active Resources:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -112,6 +115,17 @@ Active Resources:
a216ed
         <resource id="mysql-proxy" resource_agent="lsb:mysql-proxy" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
       </group>
a216ed
     </clone>
a216ed
+    <clone id="promotable-clone" multi_state="true" unique="false" managed="true" disabled="false" failed="false" failure_ignored="false">
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Master" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
+        <node name="cluster02" id="2" cached="true"/>
a216ed
+      </resource>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Slave" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
+        <node name="cluster01" id="1" cached="true"/>
a216ed
+      </resource>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+    </clone>
a216ed
   </resources>
a216ed
   <node_attributes>
a216ed
     <node name="cluster01">
a216ed
@@ -142,6 +156,12 @@ Active Resources:
a216ed
         <operation_history call="2" task="start" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
         <operation_history call="3" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
+      <resource_history id="promotable-rsc" orphan="false" migration-threshold="1000000">
a216ed
+        <operation_history call="4" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="5" task="cancel" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="6" task="promote" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="7" task="monitor" rc="8" rc_text="master" interval="5000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+      </resource_history>
a216ed
     </node>
a216ed
     <node name="cluster01">
a216ed
       <resource_history id="ping" orphan="false" migration-threshold="1000000">
a216ed
@@ -150,7 +170,7 @@ Active Resources:
a216ed
       </resource_history>
a216ed
       <resource_history id="Fencing" orphan="false" migration-threshold="1000000">
a216ed
         <operation_history call="15" task="start" rc="0" rc_text="ok" exec-time="36ms" queue-time="0ms"/>
a216ed
-        <operation_history call="19" task="monitor" rc="0" rc_text="ok" interval="60000ms" exec-time="24ms" queue-time="0ms"/>
a216ed
+        <operation_history call="20" task="monitor" rc="0" rc_text="ok" interval="60000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
       <resource_history id="dummy" orphan="false" migration-threshold="1000000">
a216ed
         <operation_history call="16" task="stop" rc="0" rc_text="ok" exec-time="6048ms" queue-time="0ms"/>
a216ed
@@ -159,6 +179,10 @@ Active Resources:
a216ed
         <operation_history call="2" task="start" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
         <operation_history call="3" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
+      <resource_history id="promotable-rsc" orphan="false" migration-threshold="1000000">
a216ed
+        <operation_history call="2" task="start" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="4" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+      </resource_history>
a216ed
     </node>
a216ed
   </node_history>
a216ed
   <bans>
a216ed
@@ -175,7 +199,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Active Resources:
a216ed
   * Clone Set: ping-clone [ping]:
a216ed
@@ -187,6 +211,9 @@ Active Resources:
a216ed
     * Email	(lsb:exim):	 Started cluster02
a216ed
   * Clone Set: mysql-clone-group [mysql-group]:
a216ed
     * Started: [ cluster01 cluster02 ]
a216ed
+  * Clone Set: promotable-clone [promotable-rsc] (promotable):
a216ed
+    * Masters: [ cluster02 ]
a216ed
+    * Slaves: [ cluster01 ]
a216ed
 =#=#=#= End test: Basic text output without node section - OK (0) =#=#=#=
a216ed
 * Passed: crm_mon        - Basic text output without node section
a216ed
 =#=#=#= Begin test: XML output without the node section =#=#=#=
a216ed
@@ -197,7 +224,7 @@ Active Resources:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <resources>
a216ed
@@ -272,6 +299,17 @@ Active Resources:
a216ed
         <resource id="mysql-proxy" resource_agent="lsb:mysql-proxy" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
       </group>
a216ed
     </clone>
a216ed
+    <clone id="promotable-clone" multi_state="true" unique="false" managed="true" disabled="false" failed="false" failure_ignored="false">
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Master" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
+        <node name="cluster02" id="2" cached="true"/>
a216ed
+      </resource>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Slave" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
+        <node name="cluster01" id="1" cached="true"/>
a216ed
+      </resource>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+    </clone>
a216ed
   </resources>
a216ed
   <node_attributes>
a216ed
     <node name="cluster01">
a216ed
@@ -302,6 +340,12 @@ Active Resources:
a216ed
         <operation_history call="2" task="start" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
         <operation_history call="3" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
+      <resource_history id="promotable-rsc" orphan="false" migration-threshold="1000000">
a216ed
+        <operation_history call="4" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="5" task="cancel" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="6" task="promote" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="7" task="monitor" rc="8" rc_text="master" interval="5000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+      </resource_history>
a216ed
     </node>
a216ed
     <node name="cluster01">
a216ed
       <resource_history id="ping" orphan="false" migration-threshold="1000000">
a216ed
@@ -310,7 +354,7 @@ Active Resources:
a216ed
       </resource_history>
a216ed
       <resource_history id="Fencing" orphan="false" migration-threshold="1000000">
a216ed
         <operation_history call="15" task="start" rc="0" rc_text="ok" exec-time="36ms" queue-time="0ms"/>
a216ed
-        <operation_history call="19" task="monitor" rc="0" rc_text="ok" interval="60000ms" exec-time="24ms" queue-time="0ms"/>
a216ed
+        <operation_history call="20" task="monitor" rc="0" rc_text="ok" interval="60000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
       <resource_history id="dummy" orphan="false" migration-threshold="1000000">
a216ed
         <operation_history call="16" task="stop" rc="0" rc_text="ok" exec-time="6048ms" queue-time="0ms"/>
a216ed
@@ -319,6 +363,10 @@ Active Resources:
a216ed
         <operation_history call="2" task="start" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
         <operation_history call="3" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
+      <resource_history id="promotable-rsc" orphan="false" migration-threshold="1000000">
a216ed
+        <operation_history call="2" task="start" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="4" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+      </resource_history>
a216ed
     </node>
a216ed
   </node_history>
a216ed
   <bans>
a216ed
@@ -340,7 +388,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -355,6 +403,9 @@ Active Resources:
a216ed
     * Email	(lsb:exim):	 Started cluster02
a216ed
   * Clone Set: mysql-clone-group [mysql-group]:
a216ed
     * Started: [ cluster01 cluster02 ]
a216ed
+  * Clone Set: promotable-clone [promotable-rsc] (promotable):
a216ed
+    * Masters: [ cluster02 ]
a216ed
+    * Slaves: [ cluster01 ]
a216ed
 
a216ed
 Node Attributes:
a216ed
   * Node: cluster01:
a216ed
@@ -378,18 +429,26 @@ Operations:
a216ed
     * mysql-proxy: migration-threshold=1000000:
a216ed
       * (2) start
a216ed
       * (3) monitor: interval="10000ms"
a216ed
+    * promotable-rsc: migration-threshold=1000000:
a216ed
+      * (4) monitor: interval="10000ms"
a216ed
+      * (5) cancel: interval="10000ms"
a216ed
+      * (6) promote
a216ed
+      * (7) monitor: interval="5000ms"
a216ed
   * Node: cluster01:
a216ed
     * ping: migration-threshold=1000000:
a216ed
       * (17) start
a216ed
       * (18) monitor: interval="10000ms"
a216ed
     * Fencing: migration-threshold=1000000:
a216ed
       * (15) start
a216ed
-      * (19) monitor: interval="60000ms"
a216ed
+      * (20) monitor: interval="60000ms"
a216ed
     * dummy: migration-threshold=1000000:
a216ed
       * (16) stop
a216ed
     * mysql-proxy: migration-threshold=1000000:
a216ed
       * (2) start
a216ed
       * (3) monitor: interval="10000ms"
a216ed
+    * promotable-rsc: migration-threshold=1000000:
a216ed
+      * (2) start
a216ed
+      * (4) monitor: interval="10000ms"
a216ed
 
a216ed
 Negative Location Constraints:
a216ed
   * not-on-cluster1	prevents dummy from running on cluster01
a216ed
@@ -402,7 +461,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 (1) cluster02 (2) ]
a216ed
@@ -427,6 +486,12 @@ Active Resources:
a216ed
       * mysql-proxy	(lsb:mysql-proxy):	 Stopped
a216ed
     * Resource Group: mysql-group:4:
a216ed
       * mysql-proxy	(lsb:mysql-proxy):	 Stopped
a216ed
+  * Clone Set: promotable-clone [promotable-rsc] (promotable):
a216ed
+    * promotable-rsc	(ocf::pacemaker:Stateful):	 Master cluster02
a216ed
+    * promotable-rsc	(ocf::pacemaker:Stateful):	 Slave cluster01
a216ed
+    * promotable-rsc	(ocf::pacemaker:Stateful):	 Stopped
a216ed
+    * promotable-rsc	(ocf::pacemaker:Stateful):	 Stopped
a216ed
+    * promotable-rsc	(ocf::pacemaker:Stateful):	 Stopped
a216ed
 
a216ed
 Node Attributes:
a216ed
   * Node: cluster01 (1):
a216ed
@@ -450,18 +515,26 @@ Operations:
a216ed
     * mysql-proxy: migration-threshold=1000000:
a216ed
       * (2) start
a216ed
       * (3) monitor: interval="10000ms"
a216ed
+    * promotable-rsc: migration-threshold=1000000:
a216ed
+      * (4) monitor: interval="10000ms"
a216ed
+      * (5) cancel: interval="10000ms"
a216ed
+      * (6) promote
a216ed
+      * (7) monitor: interval="5000ms"
a216ed
   * Node: cluster01 (1):
a216ed
     * ping: migration-threshold=1000000:
a216ed
       * (17) start
a216ed
       * (18) monitor: interval="10000ms"
a216ed
     * Fencing: migration-threshold=1000000:
a216ed
       * (15) start
a216ed
-      * (19) monitor: interval="60000ms"
a216ed
+      * (20) monitor: interval="60000ms"
a216ed
     * dummy: migration-threshold=1000000:
a216ed
       * (16) stop
a216ed
     * mysql-proxy: migration-threshold=1000000:
a216ed
       * (2) start
a216ed
       * (3) monitor: interval="10000ms"
a216ed
+    * promotable-rsc: migration-threshold=1000000:
a216ed
+      * (2) start
a216ed
+      * (4) monitor: interval="10000ms"
a216ed
 
a216ed
 Negative Location Constraints:
a216ed
   * not-on-cluster1	prevents dummy from running on cluster01 (1)
a216ed
@@ -474,7 +547,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -489,6 +562,9 @@ Active Resources:
a216ed
     * 1/1	(ocf::heartbeat:IPaddr):	Active cluster02
a216ed
   * Clone Set: mysql-clone-group [mysql-group]:
a216ed
     * Started: [ cluster01 cluster02 ]
a216ed
+  * Clone Set: promotable-clone [promotable-rsc] (promotable):
a216ed
+    * Masters: [ cluster02 ]
a216ed
+    * Slaves: [ cluster01 ]
a216ed
 
a216ed
 Node Attributes:
a216ed
   * Node: cluster01:
a216ed
@@ -512,18 +588,26 @@ Operations:
a216ed
     * mysql-proxy: migration-threshold=1000000:
a216ed
       * (2) start
a216ed
       * (3) monitor: interval="10000ms"
a216ed
+    * promotable-rsc: migration-threshold=1000000:
a216ed
+      * (4) monitor: interval="10000ms"
a216ed
+      * (5) cancel: interval="10000ms"
a216ed
+      * (6) promote
a216ed
+      * (7) monitor: interval="5000ms"
a216ed
   * Node: cluster01:
a216ed
     * ping: migration-threshold=1000000:
a216ed
       * (17) start
a216ed
       * (18) monitor: interval="10000ms"
a216ed
     * Fencing: migration-threshold=1000000:
a216ed
       * (15) start
a216ed
-      * (19) monitor: interval="60000ms"
a216ed
+      * (20) monitor: interval="60000ms"
a216ed
     * dummy: migration-threshold=1000000:
a216ed
       * (16) stop
a216ed
     * mysql-proxy: migration-threshold=1000000:
a216ed
       * (2) start
a216ed
       * (3) monitor: interval="10000ms"
a216ed
+    * promotable-rsc: migration-threshold=1000000:
a216ed
+      * (2) start
a216ed
+      * (4) monitor: interval="10000ms"
a216ed
 
a216ed
 Negative Location Constraints:
a216ed
   * not-on-cluster1	prevents dummy from running on cluster01
a216ed
@@ -536,7 +620,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Node cluster01: online:
a216ed
@@ -544,6 +628,7 @@ Node List:
a216ed
       * ping	(ocf::pacemaker:ping):	 Started
a216ed
       * Fencing	(stonith:fence_xvm):	 Started
a216ed
       * mysql-proxy	(lsb:mysql-proxy):	 Started
a216ed
+      * promotable-rsc	(ocf::pacemaker:Stateful):	 Slave
a216ed
   * Node cluster02: online:
a216ed
     * Resources:
a216ed
       * ping	(ocf::pacemaker:ping):	 Started
a216ed
@@ -551,6 +636,7 @@ Node List:
a216ed
       * Public-IP	(ocf::heartbeat:IPaddr):	 Started
a216ed
       * Email	(lsb:exim):	 Started
a216ed
       * mysql-proxy	(lsb:mysql-proxy):	 Started
a216ed
+      * promotable-rsc	(ocf::pacemaker:Stateful):	 Master
a216ed
   * GuestNode httpd-bundle-0@: OFFLINE:
a216ed
     * Resources:
a216ed
   * GuestNode httpd-bundle-1@: OFFLINE:
a216ed
@@ -580,18 +666,26 @@ Operations:
a216ed
     * mysql-proxy: migration-threshold=1000000:
a216ed
       * (2) start
a216ed
       * (3) monitor: interval="10000ms"
a216ed
+    * promotable-rsc: migration-threshold=1000000:
a216ed
+      * (4) monitor: interval="10000ms"
a216ed
+      * (5) cancel: interval="10000ms"
a216ed
+      * (6) promote
a216ed
+      * (7) monitor: interval="5000ms"
a216ed
   * Node: cluster01:
a216ed
     * ping: migration-threshold=1000000:
a216ed
       * (17) start
a216ed
       * (18) monitor: interval="10000ms"
a216ed
     * Fencing: migration-threshold=1000000:
a216ed
       * (15) start
a216ed
-      * (19) monitor: interval="60000ms"
a216ed
+      * (20) monitor: interval="60000ms"
a216ed
     * dummy: migration-threshold=1000000:
a216ed
       * (16) stop
a216ed
     * mysql-proxy: migration-threshold=1000000:
a216ed
       * (2) start
a216ed
       * (3) monitor: interval="10000ms"
a216ed
+    * promotable-rsc: migration-threshold=1000000:
a216ed
+      * (2) start
a216ed
+      * (4) monitor: interval="10000ms"
a216ed
 
a216ed
 Negative Location Constraints:
a216ed
   * not-on-cluster1	prevents dummy from running on cluster01
a216ed
@@ -604,12 +698,13 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Node cluster01: online:
a216ed
     * Resources:
a216ed
       * 1	(lsb:mysql-proxy):	Active 
a216ed
+      * 1	(ocf::pacemaker:Stateful):	Active 
a216ed
       * 1	(ocf::pacemaker:ping):	Active 
a216ed
       * 1	(stonith:fence_xvm):	Active 
a216ed
   * Node cluster02: online:
a216ed
@@ -618,6 +713,7 @@ Node List:
a216ed
       * 1	(lsb:mysql-proxy):	Active 
a216ed
       * 1	(ocf::heartbeat:IPaddr):	Active 
a216ed
       * 1	(ocf::pacemaker:Dummy):	Active 
a216ed
+      * 1	(ocf::pacemaker:Stateful):	Active 
a216ed
       * 1	(ocf::pacemaker:ping):	Active 
a216ed
 
a216ed
 Node Attributes:
a216ed
@@ -642,18 +738,26 @@ Operations:
a216ed
     * mysql-proxy: migration-threshold=1000000:
a216ed
       * (2) start
a216ed
       * (3) monitor: interval="10000ms"
a216ed
+    * promotable-rsc: migration-threshold=1000000:
a216ed
+      * (4) monitor: interval="10000ms"
a216ed
+      * (5) cancel: interval="10000ms"
a216ed
+      * (6) promote
a216ed
+      * (7) monitor: interval="5000ms"
a216ed
   * Node: cluster01:
a216ed
     * ping: migration-threshold=1000000:
a216ed
       * (17) start
a216ed
       * (18) monitor: interval="10000ms"
a216ed
     * Fencing: migration-threshold=1000000:
a216ed
       * (15) start
a216ed
-      * (19) monitor: interval="60000ms"
a216ed
+      * (20) monitor: interval="60000ms"
a216ed
     * dummy: migration-threshold=1000000:
a216ed
       * (16) stop
a216ed
     * mysql-proxy: migration-threshold=1000000:
a216ed
       * (2) start
a216ed
       * (3) monitor: interval="10000ms"
a216ed
+    * promotable-rsc: migration-threshold=1000000:
a216ed
+      * (2) start
a216ed
+      * (4) monitor: interval="10000ms"
a216ed
 
a216ed
 Negative Location Constraints:
a216ed
   * not-on-cluster1	prevents dummy from running on cluster01
a216ed
@@ -667,11 +771,11 @@ Negative Location Constraints:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member">
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member">
a216ed
       <resource id="ping" resource_agent="ocf::pacemaker:ping" role="Started" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
         <node name="cluster01" id="1" cached="true"/>
a216ed
       </resource>
a216ed
@@ -681,8 +785,11 @@ Negative Location Constraints:
a216ed
       <resource id="mysql-proxy" resource_agent="lsb:mysql-proxy" role="Started" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
         <node name="cluster01" id="1" cached="true"/>
a216ed
       </resource>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Slave" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
+        <node name="cluster01" id="1" cached="true"/>
a216ed
+      </resource>
a216ed
     </node>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member">
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member">
a216ed
       <resource id="ping" resource_agent="ocf::pacemaker:ping" role="Started" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
         <node name="cluster02" id="2" cached="true"/>
a216ed
       </resource>
a216ed
@@ -698,6 +805,9 @@ Negative Location Constraints:
a216ed
       <resource id="mysql-proxy" resource_agent="lsb:mysql-proxy" role="Started" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
         <node name="cluster02" id="2" cached="true"/>
a216ed
       </resource>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Master" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
+        <node name="cluster02" id="2" cached="true"/>
a216ed
+      </resource>
a216ed
     </node>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
@@ -753,6 +863,17 @@ Negative Location Constraints:
a216ed
         <resource id="mysql-proxy" resource_agent="lsb:mysql-proxy" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
       </group>
a216ed
     </clone>
a216ed
+    <clone id="promotable-clone" multi_state="true" unique="false" managed="true" disabled="false" failed="false" failure_ignored="false">
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Master" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
+        <node name="cluster02" id="2" cached="true"/>
a216ed
+      </resource>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Slave" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
+        <node name="cluster01" id="1" cached="true"/>
a216ed
+      </resource>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+    </clone>
a216ed
   </resources>
a216ed
   <node_attributes>
a216ed
     <node name="cluster01">
a216ed
@@ -783,6 +904,12 @@ Negative Location Constraints:
a216ed
         <operation_history call="2" task="start" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
         <operation_history call="3" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
+      <resource_history id="promotable-rsc" orphan="false" migration-threshold="1000000">
a216ed
+        <operation_history call="4" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="5" task="cancel" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="6" task="promote" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="7" task="monitor" rc="8" rc_text="master" interval="5000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+      </resource_history>
a216ed
     </node>
a216ed
     <node name="cluster01">
a216ed
       <resource_history id="ping" orphan="false" migration-threshold="1000000">
a216ed
@@ -791,7 +918,7 @@ Negative Location Constraints:
a216ed
       </resource_history>
a216ed
       <resource_history id="Fencing" orphan="false" migration-threshold="1000000">
a216ed
         <operation_history call="15" task="start" rc="0" rc_text="ok" exec-time="36ms" queue-time="0ms"/>
a216ed
-        <operation_history call="19" task="monitor" rc="0" rc_text="ok" interval="60000ms" exec-time="24ms" queue-time="0ms"/>
a216ed
+        <operation_history call="20" task="monitor" rc="0" rc_text="ok" interval="60000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
       <resource_history id="dummy" orphan="false" migration-threshold="1000000">
a216ed
         <operation_history call="16" task="stop" rc="0" rc_text="ok" exec-time="6048ms" queue-time="0ms"/>
a216ed
@@ -800,6 +927,10 @@ Negative Location Constraints:
a216ed
         <operation_history call="2" task="start" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
         <operation_history call="3" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
+      <resource_history id="promotable-rsc" orphan="false" migration-threshold="1000000">
a216ed
+        <operation_history call="2" task="start" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="4" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+      </resource_history>
a216ed
     </node>
a216ed
   </node_history>
a216ed
   <bans>
a216ed
@@ -816,7 +947,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 ]
a216ed
@@ -827,6 +958,8 @@ Active Resources:
a216ed
   * Fencing	(stonith:fence_xvm):	 Started cluster01
a216ed
   * Clone Set: mysql-clone-group [mysql-group]:
a216ed
     * Started: [ cluster01 ]
a216ed
+  * Clone Set: promotable-clone [promotable-rsc] (promotable):
a216ed
+    * Slaves: [ cluster01 ]
a216ed
 
a216ed
 Node Attributes:
a216ed
   * Node: cluster01:
a216ed
@@ -840,12 +973,15 @@ Operations:
a216ed
       * (18) monitor: interval="10000ms"
a216ed
     * Fencing: migration-threshold=1000000:
a216ed
       * (15) start
a216ed
-      * (19) monitor: interval="60000ms"
a216ed
+      * (20) monitor: interval="60000ms"
a216ed
     * dummy: migration-threshold=1000000:
a216ed
       * (16) stop
a216ed
     * mysql-proxy: migration-threshold=1000000:
a216ed
       * (2) start
a216ed
       * (3) monitor: interval="10000ms"
a216ed
+    * promotable-rsc: migration-threshold=1000000:
a216ed
+      * (2) start
a216ed
+      * (4) monitor: interval="10000ms"
a216ed
 
a216ed
 Negative Location Constraints:
a216ed
   * not-on-cluster1	prevents dummy from running on cluster01
a216ed
@@ -859,11 +995,11 @@ Negative Location Constraints:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
   </nodes>
a216ed
   <resources>
a216ed
     <clone id="ping-clone" multi_state="false" unique="false" managed="true" disabled="false" failed="false" failure_ignored="false">
a216ed
@@ -918,6 +1054,14 @@ Negative Location Constraints:
a216ed
         <resource id="mysql-proxy" resource_agent="lsb:mysql-proxy" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
       </group>
a216ed
     </clone>
a216ed
+    <clone id="promotable-clone" multi_state="true" unique="false" managed="true" disabled="false" failed="false" failure_ignored="false">
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Slave" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
+        <node name="cluster01" id="1" cached="true"/>
a216ed
+      </resource>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+    </clone>
a216ed
   </resources>
a216ed
   <node_attributes>
a216ed
     <node name="cluster01">
a216ed
@@ -933,7 +1077,7 @@ Negative Location Constraints:
a216ed
       </resource_history>
a216ed
       <resource_history id="Fencing" orphan="false" migration-threshold="1000000">
a216ed
         <operation_history call="15" task="start" rc="0" rc_text="ok" exec-time="36ms" queue-time="0ms"/>
a216ed
-        <operation_history call="19" task="monitor" rc="0" rc_text="ok" interval="60000ms" exec-time="24ms" queue-time="0ms"/>
a216ed
+        <operation_history call="20" task="monitor" rc="0" rc_text="ok" interval="60000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
       <resource_history id="dummy" orphan="false" migration-threshold="1000000">
a216ed
         <operation_history call="16" task="stop" rc="0" rc_text="ok" exec-time="6048ms" queue-time="0ms"/>
a216ed
@@ -942,6 +1086,10 @@ Negative Location Constraints:
a216ed
         <operation_history call="2" task="start" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
         <operation_history call="3" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
+      <resource_history id="promotable-rsc" orphan="false" migration-threshold="1000000">
a216ed
+        <operation_history call="2" task="start" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="4" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+      </resource_history>
a216ed
     </node>
a216ed
   </node_history>
a216ed
   <bans>
a216ed
@@ -958,7 +1106,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster02 ]
a216ed
@@ -972,6 +1120,8 @@ Active Resources:
a216ed
     * Email	(lsb:exim):	 Started cluster02
a216ed
   * Clone Set: mysql-clone-group [mysql-group]:
a216ed
     * Started: [ cluster02 ]
a216ed
+  * Clone Set: promotable-clone [promotable-rsc] (promotable):
a216ed
+    * Masters: [ cluster02 ]
a216ed
 
a216ed
 Node Attributes:
a216ed
   * Node: cluster02:
a216ed
@@ -992,6 +1142,11 @@ Operations:
a216ed
     * mysql-proxy: migration-threshold=1000000:
a216ed
       * (2) start
a216ed
       * (3) monitor: interval="10000ms"
a216ed
+    * promotable-rsc: migration-threshold=1000000:
a216ed
+      * (4) monitor: interval="10000ms"
a216ed
+      * (5) cancel: interval="10000ms"
a216ed
+      * (6) promote
a216ed
+      * (7) monitor: interval="5000ms"
a216ed
 
a216ed
 Negative Location Constraints:
a216ed
   * not-on-cluster1	prevents dummy from running on cluster01
a216ed
@@ -1005,11 +1160,11 @@ Negative Location Constraints:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
   </nodes>
a216ed
   <resources>
a216ed
     <clone id="ping-clone" multi_state="false" unique="false" managed="true" disabled="false" failed="false" failure_ignored="false">
a216ed
@@ -1072,6 +1227,14 @@ Negative Location Constraints:
a216ed
         <resource id="mysql-proxy" resource_agent="lsb:mysql-proxy" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
       </group>
a216ed
     </clone>
a216ed
+    <clone id="promotable-clone" multi_state="true" unique="false" managed="true" disabled="false" failed="false" failure_ignored="false">
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Master" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
a216ed
+        <node name="cluster02" id="2" cached="true"/>
a216ed
+      </resource>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+      <resource id="promotable-rsc" resource_agent="ocf::pacemaker:Stateful" role="Stopped" active="false" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="0"/>
a216ed
+    </clone>
a216ed
   </resources>
a216ed
   <node_attributes>
a216ed
     <node name="cluster02">
a216ed
@@ -1098,6 +1261,12 @@ Negative Location Constraints:
a216ed
         <operation_history call="2" task="start" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
         <operation_history call="3" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
+      <resource_history id="promotable-rsc" orphan="false" migration-threshold="1000000">
a216ed
+        <operation_history call="4" task="monitor" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="5" task="cancel" rc="0" rc_text="ok" interval="10000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="6" task="promote" rc="0" rc_text="ok" exec-time="0ms" queue-time="0ms"/>
a216ed
+        <operation_history call="7" task="monitor" rc="8" rc_text="master" interval="5000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
+      </resource_history>
a216ed
     </node>
a216ed
   </node_history>
a216ed
   <bans>
a216ed
@@ -1114,7 +1283,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -1133,7 +1302,7 @@ Operations:
a216ed
   * Node: cluster01:
a216ed
     * Fencing: migration-threshold=1000000:
a216ed
       * (15) start
a216ed
-      * (19) monitor: interval="60000ms"
a216ed
+      * (20) monitor: interval="60000ms"
a216ed
 =#=#=#= End test: Complete text output filtered by resource tag - OK (0) =#=#=#=
a216ed
 * Passed: crm_mon        - Complete text output filtered by resource tag
a216ed
 =#=#=#= Begin test: XML output filtered by resource tag =#=#=#=
a216ed
@@ -1144,12 +1313,12 @@ Operations:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -1172,7 +1341,7 @@ Operations:
a216ed
     <node name="cluster01">
a216ed
       <resource_history id="Fencing" orphan="false" migration-threshold="1000000">
a216ed
         <operation_history call="15" task="start" rc="0" rc_text="ok" exec-time="36ms" queue-time="0ms"/>
a216ed
-        <operation_history call="19" task="monitor" rc="0" rc_text="ok" interval="60000ms" exec-time="24ms" queue-time="0ms"/>
a216ed
+        <operation_history call="20" task="monitor" rc="0" rc_text="ok" interval="60000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
     </node>
a216ed
   </node_history>
a216ed
@@ -1187,7 +1356,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Active Resources:
a216ed
   * No active resources
a216ed
@@ -1201,7 +1370,7 @@ Active Resources:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes/>
a216ed
@@ -1249,7 +1418,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -1273,6 +1442,9 @@ Full List of Resources:
a216ed
     * Email	(lsb:exim):	 Started cluster02
a216ed
   * Clone Set: mysql-clone-group [mysql-group]:
a216ed
     * Started: [ cluster01 cluster02 ]
a216ed
+  * Clone Set: promotable-clone [promotable-rsc] (promotable):
a216ed
+    * Masters: [ cluster02 ]
a216ed
+    * Slaves: [ cluster01 ]
a216ed
 =#=#=#= End test: Basic text output with inactive resources - OK (0) =#=#=#=
a216ed
 * Passed: crm_mon        - Basic text output with inactive resources
a216ed
 =#=#=#= Begin test: Basic text output with inactive resources, filtered by node =#=#=#=
a216ed
@@ -1282,7 +1454,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster02 ]
a216ed
@@ -1305,6 +1477,8 @@ Full List of Resources:
a216ed
     * Email	(lsb:exim):	 Started cluster02
a216ed
   * Clone Set: mysql-clone-group [mysql-group]:
a216ed
     * Started: [ cluster02 ]
a216ed
+  * Clone Set: promotable-clone [promotable-rsc] (promotable):
a216ed
+    * Masters: [ cluster02 ]
a216ed
 =#=#=#= End test: Basic text output with inactive resources, filtered by node - OK (0) =#=#=#=
a216ed
 * Passed: crm_mon        - Basic text output with inactive resources, filtered by node
a216ed
 =#=#=#= Begin test: Complete text output filtered by primitive resource =#=#=#=
a216ed
@@ -1314,7 +1488,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -1333,7 +1507,7 @@ Operations:
a216ed
   * Node: cluster01:
a216ed
     * Fencing: migration-threshold=1000000:
a216ed
       * (15) start
a216ed
-      * (19) monitor: interval="60000ms"
a216ed
+      * (20) monitor: interval="60000ms"
a216ed
 =#=#=#= End test: Complete text output filtered by primitive resource - OK (0) =#=#=#=
a216ed
 * Passed: crm_mon        - Complete text output filtered by primitive resource
a216ed
 =#=#=#= Begin test: XML output filtered by primitive resource =#=#=#=
a216ed
@@ -1344,12 +1518,12 @@ Operations:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -1372,7 +1546,7 @@ Operations:
a216ed
     <node name="cluster01">
a216ed
       <resource_history id="Fencing" orphan="false" migration-threshold="1000000">
a216ed
         <operation_history call="15" task="start" rc="0" rc_text="ok" exec-time="36ms" queue-time="0ms"/>
a216ed
-        <operation_history call="19" task="monitor" rc="0" rc_text="ok" interval="60000ms" exec-time="24ms" queue-time="0ms"/>
a216ed
+        <operation_history call="20" task="monitor" rc="0" rc_text="ok" interval="60000ms" exec-time="0ms" queue-time="0ms"/>
a216ed
       </resource_history>
a216ed
     </node>
a216ed
   </node_history>
a216ed
@@ -1387,7 +1561,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -1420,12 +1594,12 @@ Operations:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -1470,7 +1644,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -1500,12 +1674,12 @@ Operations:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -1544,7 +1718,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -1579,12 +1753,12 @@ Operations:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -1633,7 +1807,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -1668,12 +1842,12 @@ Operations:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -1722,7 +1896,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 (1) cluster02 (2) ]
a216ed
@@ -1757,12 +1931,12 @@ Operations:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -1808,7 +1982,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -1825,12 +1999,12 @@ Active Resources:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -1857,7 +2031,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -1877,7 +2051,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -1897,12 +2071,12 @@ Full List of Resources:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -1950,7 +2124,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -1969,12 +2143,12 @@ Full List of Resources:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -2007,7 +2181,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -2026,12 +2200,12 @@ Full List of Resources:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -2064,7 +2238,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -2083,12 +2257,12 @@ Full List of Resources:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -2121,7 +2295,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 cluster02 ]
a216ed
@@ -2144,12 +2318,12 @@ Full List of Resources:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -2188,7 +2362,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 (1) cluster02 (2) ]
a216ed
@@ -2232,12 +2406,12 @@ Operations:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -2279,7 +2453,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 (1) cluster02 (2) ]
a216ed
@@ -2323,12 +2497,12 @@ Operations:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -2390,7 +2564,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 (1) cluster02 (2) ]
a216ed
@@ -2426,12 +2600,12 @@ Operations:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -2479,7 +2653,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 (1) cluster02 (2) ]
a216ed
@@ -2523,12 +2697,12 @@ Operations:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -2590,7 +2764,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
 Node List:
a216ed
   * Online: [ cluster01 (1) cluster02 (2) ]
a216ed
@@ -2626,12 +2800,12 @@ Operations:
a216ed
     <last_update time=""/>
a216ed
     <last_change time=""/>
a216ed
     <nodes_configured number="5"/>
a216ed
-    <resources_configured number="27" disabled="4" blocked="0"/>
a216ed
+    <resources_configured number="32" disabled="4" blocked="0"/>
a216ed
     <cluster_options stonith-enabled="true" symmetric-cluster="true" no-quorum-policy="stop" maintenance-mode="false" stop-all-resources="false"/>
a216ed
   </summary>
a216ed
   <nodes>
a216ed
-    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="3" type="member"/>
a216ed
-    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="5" type="member"/>
a216ed
+    <node name="cluster01" id="1" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="4" type="member"/>
a216ed
+    <node name="cluster02" id="2" online="true" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="6" type="member"/>
a216ed
     <node name="httpd-bundle-0" id="httpd-bundle-0" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-0"/>
a216ed
     <node name="httpd-bundle-1" id="httpd-bundle-1" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-1"/>
a216ed
     <node name="httpd-bundle-2" id="httpd-bundle-2" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote" id_as_resource="httpd-bundle-docker-2"/>
a216ed
@@ -3083,7 +3257,7 @@ Cluster Summary:
a216ed
   * Last updated:
a216ed
   * Last change:
a216ed
   * 5 nodes configured
a216ed
-  * 27 resource instances configured (4 DISABLED)
a216ed
+  * 32 resource instances configured (4 DISABLED)
a216ed
 
a216ed
               *** Resource management is DISABLED ***
a216ed
   The cluster will not attempt to start, stop or recover services
a216ed
@@ -3114,5 +3288,8 @@ Full List of Resources:
a216ed
       * mysql-proxy	(lsb:mysql-proxy):	 Started cluster02 (unmanaged)
a216ed
     * Resource Group: mysql-group:1 (unmanaged):
a216ed
       * mysql-proxy	(lsb:mysql-proxy):	 Started cluster01 (unmanaged)
a216ed
+  * Clone Set: promotable-clone [promotable-rsc] (promotable) (unmanaged):
a216ed
+    * promotable-rsc	(ocf::pacemaker:Stateful):	 Master cluster02 (unmanaged)
a216ed
+    * promotable-rsc	(ocf::pacemaker:Stateful):	 Slave cluster01 (unmanaged)
a216ed
 =#=#=#= End test: Text output of all resources with maintenance-mode enabled - OK (0) =#=#=#=
a216ed
 * Passed: crm_mon        - Text output of all resources with maintenance-mode enabled
a216ed
diff --git a/cts/cli/regression.tools.exp b/cts/cli/regression.tools.exp
a216ed
index 1afe596..708c340 100644
a216ed
--- a/cts/cli/regression.tools.exp
a216ed
+++ b/cts/cli/regression.tools.exp
a216ed
@@ -4077,3 +4077,21 @@ Resources colocated with clone:
a216ed
 5
a216ed
 =#=#=#= End test: List guest,remote nodes - OK (0) =#=#=#=
a216ed
 * Passed: crmadmin       - List guest,remote nodes
a216ed
+=#=#=#= Begin test: List a promotable clone resource =#=#=#=
a216ed
+resource promotable-clone is running on: cluster02
a216ed
+resource promotable-clone is running on: cluster01
a216ed
+=#=#=#= End test: List a promotable clone resource - OK (0) =#=#=#=
a216ed
+* Passed: crm_resource   - List a promotable clone resource
a216ed
+=#=#=#= Begin test: List the primitive of a promotable clone resource =#=#=#=
a216ed
+resource promotable-rsc is running on: cluster02 Master
a216ed
+resource promotable-rsc is running on: cluster01 Master
a216ed
+=#=#=#= End test: List the primitive of a promotable clone resource - OK (0) =#=#=#=
a216ed
+* Passed: crm_resource   - List the primitive of a promotable clone resource
a216ed
+=#=#=#= Begin test: List a single instance of a promotable clone resource =#=#=#=
a216ed
+resource promotable-rsc:0 is running on: cluster02 Master
a216ed
+=#=#=#= End test: List a single instance of a promotable clone resource - OK (0) =#=#=#=
a216ed
+* Passed: crm_resource   - List a single instance of a promotable clone resource
a216ed
+=#=#=#= Begin test: List another instance of a promotable clone resource =#=#=#=
a216ed
+resource promotable-rsc:1 is running on: cluster01
a216ed
+=#=#=#= End test: List another instance of a promotable clone resource - OK (0) =#=#=#=
a216ed
+* Passed: crm_resource   - List another instance of a promotable clone resource
a216ed
diff --git a/cts/cts-cli.in b/cts/cts-cli.in
a216ed
index 8e2dbe5..6f7eb80 100755
a216ed
--- a/cts/cts-cli.in
a216ed
+++ b/cts/cts-cli.in
a216ed
@@ -831,6 +831,26 @@ function test_tools() {
a216ed
     test_assert $CRM_EX_OK 0
a216ed
 
a216ed
     unset CIB_file
a216ed
+
a216ed
+    export CIB_file="$test_home/cli/crm_mon.xml"
a216ed
+
a216ed
+    desc="List a promotable clone resource"
a216ed
+    cmd="crm_resource --locate -r promotable-clone"
a216ed
+    test_assert $CRM_EX_OK 0
a216ed
+
a216ed
+    desc="List the primitive of a promotable clone resource"
a216ed
+    cmd="crm_resource --locate -r promotable-rsc"
a216ed
+    test_assert $CRM_EX_OK 0
a216ed
+
a216ed
+    desc="List a single instance of a promotable clone resource"
a216ed
+    cmd="crm_resource --locate -r promotable-rsc:0"
a216ed
+    test_assert $CRM_EX_OK 0
a216ed
+
a216ed
+    desc="List another instance of a promotable clone resource"
a216ed
+    cmd="crm_resource --locate -r promotable-rsc:1"
a216ed
+    test_assert $CRM_EX_OK 0
a216ed
+
a216ed
+    unset CIB_file
a216ed
 }
a216ed
 
a216ed
 INVALID_PERIODS=(
a216ed
-- 
a216ed
1.8.3.1
a216ed
a216ed
a216ed
From d1bb0758726c09fd78efbc30c7eb46559e9c10e2 Mon Sep 17 00:00:00 2001
a216ed
From: Chris Lumens <clumens@redhat.com>
a216ed
Date: Thu, 11 Feb 2021 15:09:54 -0500
a216ed
Subject: [PATCH 3/3] Fix: Correct output of "crm_resource --locate" in case of
a216ed
 clones.
a216ed
a216ed
For non-clone resources, the rsc parameter passed to
a216ed
resource_search_list_* is accurate - it is the resource object for the
a216ed
name given on the command line.  For clone resources, this parameter is
a216ed
incorrect.  It will be a single instance of the clone resource, no
a216ed
matter which instance might have been asked for on the command line.
a216ed
a216ed
This typically doesn't matter, but results in incorrect output when
a216ed
promotable clones are searched for.  For promotable clones, the "Master"
a216ed
text may not appear for any of the instances.  This is because the
a216ed
single instance passed in as the rsc parameter might not be the master,
a216ed
but each iteration through the loop will use that same parameter.
a216ed
a216ed
The fix is to change cli_resource_search to return a list of
a216ed
node/promoted pairs so we we already have all the information we need.
a216ed
Printing is then a simple matter of just walking that list.
a216ed
a216ed
The referenced bug has a much better explanation of the cause of the
a216ed
problem.
a216ed
a216ed
See: rhbz#1925681
a216ed
---
a216ed
 cts/cli/regression.tools.exp |  4 ++--
a216ed
 tools/crm_resource.c         |  3 ++-
a216ed
 tools/crm_resource.h         |  7 +++++-
a216ed
 tools/crm_resource_print.c   | 23 +++++++-------------
a216ed
 tools/crm_resource_runtime.c | 51 +++++++++++++++++++++++++++++++-------------
a216ed
 5 files changed, 54 insertions(+), 34 deletions(-)
a216ed
a216ed
diff --git a/cts/cli/regression.tools.exp b/cts/cli/regression.tools.exp
a216ed
index 708c340..b3f16fa 100644
a216ed
--- a/cts/cli/regression.tools.exp
a216ed
+++ b/cts/cli/regression.tools.exp
a216ed
@@ -4078,13 +4078,13 @@ Resources colocated with clone:
a216ed
 =#=#=#= End test: List guest,remote nodes - OK (0) =#=#=#=
a216ed
 * Passed: crmadmin       - List guest,remote nodes
a216ed
 =#=#=#= Begin test: List a promotable clone resource =#=#=#=
a216ed
-resource promotable-clone is running on: cluster02
a216ed
 resource promotable-clone is running on: cluster01
a216ed
+resource promotable-clone is running on: cluster02 Master
a216ed
 =#=#=#= End test: List a promotable clone resource - OK (0) =#=#=#=
a216ed
 * Passed: crm_resource   - List a promotable clone resource
a216ed
 =#=#=#= Begin test: List the primitive of a promotable clone resource =#=#=#=
a216ed
+resource promotable-rsc is running on: cluster01
a216ed
 resource promotable-rsc is running on: cluster02 Master
a216ed
-resource promotable-rsc is running on: cluster01 Master
a216ed
 =#=#=#= End test: List the primitive of a promotable clone resource - OK (0) =#=#=#=
a216ed
 * Passed: crm_resource   - List the primitive of a promotable clone resource
a216ed
 =#=#=#= Begin test: List a single instance of a promotable clone resource =#=#=#=
a216ed
diff --git a/tools/crm_resource.c b/tools/crm_resource.c
a216ed
index 78b2246..7d2f0f6 100644
a216ed
--- a/tools/crm_resource.c
a216ed
+++ b/tools/crm_resource.c
a216ed
@@ -1874,7 +1874,8 @@ main(int argc, char **argv)
a216ed
 
a216ed
         case cmd_locate: {
a216ed
             GListPtr nodes = cli_resource_search(out, rsc, options.rsc_id, data_set);
a216ed
-            rc = out->message(out, "resource-search-list", nodes, rsc, options.rsc_id);
a216ed
+            rc = out->message(out, "resource-search-list", nodes, options.rsc_id);
a216ed
+            g_list_free_full(nodes, free);
a216ed
             break;
a216ed
         }
a216ed
 
a216ed
diff --git a/tools/crm_resource.h b/tools/crm_resource.h
a216ed
index 5bfadb7..777490a 100644
a216ed
--- a/tools/crm_resource.h
a216ed
+++ b/tools/crm_resource.h
a216ed
@@ -1,5 +1,5 @@
a216ed
 /*
a216ed
- * Copyright 2004-2020 the Pacemaker project contributors
a216ed
+ * Copyright 2004-2021 the Pacemaker project contributors
a216ed
  *
a216ed
  * The version control history for this file may have further details.
a216ed
  *
a216ed
@@ -23,6 +23,11 @@
a216ed
 #include <crm/pengine/internal.h>
a216ed
 #include <pacemaker-internal.h>
a216ed
 
a216ed
+typedef struct node_info_s {
a216ed
+    const char *node_name;
a216ed
+    bool promoted;
a216ed
+} node_info_t;
a216ed
+
a216ed
 enum resource_check_flags {
a216ed
     rsc_remain_stopped  = (1 << 0),
a216ed
     rsc_unpromotable    = (1 << 1),
a216ed
diff --git a/tools/crm_resource_print.c b/tools/crm_resource_print.c
a216ed
index 398fef0..053f806 100644
a216ed
--- a/tools/crm_resource_print.c
a216ed
+++ b/tools/crm_resource_print.c
a216ed
@@ -276,12 +276,11 @@ resource_check_list_xml(pcmk__output_t *out, va_list args) {
a216ed
     return rc;
a216ed
 }
a216ed
 
a216ed
-PCMK__OUTPUT_ARGS("resource-search-list", "GList *", "pe_resource_t *", "gchar *")
a216ed
+PCMK__OUTPUT_ARGS("resource-search-list", "GList *", "gchar *")
a216ed
 static int
a216ed
 resource_search_list_default(pcmk__output_t *out, va_list args)
a216ed
 {
a216ed
     GList *nodes = va_arg(args, GList *);
a216ed
-    pe_resource_t *rsc = va_arg(args, pe_resource_t *);
a216ed
     gchar *requested_name = va_arg(args, gchar *);
a216ed
 
a216ed
     bool printed = false;
a216ed
@@ -293,7 +292,7 @@ resource_search_list_default(pcmk__output_t *out, va_list args)
a216ed
     }
a216ed
 
a216ed
     for (GList *lpc = nodes; lpc != NULL; lpc = lpc->next) {
a216ed
-        pe_node_t *node = (pe_node_t *) lpc->data;
a216ed
+        node_info_t *ni = (node_info_t *) lpc->data;
a216ed
 
a216ed
         if (!printed) {
a216ed
             out->begin_list(out, NULL, NULL, "Nodes");
a216ed
@@ -302,15 +301,10 @@ resource_search_list_default(pcmk__output_t *out, va_list args)
a216ed
         }
a216ed
 
a216ed
         if (out->is_quiet(out)) {
a216ed
-            out->list_item(out, "node", "%s", node->details->uname);
a216ed
+            out->list_item(out, "node", "%s", ni->node_name);
a216ed
         } else {
a216ed
-            const char *state = "";
a216ed
-
a216ed
-            if (!pe_rsc_is_clone(rsc) && rsc->fns->state(rsc, TRUE) == RSC_ROLE_MASTER) {
a216ed
-                state = " Master";
a216ed
-            }
a216ed
             out->list_item(out, "node", "resource %s is running on: %s%s",
a216ed
-                           requested_name, node->details->uname, state);
a216ed
+                           requested_name, ni->node_name, ni->promoted ? " Master" : "");
a216ed
         }
a216ed
     }
a216ed
 
a216ed
@@ -321,12 +315,11 @@ resource_search_list_default(pcmk__output_t *out, va_list args)
a216ed
     return rc;
a216ed
 }
a216ed
 
a216ed
-PCMK__OUTPUT_ARGS("resource-search-list", "GList *", "pe_resource_t *", "gchar *")
a216ed
+PCMK__OUTPUT_ARGS("resource-search-list", "GList *", "gchar *")
a216ed
 static int
a216ed
 resource_search_list_xml(pcmk__output_t *out, va_list args)
a216ed
 {
a216ed
     GList *nodes = va_arg(args, GList *);
a216ed
-    pe_resource_t *rsc = va_arg(args, pe_resource_t *);
a216ed
     gchar *requested_name = va_arg(args, gchar *);
a216ed
 
a216ed
     pcmk__output_xml_create_parent(out, "nodes",
a216ed
@@ -334,10 +327,10 @@ resource_search_list_xml(pcmk__output_t *out, va_list args)
a216ed
                                    NULL);
a216ed
 
a216ed
     for (GList *lpc = nodes; lpc != NULL; lpc = lpc->next) {
a216ed
-        pe_node_t *node = (pe_node_t *) lpc->data;
a216ed
-        xmlNodePtr sub_node = pcmk__output_create_xml_text_node(out, "node", node->details->uname);
a216ed
+        node_info_t *ni = (node_info_t *) lpc->data;
a216ed
+        xmlNodePtr sub_node = pcmk__output_create_xml_text_node(out, "node", ni->node_name);
a216ed
 
a216ed
-        if (!pe_rsc_is_clone(rsc) && rsc->fns->state(rsc, TRUE) == RSC_ROLE_MASTER) {
a216ed
+        if (ni->promoted) {
a216ed
             crm_xml_add(sub_node, "state", "promoted");
a216ed
         }
a216ed
     }
a216ed
diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c
a216ed
index adfdfba..1769042 100644
a216ed
--- a/tools/crm_resource_runtime.c
a216ed
+++ b/tools/crm_resource_runtime.c
a216ed
@@ -41,20 +41,37 @@ cli_check_resource(pe_resource_t *rsc, char *role_s, char *managed)
a216ed
     return rc;
a216ed
 }
a216ed
 
a216ed
+static GListPtr
a216ed
+build_node_info_list(pe_resource_t *rsc)
a216ed
+{
a216ed
+    GListPtr retval = NULL;
a216ed
+
a216ed
+    for (GListPtr iter = rsc->children; iter != NULL; iter = iter->next) {
a216ed
+        pe_resource_t *child = (pe_resource_t *) iter->data;
a216ed
+
a216ed
+        for (GListPtr iter2 = child->running_on; iter2 != NULL; iter2 = iter2->next) {
a216ed
+            pe_node_t *node = (pe_node_t *) iter2->data;
a216ed
+            node_info_t *ni = calloc(1, sizeof(node_info_t));
a216ed
+            ni->node_name = node->details->uname;
a216ed
+            ni->promoted = pcmk_is_set(rsc->flags, pe_rsc_promotable) &&
a216ed
+                           child->fns->state(child, TRUE) == RSC_ROLE_MASTER;
a216ed
+
a216ed
+            retval = g_list_prepend(retval, ni);
a216ed
+        }
a216ed
+    }
a216ed
+
a216ed
+    return retval;
a216ed
+}
a216ed
+
a216ed
 GListPtr
a216ed
 cli_resource_search(pcmk__output_t *out, pe_resource_t *rsc, const char *requested_name,
a216ed
                     pe_working_set_t *data_set)
a216ed
 {
a216ed
-    GListPtr found = NULL;
a216ed
+    GListPtr retval = NULL;
a216ed
     pe_resource_t *parent = uber_parent(rsc);
a216ed
 
a216ed
     if (pe_rsc_is_clone(rsc)) {
a216ed
-        for (GListPtr iter = rsc->children; iter != NULL; iter = iter->next) {
a216ed
-            GListPtr extra = ((pe_resource_t *) iter->data)->running_on;
a216ed
-            if (extra != NULL) {
a216ed
-                found = g_list_concat(found, extra);
a216ed
-            }
a216ed
-        }
a216ed
+        retval = build_node_info_list(rsc);
a216ed
 
a216ed
     /* The anonymous clone children's common ID is supplied */
a216ed
     } else if (pe_rsc_is_clone(parent)
a216ed
@@ -63,18 +80,20 @@ cli_resource_search(pcmk__output_t *out, pe_resource_t *rsc, const char *request
a216ed
                && pcmk__str_eq(requested_name, rsc->clone_name, pcmk__str_casei)
a216ed
                && !pcmk__str_eq(requested_name, rsc->id, pcmk__str_casei)) {
a216ed
 
a216ed
-        for (GListPtr iter = parent->children; iter; iter = iter->next) {
a216ed
-            GListPtr extra = ((pe_resource_t *) iter->data)->running_on;
a216ed
-            if (extra != NULL) {
a216ed
-                found = g_list_concat(found, extra);
a216ed
-            }
a216ed
-        }
a216ed
+        retval = build_node_info_list(parent);
a216ed
 
a216ed
     } else if (rsc->running_on != NULL) {
a216ed
-        found = g_list_concat(found, rsc->running_on);
a216ed
+        for (GListPtr iter = rsc->running_on; iter != NULL; iter = iter->next) {
a216ed
+            pe_node_t *node = (pe_node_t *) iter->data;
a216ed
+            node_info_t *ni = calloc(1, sizeof(node_info_t));
a216ed
+            ni->node_name = node->details->uname;
a216ed
+            ni->promoted = rsc->fns->state(rsc, TRUE) == RSC_ROLE_MASTER;
a216ed
+
a216ed
+            retval = g_list_prepend(retval, ni);
a216ed
+        }
a216ed
     }
a216ed
 
a216ed
-    return found;
a216ed
+    return retval;
a216ed
 }
a216ed
 
a216ed
 #define XPATH_MAX 1024
a216ed
@@ -1788,6 +1807,8 @@ cli_resource_execute(pcmk__output_t *out, pe_resource_t *rsc,
a216ed
                          "the force option");
a216ed
                 return CRM_EX_UNSAFE;
a216ed
             }
a216ed
+
a216ed
+            g_list_free_full(nodes, free);
a216ed
         }
a216ed
 
a216ed
     } else {
a216ed
-- 
a216ed
1.8.3.1
a216ed