Blame SOURCES/036-crm_resource.patch

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