Blob Blame History Raw
From 7a9d55107fd3cd7c7f11854e8bf06f35900ded98 Mon Sep 17 00:00:00 2001
From: Andrew Beekhof <andrew@beekhof.net>
Date: Fri, 19 May 2017 13:55:51 +1000
Subject: [PATCH 01/13] Fix: PE: Partially restore 62ed004 to ensure remote
 connections are available before attempting resource recovery

However only do so for non-container connections
---
 pengine/allocate.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/pengine/allocate.c b/pengine/allocate.c
index 3314d77..3819c24 100644
--- a/pengine/allocate.c
+++ b/pengine/allocate.c
@@ -1836,6 +1836,15 @@ apply_remote_node_ordering(pe_working_set_t *data_set)
                     NULL,
                     pe_order_preserve | pe_order_implies_first,
                     data_set);
+            } else if(container == NULL) {
+                custom_action_order(remote_rsc,
+                    generate_op_key(remote_rsc->id, RSC_START, 0),
+                    NULL,
+                    action->rsc,
+                    NULL,
+                    action,
+                    pe_order_preserve | pe_order_implies_then | pe_order_runnable_left,
+                    data_set);
             }
 
             if(container && is_set(container->flags, pe_rsc_failed)) {
-- 
1.8.3.1


From 4d52523d6b101226a6bf71fe009c98df15c7ad3e Mon Sep 17 00:00:00 2001
From: Andrew Beekhof <andrew@beekhof.net>
Date: Fri, 19 May 2017 13:59:50 +1000
Subject: [PATCH 02/13] Test: PE: Ensure remote connections are available
 before attempting resource recovery

---
 pengine/regression.sh                  |    1 +
 pengine/test10/remote-recovery.dot     |  221 +++++++
 pengine/test10/remote-recovery.exp     | 1118 ++++++++++++++++++++++++++++++++
 pengine/test10/remote-recovery.scores  |  848 ++++++++++++++++++++++++
 pengine/test10/remote-recovery.summary |  164 +++++
 pengine/test10/remote-recovery.xml     |  739 +++++++++++++++++++++
 6 files changed, 3091 insertions(+)
 create mode 100644 pengine/test10/remote-recovery.dot
 create mode 100644 pengine/test10/remote-recovery.exp
 create mode 100644 pengine/test10/remote-recovery.scores
 create mode 100644 pengine/test10/remote-recovery.summary
 create mode 100644 pengine/test10/remote-recovery.xml

diff --git a/pengine/regression.sh b/pengine/regression.sh
index e2e7bf6..62fc066 100755
--- a/pengine/regression.sh
+++ b/pengine/regression.sh
@@ -837,6 +837,7 @@ do_test remote-recover-fail     "Make sure start failure causes fencing if rsc a
 do_test remote-start-fail       "Make sure a start failure does not result in fencing if no active resources are on remote."
 do_test remote-unclean2         "Make monitor failure always results in fencing, even if no rsc are active on remote."
 do_test remote-fence-before-reconnect "Fence before clearing recurring monitor failure"
+do_test remote-recovery		"Recover remote connections before attempting demotion"
 
 echo ""
 do_test resource-discovery      "Exercises resource-discovery location constraint option."
diff --git a/pengine/test10/remote-recovery.dot b/pengine/test10/remote-recovery.dot
new file mode 100644
index 0000000..31a82af
--- /dev/null
+++ b/pengine/test10/remote-recovery.dot
@@ -0,0 +1,221 @@
+digraph "g" {
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
+"galera-0_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"]
+"galera-0_start_0 controller-2" -> "galera-0_monitor_20000 controller-2" [ style = bold]
+"galera-0_start_0 controller-2" -> "galera_demote_0 galera-0" [ style = bold]
+"galera-0_start_0 controller-2" -> "galera_monitor_10000 galera-0" [ style = bold]
+"galera-0_start_0 controller-2" -> "galera_promote_0 galera-0" [ style = bold]
+"galera-0_start_0 controller-2" -> "galera_start_0 galera-0" [ style = bold]
+"galera-0_start_0 controller-2" -> "galera_stop_0 galera-0" [ style = bold]
+"galera-0_start_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"galera-0_stop_0 controller-1" -> "all_stopped" [ style = bold]
+"galera-0_stop_0 controller-1" -> "galera-0_start_0 controller-2" [ style = bold]
+"galera-0_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"]
+"galera-2_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"]
+"galera-2_start_0 controller-2" -> "galera-2_monitor_20000 controller-2" [ style = bold]
+"galera-2_start_0 controller-2" -> "galera_demote_0 galera-2" [ style = bold]
+"galera-2_start_0 controller-2" -> "galera_monitor_10000 galera-2" [ style = bold]
+"galera-2_start_0 controller-2" -> "galera_promote_0 galera-2" [ style = bold]
+"galera-2_start_0 controller-2" -> "galera_start_0 galera-2" [ style = bold]
+"galera-2_start_0 controller-2" -> "galera_stop_0 galera-2" [ style = bold]
+"galera-2_start_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"galera-2_stop_0 controller-1" -> "all_stopped" [ style = bold]
+"galera-2_stop_0 controller-1" -> "galera-2_start_0 controller-2" [ style = bold]
+"galera-2_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"]
+"galera-master_demote_0" -> "galera-master_demoted_0" [ style = bold]
+"galera-master_demote_0" -> "galera_demote_0 galera-0" [ style = bold]
+"galera-master_demote_0" -> "galera_demote_0 galera-2" [ style = bold]
+"galera-master_demote_0" [ style=bold color="green" fontcolor="orange"]
+"galera-master_demoted_0" -> "galera-master_promote_0" [ style = bold]
+"galera-master_demoted_0" -> "galera-master_start_0" [ style = bold]
+"galera-master_demoted_0" -> "galera-master_stop_0" [ style = bold]
+"galera-master_demoted_0" [ style=bold color="green" fontcolor="orange"]
+"galera-master_promote_0" -> "galera_promote_0 galera-0" [ style = bold]
+"galera-master_promote_0" -> "galera_promote_0 galera-2" [ style = bold]
+"galera-master_promote_0" [ style=bold color="green" fontcolor="orange"]
+"galera-master_promoted_0" [ style=bold color="green" fontcolor="orange"]
+"galera-master_running_0" -> "galera-master_promote_0" [ style = bold]
+"galera-master_running_0" [ style=bold color="green" fontcolor="orange"]
+"galera-master_start_0" -> "galera-master_running_0" [ style = bold]
+"galera-master_start_0" -> "galera_start_0 galera-0" [ style = bold]
+"galera-master_start_0" -> "galera_start_0 galera-2" [ style = bold]
+"galera-master_start_0" [ style=bold color="green" fontcolor="orange"]
+"galera-master_stop_0" -> "galera-master_stopped_0" [ style = bold]
+"galera-master_stop_0" -> "galera_stop_0 galera-0" [ style = bold]
+"galera-master_stop_0" -> "galera_stop_0 galera-2" [ style = bold]
+"galera-master_stop_0" [ style=bold color="green" fontcolor="orange"]
+"galera-master_stopped_0" -> "galera-master_promote_0" [ style = bold]
+"galera-master_stopped_0" -> "galera-master_start_0" [ style = bold]
+"galera-master_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"galera_demote_0 galera-0" -> "galera-master_demoted_0" [ style = bold]
+"galera_demote_0 galera-0" -> "galera_demote_0 galera-2" [ style = bold]
+"galera_demote_0 galera-0" -> "galera_promote_0 galera-0" [ style = bold]
+"galera_demote_0 galera-0" -> "galera_stop_0 galera-0" [ style = bold]
+"galera_demote_0 galera-0" [ style=bold color="green" fontcolor="black"]
+"galera_demote_0 galera-2" -> "galera-master_demoted_0" [ style = bold]
+"galera_demote_0 galera-2" -> "galera_promote_0 galera-2" [ style = bold]
+"galera_demote_0 galera-2" -> "galera_stop_0 galera-2" [ style = bold]
+"galera_demote_0 galera-2" [ style=bold color="green" fontcolor="black"]
+"galera_monitor_10000 galera-0" [ style=bold color="green" fontcolor="black"]
+"galera_monitor_10000 galera-2" [ style=bold color="green" fontcolor="black"]
+"galera_promote_0 galera-0" -> "galera-master_promoted_0" [ style = bold]
+"galera_promote_0 galera-0" -> "galera_monitor_10000 galera-0" [ style = bold]
+"galera_promote_0 galera-0" [ style=bold color="green" fontcolor="black"]
+"galera_promote_0 galera-2" -> "galera-master_promoted_0" [ style = bold]
+"galera_promote_0 galera-2" -> "galera_monitor_10000 galera-2" [ style = bold]
+"galera_promote_0 galera-2" -> "galera_promote_0 galera-0" [ style = bold]
+"galera_promote_0 galera-2" [ style=bold color="green" fontcolor="black"]
+"galera_start_0 galera-0" -> "galera-master_running_0" [ style = bold]
+"galera_start_0 galera-0" -> "galera_monitor_10000 galera-0" [ style = bold]
+"galera_start_0 galera-0" -> "galera_promote_0 galera-0" [ style = bold]
+"galera_start_0 galera-0" [ style=bold color="green" fontcolor="black"]
+"galera_start_0 galera-2" -> "galera-master_running_0" [ style = bold]
+"galera_start_0 galera-2" -> "galera_monitor_10000 galera-2" [ style = bold]
+"galera_start_0 galera-2" -> "galera_promote_0 galera-2" [ style = bold]
+"galera_start_0 galera-2" -> "galera_start_0 galera-0" [ style = bold]
+"galera_start_0 galera-2" [ style=bold color="green" fontcolor="black"]
+"galera_stop_0 galera-0" -> "all_stopped" [ style = bold]
+"galera_stop_0 galera-0" -> "galera-master_stopped_0" [ style = bold]
+"galera_stop_0 galera-0" -> "galera_start_0 galera-0" [ style = bold]
+"galera_stop_0 galera-0" -> "galera_stop_0 galera-2" [ style = bold]
+"galera_stop_0 galera-0" [ style=bold color="green" fontcolor="black"]
+"galera_stop_0 galera-2" -> "all_stopped" [ style = bold]
+"galera_stop_0 galera-2" -> "galera-master_stopped_0" [ style = bold]
+"galera_stop_0 galera-2" -> "galera_start_0 galera-2" [ style = bold]
+"galera_stop_0 galera-2" [ style=bold color="green" fontcolor="black"]
+"haproxy-clone_stop_0" -> "haproxy-clone_stopped_0" [ style = bold]
+"haproxy-clone_stop_0" -> "haproxy_stop_0 controller-1" [ style = bold]
+"haproxy-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
+"haproxy-clone_stopped_0" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold]
+"haproxy-clone_stopped_0" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold]
+"haproxy-clone_stopped_0" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold]
+"haproxy-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"haproxy_stop_0 controller-1" -> "all_stopped" [ style = bold]
+"haproxy_stop_0 controller-1" -> "haproxy-clone_stopped_0" [ style = bold]
+"haproxy_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"]
+"ip-172.17.1.14_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"]
+"ip-172.17.1.14_start_0 controller-2" -> "ip-172.17.1.14_monitor_10000 controller-2" [ style = bold]
+"ip-172.17.1.14_start_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"ip-172.17.1.14_stop_0 controller-1" -> "all_stopped" [ style = bold]
+"ip-172.17.1.14_stop_0 controller-1" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold]
+"ip-172.17.1.14_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"]
+"ip-172.17.1.17_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"]
+"ip-172.17.1.17_start_0 controller-2" -> "ip-172.17.1.17_monitor_10000 controller-2" [ style = bold]
+"ip-172.17.1.17_start_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"ip-172.17.1.17_stop_0 controller-1" -> "all_stopped" [ style = bold]
+"ip-172.17.1.17_stop_0 controller-1" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold]
+"ip-172.17.1.17_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"]
+"ip-172.17.4.11_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"]
+"ip-172.17.4.11_start_0 controller-2" -> "ip-172.17.4.11_monitor_10000 controller-2" [ style = bold]
+"ip-172.17.4.11_start_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"ip-172.17.4.11_stop_0 controller-1" -> "all_stopped" [ style = bold]
+"ip-172.17.4.11_stop_0 controller-1" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold]
+"ip-172.17.4.11_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"]
+"messaging-1_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"]
+"messaging-1_start_0 controller-2" -> "messaging-1_monitor_20000 controller-2" [ style = bold]
+"messaging-1_start_0 controller-2" -> "rabbitmq_monitor_10000 messaging-1" [ style = bold]
+"messaging-1_start_0 controller-2" -> "rabbitmq_start_0 messaging-1" [ style = bold]
+"messaging-1_start_0 controller-2" -> "rabbitmq_stop_0 messaging-1" [ style = bold]
+"messaging-1_start_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"messaging-1_stop_0 controller-1" -> "all_stopped" [ style = bold]
+"messaging-1_stop_0 controller-1" -> "messaging-1_start_0 controller-2" [ style = bold]
+"messaging-1_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq-clone_running_0" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq-clone_start_0" -> "rabbitmq-clone_running_0" [ style = bold]
+"rabbitmq-clone_start_0" -> "rabbitmq_start_0 messaging-1" [ style = bold]
+"rabbitmq-clone_start_0" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq-clone_stop_0" -> "rabbitmq-clone_stopped_0" [ style = bold]
+"rabbitmq-clone_stop_0" -> "rabbitmq_stop_0 messaging-1" [ style = bold]
+"rabbitmq-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq-clone_stopped_0" -> "rabbitmq-clone_start_0" [ style = bold]
+"rabbitmq-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq_monitor_10000 messaging-1" [ style=bold color="green" fontcolor="black"]
+"rabbitmq_start_0 messaging-1" -> "rabbitmq-clone_running_0" [ style = bold]
+"rabbitmq_start_0 messaging-1" -> "rabbitmq_monitor_10000 messaging-1" [ style = bold]
+"rabbitmq_start_0 messaging-1" [ style=bold color="green" fontcolor="black"]
+"rabbitmq_stop_0 messaging-1" -> "all_stopped" [ style = bold]
+"rabbitmq_stop_0 messaging-1" -> "rabbitmq-clone_stopped_0" [ style = bold]
+"rabbitmq_stop_0 messaging-1" -> "rabbitmq_start_0 messaging-1" [ style = bold]
+"rabbitmq_stop_0 messaging-1" [ style=bold color="green" fontcolor="black"]
+"redis-master_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold]
+"redis-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"redis-master_confirmed-pre_notify_stop_0" -> "redis-master_post_notify_stopped_0" [ style = bold]
+"redis-master_confirmed-pre_notify_stop_0" -> "redis-master_stop_0" [ style = bold]
+"redis-master_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"]
+"redis-master_post_notify_stopped_0" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold]
+"redis-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 controller-0" [ style = bold]
+"redis-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 controller-2" [ style = bold]
+"redis-master_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"redis-master_pre_notify_stop_0" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold]
+"redis-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 controller-0" [ style = bold]
+"redis-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 controller-2" [ style = bold]
+"redis-master_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"]
+"redis-master_stop_0" -> "redis-master_stopped_0" [ style = bold]
+"redis-master_stop_0" -> "redis_stop_0 controller-1" [ style = bold]
+"redis-master_stop_0" [ style=bold color="green" fontcolor="orange"]
+"redis-master_stopped_0" -> "redis-master_post_notify_stopped_0" [ style = bold]
+"redis-master_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"redis_confirmed-post_notify_stonith_0" -> "all_stopped" [ style = bold]
+"redis_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"]
+"redis_post_notify_stonith_0 controller-0" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold]
+"redis_post_notify_stonith_0 controller-0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold]
+"redis_post_notify_stonith_0 controller-0" [ style=bold color="green" fontcolor="black"]
+"redis_post_notify_stonith_0 controller-2" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold]
+"redis_post_notify_stonith_0 controller-2" -> "redis_confirmed-post_notify_stonith_0" [ style = bold]
+"redis_post_notify_stonith_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"redis_post_notify_stonith_0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold]
+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 controller-0" [ style = bold]
+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 controller-2" [ style = bold]
+"redis_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"]
+"redis_pre_notify_stop_0 controller-0" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold]
+"redis_pre_notify_stop_0 controller-0" [ style=bold color="green" fontcolor="black"]
+"redis_pre_notify_stop_0 controller-2" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold]
+"redis_pre_notify_stop_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"redis_stop_0 controller-1" -> "all_stopped" [ style = bold]
+"redis_stop_0 controller-1" -> "redis-master_stopped_0" [ style = bold]
+"redis_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"]
+"stonith 'reboot' controller-1" -> "galera-0_stop_0 controller-1" [ style = bold]
+"stonith 'reboot' controller-1" -> "galera-2_stop_0 controller-1" [ style = bold]
+"stonith 'reboot' controller-1" -> "haproxy-clone_stop_0" [ style = bold]
+"stonith 'reboot' controller-1" -> "haproxy_stop_0 controller-1" [ style = bold]
+"stonith 'reboot' controller-1" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold]
+"stonith 'reboot' controller-1" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold]
+"stonith 'reboot' controller-1" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold]
+"stonith 'reboot' controller-1" -> "messaging-1_stop_0 controller-1" [ style = bold]
+"stonith 'reboot' controller-1" -> "redis-master_stop_0" [ style = bold]
+"stonith 'reboot' controller-1" -> "redis_post_notify_stonith_0" [ style = bold]
+"stonith 'reboot' controller-1" -> "redis_stop_0 controller-1" [ style = bold]
+"stonith 'reboot' controller-1" -> "stonith_complete" [ style = bold]
+"stonith 'reboot' controller-1" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-5254005bdbb5_monitor_60000 controller-2" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" -> "stonith-fence_ipmilan-5254005bdbb5_monitor_60000 controller-2" [ style = bold]
+"stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" -> "all_stopped" [ style = bold]
+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" -> "stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style = bold]
+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"]
+"stonith-fence_ipmilan-525400b4f6bd_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" -> "stonith-fence_ipmilan-525400b4f6bd_monitor_60000 controller-0" [ style = bold]
+"stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" -> "all_stopped" [ style = bold]
+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold]
+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400bbf613_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400bbf613_start_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_monitor_60000 controller-0" [ style = bold]
+"stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "all_stopped" [ style = bold]
+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold]
+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" [ style=bold color="green" fontcolor="black"]
+"stonith_complete" -> "all_stopped" [ style = bold]
+"stonith_complete" -> "galera-0_start_0 controller-2" [ style = bold]
+"stonith_complete" -> "galera-2_start_0 controller-2" [ style = bold]
+"stonith_complete" -> "galera_promote_0 galera-0" [ style = bold]
+"stonith_complete" -> "galera_promote_0 galera-2" [ style = bold]
+"stonith_complete" -> "galera_start_0 galera-0" [ style = bold]
+"stonith_complete" -> "galera_start_0 galera-2" [ style = bold]
+"stonith_complete" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold]
+"stonith_complete" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold]
+"stonith_complete" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold]
+"stonith_complete" -> "messaging-1_start_0 controller-2" [ style = bold]
+"stonith_complete" -> "rabbitmq_start_0 messaging-1" [ style = bold]
+"stonith_complete" [ style=bold color="green" fontcolor="orange"]
+}
diff --git a/pengine/test10/remote-recovery.exp b/pengine/test10/remote-recovery.exp
new file mode 100644
index 0000000..70492f4
--- /dev/null
+++ b/pengine/test10/remote-recovery.exp
@@ -0,0 +1,1118 @@
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY"  transition_id="0">
+  <synapse id="0">
+    <action_set>
+      <rsc_op id="28" operation="monitor" operation_key="messaging-1_monitor_20000" on_node="controller-2" on_node_uuid="3">
+        <primitive id="messaging-1" class="ocf" provider="pacemaker" type="remote"/>
+        <attributes CRM_meta_interval="20000" CRM_meta_name="monitor" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000"  reconnect_interval="60"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="27" operation="start" operation_key="messaging-1_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="1">
+    <action_set>
+      <rsc_op id="27" operation="start" operation_key="messaging-1_start_0" on_node="controller-2" on_node_uuid="3">
+        <primitive id="messaging-1" class="ocf" provider="pacemaker" type="remote"/>
+        <attributes CRM_meta_name="start" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="60000"  reconnect_interval="60"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="26" operation="stop" operation_key="messaging-1_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="2">
+    <action_set>
+      <pseudo_event id="26" operation="stop" operation_key="messaging-1_stop_0">
+        <attributes CRM_meta_name="stop" CRM_meta_timeout="60000"  reconnect_interval="60"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="3">
+    <action_set>
+      <rsc_op id="33" operation="monitor" operation_key="galera-0_monitor_20000" on_node="controller-2" on_node_uuid="3">
+        <primitive id="galera-0" class="ocf" provider="pacemaker" type="remote"/>
+        <attributes CRM_meta_interval="20000" CRM_meta_name="monitor" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000"  reconnect_interval="60"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="32" operation="start" operation_key="galera-0_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="4">
+    <action_set>
+      <rsc_op id="32" operation="start" operation_key="galera-0_start_0" on_node="controller-2" on_node_uuid="3">
+        <primitive id="galera-0" class="ocf" provider="pacemaker" type="remote"/>
+        <attributes CRM_meta_name="start" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="60000"  reconnect_interval="60"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="31" operation="stop" operation_key="galera-0_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="5">
+    <action_set>
+      <pseudo_event id="31" operation="stop" operation_key="galera-0_stop_0">
+        <attributes CRM_meta_name="stop" CRM_meta_timeout="60000"  reconnect_interval="60"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="6">
+    <action_set>
+      <rsc_op id="38" operation="monitor" operation_key="galera-2_monitor_20000" on_node="controller-2" on_node_uuid="3">
+        <primitive id="galera-2" class="ocf" provider="pacemaker" type="remote"/>
+        <attributes CRM_meta_interval="20000" CRM_meta_name="monitor" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000"  reconnect_interval="60"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="37" operation="start" operation_key="galera-2_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="7">
+    <action_set>
+      <rsc_op id="37" operation="start" operation_key="galera-2_start_0" on_node="controller-2" on_node_uuid="3">
+        <primitive id="galera-2" class="ocf" provider="pacemaker" type="remote"/>
+        <attributes CRM_meta_name="start" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="60000"  reconnect_interval="60"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="36" operation="stop" operation_key="galera-2_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="8">
+    <action_set>
+      <pseudo_event id="36" operation="stop" operation_key="galera-2_stop_0">
+        <attributes CRM_meta_name="stop" CRM_meta_timeout="60000"  reconnect_interval="60"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="9">
+    <action_set>
+      <rsc_op id="44" operation="start" operation_key="rabbitmq_start_0" internal_operation_key="rabbitmq:2_start_0" on_node="messaging-1" on_node_uuid="messaging-1" router_node="controller-2">
+        <primitive id="rabbitmq" long-id="rabbitmq:2" class="ocf" provider="heartbeat" type="rabbitmq-cluster"/>
+        <attributes CRM_meta_clone="2" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_on_node="messaging-1" CRM_meta_on_node_uuid="messaging-1" CRM_meta_timeout="200000"  set_policy="ha-all ^(?!amq\.).* {&quot;ha-mode&quot;:&quot;exactly&quot;,&quot;ha-params&quot;:2}"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="27" operation="start" operation_key="messaging-1_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="43" operation="stop" operation_key="rabbitmq_stop_0" internal_operation_key="rabbitmq:2_stop_0" on_node="messaging-1" on_node_uuid="messaging-1" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="45" operation="start" operation_key="rabbitmq-clone_start_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="10">
+    <action_set>
+      <rsc_op id="43" operation="stop" operation_key="rabbitmq_stop_0" internal_operation_key="rabbitmq:2_stop_0" on_node="messaging-1" on_node_uuid="messaging-1" router_node="controller-1">
+        <primitive id="rabbitmq" long-id="rabbitmq:2" class="ocf" provider="heartbeat" type="rabbitmq-cluster"/>
+        <attributes CRM_meta_clone="2" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_on_node="messaging-1" CRM_meta_on_node_uuid="messaging-1" CRM_meta_timeout="200000"  set_policy="ha-all ^(?!amq\.).* {&quot;ha-mode&quot;:&quot;exactly&quot;,&quot;ha-params&quot;:2}"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="27" operation="start" operation_key="messaging-1_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="47" operation="stop" operation_key="rabbitmq-clone_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="11">
+    <action_set>
+      <rsc_op id="20" operation="monitor" operation_key="rabbitmq_monitor_10000" internal_operation_key="rabbitmq:2_monitor_10000" on_node="messaging-1" on_node_uuid="messaging-1" router_node="controller-2">
+        <primitive id="rabbitmq" long-id="rabbitmq:2" class="ocf" provider="heartbeat" type="rabbitmq-cluster"/>
+        <attributes CRM_meta_clone="2" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_on_node="messaging-1" CRM_meta_on_node_uuid="messaging-1" CRM_meta_timeout="40000"  set_policy="ha-all ^(?!amq\.).* {&quot;ha-mode&quot;:&quot;exactly&quot;,&quot;ha-params&quot;:2}"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="27" operation="start" operation_key="messaging-1_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="44" operation="start" operation_key="rabbitmq_start_0" internal_operation_key="rabbitmq:2_start_0" on_node="messaging-1" on_node_uuid="messaging-1" router_node="controller-2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="12" priority="1000000">
+    <action_set>
+      <pseudo_event id="48" operation="stopped" operation_key="rabbitmq-clone_stopped_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="43" operation="stop" operation_key="rabbitmq_stop_0" internal_operation_key="rabbitmq:2_stop_0" on_node="messaging-1" on_node_uuid="messaging-1" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="47" operation="stop" operation_key="rabbitmq-clone_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="13">
+    <action_set>
+      <pseudo_event id="47" operation="stop" operation_key="rabbitmq-clone_stop_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="14" priority="1000000">
+    <action_set>
+      <pseudo_event id="46" operation="running" operation_key="rabbitmq-clone_running_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="44" operation="start" operation_key="rabbitmq_start_0" internal_operation_key="rabbitmq:2_start_0" on_node="messaging-1" on_node_uuid="messaging-1" router_node="controller-2"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="45" operation="start" operation_key="rabbitmq-clone_start_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="15">
+    <action_set>
+      <pseudo_event id="45" operation="start" operation_key="rabbitmq-clone_start_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="48" operation="stopped" operation_key="rabbitmq-clone_stopped_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="16">
+    <action_set>
+      <rsc_op id="56" operation="promote" operation_key="galera_promote_0" internal_operation_key="galera:1_promote_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-2">
+        <primitive id="galera" long-id="galera:1" class="ocf" provider="heartbeat" type="galera"/>
+        <attributes CRM_meta_clone="1" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_name="promote" CRM_meta_notify="false" CRM_meta_on_fail="block" CRM_meta_on_node="galera-2" CRM_meta_on_node_uuid="galera-2" CRM_meta_timeout="300000" additional_parameters="--open-files-limit=16384"  enable_creation="true" wsrep_cluster_address="gcomm://galera-0,galera-1,galera-2"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="37" operation="start" operation_key="galera-2_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="53" operation="start" operation_key="galera_start_0" internal_operation_key="galera:1_start_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-2"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="54" operation="demote" operation_key="galera_demote_0" internal_operation_key="galera:1_demote_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="65" operation="promote" operation_key="galera-master_promote_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="17">
+    <action_set>
+      <rsc_op id="55" operation="stop" operation_key="galera_stop_0" internal_operation_key="galera:1_stop_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-1">
+        <primitive id="galera" long-id="galera:1" class="ocf" provider="heartbeat" type="galera"/>
+        <attributes CRM_meta_clone="1" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_on_node="galera-2" CRM_meta_on_node_uuid="galera-2" CRM_meta_timeout="120000" additional_parameters="--open-files-limit=16384"  enable_creation="true" wsrep_cluster_address="gcomm://galera-0,galera-1,galera-2"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="37" operation="start" operation_key="galera-2_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="54" operation="demote" operation_key="galera_demote_0" internal_operation_key="galera:1_demote_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="59" operation="stop" operation_key="galera_stop_0" internal_operation_key="galera:2_stop_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="63" operation="stop" operation_key="galera-master_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="18">
+    <action_set>
+      <rsc_op id="54" operation="demote" operation_key="galera_demote_0" internal_operation_key="galera:1_demote_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-1">
+        <primitive id="galera" long-id="galera:1" class="ocf" provider="heartbeat" type="galera"/>
+        <attributes CRM_meta_clone="1" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_name="demote" CRM_meta_notify="false" CRM_meta_on_node="galera-2" CRM_meta_on_node_uuid="galera-2" CRM_meta_timeout="120000" additional_parameters="--open-files-limit=16384"  enable_creation="true" wsrep_cluster_address="gcomm://galera-0,galera-1,galera-2"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="37" operation="start" operation_key="galera-2_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="58" operation="demote" operation_key="galera_demote_0" internal_operation_key="galera:2_demote_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="67" operation="demote" operation_key="galera-master_demote_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="19">
+    <action_set>
+      <rsc_op id="53" operation="start" operation_key="galera_start_0" internal_operation_key="galera:1_start_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-2">
+        <primitive id="galera" long-id="galera:1" class="ocf" provider="heartbeat" type="galera"/>
+        <attributes CRM_meta_clone="1" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_on_node="galera-2" CRM_meta_on_node_uuid="galera-2" CRM_meta_timeout="120000" additional_parameters="--open-files-limit=16384"  enable_creation="true" wsrep_cluster_address="gcomm://galera-0,galera-1,galera-2"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="37" operation="start" operation_key="galera-2_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="55" operation="stop" operation_key="galera_stop_0" internal_operation_key="galera:1_stop_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="61" operation="start" operation_key="galera-master_start_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="20">
+    <action_set>
+      <rsc_op id="13" operation="monitor" operation_key="galera_monitor_10000" internal_operation_key="galera:1_monitor_10000" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-2">
+        <primitive id="galera" long-id="galera:1" class="ocf" provider="heartbeat" type="galera"/>
+        <attributes CRM_meta_clone="1" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_on_node="galera-2" CRM_meta_on_node_uuid="galera-2" CRM_meta_op_target_rc="8" CRM_meta_role="Master" CRM_meta_timeout="30000" additional_parameters="--open-files-limit=16384"  enable_creation="true" wsrep_cluster_address="gcomm://galera-0,galera-1,galera-2"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="37" operation="start" operation_key="galera-2_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="53" operation="start" operation_key="galera_start_0" internal_operation_key="galera:1_start_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-2"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="56" operation="promote" operation_key="galera_promote_0" internal_operation_key="galera:1_promote_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="21">
+    <action_set>
+      <rsc_op id="60" operation="promote" operation_key="galera_promote_0" internal_operation_key="galera:2_promote_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-2">
+        <primitive id="galera" long-id="galera:2" class="ocf" provider="heartbeat" type="galera"/>
+        <attributes CRM_meta_clone="2" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_name="promote" CRM_meta_notify="false" CRM_meta_on_fail="block" CRM_meta_on_node="galera-0" CRM_meta_on_node_uuid="galera-0" CRM_meta_timeout="300000" additional_parameters="--open-files-limit=16384"  enable_creation="true" wsrep_cluster_address="gcomm://galera-0,galera-1,galera-2"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="32" operation="start" operation_key="galera-0_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="56" operation="promote" operation_key="galera_promote_0" internal_operation_key="galera:1_promote_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-2"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="57" operation="start" operation_key="galera_start_0" internal_operation_key="galera:2_start_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-2"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="58" operation="demote" operation_key="galera_demote_0" internal_operation_key="galera:2_demote_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="65" operation="promote" operation_key="galera-master_promote_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="22">
+    <action_set>
+      <rsc_op id="59" operation="stop" operation_key="galera_stop_0" internal_operation_key="galera:2_stop_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-1">
+        <primitive id="galera" long-id="galera:2" class="ocf" provider="heartbeat" type="galera"/>
+        <attributes CRM_meta_clone="2" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_on_node="galera-0" CRM_meta_on_node_uuid="galera-0" CRM_meta_timeout="120000" additional_parameters="--open-files-limit=16384"  enable_creation="true" wsrep_cluster_address="gcomm://galera-0,galera-1,galera-2"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="32" operation="start" operation_key="galera-0_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="58" operation="demote" operation_key="galera_demote_0" internal_operation_key="galera:2_demote_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="63" operation="stop" operation_key="galera-master_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="23">
+    <action_set>
+      <rsc_op id="58" operation="demote" operation_key="galera_demote_0" internal_operation_key="galera:2_demote_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-1">
+        <primitive id="galera" long-id="galera:2" class="ocf" provider="heartbeat" type="galera"/>
+        <attributes CRM_meta_clone="2" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_name="demote" CRM_meta_notify="false" CRM_meta_on_node="galera-0" CRM_meta_on_node_uuid="galera-0" CRM_meta_timeout="120000" additional_parameters="--open-files-limit=16384"  enable_creation="true" wsrep_cluster_address="gcomm://galera-0,galera-1,galera-2"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="32" operation="start" operation_key="galera-0_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="67" operation="demote" operation_key="galera-master_demote_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="24">
+    <action_set>
+      <rsc_op id="57" operation="start" operation_key="galera_start_0" internal_operation_key="galera:2_start_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-2">
+        <primitive id="galera" long-id="galera:2" class="ocf" provider="heartbeat" type="galera"/>
+        <attributes CRM_meta_clone="2" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_on_node="galera-0" CRM_meta_on_node_uuid="galera-0" CRM_meta_timeout="120000" additional_parameters="--open-files-limit=16384"  enable_creation="true" wsrep_cluster_address="gcomm://galera-0,galera-1,galera-2"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="32" operation="start" operation_key="galera-0_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="53" operation="start" operation_key="galera_start_0" internal_operation_key="galera:1_start_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-2"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="59" operation="stop" operation_key="galera_stop_0" internal_operation_key="galera:2_stop_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="61" operation="start" operation_key="galera-master_start_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="25">
+    <action_set>
+      <rsc_op id="14" operation="monitor" operation_key="galera_monitor_10000" internal_operation_key="galera:2_monitor_10000" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-2">
+        <primitive id="galera" long-id="galera:2" class="ocf" provider="heartbeat" type="galera"/>
+        <attributes CRM_meta_clone="2" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_on_node="galera-0" CRM_meta_on_node_uuid="galera-0" CRM_meta_op_target_rc="8" CRM_meta_role="Master" CRM_meta_timeout="30000" additional_parameters="--open-files-limit=16384"  enable_creation="true" wsrep_cluster_address="gcomm://galera-0,galera-1,galera-2"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="32" operation="start" operation_key="galera-0_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="57" operation="start" operation_key="galera_start_0" internal_operation_key="galera:2_start_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-2"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="60" operation="promote" operation_key="galera_promote_0" internal_operation_key="galera:2_promote_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="26" priority="1000000">
+    <action_set>
+      <pseudo_event id="68" operation="demoted" operation_key="galera-master_demoted_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="54" operation="demote" operation_key="galera_demote_0" internal_operation_key="galera:1_demote_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="58" operation="demote" operation_key="galera_demote_0" internal_operation_key="galera:2_demote_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="67" operation="demote" operation_key="galera-master_demote_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="27">
+    <action_set>
+      <pseudo_event id="67" operation="demote" operation_key="galera-master_demote_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="28" priority="1000000">
+    <action_set>
+      <pseudo_event id="66" operation="promoted" operation_key="galera-master_promoted_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="56" operation="promote" operation_key="galera_promote_0" internal_operation_key="galera:1_promote_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-2"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="60" operation="promote" operation_key="galera_promote_0" internal_operation_key="galera:2_promote_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="29">
+    <action_set>
+      <pseudo_event id="65" operation="promote" operation_key="galera-master_promote_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="62" operation="running" operation_key="galera-master_running_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="64" operation="stopped" operation_key="galera-master_stopped_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="68" operation="demoted" operation_key="galera-master_demoted_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="30" priority="1000000">
+    <action_set>
+      <pseudo_event id="64" operation="stopped" operation_key="galera-master_stopped_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="55" operation="stop" operation_key="galera_stop_0" internal_operation_key="galera:1_stop_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="59" operation="stop" operation_key="galera_stop_0" internal_operation_key="galera:2_stop_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="63" operation="stop" operation_key="galera-master_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="31">
+    <action_set>
+      <pseudo_event id="63" operation="stop" operation_key="galera-master_stop_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="68" operation="demoted" operation_key="galera-master_demoted_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="32" priority="1000000">
+    <action_set>
+      <pseudo_event id="62" operation="running" operation_key="galera-master_running_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="53" operation="start" operation_key="galera_start_0" internal_operation_key="galera:1_start_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-2"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="57" operation="start" operation_key="galera_start_0" internal_operation_key="galera:2_start_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-2"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="61" operation="start" operation_key="galera-master_start_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="33">
+    <action_set>
+      <pseudo_event id="61" operation="start" operation_key="galera-master_start_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="3" CRM_meta_master_node_max="1" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="64" operation="stopped" operation_key="galera-master_stopped_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="68" operation="demoted" operation_key="galera-master_demoted_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="34" priority="1000000">
+    <action_set>
+      <pseudo_event id="134" operation="notified" operation_key="redis_notified_0" internal_operation_key="redis:0_confirmed-post_notify_stonith_0">
+        <attributes CRM_meta_clone="0" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="true" CRM_meta_notify_key_operation="stonith" CRM_meta_notify_key_type="confirmed-post" CRM_meta_notify_operation="stop" CRM_meta_notify_type="post" CRM_meta_timeout="20000"  wait_last_known_master="true"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="133" operation="notify" operation_key="redis_post_notify_stop_0" internal_operation_key="redis:0_post_notify_stonith_0"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="135" operation="notify" operation_key="redis_post_notify_stop_0" internal_operation_key="redis:1_post_notify_stop_0" on_node="controller-0" on_node_uuid="1"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="136" operation="notify" operation_key="redis_post_notify_stop_0" internal_operation_key="redis:2_post_notify_stop_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="35" priority="1000000">
+    <action_set>
+      <pseudo_event id="133" operation="notify" operation_key="redis_post_notify_stop_0" internal_operation_key="redis:0_post_notify_stonith_0">
+        <attributes CRM_meta_clone="0" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="true" CRM_meta_notify_key_operation="stonith" CRM_meta_notify_key_type="post" CRM_meta_notify_operation="stop" CRM_meta_notify_type="post" CRM_meta_timeout="20000"  wait_last_known_master="true"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="36">
+    <action_set>
+      <pseudo_event id="69" operation="stop" operation_key="redis_stop_0" internal_operation_key="redis:0_stop_0">
+        <attributes CRM_meta_clone="0" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_name="stop" CRM_meta_notify="true" CRM_meta_notify_active_resource="redis:0 redis:1 redis:2" CRM_meta_notify_active_uname="controller-1 controller-0 controller-2" CRM_meta_notify_all_uname="controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2" CRM_meta_notify_available_uname="controller-2 controller-1 controller-0" CRM_meta_notify_demote_resource=" " CRM_meta_notify_demote_uname=" " CRM_meta_notify_inactive_resource="redis:3 redis:4 redis:5 redis:6 redis:7 redis:8" CRM_meta_notify_master_resource="redis:1" CRM_meta_notify_master_uname="controller-0" CRM_meta_notify_promote_resource=" " CRM_meta_notify_promote_uname=" " CRM_meta_notify_slave_resource="redis:0 redis:2" CRM_meta_notify_slave_uname="controller-1 controller-2" CRM_meta_notify_start_resource=" " CRM_meta_notify_start_uname=" " CRM_meta_notify_stop_resource="redis:0" CRM_meta_notify_stop_uname="controller-1" CRM_meta_timeout="200000"  wait_last_known_master="true"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="82" operation="stop" operation_key="redis-master_stop_0"/>
+      </trigger>
+      <trigger>
+        <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="37">
+    <action_set>
+      <rsc_op id="193" operation="notify" operation_key="redis_pre_notify_stop_0" internal_operation_key="redis:1_pre_notify_stop_0" on_node="controller-0" on_node_uuid="1">
+        <primitive id="redis" long-id="redis:1" class="ocf" provider="heartbeat" type="redis"/>
+        <attributes CRM_meta_clone="1" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="true" CRM_meta_notify_active_resource="redis:0 redis:1 redis:2" CRM_meta_notify_active_uname="controller-1 controller-0 controller-2" CRM_meta_notify_all_uname="controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2" CRM_meta_notify_available_uname="controller-2 controller-1 controller-0" CRM_meta_notify_demote_resource=" " CRM_meta_notify_demote_uname=" " CRM_meta_notify_inactive_resource="redis:3 redis:4 redis:5 redis:6 redis:7 redis:8" CRM_meta_notify_key_operation="stop" CRM_meta_notify_key_type="pre" CRM_meta_notify_master_resource="redis:1" CRM_meta_notify_master_uname="controller-0" CRM_meta_notify_operation="stop" CRM_meta_notify_promote_resource=" " CRM_meta_notify_promote_uname=" " CRM_meta_notify_slave_resource="redis:0 redis:2" CRM_meta_notify_slave_uname="controller-1 controller-2" CRM_meta_notify_start_resource=" " CRM_meta_notify_start_uname=" " CRM_meta_notify_stop_resource="redis:0" CRM_meta_notify_stop_uname="controller-1" CRM_meta_notify_type="pre" CRM_meta_on_node="controller-0" CRM_meta_on_node_uuid="1" CRM_meta_timeout="20000"  wait_last_known_master="true"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="84" operation="notify" operation_key="redis-master_pre_notify_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="38" priority="1000000">
+    <action_set>
+      <rsc_op id="135" operation="notify" operation_key="redis_post_notify_stop_0" internal_operation_key="redis:1_post_notify_stop_0" on_node="controller-0" on_node_uuid="1">
+        <primitive id="redis" long-id="redis:1" class="ocf" provider="heartbeat" type="redis"/>
+        <attributes CRM_meta_clone="1" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="true" CRM_meta_notify_active_resource="redis:0 redis:1 redis:2" CRM_meta_notify_active_uname="controller-1 controller-0 controller-2" CRM_meta_notify_all_uname="controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2" CRM_meta_notify_available_uname="controller-2 controller-1 controller-0" CRM_meta_notify_demote_resource=" " CRM_meta_notify_demote_uname=" " CRM_meta_notify_inactive_resource="redis:3 redis:4 redis:5 redis:6 redis:7 redis:8" CRM_meta_notify_key_operation="stonith" CRM_meta_notify_key_type="post" CRM_meta_notify_master_resource="redis:1" CRM_meta_notify_master_uname="controller-0" CRM_meta_notify_operation="stop" CRM_meta_notify_promote_resource=" " CRM_meta_notify_promote_uname=" " CRM_meta_notify_slave_resource="redis:0 redis:2" CRM_meta_notify_slave_uname="controller-1 controller-2" CRM_meta_notify_start_resource=" " CRM_meta_notify_start_uname=" " CRM_meta_notify_stop_resource="redis:0" CRM_meta_notify_stop_uname="controller-1" CRM_meta_notify_type="post" CRM_meta_on_node="controller-0" CRM_meta_on_node_uuid="1" CRM_meta_timeout="20000"  wait_last_known_master="true"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="86" operation="notify" operation_key="redis-master_post_notify_stopped_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="133" operation="notify" operation_key="redis_post_notify_stop_0" internal_operation_key="redis:0_post_notify_stonith_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="39">
+    <action_set>
+      <rsc_op id="194" operation="notify" operation_key="redis_pre_notify_stop_0" internal_operation_key="redis:2_pre_notify_stop_0" on_node="controller-2" on_node_uuid="3">
+        <primitive id="redis" long-id="redis:2" class="ocf" provider="heartbeat" type="redis"/>
+        <attributes CRM_meta_clone="2" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="true" CRM_meta_notify_active_resource="redis:0 redis:1 redis:2" CRM_meta_notify_active_uname="controller-1 controller-0 controller-2" CRM_meta_notify_all_uname="controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2" CRM_meta_notify_available_uname="controller-2 controller-1 controller-0" CRM_meta_notify_demote_resource=" " CRM_meta_notify_demote_uname=" " CRM_meta_notify_inactive_resource="redis:3 redis:4 redis:5 redis:6 redis:7 redis:8" CRM_meta_notify_key_operation="stop" CRM_meta_notify_key_type="pre" CRM_meta_notify_master_resource="redis:1" CRM_meta_notify_master_uname="controller-0" CRM_meta_notify_operation="stop" CRM_meta_notify_promote_resource=" " CRM_meta_notify_promote_uname=" " CRM_meta_notify_slave_resource="redis:0 redis:2" CRM_meta_notify_slave_uname="controller-1 controller-2" CRM_meta_notify_start_resource=" " CRM_meta_notify_start_uname=" " CRM_meta_notify_stop_resource="redis:0" CRM_meta_notify_stop_uname="controller-1" CRM_meta_notify_type="pre" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000"  wait_last_known_master="true"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="84" operation="notify" operation_key="redis-master_pre_notify_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="40" priority="1000000">
+    <action_set>
+      <rsc_op id="136" operation="notify" operation_key="redis_post_notify_stop_0" internal_operation_key="redis:2_post_notify_stop_0" on_node="controller-2" on_node_uuid="3">
+        <primitive id="redis" long-id="redis:2" class="ocf" provider="heartbeat" type="redis"/>
+        <attributes CRM_meta_clone="2" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="true" CRM_meta_notify_active_resource="redis:0 redis:1 redis:2" CRM_meta_notify_active_uname="controller-1 controller-0 controller-2" CRM_meta_notify_all_uname="controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2" CRM_meta_notify_available_uname="controller-2 controller-1 controller-0" CRM_meta_notify_demote_resource=" " CRM_meta_notify_demote_uname=" " CRM_meta_notify_inactive_resource="redis:3 redis:4 redis:5 redis:6 redis:7 redis:8" CRM_meta_notify_key_operation="stonith" CRM_meta_notify_key_type="post" CRM_meta_notify_master_resource="redis:1" CRM_meta_notify_master_uname="controller-0" CRM_meta_notify_operation="stop" CRM_meta_notify_promote_resource=" " CRM_meta_notify_promote_uname=" " CRM_meta_notify_slave_resource="redis:0 redis:2" CRM_meta_notify_slave_uname="controller-1 controller-2" CRM_meta_notify_start_resource=" " CRM_meta_notify_start_uname=" " CRM_meta_notify_stop_resource="redis:0" CRM_meta_notify_stop_uname="controller-1" CRM_meta_notify_type="post" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000"  wait_last_known_master="true"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="86" operation="notify" operation_key="redis-master_post_notify_stopped_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="133" operation="notify" operation_key="redis_post_notify_stop_0" internal_operation_key="redis:0_post_notify_stonith_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="41" priority="1000000">
+    <action_set>
+      <pseudo_event id="87" operation="notified" operation_key="redis-master_confirmed-post_notify_stopped_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="true" CRM_meta_notify_key_operation="stopped" CRM_meta_notify_key_type="confirmed-post" CRM_meta_notify_operation="stop" CRM_meta_notify_type="post" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="86" operation="notify" operation_key="redis-master_post_notify_stopped_0"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="135" operation="notify" operation_key="redis_post_notify_stop_0" internal_operation_key="redis:1_post_notify_stop_0" on_node="controller-0" on_node_uuid="1"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="136" operation="notify" operation_key="redis_post_notify_stop_0" internal_operation_key="redis:2_post_notify_stop_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="42" priority="1000000">
+    <action_set>
+      <pseudo_event id="86" operation="notify" operation_key="redis-master_post_notify_stopped_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="true" CRM_meta_notify_key_operation="stopped" CRM_meta_notify_key_type="post" CRM_meta_notify_operation="stop" CRM_meta_notify_type="post" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="83" operation="stopped" operation_key="redis-master_stopped_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="85" operation="notified" operation_key="redis-master_confirmed-pre_notify_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="43">
+    <action_set>
+      <pseudo_event id="85" operation="notified" operation_key="redis-master_confirmed-pre_notify_stop_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="true" CRM_meta_notify_key_operation="stop" CRM_meta_notify_key_type="confirmed-pre" CRM_meta_notify_operation="stop" CRM_meta_notify_type="pre" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="84" operation="notify" operation_key="redis-master_pre_notify_stop_0"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="193" operation="notify" operation_key="redis_pre_notify_stop_0" internal_operation_key="redis:1_pre_notify_stop_0" on_node="controller-0" on_node_uuid="1"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="194" operation="notify" operation_key="redis_pre_notify_stop_0" internal_operation_key="redis:2_pre_notify_stop_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="44">
+    <action_set>
+      <pseudo_event id="84" operation="notify" operation_key="redis-master_pre_notify_stop_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="true" CRM_meta_notify_key_operation="stop" CRM_meta_notify_key_type="pre" CRM_meta_notify_operation="stop" CRM_meta_notify_type="pre" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="45" priority="1000000">
+    <action_set>
+      <pseudo_event id="83" operation="stopped" operation_key="redis-master_stopped_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="true" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="69" operation="stop" operation_key="redis_stop_0" internal_operation_key="redis:0_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="82" operation="stop" operation_key="redis-master_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="46">
+    <action_set>
+      <pseudo_event id="82" operation="stop" operation_key="redis-master_stop_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_master_max="1" CRM_meta_master_node_max="1" CRM_meta_notify="true" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="85" operation="notified" operation_key="redis-master_confirmed-pre_notify_stop_0"/>
+      </trigger>
+      <trigger>
+        <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="47">
+    <action_set>
+      <rsc_op id="106" operation="monitor" operation_key="ip-172.17.1.14_monitor_10000" on_node="controller-2" on_node_uuid="3">
+        <primitive id="ip-172.17.1.14" class="ocf" provider="heartbeat" type="IPaddr2"/>
+        <attributes CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000" cidr_netmask="32"  ip="172.17.1.14"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="105" operation="start" operation_key="ip-172.17.1.14_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="48">
+    <action_set>
+      <rsc_op id="105" operation="start" operation_key="ip-172.17.1.14_start_0" on_node="controller-2" on_node_uuid="3">
+        <primitive id="ip-172.17.1.14" class="ocf" provider="heartbeat" type="IPaddr2"/>
+        <attributes CRM_meta_name="start" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000" cidr_netmask="32"  ip="172.17.1.14"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="104" operation="stop" operation_key="ip-172.17.1.14_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="49">
+    <action_set>
+      <pseudo_event id="104" operation="stop" operation_key="ip-172.17.1.14_stop_0">
+        <attributes CRM_meta_name="stop" CRM_meta_timeout="20000" cidr_netmask="32"  ip="172.17.1.14"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="123" operation="stopped" operation_key="haproxy-clone_stopped_0"/>
+      </trigger>
+      <trigger>
+        <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="50">
+    <action_set>
+      <rsc_op id="109" operation="monitor" operation_key="ip-172.17.1.17_monitor_10000" on_node="controller-2" on_node_uuid="3">
+        <primitive id="ip-172.17.1.17" class="ocf" provider="heartbeat" type="IPaddr2"/>
+        <attributes CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000" cidr_netmask="32"  ip="172.17.1.17"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="108" operation="start" operation_key="ip-172.17.1.17_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="51">
+    <action_set>
+      <rsc_op id="108" operation="start" operation_key="ip-172.17.1.17_start_0" on_node="controller-2" on_node_uuid="3">
+        <primitive id="ip-172.17.1.17" class="ocf" provider="heartbeat" type="IPaddr2"/>
+        <attributes CRM_meta_name="start" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000" cidr_netmask="32"  ip="172.17.1.17"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="107" operation="stop" operation_key="ip-172.17.1.17_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="52">
+    <action_set>
+      <pseudo_event id="107" operation="stop" operation_key="ip-172.17.1.17_stop_0">
+        <attributes CRM_meta_name="stop" CRM_meta_timeout="20000" cidr_netmask="32"  ip="172.17.1.17"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="123" operation="stopped" operation_key="haproxy-clone_stopped_0"/>
+      </trigger>
+      <trigger>
+        <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="53">
+    <action_set>
+      <rsc_op id="114" operation="monitor" operation_key="ip-172.17.4.11_monitor_10000" on_node="controller-2" on_node_uuid="3">
+        <primitive id="ip-172.17.4.11" class="ocf" provider="heartbeat" type="IPaddr2"/>
+        <attributes CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000" cidr_netmask="32"  ip="172.17.4.11"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="113" operation="start" operation_key="ip-172.17.4.11_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="54">
+    <action_set>
+      <rsc_op id="113" operation="start" operation_key="ip-172.17.4.11_start_0" on_node="controller-2" on_node_uuid="3">
+        <primitive id="ip-172.17.4.11" class="ocf" provider="heartbeat" type="IPaddr2"/>
+        <attributes CRM_meta_name="start" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000" cidr_netmask="32"  ip="172.17.4.11"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="112" operation="stop" operation_key="ip-172.17.4.11_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="55">
+    <action_set>
+      <pseudo_event id="112" operation="stop" operation_key="ip-172.17.4.11_stop_0">
+        <attributes CRM_meta_name="stop" CRM_meta_timeout="20000" cidr_netmask="32"  ip="172.17.4.11"/>
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="123" operation="stopped" operation_key="haproxy-clone_stopped_0"/>
+      </trigger>
+      <trigger>
+        <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="56">
+    <action_set>
+      <pseudo_event id="115" operation="stop" operation_key="haproxy_stop_0" internal_operation_key="haproxy:0_stop_0">
+        <attributes CRM_meta_clone="0" CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="200000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="122" operation="stop" operation_key="haproxy-clone_stop_0"/>
+      </trigger>
+      <trigger>
+        <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="57" priority="1000000">
+    <action_set>
+      <pseudo_event id="123" operation="stopped" operation_key="haproxy-clone_stopped_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="115" operation="stop" operation_key="haproxy_stop_0" internal_operation_key="haproxy:0_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="122" operation="stop" operation_key="haproxy-clone_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="58">
+    <action_set>
+      <pseudo_event id="122" operation="stop" operation_key="haproxy-clone_stop_0">
+        <attributes CRM_meta_clone_max="9" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="59">
+    <action_set>
+      <rsc_op id="126" operation="stop" operation_key="stonith-fence_ipmilan-525400bbf613_stop_0" on_node="controller-0" on_node_uuid="1">
+        <primitive id="stonith-fence_ipmilan-525400bbf613" class="stonith" type="fence_ipmilan"/>
+        <attributes CRM_meta_on_node="controller-0" CRM_meta_on_node_uuid="1" CRM_meta_timeout="20000" action="reboot"  ipaddr="172.16.0.1" ipport="6237" lanplus="true" login="admin" passwd="****" pcmk_host_list="controller-2" privlvl="administrator"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="60">
+    <action_set>
+      <rsc_op id="22" operation="start" operation_key="stonith-fence_ipmilan-525400bbf613_start_0" on_node="controller-0" on_node_uuid="1">
+        <primitive id="stonith-fence_ipmilan-525400bbf613" class="stonith" type="fence_ipmilan"/>
+        <attributes CRM_meta_on_node="controller-0" CRM_meta_on_node_uuid="1" CRM_meta_timeout="20000" action="reboot"  ipaddr="172.16.0.1" ipport="6237" lanplus="true" login="admin" passwd="****" pcmk_host_list="controller-2" privlvl="administrator"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="126" operation="stop" operation_key="stonith-fence_ipmilan-525400bbf613_stop_0" on_node="controller-0" on_node_uuid="1"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="61">
+    <action_set>
+      <rsc_op id="6" operation="monitor" operation_key="stonith-fence_ipmilan-525400bbf613_monitor_60000" on_node="controller-0" on_node_uuid="1">
+        <primitive id="stonith-fence_ipmilan-525400bbf613" class="stonith" type="fence_ipmilan"/>
+        <attributes CRM_meta_interval="60000" CRM_meta_name="monitor" CRM_meta_on_node="controller-0" CRM_meta_on_node_uuid="1" CRM_meta_timeout="20000" action="reboot"  ipaddr="172.16.0.1" ipport="6237" lanplus="true" login="admin" passwd="****" pcmk_host_list="controller-2" privlvl="administrator"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="22" operation="start" operation_key="stonith-fence_ipmilan-525400bbf613_start_0" on_node="controller-0" on_node_uuid="1"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="62">
+    <action_set>
+      <rsc_op id="127" operation="stop" operation_key="stonith-fence_ipmilan-525400b4f6bd_stop_0" on_node="controller-0" on_node_uuid="1">
+        <primitive id="stonith-fence_ipmilan-525400b4f6bd" class="stonith" type="fence_ipmilan"/>
+        <attributes CRM_meta_on_node="controller-0" CRM_meta_on_node_uuid="1" CRM_meta_timeout="20000" action="reboot"  ipaddr="172.16.0.1" ipport="6236" lanplus="true" login="admin" passwd="****" pcmk_host_list="controller-1" privlvl="administrator"/>
+      </rsc_op>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="63">
+    <action_set>
+      <rsc_op id="23" operation="start" operation_key="stonith-fence_ipmilan-525400b4f6bd_start_0" on_node="controller-0" on_node_uuid="1">
+        <primitive id="stonith-fence_ipmilan-525400b4f6bd" class="stonith" type="fence_ipmilan"/>
+        <attributes CRM_meta_on_node="controller-0" CRM_meta_on_node_uuid="1" CRM_meta_timeout="20000" action="reboot"  ipaddr="172.16.0.1" ipport="6236" lanplus="true" login="admin" passwd="****" pcmk_host_list="controller-1" privlvl="administrator"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="127" operation="stop" operation_key="stonith-fence_ipmilan-525400b4f6bd_stop_0" on_node="controller-0" on_node_uuid="1"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="64">
+    <action_set>
+      <rsc_op id="11" operation="monitor" operation_key="stonith-fence_ipmilan-525400b4f6bd_monitor_60000" on_node="controller-0" on_node_uuid="1">
+        <primitive id="stonith-fence_ipmilan-525400b4f6bd" class="stonith" type="fence_ipmilan"/>
+        <attributes CRM_meta_interval="60000" CRM_meta_name="monitor" CRM_meta_on_node="controller-0" CRM_meta_on_node_uuid="1" CRM_meta_timeout="20000" action="reboot"  ipaddr="172.16.0.1" ipport="6236" lanplus="true" login="admin" passwd="****" pcmk_host_list="controller-1" privlvl="administrator"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="23" operation="start" operation_key="stonith-fence_ipmilan-525400b4f6bd_start_0" on_node="controller-0" on_node_uuid="1"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="65">
+    <action_set>
+      <rsc_op id="130" operation="monitor" operation_key="stonith-fence_ipmilan-5254005bdbb5_monitor_60000" on_node="controller-2" on_node_uuid="3">
+        <primitive id="stonith-fence_ipmilan-5254005bdbb5" class="stonith" type="fence_ipmilan"/>
+        <attributes CRM_meta_interval="60000" CRM_meta_name="monitor" CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000" action="reboot"  ipaddr="172.16.0.1" ipport="6235" lanplus="true" login="admin" passwd="****" pcmk_host_list="controller-0" privlvl="administrator"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <rsc_op id="129" operation="start" operation_key="stonith-fence_ipmilan-5254005bdbb5_start_0" on_node="controller-2" on_node_uuid="3"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="66">
+    <action_set>
+      <rsc_op id="129" operation="start" operation_key="stonith-fence_ipmilan-5254005bdbb5_start_0" on_node="controller-2" on_node_uuid="3">
+        <primitive id="stonith-fence_ipmilan-5254005bdbb5" class="stonith" type="fence_ipmilan"/>
+        <attributes CRM_meta_on_node="controller-2" CRM_meta_on_node_uuid="3" CRM_meta_timeout="20000" action="reboot"  ipaddr="172.16.0.1" ipport="6235" lanplus="true" login="admin" passwd="****" pcmk_host_list="controller-0" privlvl="administrator"/>
+      </rsc_op>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="128" operation="stop" operation_key="stonith-fence_ipmilan-5254005bdbb5_stop_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="67">
+    <action_set>
+      <pseudo_event id="128" operation="stop" operation_key="stonith-fence_ipmilan-5254005bdbb5_stop_0">
+        <attributes CRM_meta_timeout="20000" action="reboot"  ipaddr="172.16.0.1" ipport="6235" lanplus="true" login="admin" passwd="****" pcmk_host_list="controller-0" privlvl="administrator"/>
+      </pseudo_event>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="68">
+    <action_set>
+      <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2">
+        <attributes CRM_meta_cinder_volume_role="true" CRM_meta_haproxy_role="true" CRM_meta_on_node="controller-1" CRM_meta_on_node_uuid="2" CRM_meta_redis_role="true" CRM_meta_stonith_action="reboot" />
+        <downed>
+          <node id="2"/>
+        </downed>
+      </crm_event>
+    </action_set>
+    <inputs/>
+  </synapse>
+  <synapse id="69">
+    <action_set>
+      <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete">
+        <attributes />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <crm_event id="132" operation="stonith" operation_key="stonith-controller-1-reboot" on_node="controller-1" on_node_uuid="2"/>
+      </trigger>
+    </inputs>
+  </synapse>
+  <synapse id="70">
+    <action_set>
+      <pseudo_event id="21" operation="all_stopped" operation_key="all_stopped">
+        <attributes />
+      </pseudo_event>
+    </action_set>
+    <inputs>
+      <trigger>
+        <pseudo_event id="26" operation="stop" operation_key="messaging-1_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="31" operation="stop" operation_key="galera-0_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="36" operation="stop" operation_key="galera-2_stop_0"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="43" operation="stop" operation_key="rabbitmq_stop_0" internal_operation_key="rabbitmq:2_stop_0" on_node="messaging-1" on_node_uuid="messaging-1" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="55" operation="stop" operation_key="galera_stop_0" internal_operation_key="galera:1_stop_0" on_node="galera-2" on_node_uuid="galera-2" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="59" operation="stop" operation_key="galera_stop_0" internal_operation_key="galera:2_stop_0" on_node="galera-0" on_node_uuid="galera-0" router_node="controller-1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="69" operation="stop" operation_key="redis_stop_0" internal_operation_key="redis:0_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="87" operation="notified" operation_key="redis-master_confirmed-post_notify_stopped_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="104" operation="stop" operation_key="ip-172.17.1.14_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="107" operation="stop" operation_key="ip-172.17.1.17_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="112" operation="stop" operation_key="ip-172.17.4.11_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="115" operation="stop" operation_key="haproxy_stop_0" internal_operation_key="haproxy:0_stop_0"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="126" operation="stop" operation_key="stonith-fence_ipmilan-525400bbf613_stop_0" on_node="controller-0" on_node_uuid="1"/>
+      </trigger>
+      <trigger>
+        <rsc_op id="127" operation="stop" operation_key="stonith-fence_ipmilan-525400b4f6bd_stop_0" on_node="controller-0" on_node_uuid="1"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="128" operation="stop" operation_key="stonith-fence_ipmilan-5254005bdbb5_stop_0"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="131" operation="stonith_complete" operation_key="stonith_complete"/>
+      </trigger>
+      <trigger>
+        <pseudo_event id="134" operation="notified" operation_key="redis_notified_0" internal_operation_key="redis:0_confirmed-post_notify_stonith_0"/>
+      </trigger>
+    </inputs>
+  </synapse>
+</transition_graph>
diff --git a/pengine/test10/remote-recovery.scores b/pengine/test10/remote-recovery.scores
new file mode 100644
index 0000000..56a18eb
--- /dev/null
+++ b/pengine/test10/remote-recovery.scores
@@ -0,0 +1,848 @@
+Allocation scores:
+Using the original execution date of: 2017-05-03 13:33:24Z
+clone_color: galera-master allocation score on controller-0: -INFINITY
+clone_color: galera-master allocation score on controller-1: -INFINITY
+clone_color: galera-master allocation score on controller-2: -INFINITY
+clone_color: galera-master allocation score on galera-0: 0
+clone_color: galera-master allocation score on galera-1: 0
+clone_color: galera-master allocation score on galera-2: 0
+clone_color: galera-master allocation score on messaging-0: -INFINITY
+clone_color: galera-master allocation score on messaging-1: -INFINITY
+clone_color: galera-master allocation score on messaging-2: -INFINITY
+clone_color: galera:0 allocation score on controller-0: -INFINITY
+clone_color: galera:0 allocation score on controller-1: -INFINITY
+clone_color: galera:0 allocation score on controller-2: -INFINITY
+clone_color: galera:0 allocation score on galera-0: 0
+clone_color: galera:0 allocation score on galera-1: INFINITY
+clone_color: galera:0 allocation score on galera-2: 0
+clone_color: galera:0 allocation score on messaging-0: -INFINITY
+clone_color: galera:0 allocation score on messaging-1: -INFINITY
+clone_color: galera:0 allocation score on messaging-2: -INFINITY
+clone_color: galera:1 allocation score on controller-0: -INFINITY
+clone_color: galera:1 allocation score on controller-1: -INFINITY
+clone_color: galera:1 allocation score on controller-2: -INFINITY
+clone_color: galera:1 allocation score on galera-0: 0
+clone_color: galera:1 allocation score on galera-1: 0
+clone_color: galera:1 allocation score on galera-2: INFINITY
+clone_color: galera:1 allocation score on messaging-0: -INFINITY
+clone_color: galera:1 allocation score on messaging-1: -INFINITY
+clone_color: galera:1 allocation score on messaging-2: -INFINITY
+clone_color: galera:2 allocation score on controller-0: -INFINITY
+clone_color: galera:2 allocation score on controller-1: -INFINITY
+clone_color: galera:2 allocation score on controller-2: -INFINITY
+clone_color: galera:2 allocation score on galera-0: INFINITY
+clone_color: galera:2 allocation score on galera-1: 0
+clone_color: galera:2 allocation score on galera-2: 0
+clone_color: galera:2 allocation score on messaging-0: -INFINITY
+clone_color: galera:2 allocation score on messaging-1: -INFINITY
+clone_color: galera:2 allocation score on messaging-2: -INFINITY
+clone_color: galera:3 allocation score on controller-0: -INFINITY
+clone_color: galera:3 allocation score on controller-1: -INFINITY
+clone_color: galera:3 allocation score on controller-2: -INFINITY
+clone_color: galera:3 allocation score on galera-0: 0
+clone_color: galera:3 allocation score on galera-1: 0
+clone_color: galera:3 allocation score on galera-2: 0
+clone_color: galera:3 allocation score on messaging-0: -INFINITY
+clone_color: galera:3 allocation score on messaging-1: -INFINITY
+clone_color: galera:3 allocation score on messaging-2: -INFINITY
+clone_color: galera:4 allocation score on controller-0: -INFINITY
+clone_color: galera:4 allocation score on controller-1: -INFINITY
+clone_color: galera:4 allocation score on controller-2: -INFINITY
+clone_color: galera:4 allocation score on galera-0: 0
+clone_color: galera:4 allocation score on galera-1: 0
+clone_color: galera:4 allocation score on galera-2: 0
+clone_color: galera:4 allocation score on messaging-0: -INFINITY
+clone_color: galera:4 allocation score on messaging-1: -INFINITY
+clone_color: galera:4 allocation score on messaging-2: -INFINITY
+clone_color: galera:5 allocation score on controller-0: -INFINITY
+clone_color: galera:5 allocation score on controller-1: -INFINITY
+clone_color: galera:5 allocation score on controller-2: -INFINITY
+clone_color: galera:5 allocation score on galera-0: 0
+clone_color: galera:5 allocation score on galera-1: 0
+clone_color: galera:5 allocation score on galera-2: 0
+clone_color: galera:5 allocation score on messaging-0: -INFINITY
+clone_color: galera:5 allocation score on messaging-1: -INFINITY
+clone_color: galera:5 allocation score on messaging-2: -INFINITY
+clone_color: galera:6 allocation score on controller-0: -INFINITY
+clone_color: galera:6 allocation score on controller-1: -INFINITY
+clone_color: galera:6 allocation score on controller-2: -INFINITY
+clone_color: galera:6 allocation score on galera-0: 0
+clone_color: galera:6 allocation score on galera-1: 0
+clone_color: galera:6 allocation score on galera-2: 0
+clone_color: galera:6 allocation score on messaging-0: -INFINITY
+clone_color: galera:6 allocation score on messaging-1: -INFINITY
+clone_color: galera:6 allocation score on messaging-2: -INFINITY
+clone_color: galera:7 allocation score on controller-0: -INFINITY
+clone_color: galera:7 allocation score on controller-1: -INFINITY
+clone_color: galera:7 allocation score on controller-2: -INFINITY
+clone_color: galera:7 allocation score on galera-0: 0
+clone_color: galera:7 allocation score on galera-1: 0
+clone_color: galera:7 allocation score on galera-2: 0
+clone_color: galera:7 allocation score on messaging-0: -INFINITY
+clone_color: galera:7 allocation score on messaging-1: -INFINITY
+clone_color: galera:7 allocation score on messaging-2: -INFINITY
+clone_color: galera:8 allocation score on controller-0: -INFINITY
+clone_color: galera:8 allocation score on controller-1: -INFINITY
+clone_color: galera:8 allocation score on controller-2: -INFINITY
+clone_color: galera:8 allocation score on galera-0: 0
+clone_color: galera:8 allocation score on galera-1: 0
+clone_color: galera:8 allocation score on galera-2: 0
+clone_color: galera:8 allocation score on messaging-0: -INFINITY
+clone_color: galera:8 allocation score on messaging-1: -INFINITY
+clone_color: galera:8 allocation score on messaging-2: -INFINITY
+clone_color: haproxy-clone allocation score on controller-0: INFINITY
+clone_color: haproxy-clone allocation score on controller-1: 0
+clone_color: haproxy-clone allocation score on controller-2: 0
+clone_color: haproxy-clone allocation score on galera-0: -INFINITY
+clone_color: haproxy-clone allocation score on galera-1: -INFINITY
+clone_color: haproxy-clone allocation score on galera-2: -INFINITY
+clone_color: haproxy-clone allocation score on messaging-0: -INFINITY
+clone_color: haproxy-clone allocation score on messaging-1: -INFINITY
+clone_color: haproxy-clone allocation score on messaging-2: -INFINITY
+clone_color: haproxy:0 allocation score on controller-0: 0
+clone_color: haproxy:0 allocation score on controller-1: INFINITY
+clone_color: haproxy:0 allocation score on controller-2: 0
+clone_color: haproxy:0 allocation score on galera-0: -INFINITY
+clone_color: haproxy:0 allocation score on galera-1: -INFINITY
+clone_color: haproxy:0 allocation score on galera-2: -INFINITY
+clone_color: haproxy:0 allocation score on messaging-0: -INFINITY
+clone_color: haproxy:0 allocation score on messaging-1: -INFINITY
+clone_color: haproxy:0 allocation score on messaging-2: -INFINITY
+clone_color: haproxy:1 allocation score on controller-0: INFINITY
+clone_color: haproxy:1 allocation score on controller-1: 0
+clone_color: haproxy:1 allocation score on controller-2: 0
+clone_color: haproxy:1 allocation score on galera-0: -INFINITY
+clone_color: haproxy:1 allocation score on galera-1: -INFINITY
+clone_color: haproxy:1 allocation score on galera-2: -INFINITY
+clone_color: haproxy:1 allocation score on messaging-0: -INFINITY
+clone_color: haproxy:1 allocation score on messaging-1: -INFINITY
+clone_color: haproxy:1 allocation score on messaging-2: -INFINITY
+clone_color: haproxy:2 allocation score on controller-0: 0
+clone_color: haproxy:2 allocation score on controller-1: 0
+clone_color: haproxy:2 allocation score on controller-2: INFINITY
+clone_color: haproxy:2 allocation score on galera-0: -INFINITY
+clone_color: haproxy:2 allocation score on galera-1: -INFINITY
+clone_color: haproxy:2 allocation score on galera-2: -INFINITY
+clone_color: haproxy:2 allocation score on messaging-0: -INFINITY
+clone_color: haproxy:2 allocation score on messaging-1: -INFINITY
+clone_color: haproxy:2 allocation score on messaging-2: -INFINITY
+clone_color: haproxy:3 allocation score on controller-0: 0
+clone_color: haproxy:3 allocation score on controller-1: 0
+clone_color: haproxy:3 allocation score on controller-2: 0
+clone_color: haproxy:3 allocation score on galera-0: -INFINITY
+clone_color: haproxy:3 allocation score on galera-1: -INFINITY
+clone_color: haproxy:3 allocation score on galera-2: -INFINITY
+clone_color: haproxy:3 allocation score on messaging-0: -INFINITY
+clone_color: haproxy:3 allocation score on messaging-1: -INFINITY
+clone_color: haproxy:3 allocation score on messaging-2: -INFINITY
+clone_color: haproxy:4 allocation score on controller-0: 0
+clone_color: haproxy:4 allocation score on controller-1: 0
+clone_color: haproxy:4 allocation score on controller-2: 0
+clone_color: haproxy:4 allocation score on galera-0: -INFINITY
+clone_color: haproxy:4 allocation score on galera-1: -INFINITY
+clone_color: haproxy:4 allocation score on galera-2: -INFINITY
+clone_color: haproxy:4 allocation score on messaging-0: -INFINITY
+clone_color: haproxy:4 allocation score on messaging-1: -INFINITY
+clone_color: haproxy:4 allocation score on messaging-2: -INFINITY
+clone_color: haproxy:5 allocation score on controller-0: 0
+clone_color: haproxy:5 allocation score on controller-1: 0
+clone_color: haproxy:5 allocation score on controller-2: 0
+clone_color: haproxy:5 allocation score on galera-0: -INFINITY
+clone_color: haproxy:5 allocation score on galera-1: -INFINITY
+clone_color: haproxy:5 allocation score on galera-2: -INFINITY
+clone_color: haproxy:5 allocation score on messaging-0: -INFINITY
+clone_color: haproxy:5 allocation score on messaging-1: -INFINITY
+clone_color: haproxy:5 allocation score on messaging-2: -INFINITY
+clone_color: haproxy:6 allocation score on controller-0: 0
+clone_color: haproxy:6 allocation score on controller-1: 0
+clone_color: haproxy:6 allocation score on controller-2: 0
+clone_color: haproxy:6 allocation score on galera-0: -INFINITY
+clone_color: haproxy:6 allocation score on galera-1: -INFINITY
+clone_color: haproxy:6 allocation score on galera-2: -INFINITY
+clone_color: haproxy:6 allocation score on messaging-0: -INFINITY
+clone_color: haproxy:6 allocation score on messaging-1: -INFINITY
+clone_color: haproxy:6 allocation score on messaging-2: -INFINITY
+clone_color: haproxy:7 allocation score on controller-0: 0
+clone_color: haproxy:7 allocation score on controller-1: 0
+clone_color: haproxy:7 allocation score on controller-2: 0
+clone_color: haproxy:7 allocation score on galera-0: -INFINITY
+clone_color: haproxy:7 allocation score on galera-1: -INFINITY
+clone_color: haproxy:7 allocation score on galera-2: -INFINITY
+clone_color: haproxy:7 allocation score on messaging-0: -INFINITY
+clone_color: haproxy:7 allocation score on messaging-1: -INFINITY
+clone_color: haproxy:7 allocation score on messaging-2: -INFINITY
+clone_color: haproxy:8 allocation score on controller-0: 0
+clone_color: haproxy:8 allocation score on controller-1: 0
+clone_color: haproxy:8 allocation score on controller-2: 0
+clone_color: haproxy:8 allocation score on galera-0: -INFINITY
+clone_color: haproxy:8 allocation score on galera-1: -INFINITY
+clone_color: haproxy:8 allocation score on galera-2: -INFINITY
+clone_color: haproxy:8 allocation score on messaging-0: -INFINITY
+clone_color: haproxy:8 allocation score on messaging-1: -INFINITY
+clone_color: haproxy:8 allocation score on messaging-2: -INFINITY
+clone_color: rabbitmq-clone allocation score on controller-0: -INFINITY
+clone_color: rabbitmq-clone allocation score on controller-1: -INFINITY
+clone_color: rabbitmq-clone allocation score on controller-2: -INFINITY
+clone_color: rabbitmq-clone allocation score on galera-0: -INFINITY
+clone_color: rabbitmq-clone allocation score on galera-1: -INFINITY
+clone_color: rabbitmq-clone allocation score on galera-2: -INFINITY
+clone_color: rabbitmq-clone allocation score on messaging-0: 0
+clone_color: rabbitmq-clone allocation score on messaging-1: 0
+clone_color: rabbitmq-clone allocation score on messaging-2: 0
+clone_color: rabbitmq:0 allocation score on controller-0: -INFINITY
+clone_color: rabbitmq:0 allocation score on controller-1: -INFINITY
+clone_color: rabbitmq:0 allocation score on controller-2: -INFINITY
+clone_color: rabbitmq:0 allocation score on galera-0: -INFINITY
+clone_color: rabbitmq:0 allocation score on galera-1: -INFINITY
+clone_color: rabbitmq:0 allocation score on galera-2: -INFINITY
+clone_color: rabbitmq:0 allocation score on messaging-0: 0
+clone_color: rabbitmq:0 allocation score on messaging-1: 0
+clone_color: rabbitmq:0 allocation score on messaging-2: INFINITY
+clone_color: rabbitmq:1 allocation score on controller-0: -INFINITY
+clone_color: rabbitmq:1 allocation score on controller-1: -INFINITY
+clone_color: rabbitmq:1 allocation score on controller-2: -INFINITY
+clone_color: rabbitmq:1 allocation score on galera-0: -INFINITY
+clone_color: rabbitmq:1 allocation score on galera-1: -INFINITY
+clone_color: rabbitmq:1 allocation score on galera-2: -INFINITY
+clone_color: rabbitmq:1 allocation score on messaging-0: INFINITY
+clone_color: rabbitmq:1 allocation score on messaging-1: 0
+clone_color: rabbitmq:1 allocation score on messaging-2: 0
+clone_color: rabbitmq:2 allocation score on controller-0: -INFINITY
+clone_color: rabbitmq:2 allocation score on controller-1: -INFINITY
+clone_color: rabbitmq:2 allocation score on controller-2: -INFINITY
+clone_color: rabbitmq:2 allocation score on galera-0: -INFINITY
+clone_color: rabbitmq:2 allocation score on galera-1: -INFINITY
+clone_color: rabbitmq:2 allocation score on galera-2: -INFINITY
+clone_color: rabbitmq:2 allocation score on messaging-0: 0
+clone_color: rabbitmq:2 allocation score on messaging-1: INFINITY
+clone_color: rabbitmq:2 allocation score on messaging-2: 0
+clone_color: rabbitmq:3 allocation score on controller-0: -INFINITY
+clone_color: rabbitmq:3 allocation score on controller-1: -INFINITY
+clone_color: rabbitmq:3 allocation score on controller-2: -INFINITY
+clone_color: rabbitmq:3 allocation score on galera-0: -INFINITY
+clone_color: rabbitmq:3 allocation score on galera-1: -INFINITY
+clone_color: rabbitmq:3 allocation score on galera-2: -INFINITY
+clone_color: rabbitmq:3 allocation score on messaging-0: 0
+clone_color: rabbitmq:3 allocation score on messaging-1: 0
+clone_color: rabbitmq:3 allocation score on messaging-2: 0
+clone_color: rabbitmq:4 allocation score on controller-0: -INFINITY
+clone_color: rabbitmq:4 allocation score on controller-1: -INFINITY
+clone_color: rabbitmq:4 allocation score on controller-2: -INFINITY
+clone_color: rabbitmq:4 allocation score on galera-0: -INFINITY
+clone_color: rabbitmq:4 allocation score on galera-1: -INFINITY
+clone_color: rabbitmq:4 allocation score on galera-2: -INFINITY
+clone_color: rabbitmq:4 allocation score on messaging-0: 0
+clone_color: rabbitmq:4 allocation score on messaging-1: 0
+clone_color: rabbitmq:4 allocation score on messaging-2: 0
+clone_color: rabbitmq:5 allocation score on controller-0: -INFINITY
+clone_color: rabbitmq:5 allocation score on controller-1: -INFINITY
+clone_color: rabbitmq:5 allocation score on controller-2: -INFINITY
+clone_color: rabbitmq:5 allocation score on galera-0: -INFINITY
+clone_color: rabbitmq:5 allocation score on galera-1: -INFINITY
+clone_color: rabbitmq:5 allocation score on galera-2: -INFINITY
+clone_color: rabbitmq:5 allocation score on messaging-0: 0
+clone_color: rabbitmq:5 allocation score on messaging-1: 0
+clone_color: rabbitmq:5 allocation score on messaging-2: 0
+clone_color: rabbitmq:6 allocation score on controller-0: -INFINITY
+clone_color: rabbitmq:6 allocation score on controller-1: -INFINITY
+clone_color: rabbitmq:6 allocation score on controller-2: -INFINITY
+clone_color: rabbitmq:6 allocation score on galera-0: -INFINITY
+clone_color: rabbitmq:6 allocation score on galera-1: -INFINITY
+clone_color: rabbitmq:6 allocation score on galera-2: -INFINITY
+clone_color: rabbitmq:6 allocation score on messaging-0: 0
+clone_color: rabbitmq:6 allocation score on messaging-1: 0
+clone_color: rabbitmq:6 allocation score on messaging-2: 0
+clone_color: rabbitmq:7 allocation score on controller-0: -INFINITY
+clone_color: rabbitmq:7 allocation score on controller-1: -INFINITY
+clone_color: rabbitmq:7 allocation score on controller-2: -INFINITY
+clone_color: rabbitmq:7 allocation score on galera-0: -INFINITY
+clone_color: rabbitmq:7 allocation score on galera-1: -INFINITY
+clone_color: rabbitmq:7 allocation score on galera-2: -INFINITY
+clone_color: rabbitmq:7 allocation score on messaging-0: 0
+clone_color: rabbitmq:7 allocation score on messaging-1: 0
+clone_color: rabbitmq:7 allocation score on messaging-2: 0
+clone_color: rabbitmq:8 allocation score on controller-0: -INFINITY
+clone_color: rabbitmq:8 allocation score on controller-1: -INFINITY
+clone_color: rabbitmq:8 allocation score on controller-2: -INFINITY
+clone_color: rabbitmq:8 allocation score on galera-0: -INFINITY
+clone_color: rabbitmq:8 allocation score on galera-1: -INFINITY
+clone_color: rabbitmq:8 allocation score on galera-2: -INFINITY
+clone_color: rabbitmq:8 allocation score on messaging-0: 0
+clone_color: rabbitmq:8 allocation score on messaging-1: 0
+clone_color: rabbitmq:8 allocation score on messaging-2: 0
+clone_color: redis-master allocation score on controller-0: 0
+clone_color: redis-master allocation score on controller-1: 0
+clone_color: redis-master allocation score on controller-2: 0
+clone_color: redis-master allocation score on galera-0: -INFINITY
+clone_color: redis-master allocation score on galera-1: -INFINITY
+clone_color: redis-master allocation score on galera-2: -INFINITY
+clone_color: redis-master allocation score on messaging-0: -INFINITY
+clone_color: redis-master allocation score on messaging-1: -INFINITY
+clone_color: redis-master allocation score on messaging-2: -INFINITY
+clone_color: redis:0 allocation score on controller-0: 0
+clone_color: redis:0 allocation score on controller-1: INFINITY
+clone_color: redis:0 allocation score on controller-2: 0
+clone_color: redis:0 allocation score on galera-0: -INFINITY
+clone_color: redis:0 allocation score on galera-1: -INFINITY
+clone_color: redis:0 allocation score on galera-2: -INFINITY
+clone_color: redis:0 allocation score on messaging-0: -INFINITY
+clone_color: redis:0 allocation score on messaging-1: -INFINITY
+clone_color: redis:0 allocation score on messaging-2: -INFINITY
+clone_color: redis:1 allocation score on controller-0: INFINITY
+clone_color: redis:1 allocation score on controller-1: 0
+clone_color: redis:1 allocation score on controller-2: 0
+clone_color: redis:1 allocation score on galera-0: -INFINITY
+clone_color: redis:1 allocation score on galera-1: -INFINITY
+clone_color: redis:1 allocation score on galera-2: -INFINITY
+clone_color: redis:1 allocation score on messaging-0: -INFINITY
+clone_color: redis:1 allocation score on messaging-1: -INFINITY
+clone_color: redis:1 allocation score on messaging-2: -INFINITY
+clone_color: redis:2 allocation score on controller-0: 0
+clone_color: redis:2 allocation score on controller-1: 0
+clone_color: redis:2 allocation score on controller-2: INFINITY
+clone_color: redis:2 allocation score on galera-0: -INFINITY
+clone_color: redis:2 allocation score on galera-1: -INFINITY
+clone_color: redis:2 allocation score on galera-2: -INFINITY
+clone_color: redis:2 allocation score on messaging-0: -INFINITY
+clone_color: redis:2 allocation score on messaging-1: -INFINITY
+clone_color: redis:2 allocation score on messaging-2: -INFINITY
+clone_color: redis:3 allocation score on controller-0: 0
+clone_color: redis:3 allocation score on controller-1: 0
+clone_color: redis:3 allocation score on controller-2: 0
+clone_color: redis:3 allocation score on galera-0: -INFINITY
+clone_color: redis:3 allocation score on galera-1: -INFINITY
+clone_color: redis:3 allocation score on galera-2: -INFINITY
+clone_color: redis:3 allocation score on messaging-0: -INFINITY
+clone_color: redis:3 allocation score on messaging-1: -INFINITY
+clone_color: redis:3 allocation score on messaging-2: -INFINITY
+clone_color: redis:4 allocation score on controller-0: 0
+clone_color: redis:4 allocation score on controller-1: 0
+clone_color: redis:4 allocation score on controller-2: 0
+clone_color: redis:4 allocation score on galera-0: -INFINITY
+clone_color: redis:4 allocation score on galera-1: -INFINITY
+clone_color: redis:4 allocation score on galera-2: -INFINITY
+clone_color: redis:4 allocation score on messaging-0: -INFINITY
+clone_color: redis:4 allocation score on messaging-1: -INFINITY
+clone_color: redis:4 allocation score on messaging-2: -INFINITY
+clone_color: redis:5 allocation score on controller-0: 0
+clone_color: redis:5 allocation score on controller-1: 0
+clone_color: redis:5 allocation score on controller-2: 0
+clone_color: redis:5 allocation score on galera-0: -INFINITY
+clone_color: redis:5 allocation score on galera-1: -INFINITY
+clone_color: redis:5 allocation score on galera-2: -INFINITY
+clone_color: redis:5 allocation score on messaging-0: -INFINITY
+clone_color: redis:5 allocation score on messaging-1: -INFINITY
+clone_color: redis:5 allocation score on messaging-2: -INFINITY
+clone_color: redis:6 allocation score on controller-0: 0
+clone_color: redis:6 allocation score on controller-1: 0
+clone_color: redis:6 allocation score on controller-2: 0
+clone_color: redis:6 allocation score on galera-0: -INFINITY
+clone_color: redis:6 allocation score on galera-1: -INFINITY
+clone_color: redis:6 allocation score on galera-2: -INFINITY
+clone_color: redis:6 allocation score on messaging-0: -INFINITY
+clone_color: redis:6 allocation score on messaging-1: -INFINITY
+clone_color: redis:6 allocation score on messaging-2: -INFINITY
+clone_color: redis:7 allocation score on controller-0: 0
+clone_color: redis:7 allocation score on controller-1: 0
+clone_color: redis:7 allocation score on controller-2: 0
+clone_color: redis:7 allocation score on galera-0: -INFINITY
+clone_color: redis:7 allocation score on galera-1: -INFINITY
+clone_color: redis:7 allocation score on galera-2: -INFINITY
+clone_color: redis:7 allocation score on messaging-0: -INFINITY
+clone_color: redis:7 allocation score on messaging-1: -INFINITY
+clone_color: redis:7 allocation score on messaging-2: -INFINITY
+clone_color: redis:8 allocation score on controller-0: 0
+clone_color: redis:8 allocation score on controller-1: 0
+clone_color: redis:8 allocation score on controller-2: 0
+clone_color: redis:8 allocation score on galera-0: -INFINITY
+clone_color: redis:8 allocation score on galera-1: -INFINITY
+clone_color: redis:8 allocation score on galera-2: -INFINITY
+clone_color: redis:8 allocation score on messaging-0: -INFINITY
+clone_color: redis:8 allocation score on messaging-1: -INFINITY
+clone_color: redis:8 allocation score on messaging-2: -INFINITY
+galera:0 promotion score on galera-1: 100
+galera:1 promotion score on galera-2: 100
+galera:2 promotion score on galera-0: 100
+galera:3 promotion score on none: 0
+galera:4 promotion score on none: 0
+galera:5 promotion score on none: 0
+galera:6 promotion score on none: 0
+galera:7 promotion score on none: 0
+galera:8 promotion score on none: 0
+native_color: galera-0 allocation score on controller-0: 0
+native_color: galera-0 allocation score on controller-1: INFINITY
+native_color: galera-0 allocation score on controller-2: 0
+native_color: galera-0 allocation score on galera-0: -INFINITY
+native_color: galera-0 allocation score on galera-1: -INFINITY
+native_color: galera-0 allocation score on galera-2: -INFINITY
+native_color: galera-0 allocation score on messaging-0: -INFINITY
+native_color: galera-0 allocation score on messaging-1: -INFINITY
+native_color: galera-0 allocation score on messaging-2: -INFINITY
+native_color: galera-1 allocation score on controller-0: INFINITY
+native_color: galera-1 allocation score on controller-1: 0
+native_color: galera-1 allocation score on controller-2: 0
+native_color: galera-1 allocation score on galera-0: -INFINITY
+native_color: galera-1 allocation score on galera-1: -INFINITY
+native_color: galera-1 allocation score on galera-2: -INFINITY
+native_color: galera-1 allocation score on messaging-0: -INFINITY
+native_color: galera-1 allocation score on messaging-1: -INFINITY
+native_color: galera-1 allocation score on messaging-2: -INFINITY
+native_color: galera-2 allocation score on controller-0: 0
+native_color: galera-2 allocation score on controller-1: INFINITY
+native_color: galera-2 allocation score on controller-2: 0
+native_color: galera-2 allocation score on galera-0: -INFINITY
+native_color: galera-2 allocation score on galera-1: -INFINITY
+native_color: galera-2 allocation score on galera-2: -INFINITY
+native_color: galera-2 allocation score on messaging-0: -INFINITY
+native_color: galera-2 allocation score on messaging-1: -INFINITY
+native_color: galera-2 allocation score on messaging-2: -INFINITY
+native_color: galera:0 allocation score on controller-0: -INFINITY
+native_color: galera:0 allocation score on controller-1: -INFINITY
+native_color: galera:0 allocation score on controller-2: -INFINITY
+native_color: galera:0 allocation score on galera-0: 0
+native_color: galera:0 allocation score on galera-1: INFINITY
+native_color: galera:0 allocation score on galera-2: 0
+native_color: galera:0 allocation score on messaging-0: -INFINITY
+native_color: galera:0 allocation score on messaging-1: -INFINITY
+native_color: galera:0 allocation score on messaging-2: -INFINITY
+native_color: galera:1 allocation score on controller-0: -INFINITY
+native_color: galera:1 allocation score on controller-1: -INFINITY
+native_color: galera:1 allocation score on controller-2: -INFINITY
+native_color: galera:1 allocation score on galera-0: 0
+native_color: galera:1 allocation score on galera-1: -INFINITY
+native_color: galera:1 allocation score on galera-2: INFINITY
+native_color: galera:1 allocation score on messaging-0: -INFINITY
+native_color: galera:1 allocation score on messaging-1: -INFINITY
+native_color: galera:1 allocation score on messaging-2: -INFINITY
+native_color: galera:2 allocation score on controller-0: -INFINITY
+native_color: galera:2 allocation score on controller-1: -INFINITY
+native_color: galera:2 allocation score on controller-2: -INFINITY
+native_color: galera:2 allocation score on galera-0: INFINITY
+native_color: galera:2 allocation score on galera-1: -INFINITY
+native_color: galera:2 allocation score on galera-2: -INFINITY
+native_color: galera:2 allocation score on messaging-0: -INFINITY
+native_color: galera:2 allocation score on messaging-1: -INFINITY
+native_color: galera:2 allocation score on messaging-2: -INFINITY
+native_color: galera:3 allocation score on controller-0: -INFINITY
+native_color: galera:3 allocation score on controller-1: -INFINITY
+native_color: galera:3 allocation score on controller-2: -INFINITY
+native_color: galera:3 allocation score on galera-0: -INFINITY
+native_color: galera:3 allocation score on galera-1: -INFINITY
+native_color: galera:3 allocation score on galera-2: -INFINITY
+native_color: galera:3 allocation score on messaging-0: -INFINITY
+native_color: galera:3 allocation score on messaging-1: -INFINITY
+native_color: galera:3 allocation score on messaging-2: -INFINITY
+native_color: galera:4 allocation score on controller-0: -INFINITY
+native_color: galera:4 allocation score on controller-1: -INFINITY
+native_color: galera:4 allocation score on controller-2: -INFINITY
+native_color: galera:4 allocation score on galera-0: -INFINITY
+native_color: galera:4 allocation score on galera-1: -INFINITY
+native_color: galera:4 allocation score on galera-2: -INFINITY
+native_color: galera:4 allocation score on messaging-0: -INFINITY
+native_color: galera:4 allocation score on messaging-1: -INFINITY
+native_color: galera:4 allocation score on messaging-2: -INFINITY
+native_color: galera:5 allocation score on controller-0: -INFINITY
+native_color: galera:5 allocation score on controller-1: -INFINITY
+native_color: galera:5 allocation score on controller-2: -INFINITY
+native_color: galera:5 allocation score on galera-0: -INFINITY
+native_color: galera:5 allocation score on galera-1: -INFINITY
+native_color: galera:5 allocation score on galera-2: -INFINITY
+native_color: galera:5 allocation score on messaging-0: -INFINITY
+native_color: galera:5 allocation score on messaging-1: -INFINITY
+native_color: galera:5 allocation score on messaging-2: -INFINITY
+native_color: galera:6 allocation score on controller-0: -INFINITY
+native_color: galera:6 allocation score on controller-1: -INFINITY
+native_color: galera:6 allocation score on controller-2: -INFINITY
+native_color: galera:6 allocation score on galera-0: -INFINITY
+native_color: galera:6 allocation score on galera-1: -INFINITY
+native_color: galera:6 allocation score on galera-2: -INFINITY
+native_color: galera:6 allocation score on messaging-0: -INFINITY
+native_color: galera:6 allocation score on messaging-1: -INFINITY
+native_color: galera:6 allocation score on messaging-2: -INFINITY
+native_color: galera:7 allocation score on controller-0: -INFINITY
+native_color: galera:7 allocation score on controller-1: -INFINITY
+native_color: galera:7 allocation score on controller-2: -INFINITY
+native_color: galera:7 allocation score on galera-0: -INFINITY
+native_color: galera:7 allocation score on galera-1: -INFINITY
+native_color: galera:7 allocation score on galera-2: -INFINITY
+native_color: galera:7 allocation score on messaging-0: -INFINITY
+native_color: galera:7 allocation score on messaging-1: -INFINITY
+native_color: galera:7 allocation score on messaging-2: -INFINITY
+native_color: galera:8 allocation score on controller-0: -INFINITY
+native_color: galera:8 allocation score on controller-1: -INFINITY
+native_color: galera:8 allocation score on controller-2: -INFINITY
+native_color: galera:8 allocation score on galera-0: -INFINITY
+native_color: galera:8 allocation score on galera-1: -INFINITY
+native_color: galera:8 allocation score on galera-2: -INFINITY
+native_color: galera:8 allocation score on messaging-0: -INFINITY
+native_color: galera:8 allocation score on messaging-1: -INFINITY
+native_color: galera:8 allocation score on messaging-2: -INFINITY
+native_color: haproxy:0 allocation score on controller-0: -INFINITY
+native_color: haproxy:0 allocation score on controller-1: -INFINITY
+native_color: haproxy:0 allocation score on controller-2: -INFINITY
+native_color: haproxy:0 allocation score on galera-0: -INFINITY
+native_color: haproxy:0 allocation score on galera-1: -INFINITY
+native_color: haproxy:0 allocation score on galera-2: -INFINITY
+native_color: haproxy:0 allocation score on messaging-0: -INFINITY
+native_color: haproxy:0 allocation score on messaging-1: -INFINITY
+native_color: haproxy:0 allocation score on messaging-2: -INFINITY
+native_color: haproxy:1 allocation score on controller-0: INFINITY
+native_color: haproxy:1 allocation score on controller-1: -INFINITY
+native_color: haproxy:1 allocation score on controller-2: 0
+native_color: haproxy:1 allocation score on galera-0: -INFINITY
+native_color: haproxy:1 allocation score on galera-1: -INFINITY
+native_color: haproxy:1 allocation score on galera-2: -INFINITY
+native_color: haproxy:1 allocation score on messaging-0: -INFINITY
+native_color: haproxy:1 allocation score on messaging-1: -INFINITY
+native_color: haproxy:1 allocation score on messaging-2: -INFINITY
+native_color: haproxy:2 allocation score on controller-0: -INFINITY
+native_color: haproxy:2 allocation score on controller-1: -INFINITY
+native_color: haproxy:2 allocation score on controller-2: INFINITY
+native_color: haproxy:2 allocation score on galera-0: -INFINITY
+native_color: haproxy:2 allocation score on galera-1: -INFINITY
+native_color: haproxy:2 allocation score on galera-2: -INFINITY
+native_color: haproxy:2 allocation score on messaging-0: -INFINITY
+native_color: haproxy:2 allocation score on messaging-1: -INFINITY
+native_color: haproxy:2 allocation score on messaging-2: -INFINITY
+native_color: haproxy:3 allocation score on controller-0: -INFINITY
+native_color: haproxy:3 allocation score on controller-1: -INFINITY
+native_color: haproxy:3 allocation score on controller-2: -INFINITY
+native_color: haproxy:3 allocation score on galera-0: -INFINITY
+native_color: haproxy:3 allocation score on galera-1: -INFINITY
+native_color: haproxy:3 allocation score on galera-2: -INFINITY
+native_color: haproxy:3 allocation score on messaging-0: -INFINITY
+native_color: haproxy:3 allocation score on messaging-1: -INFINITY
+native_color: haproxy:3 allocation score on messaging-2: -INFINITY
+native_color: haproxy:4 allocation score on controller-0: -INFINITY
+native_color: haproxy:4 allocation score on controller-1: -INFINITY
+native_color: haproxy:4 allocation score on controller-2: -INFINITY
+native_color: haproxy:4 allocation score on galera-0: -INFINITY
+native_color: haproxy:4 allocation score on galera-1: -INFINITY
+native_color: haproxy:4 allocation score on galera-2: -INFINITY
+native_color: haproxy:4 allocation score on messaging-0: -INFINITY
+native_color: haproxy:4 allocation score on messaging-1: -INFINITY
+native_color: haproxy:4 allocation score on messaging-2: -INFINITY
+native_color: haproxy:5 allocation score on controller-0: -INFINITY
+native_color: haproxy:5 allocation score on controller-1: -INFINITY
+native_color: haproxy:5 allocation score on controller-2: -INFINITY
+native_color: haproxy:5 allocation score on galera-0: -INFINITY
+native_color: haproxy:5 allocation score on galera-1: -INFINITY
+native_color: haproxy:5 allocation score on galera-2: -INFINITY
+native_color: haproxy:5 allocation score on messaging-0: -INFINITY
+native_color: haproxy:5 allocation score on messaging-1: -INFINITY
+native_color: haproxy:5 allocation score on messaging-2: -INFINITY
+native_color: haproxy:6 allocation score on controller-0: -INFINITY
+native_color: haproxy:6 allocation score on controller-1: -INFINITY
+native_color: haproxy:6 allocation score on controller-2: -INFINITY
+native_color: haproxy:6 allocation score on galera-0: -INFINITY
+native_color: haproxy:6 allocation score on galera-1: -INFINITY
+native_color: haproxy:6 allocation score on galera-2: -INFINITY
+native_color: haproxy:6 allocation score on messaging-0: -INFINITY
+native_color: haproxy:6 allocation score on messaging-1: -INFINITY
+native_color: haproxy:6 allocation score on messaging-2: -INFINITY
+native_color: haproxy:7 allocation score on controller-0: -INFINITY
+native_color: haproxy:7 allocation score on controller-1: -INFINITY
+native_color: haproxy:7 allocation score on controller-2: -INFINITY
+native_color: haproxy:7 allocation score on galera-0: -INFINITY
+native_color: haproxy:7 allocation score on galera-1: -INFINITY
+native_color: haproxy:7 allocation score on galera-2: -INFINITY
+native_color: haproxy:7 allocation score on messaging-0: -INFINITY
+native_color: haproxy:7 allocation score on messaging-1: -INFINITY
+native_color: haproxy:7 allocation score on messaging-2: -INFINITY
+native_color: haproxy:8 allocation score on controller-0: -INFINITY
+native_color: haproxy:8 allocation score on controller-1: -INFINITY
+native_color: haproxy:8 allocation score on controller-2: -INFINITY
+native_color: haproxy:8 allocation score on galera-0: -INFINITY
+native_color: haproxy:8 allocation score on galera-1: -INFINITY
+native_color: haproxy:8 allocation score on galera-2: -INFINITY
+native_color: haproxy:8 allocation score on messaging-0: -INFINITY
+native_color: haproxy:8 allocation score on messaging-1: -INFINITY
+native_color: haproxy:8 allocation score on messaging-2: -INFINITY
+native_color: ip-10.0.0.102 allocation score on controller-0: INFINITY
+native_color: ip-10.0.0.102 allocation score on controller-1: -INFINITY
+native_color: ip-10.0.0.102 allocation score on controller-2: 0
+native_color: ip-10.0.0.102 allocation score on galera-0: -INFINITY
+native_color: ip-10.0.0.102 allocation score on galera-1: -INFINITY
+native_color: ip-10.0.0.102 allocation score on galera-2: -INFINITY
+native_color: ip-10.0.0.102 allocation score on messaging-0: -INFINITY
+native_color: ip-10.0.0.102 allocation score on messaging-1: -INFINITY
+native_color: ip-10.0.0.102 allocation score on messaging-2: -INFINITY
+native_color: ip-172.17.1.14 allocation score on controller-0: 0
+native_color: ip-172.17.1.14 allocation score on controller-1: -INFINITY
+native_color: ip-172.17.1.14 allocation score on controller-2: 0
+native_color: ip-172.17.1.14 allocation score on galera-0: -INFINITY
+native_color: ip-172.17.1.14 allocation score on galera-1: -INFINITY
+native_color: ip-172.17.1.14 allocation score on galera-2: -INFINITY
+native_color: ip-172.17.1.14 allocation score on messaging-0: -INFINITY
+native_color: ip-172.17.1.14 allocation score on messaging-1: -INFINITY
+native_color: ip-172.17.1.14 allocation score on messaging-2: -INFINITY
+native_color: ip-172.17.1.17 allocation score on controller-0: 0
+native_color: ip-172.17.1.17 allocation score on controller-1: -INFINITY
+native_color: ip-172.17.1.17 allocation score on controller-2: 0
+native_color: ip-172.17.1.17 allocation score on galera-0: -INFINITY
+native_color: ip-172.17.1.17 allocation score on galera-1: -INFINITY
+native_color: ip-172.17.1.17 allocation score on galera-2: -INFINITY
+native_color: ip-172.17.1.17 allocation score on messaging-0: -INFINITY
+native_color: ip-172.17.1.17 allocation score on messaging-1: -INFINITY
+native_color: ip-172.17.1.17 allocation score on messaging-2: -INFINITY
+native_color: ip-172.17.3.15 allocation score on controller-0: INFINITY
+native_color: ip-172.17.3.15 allocation score on controller-1: -INFINITY
+native_color: ip-172.17.3.15 allocation score on controller-2: 0
+native_color: ip-172.17.3.15 allocation score on galera-0: -INFINITY
+native_color: ip-172.17.3.15 allocation score on galera-1: -INFINITY
+native_color: ip-172.17.3.15 allocation score on galera-2: -INFINITY
+native_color: ip-172.17.3.15 allocation score on messaging-0: -INFINITY
+native_color: ip-172.17.3.15 allocation score on messaging-1: -INFINITY
+native_color: ip-172.17.3.15 allocation score on messaging-2: -INFINITY
+native_color: ip-172.17.4.11 allocation score on controller-0: 0
+native_color: ip-172.17.4.11 allocation score on controller-1: -INFINITY
+native_color: ip-172.17.4.11 allocation score on controller-2: 0
+native_color: ip-172.17.4.11 allocation score on galera-0: -INFINITY
+native_color: ip-172.17.4.11 allocation score on galera-1: -INFINITY
+native_color: ip-172.17.4.11 allocation score on galera-2: -INFINITY
+native_color: ip-172.17.4.11 allocation score on messaging-0: -INFINITY
+native_color: ip-172.17.4.11 allocation score on messaging-1: -INFINITY
+native_color: ip-172.17.4.11 allocation score on messaging-2: -INFINITY
+native_color: ip-192.168.24.6 allocation score on controller-0: INFINITY
+native_color: ip-192.168.24.6 allocation score on controller-1: -INFINITY
+native_color: ip-192.168.24.6 allocation score on controller-2: 0
+native_color: ip-192.168.24.6 allocation score on galera-0: -INFINITY
+native_color: ip-192.168.24.6 allocation score on galera-1: -INFINITY
+native_color: ip-192.168.24.6 allocation score on galera-2: -INFINITY
+native_color: ip-192.168.24.6 allocation score on messaging-0: -INFINITY
+native_color: ip-192.168.24.6 allocation score on messaging-1: -INFINITY
+native_color: ip-192.168.24.6 allocation score on messaging-2: -INFINITY
+native_color: messaging-0 allocation score on controller-0: INFINITY
+native_color: messaging-0 allocation score on controller-1: 0
+native_color: messaging-0 allocation score on controller-2: 0
+native_color: messaging-0 allocation score on galera-0: -INFINITY
+native_color: messaging-0 allocation score on galera-1: -INFINITY
+native_color: messaging-0 allocation score on galera-2: -INFINITY
+native_color: messaging-0 allocation score on messaging-0: -INFINITY
+native_color: messaging-0 allocation score on messaging-1: -INFINITY
+native_color: messaging-0 allocation score on messaging-2: -INFINITY
+native_color: messaging-1 allocation score on controller-0: 0
+native_color: messaging-1 allocation score on controller-1: INFINITY
+native_color: messaging-1 allocation score on controller-2: 0
+native_color: messaging-1 allocation score on galera-0: -INFINITY
+native_color: messaging-1 allocation score on galera-1: -INFINITY
+native_color: messaging-1 allocation score on galera-2: -INFINITY
+native_color: messaging-1 allocation score on messaging-0: -INFINITY
+native_color: messaging-1 allocation score on messaging-1: -INFINITY
+native_color: messaging-1 allocation score on messaging-2: -INFINITY
+native_color: messaging-2 allocation score on controller-0: INFINITY
+native_color: messaging-2 allocation score on controller-1: 0
+native_color: messaging-2 allocation score on controller-2: 0
+native_color: messaging-2 allocation score on galera-0: -INFINITY
+native_color: messaging-2 allocation score on galera-1: -INFINITY
+native_color: messaging-2 allocation score on galera-2: -INFINITY
+native_color: messaging-2 allocation score on messaging-0: -INFINITY
+native_color: messaging-2 allocation score on messaging-1: -INFINITY
+native_color: messaging-2 allocation score on messaging-2: -INFINITY
+native_color: openstack-cinder-volume allocation score on controller-0: INFINITY
+native_color: openstack-cinder-volume allocation score on controller-1: 0
+native_color: openstack-cinder-volume allocation score on controller-2: 0
+native_color: openstack-cinder-volume allocation score on galera-0: -INFINITY
+native_color: openstack-cinder-volume allocation score on galera-1: -INFINITY
+native_color: openstack-cinder-volume allocation score on galera-2: -INFINITY
+native_color: openstack-cinder-volume allocation score on messaging-0: -INFINITY
+native_color: openstack-cinder-volume allocation score on messaging-1: -INFINITY
+native_color: openstack-cinder-volume allocation score on messaging-2: -INFINITY
+native_color: rabbitmq:0 allocation score on controller-0: -INFINITY
+native_color: rabbitmq:0 allocation score on controller-1: -INFINITY
+native_color: rabbitmq:0 allocation score on controller-2: -INFINITY
+native_color: rabbitmq:0 allocation score on galera-0: -INFINITY
+native_color: rabbitmq:0 allocation score on galera-1: -INFINITY
+native_color: rabbitmq:0 allocation score on galera-2: -INFINITY
+native_color: rabbitmq:0 allocation score on messaging-0: 0
+native_color: rabbitmq:0 allocation score on messaging-1: 0
+native_color: rabbitmq:0 allocation score on messaging-2: INFINITY
+native_color: rabbitmq:1 allocation score on controller-0: -INFINITY
+native_color: rabbitmq:1 allocation score on controller-1: -INFINITY
+native_color: rabbitmq:1 allocation score on controller-2: -INFINITY
+native_color: rabbitmq:1 allocation score on galera-0: -INFINITY
+native_color: rabbitmq:1 allocation score on galera-1: -INFINITY
+native_color: rabbitmq:1 allocation score on galera-2: -INFINITY
+native_color: rabbitmq:1 allocation score on messaging-0: INFINITY
+native_color: rabbitmq:1 allocation score on messaging-1: 0
+native_color: rabbitmq:1 allocation score on messaging-2: -INFINITY
+native_color: rabbitmq:2 allocation score on controller-0: -INFINITY
+native_color: rabbitmq:2 allocation score on controller-1: -INFINITY
+native_color: rabbitmq:2 allocation score on controller-2: -INFINITY
+native_color: rabbitmq:2 allocation score on galera-0: -INFINITY
+native_color: rabbitmq:2 allocation score on galera-1: -INFINITY
+native_color: rabbitmq:2 allocation score on galera-2: -INFINITY
+native_color: rabbitmq:2 allocation score on messaging-0: -INFINITY
+native_color: rabbitmq:2 allocation score on messaging-1: INFINITY
+native_color: rabbitmq:2 allocation score on messaging-2: -INFINITY
+native_color: rabbitmq:3 allocation score on controller-0: -INFINITY
+native_color: rabbitmq:3 allocation score on controller-1: -INFINITY
+native_color: rabbitmq:3 allocation score on controller-2: -INFINITY
+native_color: rabbitmq:3 allocation score on galera-0: -INFINITY
+native_color: rabbitmq:3 allocation score on galera-1: -INFINITY
+native_color: rabbitmq:3 allocation score on galera-2: -INFINITY
+native_color: rabbitmq:3 allocation score on messaging-0: -INFINITY
+native_color: rabbitmq:3 allocation score on messaging-1: -INFINITY
+native_color: rabbitmq:3 allocation score on messaging-2: -INFINITY
+native_color: rabbitmq:4 allocation score on controller-0: -INFINITY
+native_color: rabbitmq:4 allocation score on controller-1: -INFINITY
+native_color: rabbitmq:4 allocation score on controller-2: -INFINITY
+native_color: rabbitmq:4 allocation score on galera-0: -INFINITY
+native_color: rabbitmq:4 allocation score on galera-1: -INFINITY
+native_color: rabbitmq:4 allocation score on galera-2: -INFINITY
+native_color: rabbitmq:4 allocation score on messaging-0: -INFINITY
+native_color: rabbitmq:4 allocation score on messaging-1: -INFINITY
+native_color: rabbitmq:4 allocation score on messaging-2: -INFINITY
+native_color: rabbitmq:5 allocation score on controller-0: -INFINITY
+native_color: rabbitmq:5 allocation score on controller-1: -INFINITY
+native_color: rabbitmq:5 allocation score on controller-2: -INFINITY
+native_color: rabbitmq:5 allocation score on galera-0: -INFINITY
+native_color: rabbitmq:5 allocation score on galera-1: -INFINITY
+native_color: rabbitmq:5 allocation score on galera-2: -INFINITY
+native_color: rabbitmq:5 allocation score on messaging-0: -INFINITY
+native_color: rabbitmq:5 allocation score on messaging-1: -INFINITY
+native_color: rabbitmq:5 allocation score on messaging-2: -INFINITY
+native_color: rabbitmq:6 allocation score on controller-0: -INFINITY
+native_color: rabbitmq:6 allocation score on controller-1: -INFINITY
+native_color: rabbitmq:6 allocation score on controller-2: -INFINITY
+native_color: rabbitmq:6 allocation score on galera-0: -INFINITY
+native_color: rabbitmq:6 allocation score on galera-1: -INFINITY
+native_color: rabbitmq:6 allocation score on galera-2: -INFINITY
+native_color: rabbitmq:6 allocation score on messaging-0: -INFINITY
+native_color: rabbitmq:6 allocation score on messaging-1: -INFINITY
+native_color: rabbitmq:6 allocation score on messaging-2: -INFINITY
+native_color: rabbitmq:7 allocation score on controller-0: -INFINITY
+native_color: rabbitmq:7 allocation score on controller-1: -INFINITY
+native_color: rabbitmq:7 allocation score on controller-2: -INFINITY
+native_color: rabbitmq:7 allocation score on galera-0: -INFINITY
+native_color: rabbitmq:7 allocation score on galera-1: -INFINITY
+native_color: rabbitmq:7 allocation score on galera-2: -INFINITY
+native_color: rabbitmq:7 allocation score on messaging-0: -INFINITY
+native_color: rabbitmq:7 allocation score on messaging-1: -INFINITY
+native_color: rabbitmq:7 allocation score on messaging-2: -INFINITY
+native_color: rabbitmq:8 allocation score on controller-0: -INFINITY
+native_color: rabbitmq:8 allocation score on controller-1: -INFINITY
+native_color: rabbitmq:8 allocation score on controller-2: -INFINITY
+native_color: rabbitmq:8 allocation score on galera-0: -INFINITY
+native_color: rabbitmq:8 allocation score on galera-1: -INFINITY
+native_color: rabbitmq:8 allocation score on galera-2: -INFINITY
+native_color: rabbitmq:8 allocation score on messaging-0: -INFINITY
+native_color: rabbitmq:8 allocation score on messaging-1: -INFINITY
+native_color: rabbitmq:8 allocation score on messaging-2: -INFINITY
+native_color: redis:0 allocation score on controller-0: -INFINITY
+native_color: redis:0 allocation score on controller-1: -INFINITY
+native_color: redis:0 allocation score on controller-2: -INFINITY
+native_color: redis:0 allocation score on galera-0: -INFINITY
+native_color: redis:0 allocation score on galera-1: -INFINITY
+native_color: redis:0 allocation score on galera-2: -INFINITY
+native_color: redis:0 allocation score on messaging-0: -INFINITY
+native_color: redis:0 allocation score on messaging-1: -INFINITY
+native_color: redis:0 allocation score on messaging-2: -INFINITY
+native_color: redis:1 allocation score on controller-0: INFINITY
+native_color: redis:1 allocation score on controller-1: -INFINITY
+native_color: redis:1 allocation score on controller-2: 0
+native_color: redis:1 allocation score on galera-0: -INFINITY
+native_color: redis:1 allocation score on galera-1: -INFINITY
+native_color: redis:1 allocation score on galera-2: -INFINITY
+native_color: redis:1 allocation score on messaging-0: -INFINITY
+native_color: redis:1 allocation score on messaging-1: -INFINITY
+native_color: redis:1 allocation score on messaging-2: -INFINITY
+native_color: redis:2 allocation score on controller-0: -INFINITY
+native_color: redis:2 allocation score on controller-1: -INFINITY
+native_color: redis:2 allocation score on controller-2: INFINITY
+native_color: redis:2 allocation score on galera-0: -INFINITY
+native_color: redis:2 allocation score on galera-1: -INFINITY
+native_color: redis:2 allocation score on galera-2: -INFINITY
+native_color: redis:2 allocation score on messaging-0: -INFINITY
+native_color: redis:2 allocation score on messaging-1: -INFINITY
+native_color: redis:2 allocation score on messaging-2: -INFINITY
+native_color: redis:3 allocation score on controller-0: -INFINITY
+native_color: redis:3 allocation score on controller-1: -INFINITY
+native_color: redis:3 allocation score on controller-2: -INFINITY
+native_color: redis:3 allocation score on galera-0: -INFINITY
+native_color: redis:3 allocation score on galera-1: -INFINITY
+native_color: redis:3 allocation score on galera-2: -INFINITY
+native_color: redis:3 allocation score on messaging-0: -INFINITY
+native_color: redis:3 allocation score on messaging-1: -INFINITY
+native_color: redis:3 allocation score on messaging-2: -INFINITY
+native_color: redis:4 allocation score on controller-0: -INFINITY
+native_color: redis:4 allocation score on controller-1: -INFINITY
+native_color: redis:4 allocation score on controller-2: -INFINITY
+native_color: redis:4 allocation score on galera-0: -INFINITY
+native_color: redis:4 allocation score on galera-1: -INFINITY
+native_color: redis:4 allocation score on galera-2: -INFINITY
+native_color: redis:4 allocation score on messaging-0: -INFINITY
+native_color: redis:4 allocation score on messaging-1: -INFINITY
+native_color: redis:4 allocation score on messaging-2: -INFINITY
+native_color: redis:5 allocation score on controller-0: -INFINITY
+native_color: redis:5 allocation score on controller-1: -INFINITY
+native_color: redis:5 allocation score on controller-2: -INFINITY
+native_color: redis:5 allocation score on galera-0: -INFINITY
+native_color: redis:5 allocation score on galera-1: -INFINITY
+native_color: redis:5 allocation score on galera-2: -INFINITY
+native_color: redis:5 allocation score on messaging-0: -INFINITY
+native_color: redis:5 allocation score on messaging-1: -INFINITY
+native_color: redis:5 allocation score on messaging-2: -INFINITY
+native_color: redis:6 allocation score on controller-0: -INFINITY
+native_color: redis:6 allocation score on controller-1: -INFINITY
+native_color: redis:6 allocation score on controller-2: -INFINITY
+native_color: redis:6 allocation score on galera-0: -INFINITY
+native_color: redis:6 allocation score on galera-1: -INFINITY
+native_color: redis:6 allocation score on galera-2: -INFINITY
+native_color: redis:6 allocation score on messaging-0: -INFINITY
+native_color: redis:6 allocation score on messaging-1: -INFINITY
+native_color: redis:6 allocation score on messaging-2: -INFINITY
+native_color: redis:7 allocation score on controller-0: -INFINITY
+native_color: redis:7 allocation score on controller-1: -INFINITY
+native_color: redis:7 allocation score on controller-2: -INFINITY
+native_color: redis:7 allocation score on galera-0: -INFINITY
+native_color: redis:7 allocation score on galera-1: -INFINITY
+native_color: redis:7 allocation score on galera-2: -INFINITY
+native_color: redis:7 allocation score on messaging-0: -INFINITY
+native_color: redis:7 allocation score on messaging-1: -INFINITY
+native_color: redis:7 allocation score on messaging-2: -INFINITY
+native_color: redis:8 allocation score on controller-0: -INFINITY
+native_color: redis:8 allocation score on controller-1: -INFINITY
+native_color: redis:8 allocation score on controller-2: -INFINITY
+native_color: redis:8 allocation score on galera-0: -INFINITY
+native_color: redis:8 allocation score on galera-1: -INFINITY
+native_color: redis:8 allocation score on galera-2: -INFINITY
+native_color: redis:8 allocation score on messaging-0: -INFINITY
+native_color: redis:8 allocation score on messaging-1: -INFINITY
+native_color: redis:8 allocation score on messaging-2: -INFINITY
+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-0: -INFINITY
+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-1: INFINITY
+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-2: 0
+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-0: -INFINITY
+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-1: -INFINITY
+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-2: -INFINITY
+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-0: -INFINITY
+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-1: -INFINITY
+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-2: -INFINITY
+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-0: INFINITY
+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-1: -INFINITY
+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-2: 0
+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-0: -INFINITY
+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-1: -INFINITY
+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-2: -INFINITY
+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-0: -INFINITY
+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-1: -INFINITY
+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-2: -INFINITY
+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-0: INFINITY
+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-1: 0
+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-2: -INFINITY
+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-0: -INFINITY
+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-1: -INFINITY
+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-2: -INFINITY
+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-0: -INFINITY
+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-1: -INFINITY
+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-2: -INFINITY
+redis:0 promotion score on none: 0
+redis:1 promotion score on controller-0: 1
+redis:2 promotion score on controller-2: 1
+redis:3 promotion score on none: 0
+redis:4 promotion score on none: 0
+redis:5 promotion score on none: 0
+redis:6 promotion score on none: 0
+redis:7 promotion score on none: 0
+redis:8 promotion score on none: 0
diff --git a/pengine/test10/remote-recovery.summary b/pengine/test10/remote-recovery.summary
new file mode 100644
index 0000000..251febc
--- /dev/null
+++ b/pengine/test10/remote-recovery.summary
@@ -0,0 +1,164 @@
+Using the original execution date of: 2017-05-03 13:33:24Z
+
+Current cluster status:
+Node controller-1 (2): UNCLEAN (offline)
+Online: [ controller-0 controller-2 ]
+RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ]
+
+ messaging-0	(ocf::pacemaker:remote):	Started controller-0
+ messaging-1	(ocf::pacemaker:remote):	Started controller-1 (UNCLEAN)
+ messaging-2	(ocf::pacemaker:remote):	Started controller-0
+ galera-0	(ocf::pacemaker:remote):	Started controller-1 (UNCLEAN)
+ galera-1	(ocf::pacemaker:remote):	Started controller-0
+ galera-2	(ocf::pacemaker:remote):	Started controller-1 (UNCLEAN)
+ Clone Set: rabbitmq-clone [rabbitmq]
+     Started: [ messaging-0 messaging-1 messaging-2 ]
+     Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 ]
+ Master/Slave Set: galera-master [galera]
+     Masters: [ galera-0 galera-1 galera-2 ]
+     Stopped: [ controller-0 controller-1 controller-2 messaging-0 messaging-1 messaging-2 ]
+ Master/Slave Set: redis-master [redis]
+     redis	(ocf::heartbeat:redis):	Slave controller-1 (UNCLEAN)
+     Masters: [ controller-0 ]
+     Slaves: [ controller-2 ]
+     Stopped: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ]
+ ip-192.168.24.6	(ocf::heartbeat:IPaddr2):	Started controller-0
+ ip-10.0.0.102	(ocf::heartbeat:IPaddr2):	Started controller-0
+ ip-172.17.1.14	(ocf::heartbeat:IPaddr2):	Started controller-1 (UNCLEAN)
+ ip-172.17.1.17	(ocf::heartbeat:IPaddr2):	Started controller-1 (UNCLEAN)
+ ip-172.17.3.15	(ocf::heartbeat:IPaddr2):	Started controller-0
+ ip-172.17.4.11	(ocf::heartbeat:IPaddr2):	Started controller-1 (UNCLEAN)
+ Clone Set: haproxy-clone [haproxy]
+     haproxy	(systemd:haproxy):	Started controller-1 (UNCLEAN)
+     Started: [ controller-0 controller-2 ]
+     Stopped: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ]
+ openstack-cinder-volume	(systemd:openstack-cinder-volume):	Started controller-0
+ stonith-fence_ipmilan-525400bbf613	(stonith:fence_ipmilan):	Started controller-0
+ stonith-fence_ipmilan-525400b4f6bd	(stonith:fence_ipmilan):	Started controller-0
+ stonith-fence_ipmilan-5254005bdbb5	(stonith:fence_ipmilan):	Started controller-1 (UNCLEAN)
+
+Transition Summary:
+ * Move    messaging-1	(Started controller-1 -> controller-2)
+ * Move    galera-0	(Started controller-1 -> controller-2)
+ * Move    galera-2	(Started controller-1 -> controller-2)
+ * Restart rabbitmq:2	(Started messaging-1)
+ * Restart galera:1	(Master galera-2)
+ * Restart galera:2	(Master galera-0)
+ * Stop    redis:0	(controller-1)
+ * Move    ip-172.17.1.14	(Started controller-1 -> controller-2)
+ * Move    ip-172.17.1.17	(Started controller-1 -> controller-2)
+ * Move    ip-172.17.4.11	(Started controller-1 -> controller-2)
+ * Stop    haproxy:0	(controller-1)
+ * Restart stonith-fence_ipmilan-525400bbf613	(Started controller-0)
+ * Restart stonith-fence_ipmilan-525400b4f6bd	(Started controller-0)
+ * Move    stonith-fence_ipmilan-5254005bdbb5	(Started controller-1 -> controller-2)
+
+Executing cluster transition:
+ * Pseudo action:   rabbitmq-clone_stop_0
+ * Pseudo action:   galera-master_demote_0
+ * Pseudo action:   redis-master_pre_notify_stop_0
+ * Resource action: stonith-fence_ipmilan-525400bbf613 stop on controller-0
+ * Resource action: stonith-fence_ipmilan-525400bbf613 start on controller-0
+ * Resource action: stonith-fence_ipmilan-525400bbf613 monitor=60000 on controller-0
+ * Resource action: stonith-fence_ipmilan-525400b4f6bd stop on controller-0
+ * Resource action: stonith-fence_ipmilan-525400b4f6bd start on controller-0
+ * Resource action: stonith-fence_ipmilan-525400b4f6bd monitor=60000 on controller-0
+ * Pseudo action:   stonith-fence_ipmilan-5254005bdbb5_stop_0
+ * Fencing controller-1 (reboot)
+ * Pseudo action:   stonith_complete
+ * Pseudo action:   messaging-1_stop_0
+ * Pseudo action:   galera-0_stop_0
+ * Pseudo action:   galera-2_stop_0
+ * Pseudo action:   redis_post_notify_stop_0
+ * Resource action: redis           notify on controller-0
+ * Resource action: redis           notify on controller-2
+ * Pseudo action:   redis-master_confirmed-pre_notify_stop_0
+ * Pseudo action:   redis-master_stop_0
+ * Pseudo action:   haproxy-clone_stop_0
+ * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2
+ * Resource action: messaging-1     start on controller-2
+ * Resource action: galera-0        start on controller-2
+ * Resource action: galera-2        start on controller-2
+ * Resource action: rabbitmq        stop on messaging-1
+ * Pseudo action:   rabbitmq-clone_stopped_0
+ * Pseudo action:   rabbitmq-clone_start_0
+ * Resource action: galera          demote on galera-0
+ * Pseudo action:   redis_stop_0
+ * Pseudo action:   redis-master_stopped_0
+ * Pseudo action:   haproxy_stop_0
+ * Pseudo action:   haproxy-clone_stopped_0
+ * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2
+ * Resource action: messaging-1     monitor=20000 on controller-2
+ * Resource action: galera-0        monitor=20000 on controller-2
+ * Resource action: galera-2        monitor=20000 on controller-2
+ * Resource action: rabbitmq        start on messaging-1
+ * Resource action: rabbitmq        monitor=10000 on messaging-1
+ * Pseudo action:   rabbitmq-clone_running_0
+ * Resource action: galera          demote on galera-2
+ * Pseudo action:   galera-master_demoted_0
+ * Pseudo action:   galera-master_stop_0
+ * Pseudo action:   redis-master_post_notify_stopped_0
+ * Pseudo action:   ip-172.17.1.14_stop_0
+ * Pseudo action:   ip-172.17.1.17_stop_0
+ * Pseudo action:   ip-172.17.4.11_stop_0
+ * Resource action: galera          stop on galera-0
+ * Resource action: redis           notify on controller-0
+ * Resource action: redis           notify on controller-2
+ * Pseudo action:   redis-master_confirmed-post_notify_stopped_0
+ * Resource action: ip-172.17.1.14  start on controller-2
+ * Resource action: ip-172.17.1.17  start on controller-2
+ * Resource action: ip-172.17.4.11  start on controller-2
+ * Resource action: galera          stop on galera-2
+ * Pseudo action:   galera-master_stopped_0
+ * Pseudo action:   galera-master_start_0
+ * Pseudo action:   redis_notified_0
+ * Resource action: ip-172.17.1.14  monitor=10000 on controller-2
+ * Resource action: ip-172.17.1.17  monitor=10000 on controller-2
+ * Resource action: ip-172.17.4.11  monitor=10000 on controller-2
+ * Pseudo action:   all_stopped
+ * Resource action: galera          start on galera-2
+ * Resource action: galera          start on galera-0
+ * Pseudo action:   galera-master_running_0
+ * Pseudo action:   galera-master_promote_0
+ * Resource action: galera          promote on galera-2
+ * Resource action: galera          monitor=10000 on galera-2
+ * Resource action: galera          promote on galera-0
+ * Resource action: galera          monitor=10000 on galera-0
+ * Pseudo action:   galera-master_promoted_0
+Using the original execution date of: 2017-05-03 13:33:24Z
+
+Revised cluster status:
+Online: [ controller-0 controller-2 ]
+OFFLINE: [ controller-1 ]
+RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ]
+
+ messaging-0	(ocf::pacemaker:remote):	Started controller-0
+ messaging-1	(ocf::pacemaker:remote):	Started controller-2
+ messaging-2	(ocf::pacemaker:remote):	Started controller-0
+ galera-0	(ocf::pacemaker:remote):	Started controller-2
+ galera-1	(ocf::pacemaker:remote):	Started controller-0
+ galera-2	(ocf::pacemaker:remote):	Started controller-2
+ Clone Set: rabbitmq-clone [rabbitmq]
+     Started: [ messaging-0 messaging-1 messaging-2 ]
+     Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 ]
+ Master/Slave Set: galera-master [galera]
+     Masters: [ galera-0 galera-1 galera-2 ]
+     Stopped: [ controller-0 controller-1 controller-2 messaging-0 messaging-1 messaging-2 ]
+ Master/Slave Set: redis-master [redis]
+     Masters: [ controller-0 ]
+     Slaves: [ controller-2 ]
+     Stopped: [ controller-1 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ]
+ ip-192.168.24.6	(ocf::heartbeat:IPaddr2):	Started controller-0
+ ip-10.0.0.102	(ocf::heartbeat:IPaddr2):	Started controller-0
+ ip-172.17.1.14	(ocf::heartbeat:IPaddr2):	Started controller-2
+ ip-172.17.1.17	(ocf::heartbeat:IPaddr2):	Started controller-2
+ ip-172.17.3.15	(ocf::heartbeat:IPaddr2):	Started controller-0
+ ip-172.17.4.11	(ocf::heartbeat:IPaddr2):	Started controller-2
+ Clone Set: haproxy-clone [haproxy]
+     Started: [ controller-0 controller-2 ]
+     Stopped: [ controller-1 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ]
+ openstack-cinder-volume	(systemd:openstack-cinder-volume):	Started controller-0
+ stonith-fence_ipmilan-525400bbf613	(stonith:fence_ipmilan):	Started controller-0
+ stonith-fence_ipmilan-525400b4f6bd	(stonith:fence_ipmilan):	Started controller-0
+ stonith-fence_ipmilan-5254005bdbb5	(stonith:fence_ipmilan):	Started controller-2
+
diff --git a/pengine/test10/remote-recovery.xml b/pengine/test10/remote-recovery.xml
new file mode 100644
index 0000000..f921dfe
--- /dev/null
+++ b/pengine/test10/remote-recovery.xml
@@ -0,0 +1,739 @@
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.5" epoch="177" num_updates="291" admin_epoch="0" cib-last-written="Wed May  3 13:24:28 2017" update-origin="controller-0" update-client="crm_attribute" update-user="root" have-quorum="1" dc-uuid="1" execution-date="1493818404">
+  <configuration>
+    <crm_config>
+      <cluster_property_set id="cib-bootstrap-options">
+        <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
+        <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.15-11.el7_3.4-e174ec8"/>
+        <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
+        <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="tripleo_cluster"/>
+        <nvpair id="cib-bootstrap-options-stonith-enabled" name="stonith-enabled" value="true"/>
+        <nvpair id="cib-bootstrap-options-cluster-recheck-interval" name="cluster-recheck-interval" value="60s"/>
+        <nvpair id="cib-bootstrap-options-maintenance-mode" name="maintenance-mode" value="false"/>
+        <nvpair id="cib-bootstrap-options-last-lrm-refresh" name="last-lrm-refresh" value="1493817755"/>
+      </cluster_property_set>
+      <cluster_property_set id="redis_replication">
+        <nvpair id="redis_replication-redis_REPL_INFO" name="redis_REPL_INFO" value="controller-0"/>
+      </cluster_property_set>
+    </crm_config>
+    <nodes>
+      <node id="1" uname="controller-0">
+        <instance_attributes id="nodes-1">
+          <nvpair id="nodes-1-cinder-volume-role" name="cinder-volume-role" value="true"/>
+          <nvpair id="nodes-1-haproxy-role" name="haproxy-role" value="true"/>
+          <nvpair id="nodes-1-redis-role" name="redis-role" value="true"/>
+        </instance_attributes>
+      </node>
+      <node id="2" uname="controller-1">
+        <instance_attributes id="nodes-2">
+          <nvpair id="nodes-2-cinder-volume-role" name="cinder-volume-role" value="true"/>
+          <nvpair id="nodes-2-haproxy-role" name="haproxy-role" value="true"/>
+          <nvpair id="nodes-2-redis-role" name="redis-role" value="true"/>
+        </instance_attributes>
+      </node>
+      <node id="3" uname="controller-2">
+        <instance_attributes id="nodes-3">
+          <nvpair id="nodes-3-cinder-volume-role" name="cinder-volume-role" value="true"/>
+          <nvpair id="nodes-3-haproxy-role" name="haproxy-role" value="true"/>
+          <nvpair id="nodes-3-redis-role" name="redis-role" value="true"/>
+        </instance_attributes>
+      </node>
+      <node id="messaging-1" type="remote" uname="messaging-1">
+        <instance_attributes id="nodes-messaging-1">
+          <nvpair id="nodes-messaging-1-rabbitmq-role" name="rabbitmq-role" value="true"/>
+          <nvpair id="nodes-messaging-1-rmq-node-attr-last-known-rabbitmq" name="rmq-node-attr-last-known-rabbitmq" value="rabbit@messaging-1"/>
+        </instance_attributes>
+      </node>
+      <node id="galera-1" type="remote" uname="galera-1">
+        <instance_attributes id="nodes-galera-1">
+          <nvpair id="nodes-galera-1-galera-role" name="galera-role" value="true"/>
+        </instance_attributes>
+      </node>
+      <node id="messaging-0" type="remote" uname="messaging-0">
+        <instance_attributes id="nodes-messaging-0">
+          <nvpair id="nodes-messaging-0-rabbitmq-role" name="rabbitmq-role" value="true"/>
+          <nvpair id="nodes-messaging-0-rmq-node-attr-last-known-rabbitmq" name="rmq-node-attr-last-known-rabbitmq" value="rabbit@messaging-0"/>
+        </instance_attributes>
+      </node>
+      <node id="galera-2" type="remote" uname="galera-2">
+        <instance_attributes id="nodes-galera-2">
+          <nvpair id="nodes-galera-2-galera-role" name="galera-role" value="true"/>
+        </instance_attributes>
+      </node>
+      <node id="messaging-2" type="remote" uname="messaging-2">
+        <instance_attributes id="nodes-messaging-2">
+          <nvpair id="nodes-messaging-2-rabbitmq-role" name="rabbitmq-role" value="true"/>
+          <nvpair id="nodes-messaging-2-rmq-node-attr-last-known-rabbitmq" name="rmq-node-attr-last-known-rabbitmq" value="rabbit@messaging-2"/>
+        </instance_attributes>
+      </node>
+      <node id="galera-0" type="remote" uname="galera-0">
+        <instance_attributes id="nodes-galera-0">
+          <nvpair id="nodes-galera-0-galera-role" name="galera-role" value="true"/>
+        </instance_attributes>
+      </node>
+    </nodes>
+    <resources>
+      <primitive class="ocf" id="messaging-0" provider="pacemaker" type="remote">
+        <instance_attributes id="messaging-0-instance_attributes">
+          <nvpair id="messaging-0-instance_attributes-reconnect_interval" name="reconnect_interval" value="60"/>
+        </instance_attributes>
+        <operations>
+          <op id="messaging-0-start-interval-0s" interval="0s" name="start" timeout="60"/>
+          <op id="messaging-0-stop-interval-0s" interval="0s" name="stop" timeout="60"/>
+          <op id="messaging-0-monitor-interval-20" interval="20" name="monitor"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="messaging-1" provider="pacemaker" type="remote">
+        <instance_attributes id="messaging-1-instance_attributes">
+          <nvpair id="messaging-1-instance_attributes-reconnect_interval" name="reconnect_interval" value="60"/>
+        </instance_attributes>
+        <operations>
+          <op id="messaging-1-start-interval-0s" interval="0s" name="start" timeout="60"/>
+          <op id="messaging-1-stop-interval-0s" interval="0s" name="stop" timeout="60"/>
+          <op id="messaging-1-monitor-interval-20" interval="20" name="monitor"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="messaging-2" provider="pacemaker" type="remote">
+        <instance_attributes id="messaging-2-instance_attributes">
+          <nvpair id="messaging-2-instance_attributes-reconnect_interval" name="reconnect_interval" value="60"/>
+        </instance_attributes>
+        <operations>
+          <op id="messaging-2-start-interval-0s" interval="0s" name="start" timeout="60"/>
+          <op id="messaging-2-stop-interval-0s" interval="0s" name="stop" timeout="60"/>
+          <op id="messaging-2-monitor-interval-20" interval="20" name="monitor"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="galera-0" provider="pacemaker" type="remote">
+        <instance_attributes id="galera-0-instance_attributes">
+          <nvpair id="galera-0-instance_attributes-reconnect_interval" name="reconnect_interval" value="60"/>
+        </instance_attributes>
+        <operations>
+          <op id="galera-0-start-interval-0s" interval="0s" name="start" timeout="60"/>
+          <op id="galera-0-stop-interval-0s" interval="0s" name="stop" timeout="60"/>
+          <op id="galera-0-monitor-interval-20" interval="20" name="monitor"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="galera-1" provider="pacemaker" type="remote">
+        <instance_attributes id="galera-1-instance_attributes">
+          <nvpair id="galera-1-instance_attributes-reconnect_interval" name="reconnect_interval" value="60"/>
+        </instance_attributes>
+        <operations>
+          <op id="galera-1-start-interval-0s" interval="0s" name="start" timeout="60"/>
+          <op id="galera-1-stop-interval-0s" interval="0s" name="stop" timeout="60"/>
+          <op id="galera-1-monitor-interval-20" interval="20" name="monitor"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="galera-2" provider="pacemaker" type="remote">
+        <instance_attributes id="galera-2-instance_attributes">
+          <nvpair id="galera-2-instance_attributes-reconnect_interval" name="reconnect_interval" value="60"/>
+        </instance_attributes>
+        <operations>
+          <op id="galera-2-start-interval-0s" interval="0s" name="start" timeout="60"/>
+          <op id="galera-2-stop-interval-0s" interval="0s" name="stop" timeout="60"/>
+          <op id="galera-2-monitor-interval-20" interval="20" name="monitor"/>
+        </operations>
+      </primitive>
+      <clone id="rabbitmq-clone">
+        <primitive class="ocf" id="rabbitmq" provider="heartbeat" type="rabbitmq-cluster">
+          <instance_attributes id="rabbitmq-instance_attributes">
+            <nvpair id="rabbitmq-instance_attributes-set_policy" name="set_policy" value="ha-all ^(?!amq\.).* {&quot;ha-mode&quot;:&quot;exactly&quot;,&quot;ha-params&quot;:2}"/>
+          </instance_attributes>
+          <meta_attributes id="rabbitmq-meta_attributes">
+            <nvpair id="rabbitmq-meta_attributes-notify" name="notify" value="true"/>
+          </meta_attributes>
+          <operations>
+            <op id="rabbitmq-monitor-interval-10" interval="10" name="monitor" timeout="40"/>
+            <op id="rabbitmq-start-interval-0s" interval="0s" name="start" timeout="200s"/>
+            <op id="rabbitmq-stop-interval-0s" interval="0s" name="stop" timeout="200s"/>
+          </operations>
+        </primitive>
+        <meta_attributes id="rabbitmq-clone-meta_attributes">
+          <nvpair id="rabbitmq-clone-meta_attributes-interleave" name="interleave" value="true"/>
+          <nvpair id="rabbitmq-clone-meta_attributes-ordered" name="ordered" value="true"/>
+        </meta_attributes>
+      </clone>
+      <master id="galera-master">
+        <primitive class="ocf" id="galera" provider="heartbeat" type="galera">
+          <instance_attributes id="galera-instance_attributes">
+            <nvpair id="galera-instance_attributes-additional_parameters" name="additional_parameters" value="--open-files-limit=16384"/>
+            <nvpair id="galera-instance_attributes-enable_creation" name="enable_creation" value="true"/>
+            <nvpair id="galera-instance_attributes-wsrep_cluster_address" name="wsrep_cluster_address" value="gcomm://galera-0,galera-1,galera-2"/>
+          </instance_attributes>
+          <operations>
+            <op id="galera-start-interval-0s" interval="0s" name="start" timeout="120"/>
+            <op id="galera-stop-interval-0s" interval="0s" name="stop" timeout="120"/>
+            <op id="galera-monitor-interval-20" interval="20" name="monitor" timeout="30"/>
+            <op id="galera-monitor-interval-10" interval="10" name="monitor" role="Master" timeout="30"/>
+            <op id="galera-monitor-interval-30" interval="30" name="monitor" role="Slave" timeout="30"/>
+            <op id="galera-demote-interval-0s" interval="0s" name="demote" timeout="120"/>
+            <op id="galera-promote-interval-0s" interval="0s" name="promote" on-fail="block" timeout="300s"/>
+          </operations>
+        </primitive>
+        <meta_attributes id="galera-master-meta_attributes">
+          <nvpair id="galera-master-meta_attributes-ordered" name="ordered" value="true"/>
+          <nvpair id="galera-master-meta_attributes-master-max" name="master-max" value="3"/>
+        </meta_attributes>
+      </master>
+      <master id="redis-master">
+        <primitive class="ocf" id="redis" provider="heartbeat" type="redis">
+          <instance_attributes id="redis-instance_attributes">
+            <nvpair id="redis-instance_attributes-wait_last_known_master" name="wait_last_known_master" value="true"/>
+          </instance_attributes>
+          <operations>
+            <op id="redis-monitor-interval-45" interval="45" name="monitor" timeout="60"/>
+            <op id="redis-monitor-interval-20" interval="20" name="monitor" role="Master" timeout="60"/>
+            <op id="redis-monitor-interval-60" interval="60" name="monitor" role="Slave" timeout="60"/>
+            <op id="redis-promote-interval-0s" interval="0s" name="promote" timeout="120"/>
+            <op id="redis-demote-interval-0s" interval="0s" name="demote" timeout="120"/>
+            <op id="redis-start-interval-0s" interval="0s" name="start" timeout="200s"/>
+            <op id="redis-stop-interval-0s" interval="0s" name="stop" timeout="200s"/>
+          </operations>
+        </primitive>
+        <meta_attributes id="redis-master-meta_attributes">
+          <nvpair id="redis-master-meta_attributes-interleave" name="interleave" value="true"/>
+          <nvpair id="redis-master-meta_attributes-ordered" name="ordered" value="true"/>
+          <nvpair id="redis-master-meta_attributes-notify" name="notify" value="true"/>
+        </meta_attributes>
+      </master>
+      <primitive class="ocf" id="ip-192.168.24.6" provider="heartbeat" type="IPaddr2">
+        <instance_attributes id="ip-192.168.24.6-instance_attributes">
+          <nvpair id="ip-192.168.24.6-instance_attributes-ip" name="ip" value="192.168.24.6"/>
+          <nvpair id="ip-192.168.24.6-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+        </instance_attributes>
+        <meta_attributes id="ip-192.168.24.6-meta_attributes"/>
+        <operations>
+          <op id="ip-192.168.24.6-start-interval-0s" interval="0s" name="start" timeout="20s"/>
+          <op id="ip-192.168.24.6-stop-interval-0s" interval="0s" name="stop" timeout="20s"/>
+          <op id="ip-192.168.24.6-monitor-interval-10s" interval="10s" name="monitor" timeout="20s"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="ip-10.0.0.102" provider="heartbeat" type="IPaddr2">
+        <instance_attributes id="ip-10.0.0.102-instance_attributes">
+          <nvpair id="ip-10.0.0.102-instance_attributes-ip" name="ip" value="10.0.0.102"/>
+          <nvpair id="ip-10.0.0.102-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+        </instance_attributes>
+        <meta_attributes id="ip-10.0.0.102-meta_attributes"/>
+        <operations>
+          <op id="ip-10.0.0.102-start-interval-0s" interval="0s" name="start" timeout="20s"/>
+          <op id="ip-10.0.0.102-stop-interval-0s" interval="0s" name="stop" timeout="20s"/>
+          <op id="ip-10.0.0.102-monitor-interval-10s" interval="10s" name="monitor" timeout="20s"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="ip-172.17.1.14" provider="heartbeat" type="IPaddr2">
+        <instance_attributes id="ip-172.17.1.14-instance_attributes">
+          <nvpair id="ip-172.17.1.14-instance_attributes-ip" name="ip" value="172.17.1.14"/>
+          <nvpair id="ip-172.17.1.14-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+        </instance_attributes>
+        <meta_attributes id="ip-172.17.1.14-meta_attributes"/>
+        <operations>
+          <op id="ip-172.17.1.14-start-interval-0s" interval="0s" name="start" timeout="20s"/>
+          <op id="ip-172.17.1.14-stop-interval-0s" interval="0s" name="stop" timeout="20s"/>
+          <op id="ip-172.17.1.14-monitor-interval-10s" interval="10s" name="monitor" timeout="20s"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="ip-172.17.1.17" provider="heartbeat" type="IPaddr2">
+        <instance_attributes id="ip-172.17.1.17-instance_attributes">
+          <nvpair id="ip-172.17.1.17-instance_attributes-ip" name="ip" value="172.17.1.17"/>
+          <nvpair id="ip-172.17.1.17-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+        </instance_attributes>
+        <meta_attributes id="ip-172.17.1.17-meta_attributes"/>
+        <operations>
+          <op id="ip-172.17.1.17-start-interval-0s" interval="0s" name="start" timeout="20s"/>
+          <op id="ip-172.17.1.17-stop-interval-0s" interval="0s" name="stop" timeout="20s"/>
+          <op id="ip-172.17.1.17-monitor-interval-10s" interval="10s" name="monitor" timeout="20s"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="ip-172.17.3.15" provider="heartbeat" type="IPaddr2">
+        <instance_attributes id="ip-172.17.3.15-instance_attributes">
+          <nvpair id="ip-172.17.3.15-instance_attributes-ip" name="ip" value="172.17.3.15"/>
+          <nvpair id="ip-172.17.3.15-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+        </instance_attributes>
+        <meta_attributes id="ip-172.17.3.15-meta_attributes"/>
+        <operations>
+          <op id="ip-172.17.3.15-start-interval-0s" interval="0s" name="start" timeout="20s"/>
+          <op id="ip-172.17.3.15-stop-interval-0s" interval="0s" name="stop" timeout="20s"/>
+          <op id="ip-172.17.3.15-monitor-interval-10s" interval="10s" name="monitor" timeout="20s"/>
+        </operations>
+      </primitive>
+      <primitive class="ocf" id="ip-172.17.4.11" provider="heartbeat" type="IPaddr2">
+        <instance_attributes id="ip-172.17.4.11-instance_attributes">
+          <nvpair id="ip-172.17.4.11-instance_attributes-ip" name="ip" value="172.17.4.11"/>
+          <nvpair id="ip-172.17.4.11-instance_attributes-cidr_netmask" name="cidr_netmask" value="32"/>
+        </instance_attributes>
+        <meta_attributes id="ip-172.17.4.11-meta_attributes"/>
+        <operations>
+          <op id="ip-172.17.4.11-start-interval-0s" interval="0s" name="start" timeout="20s"/>
+          <op id="ip-172.17.4.11-stop-interval-0s" interval="0s" name="stop" timeout="20s"/>
+          <op id="ip-172.17.4.11-monitor-interval-10s" interval="10s" name="monitor" timeout="20s"/>
+        </operations>
+      </primitive>
+      <clone id="haproxy-clone">
+        <primitive class="systemd" id="haproxy" type="haproxy">
+          <instance_attributes id="haproxy-instance_attributes"/>
+          <meta_attributes id="haproxy-meta_attributes"/>
+          <operations>
+            <op id="haproxy-start-interval-0s" interval="0s" name="start" timeout="200s"/>
+            <op id="haproxy-stop-interval-0s" interval="0s" name="stop" timeout="200s"/>
+            <op id="haproxy-monitor-interval-60s" interval="60s" name="monitor"/>
+          </operations>
+        </primitive>
+        <meta_attributes id="haproxy-clone-meta_attributes"/>
+      </clone>
+      <primitive class="systemd" id="openstack-cinder-volume" type="openstack-cinder-volume">
+        <instance_attributes id="openstack-cinder-volume-instance_attributes"/>
+        <meta_attributes id="openstack-cinder-volume-meta_attributes"/>
+        <operations>
+          <op id="openstack-cinder-volume-start-interval-0s" interval="0s" name="start" timeout="200s"/>
+          <op id="openstack-cinder-volume-stop-interval-0s" interval="0s" name="stop" timeout="200s"/>
+          <op id="openstack-cinder-volume-monitor-interval-60s" interval="60s" name="monitor"/>
+        </operations>
+      </primitive>
+      <primitive class="stonith" id="stonith-fence_ipmilan-525400bbf613" type="fence_ipmilan">
+        <instance_attributes id="stonith-fence_ipmilan-525400bbf613-instance_attributes">
+          <nvpair id="stonith-fence_ipmilan-525400bbf613-instance_attributes-pcmk_host_list" name="pcmk_host_list" value="controller-2"/>
+          <nvpair id="stonith-fence_ipmilan-525400bbf613-instance_attributes-ipaddr" name="ipaddr" value="172.16.0.1"/>
+          <nvpair id="stonith-fence_ipmilan-525400bbf613-instance_attributes-ipport" name="ipport" value="6237"/>
+          <nvpair id="stonith-fence_ipmilan-525400bbf613-instance_attributes-passwd" name="passwd" value="****"/>
+          <nvpair id="stonith-fence_ipmilan-525400bbf613-instance_attributes-lanplus" name="lanplus" value="true"/>
+          <nvpair id="stonith-fence_ipmilan-525400bbf613-instance_attributes-login" name="login" value="admin"/>
+          <nvpair id="stonith-fence_ipmilan-525400bbf613-instance_attributes-action" name="action" value="reboot"/>
+          <nvpair id="stonith-fence_ipmilan-525400bbf613-instance_attributes-privlvl" name="privlvl" value="administrator"/>
+        </instance_attributes>
+        <operations>
+          <op id="stonith-fence_ipmilan-525400bbf613-monitor-interval-60s" interval="60s" name="monitor"/>
+        </operations>
+        <meta_attributes id="stonith-fence_ipmilan-525400bbf613-meta_attributes"/>
+      </primitive>
+      <primitive class="stonith" id="stonith-fence_ipmilan-525400b4f6bd" type="fence_ipmilan">
+        <instance_attributes id="stonith-fence_ipmilan-525400b4f6bd-instance_attributes">
+          <nvpair id="stonith-fence_ipmilan-525400b4f6bd-instance_attributes-pcmk_host_list" name="pcmk_host_list" value="controller-1"/>
+          <nvpair id="stonith-fence_ipmilan-525400b4f6bd-instance_attributes-ipaddr" name="ipaddr" value="172.16.0.1"/>
+          <nvpair id="stonith-fence_ipmilan-525400b4f6bd-instance_attributes-ipport" name="ipport" value="6236"/>
+          <nvpair id="stonith-fence_ipmilan-525400b4f6bd-instance_attributes-passwd" name="passwd" value="****"/>
+          <nvpair id="stonith-fence_ipmilan-525400b4f6bd-instance_attributes-lanplus" name="lanplus" value="true"/>
+          <nvpair id="stonith-fence_ipmilan-525400b4f6bd-instance_attributes-login" name="login" value="admin"/>
+          <nvpair id="stonith-fence_ipmilan-525400b4f6bd-instance_attributes-action" name="action" value="reboot"/>
+          <nvpair id="stonith-fence_ipmilan-525400b4f6bd-instance_attributes-privlvl" name="privlvl" value="administrator"/>
+        </instance_attributes>
+        <operations>
+          <op id="stonith-fence_ipmilan-525400b4f6bd-monitor-interval-60s" interval="60s" name="monitor"/>
+        </operations>
+        <meta_attributes id="stonith-fence_ipmilan-525400b4f6bd-meta_attributes"/>
+      </primitive>
+      <primitive class="stonith" id="stonith-fence_ipmilan-5254005bdbb5" type="fence_ipmilan">
+        <instance_attributes id="stonith-fence_ipmilan-5254005bdbb5-instance_attributes">
+          <nvpair id="stonith-fence_ipmilan-5254005bdbb5-instance_attributes-pcmk_host_list" name="pcmk_host_list" value="controller-0"/>
+          <nvpair id="stonith-fence_ipmilan-5254005bdbb5-instance_attributes-ipaddr" name="ipaddr" value="172.16.0.1"/>
+          <nvpair id="stonith-fence_ipmilan-5254005bdbb5-instance_attributes-ipport" name="ipport" value="6235"/>
+          <nvpair id="stonith-fence_ipmilan-5254005bdbb5-instance_attributes-passwd" name="passwd" value="****"/>
+          <nvpair id="stonith-fence_ipmilan-5254005bdbb5-instance_attributes-lanplus" name="lanplus" value="true"/>
+          <nvpair id="stonith-fence_ipmilan-5254005bdbb5-instance_attributes-login" name="login" value="admin"/>
+          <nvpair id="stonith-fence_ipmilan-5254005bdbb5-instance_attributes-action" name="action" value="reboot"/>
+          <nvpair id="stonith-fence_ipmilan-5254005bdbb5-instance_attributes-privlvl" name="privlvl" value="administrator"/>
+        </instance_attributes>
+        <operations>
+          <op id="stonith-fence_ipmilan-5254005bdbb5-monitor-interval-60s" interval="60s" name="monitor"/>
+        </operations>
+        <meta_attributes id="stonith-fence_ipmilan-5254005bdbb5-meta_attributes"/>
+      </primitive>
+    </resources>
+    <constraints>
+      <rsc_location id="location-rabbitmq-clone" resource-discovery="exclusive" rsc="rabbitmq-clone">
+        <rule id="location-rabbitmq-clone-rule" score="0">
+          <expression attribute="rabbitmq-role" id="location-rabbitmq-clone-rule-expr" operation="eq" value="true"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="location-galera-master" resource-discovery="exclusive" rsc="galera-master">
+        <rule id="location-galera-master-rule" score="0">
+          <expression attribute="galera-role" id="location-galera-master-rule-expr" operation="eq" value="true"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="location-redis-master" resource-discovery="exclusive" rsc="redis-master">
+        <rule id="location-redis-master-rule" score="0">
+          <expression attribute="redis-role" id="location-redis-master-rule-expr" operation="eq" value="true"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="location-ip-192.168.24.6" resource-discovery="exclusive" rsc="ip-192.168.24.6">
+        <rule id="location-ip-192.168.24.6-rule" score="0">
+          <expression attribute="haproxy-role" id="location-ip-192.168.24.6-rule-expr" operation="eq" value="true"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="location-ip-10.0.0.102" resource-discovery="exclusive" rsc="ip-10.0.0.102">
+        <rule id="location-ip-10.0.0.102-rule" score="0">
+          <expression attribute="haproxy-role" id="location-ip-10.0.0.102-rule-expr" operation="eq" value="true"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="location-ip-172.17.1.14" resource-discovery="exclusive" rsc="ip-172.17.1.14">
+        <rule id="location-ip-172.17.1.14-rule" score="0">
+          <expression attribute="haproxy-role" id="location-ip-172.17.1.14-rule-expr" operation="eq" value="true"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="location-ip-172.17.1.17" resource-discovery="exclusive" rsc="ip-172.17.1.17">
+        <rule id="location-ip-172.17.1.17-rule" score="0">
+          <expression attribute="haproxy-role" id="location-ip-172.17.1.17-rule-expr" operation="eq" value="true"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="location-ip-172.17.3.15" resource-discovery="exclusive" rsc="ip-172.17.3.15">
+        <rule id="location-ip-172.17.3.15-rule" score="0">
+          <expression attribute="haproxy-role" id="location-ip-172.17.3.15-rule-expr" operation="eq" value="true"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="location-ip-172.17.4.11" resource-discovery="exclusive" rsc="ip-172.17.4.11">
+        <rule id="location-ip-172.17.4.11-rule" score="0">
+          <expression attribute="haproxy-role" id="location-ip-172.17.4.11-rule-expr" operation="eq" value="true"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="location-haproxy-clone" resource-discovery="exclusive" rsc="haproxy-clone">
+        <rule id="location-haproxy-clone-rule" score="0">
+          <expression attribute="haproxy-role" id="location-haproxy-clone-rule-expr" operation="eq" value="true"/>
+        </rule>
+      </rsc_location>
+      <rsc_order first="ip-192.168.24.6" first-action="start" id="order-ip-192.168.24.6-haproxy-clone-Optional" kind="Optional" then="haproxy-clone" then-action="start"/>
+      <rsc_colocation id="colocation-ip-192.168.24.6-haproxy-clone-INFINITY" rsc="ip-192.168.24.6" score="INFINITY" with-rsc="haproxy-clone"/>
+      <rsc_order first="ip-10.0.0.102" first-action="start" id="order-ip-10.0.0.102-haproxy-clone-Optional" kind="Optional" then="haproxy-clone" then-action="start"/>
+      <rsc_colocation id="colocation-ip-10.0.0.102-haproxy-clone-INFINITY" rsc="ip-10.0.0.102" score="INFINITY" with-rsc="haproxy-clone"/>
+      <rsc_order first="ip-172.17.1.14" first-action="start" id="order-ip-172.17.1.14-haproxy-clone-Optional" kind="Optional" then="haproxy-clone" then-action="start"/>
+      <rsc_colocation id="colocation-ip-172.17.1.14-haproxy-clone-INFINITY" rsc="ip-172.17.1.14" score="INFINITY" with-rsc="haproxy-clone"/>
+      <rsc_order first="ip-172.17.1.17" first-action="start" id="order-ip-172.17.1.17-haproxy-clone-Optional" kind="Optional" then="haproxy-clone" then-action="start"/>
+      <rsc_colocation id="colocation-ip-172.17.1.17-haproxy-clone-INFINITY" rsc="ip-172.17.1.17" score="INFINITY" with-rsc="haproxy-clone"/>
+      <rsc_order first="ip-172.17.3.15" first-action="start" id="order-ip-172.17.3.15-haproxy-clone-Optional" kind="Optional" then="haproxy-clone" then-action="start"/>
+      <rsc_colocation id="colocation-ip-172.17.3.15-haproxy-clone-INFINITY" rsc="ip-172.17.3.15" score="INFINITY" with-rsc="haproxy-clone"/>
+      <rsc_order first="ip-172.17.4.11" first-action="start" id="order-ip-172.17.4.11-haproxy-clone-Optional" kind="Optional" then="haproxy-clone" then-action="start"/>
+      <rsc_colocation id="colocation-ip-172.17.4.11-haproxy-clone-INFINITY" rsc="ip-172.17.4.11" score="INFINITY" with-rsc="haproxy-clone"/>
+      <rsc_location id="location-openstack-cinder-volume" resource-discovery="exclusive" rsc="openstack-cinder-volume">
+        <rule id="location-openstack-cinder-volume-rule" score="0">
+          <expression attribute="cinder-volume-role" id="location-openstack-cinder-volume-rule-expr" operation="eq" value="true"/>
+        </rule>
+      </rsc_location>
+      <rsc_location id="location-stonith-fence_ipmilan-525400bbf613-controller-2--INFINITY" node="controller-2" rsc="stonith-fence_ipmilan-525400bbf613" score="-INFINITY"/>
+      <rsc_location id="location-stonith-fence_ipmilan-525400b4f6bd-controller-1--INFINITY" node="controller-1" rsc="stonith-fence_ipmilan-525400b4f6bd" score="-INFINITY"/>
+      <rsc_location id="location-stonith-fence_ipmilan-5254005bdbb5-controller-0--INFINITY" node="controller-0" rsc="stonith-fence_ipmilan-5254005bdbb5" score="-INFINITY"/>
+    </constraints>
+    <rsc_defaults>
+      <meta_attributes id="rsc_defaults-options">
+        <nvpair id="rsc_defaults-options-resource-stickiness" name="resource-stickiness" value="INFINITY"/>
+      </meta_attributes>
+    </rsc_defaults>
+  </configuration>
+  <status>
+    <node_state id="2" uname="controller-1" in_ccm="false" crmd="offline" crm-debug-origin="post_cache_update" join="member" expected="member">
+      <lrm id="2">
+        <lrm_resources>
+          <lrm_resource id="ip-10.0.0.102" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-10.0.0.102_last_0" operation_key="ip-10.0.0.102_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="37:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:7;37:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="20" rc-code="7" op-status="0" interval="0" last-run="1493817888" last-rc-change="1493817888" exec-time="44" queue-time="0" op-digest="194c484ea9d1eb9955c0cfdaf53ccdae"/>
+          </lrm_resource>
+          <lrm_resource id="haproxy" type="haproxy" class="systemd">
+            <lrm_rsc_op id="haproxy_last_0" operation_key="haproxy_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="138:5:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;138:5:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="46" rc-code="0" op-status="0" interval="0" last-run="1493817889" last-rc-change="1493817889" exec-time="2088" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="haproxy_monitor_60000" operation_key="haproxy_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="119:6:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;119:6:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="63" rc-code="0" op-status="0" interval="60000" last-rc-change="1493817892" exec-time="1" queue-time="1" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
+          </lrm_resource>
+          <lrm_resource id="openstack-cinder-volume" type="openstack-cinder-volume" class="systemd">
+            <lrm_rsc_op id="openstack-cinder-volume_last_0" operation_key="openstack-cinder-volume_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="43:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:7;43:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="45" rc-code="7" op-status="0" interval="0" last-run="1493817889" last-rc-change="1493817889" exec-time="3" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="ip-172.17.4.11" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-172.17.4.11_last_0" operation_key="ip-172.17.4.11_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="118:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;118:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="70" rc-code="0" op-status="0" interval="0" last-run="1493817963" last-rc-change="1493817963" exec-time="58" queue-time="0" op-digest="fe27c3edbb73480aff571d34c88b21a7"/>
+            <lrm_rsc_op id="ip-172.17.4.11_monitor_10000" operation_key="ip-172.17.4.11_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="119:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;119:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="71" rc-code="0" op-status="0" interval="10000" last-rc-change="1493817964" exec-time="38" queue-time="0" op-digest="392445a354e2da75dcd4cbe6eee1268b"/>
+          </lrm_resource>
+          <lrm_resource id="messaging-0" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="messaging-0_last_0" operation_key="messaging-0_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="29:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:7;29:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="1" rc-code="7" op-status="0" interval="0" last-run="1493817888" last-rc-change="1493817888" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="messaging-1" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="messaging-1_last_0" operation_key="messaging-1_migrate_from_0" operation="migrate_from" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="38:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;38:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="7" rc-code="0" op-status="0" interval="0" last-run="1493817961" last-rc-change="1493817961" exec-time="0" queue-time="0" migrate_source="controller-2" migrate_target="controller-1" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="messaging-1_monitor_20000" operation_key="messaging-1_monitor_20000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="36:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;36:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="10" rc-code="0" op-status="0" interval="20000" last-rc-change="1493817963" exec-time="0" queue-time="0" op-digest="6e5bb737f46c381d8a46fb4162afd9e0"/>
+          </lrm_resource>
+          <lrm_resource id="messaging-2" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="messaging-2_last_0" operation_key="messaging-2_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="31:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:7;31:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="3" rc-code="7" op-status="0" interval="0" last-run="1493817888" last-rc-change="1493817888" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="ip-192.168.24.6" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-192.168.24.6_last_0" operation_key="ip-192.168.24.6_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="36:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:7;36:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1493817888" last-rc-change="1493817888" exec-time="49" queue-time="0" op-digest="22692fc1751093fc15ab6c0d90fafe22"/>
+          </lrm_resource>
+          <lrm_resource id="ip-172.17.3.15" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-172.17.3.15_last_0" operation_key="ip-172.17.3.15_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="40:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:7;40:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="32" rc-code="7" op-status="0" interval="0" last-run="1493817888" last-rc-change="1493817888" exec-time="45" queue-time="0" op-digest="27e0700bb641af6a5b0fea09d0ea2482"/>
+          </lrm_resource>
+          <lrm_resource id="ip-172.17.1.14" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-172.17.1.14_last_0" operation_key="ip-172.17.1.14_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="110:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;110:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="69" rc-code="0" op-status="0" interval="0" last-run="1493817963" last-rc-change="1493817963" exec-time="60" queue-time="0" op-digest="1fab2783a8d283e33a945588908e98a4"/>
+            <lrm_rsc_op id="ip-172.17.1.14_monitor_10000" operation_key="ip-172.17.1.14_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="111:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;111:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="72" rc-code="0" op-status="0" interval="10000" last-rc-change="1493817964" exec-time="36" queue-time="0" op-digest="19c32490a75539eb9cf2ca18727e305e"/>
+          </lrm_resource>
+          <lrm_resource id="ip-172.17.1.17" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-172.17.1.17_last_0" operation_key="ip-172.17.1.17_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="113:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;113:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="68" rc-code="0" op-status="0" interval="0" last-run="1493817963" last-rc-change="1493817963" exec-time="62" queue-time="0" op-digest="edc8fdae4cc326c15a779f36f28eb3f8"/>
+            <lrm_rsc_op id="ip-172.17.1.17_monitor_10000" operation_key="ip-172.17.1.17_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="114:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;114:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="73" rc-code="0" op-status="0" interval="10000" last-rc-change="1493817964" exec-time="36" queue-time="0" op-digest="637be44014a8de2a8162cb2b062f6955"/>
+          </lrm_resource>
+          <lrm_resource id="stonith-fence_ipmilan-525400bbf613" type="fence_ipmilan" class="stonith">
+            <lrm_rsc_op id="stonith-fence_ipmilan-525400bbf613_last_0" operation_key="stonith-fence_ipmilan-525400bbf613_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="44:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:7;44:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="50" rc-code="7" op-status="0" interval="0" last-run="1493817889" last-rc-change="1493817889" exec-time="3" queue-time="0" op-digest="a1b3d562a7e722cbf686e1c2750888a3" op-secure-params=" passwd " op-secure-digest="2d0324390caa209c81283f07749d6dae"/>
+          </lrm_resource>
+          <lrm_resource id="stonith-fence_ipmilan-5254005bdbb5" type="fence_ipmilan" class="stonith">
+            <lrm_rsc_op id="stonith-fence_ipmilan-5254005bdbb5_last_0" operation_key="stonith-fence_ipmilan-5254005bdbb5_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="148:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;148:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="65" rc-code="0" op-status="0" interval="0" last-run="1493817961" last-rc-change="1493817961" exec-time="79" queue-time="0" op-digest="25087bde0e53bf4f4e4efb2b0bd9d0de" op-secure-params=" passwd " op-secure-digest="ecf31bd4bca13bb934be683ab04ee8cf"/>
+            <lrm_rsc_op id="stonith-fence_ipmilan-5254005bdbb5_monitor_60000" operation_key="stonith-fence_ipmilan-5254005bdbb5_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="149:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;149:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="66" rc-code="0" op-status="0" interval="60000" last-rc-change="1493817963" exec-time="80" queue-time="0" op-digest="e8a37549d88ca88c76d297b973759a8d" op-secure-params=" passwd " op-secure-digest="ecf31bd4bca13bb934be683ab04ee8cf"/>
+          </lrm_resource>
+          <lrm_resource id="redis" type="redis" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="redis_last_0" operation_key="redis_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="95:5:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;95:5:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="55" rc-code="0" op-status="0" interval="0" last-run="1493817890" last-rc-change="1493817890" exec-time="2553" queue-time="0" op-digest="a5b2a4f5c557278af14d6cbffc5a229d" op-secure-params=" user " op-secure-digest="a5b2a4f5c557278af14d6cbffc5a229d"/>
+            <lrm_rsc_op id="redis_monitor_45000" operation_key="redis_monitor_45000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="73:6:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;73:6:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="62" rc-code="0" op-status="0" interval="45000" last-rc-change="1493817892" exec-time="124" queue-time="135" op-digest="992feffd37882eb5ce9bfc847b2fa75e" op-secure-params=" user " op-secure-digest="a5b2a4f5c557278af14d6cbffc5a229d"/>
+            <lrm_rsc_op id="redis_monitor_60000" operation_key="redis_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="74:6:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;74:6:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="61" rc-code="0" op-status="0" interval="60000" last-rc-change="1493817892" exec-time="135" queue-time="0" op-digest="992feffd37882eb5ce9bfc847b2fa75e" op-secure-params=" user " op-secure-digest="a5b2a4f5c557278af14d6cbffc5a229d"/>
+          </lrm_resource>
+          <lrm_resource id="galera-0" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="galera-0_last_0" operation_key="galera-0_migrate_from_0" operation="migrate_from" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="48:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;48:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="8" rc-code="0" op-status="0" interval="0" last-run="1493817961" last-rc-change="1493817961" exec-time="0" queue-time="0" migrate_source="controller-2" migrate_target="controller-1" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="galera-0_monitor_20000" operation_key="galera-0_monitor_20000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="38:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;38:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="11" rc-code="0" op-status="0" interval="20000" last-rc-change="1493817963" exec-time="0" queue-time="0" op-digest="6e5bb737f46c381d8a46fb4162afd9e0"/>
+          </lrm_resource>
+          <lrm_resource id="galera-1" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="galera-1_last_0" operation_key="galera-1_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="33:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:7;33:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1493817888" last-rc-change="1493817888" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="galera-2" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="galera-2_last_0" operation_key="galera-2_migrate_from_0" operation="migrate_from" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="55:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;55:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="9" rc-code="0" op-status="0" interval="0" last-run="1493817961" last-rc-change="1493817961" exec-time="0" queue-time="0" migrate_source="controller-2" migrate_target="controller-1" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="galera-2_monitor_20000" operation_key="galera-2_monitor_20000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="44:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;44:9:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="12" rc-code="0" op-status="0" interval="20000" last-rc-change="1493817963" exec-time="0" queue-time="0" op-digest="6e5bb737f46c381d8a46fb4162afd9e0"/>
+          </lrm_resource>
+          <lrm_resource id="stonith-fence_ipmilan-525400b4f6bd" type="fence_ipmilan" class="stonith">
+            <lrm_rsc_op id="stonith-fence_ipmilan-525400b4f6bd_last_0" operation_key="stonith-fence_ipmilan-525400b4f6bd_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="45:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:7;45:5:7:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-1" call-id="54" rc-code="7" op-status="0" interval="0" last-run="1493817889" last-rc-change="1493817889" exec-time="0" queue-time="0" op-digest="190a5d7184e8c0736ea8d50b25d1896b" op-secure-params=" passwd " op-secure-digest="e710ff47e4fa69f83f5f46f9de9570b6"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+    </node_state>
+    <node_state id="1" uname="controller-0" crmd="online" crm-debug-origin="post_cache_update" in_ccm="true" join="member" expected="member">
+      <transient_attributes id="1">
+        <instance_attributes id="status-1">
+          <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
+          <nvpair id="status-1-master-redis" name="master-redis" value="1"/>
+        </instance_attributes>
+      </transient_attributes>
+      <lrm id="1">
+        <lrm_resources>
+          <lrm_resource id="ip-10.0.0.102" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-10.0.0.102_last_0" operation_key="ip-10.0.0.102_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="119:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;119:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="143" rc-code="0" op-status="0" interval="0" last-run="1493817834" last-rc-change="1493817834" exec-time="497" queue-time="0" op-digest="194c484ea9d1eb9955c0cfdaf53ccdae"/>
+            <lrm_rsc_op id="ip-10.0.0.102_monitor_10000" operation_key="ip-10.0.0.102_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="120:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;120:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="147" rc-code="0" op-status="0" interval="10000" last-rc-change="1493817835" exec-time="48" queue-time="0" op-digest="83daeb09ea7f361d0c80eb34aaf106f9"/>
+          </lrm_resource>
+          <lrm_resource id="haproxy" type="haproxy" class="systemd">
+            <lrm_rsc_op id="haproxy_last_failure_0" operation_key="haproxy_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="15:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;15:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="114" rc-code="0" op-status="0" interval="0" last-run="1493817764" last-rc-change="1493817764" exec-time="3" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="haproxy_last_0" operation_key="haproxy_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="15:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;15:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="114" rc-code="0" op-status="0" interval="0" last-run="1493817764" last-rc-change="1493817764" exec-time="3" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="haproxy_monitor_60000" operation_key="haproxy_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="113:17:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;113:17:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="133" rc-code="0" op-status="0" interval="60000" last-rc-change="1493817765" exec-time="4" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
+          </lrm_resource>
+          <lrm_resource id="openstack-cinder-volume" type="openstack-cinder-volume" class="systemd">
+            <lrm_rsc_op id="openstack-cinder-volume_last_0" operation_key="openstack-cinder-volume_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="119:23:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;119:23:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="150" rc-code="0" op-status="0" interval="0" last-run="1493817868" last-rc-change="1493817868" exec-time="2105" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="openstack-cinder-volume_monitor_60000" operation_key="openstack-cinder-volume_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="145:1:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;145:1:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-0" call-id="154" rc-code="0" op-status="0" interval="60000" last-rc-change="1493817878" exec-time="3" queue-time="1" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
+          </lrm_resource>
+          <lrm_resource id="ip-172.17.4.11" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-172.17.4.11_last_0" operation_key="ip-172.17.4.11_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="14:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:7;14:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="109" rc-code="7" op-status="0" interval="0" last-run="1493817764" last-rc-change="1493817764" exec-time="66" queue-time="0" op-digest="fe27c3edbb73480aff571d34c88b21a7"/>
+          </lrm_resource>
+          <lrm_resource id="messaging-0" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="messaging-0_last_0" operation_key="messaging-0_migrate_from_0" operation="migrate_from" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="36:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;36:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="13" rc-code="0" op-status="0" interval="0" last-run="1493817832" last-rc-change="1493817832" exec-time="0" queue-time="0" migrate_source="controller-1" migrate_target="controller-0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="messaging-0_monitor_20000" operation_key="messaging-0_monitor_20000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="34:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;34:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="15" rc-code="0" op-status="0" interval="20000" last-rc-change="1493817832" exec-time="0" queue-time="0" op-digest="6e5bb737f46c381d8a46fb4162afd9e0"/>
+          </lrm_resource>
+          <lrm_resource id="messaging-1" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="messaging-1_last_0" operation_key="messaging-1_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="3:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:7;3:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="8" rc-code="7" op-status="0" interval="0" last-run="1493817764" last-rc-change="1493817764" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="messaging-2" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="messaging-2_last_0" operation_key="messaging-2_migrate_from_0" operation="migrate_from" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="43:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;43:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-0" call-id="17" rc-code="0" op-status="0" interval="0" last-run="1493817962" last-rc-change="1493817962" exec-time="0" queue-time="0" migrate_source="controller-2" migrate_target="controller-0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="messaging-2_monitor_20000" operation_key="messaging-2_monitor_20000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="41:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:0;41:8:0:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-0" call-id="18" rc-code="0" op-status="0" interval="20000" last-rc-change="1493817963" exec-time="0" queue-time="0" op-digest="6e5bb737f46c381d8a46fb4162afd9e0"/>
+          </lrm_resource>
+          <lrm_resource id="ip-172.17.1.14" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-172.17.1.14_last_0" operation_key="ip-172.17.1.14_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="11:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:7;11:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="97" rc-code="7" op-status="0" interval="0" last-run="1493817764" last-rc-change="1493817764" exec-time="60" queue-time="0" op-digest="1fab2783a8d283e33a945588908e98a4"/>
+          </lrm_resource>
+          <lrm_resource id="stonith-fence_ipmilan-525400bbf613" type="fence_ipmilan" class="stonith">
+            <lrm_rsc_op id="stonith-fence_ipmilan-525400bbf613_last_0" operation_key="stonith-fence_ipmilan-525400bbf613_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="124:17:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;124:17:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="134" rc-code="0" op-status="0" interval="0" last-run="1493817765" last-rc-change="1493817765" exec-time="83" queue-time="0" op-digest="a1b3d562a7e722cbf686e1c2750888a3" op-secure-params=" passwd " op-secure-digest="2d0324390caa209c81283f07749d6dae"/>
+            <lrm_rsc_op id="stonith-fence_ipmilan-525400bbf613_monitor_60000" operation_key="stonith-fence_ipmilan-525400bbf613_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="129:18:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;129:18:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="136" rc-code="0" op-status="0" interval="60000" last-rc-change="1493817768" exec-time="68" queue-time="0" op-digest="31be355d25ac30183b5d304f3275ec16" op-secure-params=" passwd " op-secure-digest="2d0324390caa209c81283f07749d6dae"/>
+          </lrm_resource>
+          <lrm_resource id="ip-172.17.1.17" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-172.17.1.17_last_0" operation_key="ip-172.17.1.17_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="12:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:7;12:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="101" rc-code="7" op-status="0" interval="0" last-run="1493817764" last-rc-change="1493817764" exec-time="68" queue-time="0" op-digest="edc8fdae4cc326c15a779f36f28eb3f8"/>
+          </lrm_resource>
+          <lrm_resource id="stonith-fence_ipmilan-5254005bdbb5" type="fence_ipmilan" class="stonith">
+            <lrm_rsc_op id="stonith-fence_ipmilan-5254005bdbb5_last_0" operation_key="stonith-fence_ipmilan-5254005bdbb5_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="19:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:7;19:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="130" rc-code="7" op-status="0" interval="0" last-run="1493817764" last-rc-change="1493817764" exec-time="0" queue-time="0" op-digest="25087bde0e53bf4f4e4efb2b0bd9d0de" op-secure-params=" passwd " op-secure-digest="ecf31bd4bca13bb934be683ab04ee8cf"/>
+          </lrm_resource>
+          <lrm_resource id="ip-172.17.3.15" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-172.17.3.15_last_0" operation_key="ip-172.17.3.15_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="126:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;126:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="141" rc-code="0" op-status="0" interval="0" last-run="1493817834" last-rc-change="1493817834" exec-time="66" queue-time="0" op-digest="27e0700bb641af6a5b0fea09d0ea2482"/>
+            <lrm_rsc_op id="ip-172.17.3.15_monitor_10000" operation_key="ip-172.17.3.15_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="127:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;127:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="144" rc-code="0" op-status="0" interval="10000" last-rc-change="1493817834" exec-time="428" queue-time="0" op-digest="9f5ae0b4f77392ad67e6a430d3259ec4"/>
+          </lrm_resource>
+          <lrm_resource id="ip-192.168.24.6" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-192.168.24.6_last_0" operation_key="ip-192.168.24.6_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="116:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;116:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="142" rc-code="0" op-status="0" interval="0" last-run="1493817834" last-rc-change="1493817834" exec-time="498" queue-time="0" op-digest="22692fc1751093fc15ab6c0d90fafe22"/>
+            <lrm_rsc_op id="ip-192.168.24.6_monitor_10000" operation_key="ip-192.168.24.6_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="117:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;117:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="146" rc-code="0" op-status="0" interval="10000" last-rc-change="1493817835" exec-time="38" queue-time="0" op-digest="53892658d5fe65d671f4c791888c8c7c"/>
+          </lrm_resource>
+          <lrm_resource id="redis" type="redis" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="redis_last_failure_0" operation_key="redis_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="8:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;8:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="85" rc-code="0" op-status="0" interval="0" last-run="1493817764" last-rc-change="1493817764" exec-time="171" queue-time="0" op-digest="a5b2a4f5c557278af14d6cbffc5a229d"/>
+            <lrm_rsc_op id="redis_last_0" operation_key="redis_promote_0" operation="promote" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="71:23:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;71:23:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="152" rc-code="0" op-status="0" interval="0" last-run="1493817868" last-rc-change="1493817868" exec-time="255" queue-time="0" op-digest="a5b2a4f5c557278af14d6cbffc5a229d" op-secure-params=" user " op-secure-digest="a5b2a4f5c557278af14d6cbffc5a229d"/>
+            <lrm_rsc_op id="redis_monitor_20000" operation_key="redis_monitor_20000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="74:4:8:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" transition-magic="0:8;74:4:8:5c19b904-a6d8-4a4f-9b6d-9ab13f4f6b57" on_node="controller-0" call-id="159" rc-code="8" op-status="0" interval="20000" last-rc-change="1493817884" exec-time="147" queue-time="0" op-digest="992feffd37882eb5ce9bfc847b2fa75e" op-secure-params=" user " op-secure-digest="a5b2a4f5c557278af14d6cbffc5a229d"/>
+          </lrm_resource>
+          <lrm_resource id="galera-0" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="galera-0_last_0" operation_key="galera-0_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="5:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:7;5:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="10" rc-code="7" op-status="0" interval="0" last-run="1493817764" last-rc-change="1493817764" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="galera-1" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="galera-1_last_0" operation_key="galera-1_migrate_from_0" operation="migrate_from" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="50:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;50:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="14" rc-code="0" op-status="0" interval="0" last-run="1493817832" last-rc-change="1493817832" exec-time="0" queue-time="0" migrate_source="controller-1" migrate_target="controller-0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="galera-1_monitor_20000" operation_key="galera-1_monitor_20000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="48:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;48:22:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="16" rc-code="0" op-status="0" interval="20000" last-rc-change="1493817832" exec-time="0" queue-time="0" op-digest="6e5bb737f46c381d8a46fb4162afd9e0"/>
+          </lrm_resource>
+          <lrm_resource id="galera-2" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="galera-2_last_0" operation_key="galera-2_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="7:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:7;7:16:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="12" rc-code="7" op-status="0" interval="0" last-run="1493817764" last-rc-change="1493817764" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="stonith-fence_ipmilan-525400b4f6bd" type="fence_ipmilan" class="stonith">
+            <lrm_rsc_op id="stonith-fence_ipmilan-525400b4f6bd_last_0" operation_key="stonith-fence_ipmilan-525400b4f6bd_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="126:17:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;126:17:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="135" rc-code="0" op-status="0" interval="0" last-run="1493817765" last-rc-change="1493817765" exec-time="80" queue-time="0" op-digest="190a5d7184e8c0736ea8d50b25d1896b" op-secure-params=" passwd " op-secure-digest="e710ff47e4fa69f83f5f46f9de9570b6"/>
+            <lrm_rsc_op id="stonith-fence_ipmilan-525400b4f6bd_monitor_60000" operation_key="stonith-fence_ipmilan-525400b4f6bd_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="132:18:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;132:18:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-0" call-id="137" rc-code="0" op-status="0" interval="60000" last-rc-change="1493817768" exec-time="69" queue-time="0" op-digest="08b6ad9edc64306555c732c45bcf4995" op-secure-params=" passwd " op-secure-digest="e710ff47e4fa69f83f5f46f9de9570b6"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+    </node_state>
+    <node_state id="galera-1" remote_node="true" uname="galera-1" in_ccm="true" crm-debug-origin="post_cache_update">
+      <transient_attributes id="galera-1">
+        <instance_attributes id="status-galera-1">
+          <nvpair id="status-galera-1-last-failure-galera" name="last-failure-galera" value="1493336863"/>
+          <nvpair id="status-galera-1-master-galera" name="master-galera" value="100"/>
+        </instance_attributes>
+      </transient_attributes>
+      <lrm id="galera-1">
+        <lrm_resources>
+          <lrm_resource id="galera" type="galera" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="galera_last_failure_0" operation_key="galera_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="3:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:8;3:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-1" call-id="34745" rc-code="8" op-status="0" interval="0" last-run="1493817765" last-rc-change="1493817765" exec-time="463" queue-time="0" op-digest="e773372fde8a6c242c1993820114d5c3"/>
+            <lrm_rsc_op id="galera_last_0" operation_key="galera_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="3:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:8;3:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-1" call-id="34745" rc-code="8" op-status="0" interval="0" last-run="1493817765" last-rc-change="1493817765" exec-time="463" queue-time="0" op-digest="e773372fde8a6c242c1993820114d5c3" op-secure-params=" user " op-secure-digest="e773372fde8a6c242c1993820114d5c3"/>
+            <lrm_rsc_op id="galera_monitor_10000" operation_key="galera_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="52:18:8:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:8;52:18:8:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-1" call-id="34756" rc-code="8" op-status="0" interval="10000" last-rc-change="1493817768" exec-time="65" queue-time="0" op-digest="20ec44e3280211739f6ba9523159629e" op-secure-params=" user " op-secure-digest="e773372fde8a6c242c1993820114d5c3"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+    </node_state>
+    <node_state id="galera-2" remote_node="true" uname="galera-2" crm-debug-origin="post_cache_update" in_ccm="true">
+      <transient_attributes id="galera-2">
+        <instance_attributes id="status-galera-2">
+          <nvpair id="status-galera-2-last-failure-galera" name="last-failure-galera" value="1493172798"/>
+          <nvpair id="status-galera-2-master-galera" name="master-galera" value="100"/>
+        </instance_attributes>
+      </transient_attributes>
+      <lrm id="galera-2">
+        <lrm_resources>
+          <lrm_resource id="galera" type="galera" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="galera_last_failure_0" operation_key="galera_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="4:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:8;4:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-2" call-id="34779" rc-code="8" op-status="0" interval="0" last-run="1493817766" last-rc-change="1493817766" exec-time="1419" queue-time="0" op-digest="e773372fde8a6c242c1993820114d5c3"/>
+            <lrm_rsc_op id="galera_last_0" operation_key="galera_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="4:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:8;4:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-2" call-id="34779" rc-code="8" op-status="0" interval="0" last-run="1493817766" last-rc-change="1493817766" exec-time="1419" queue-time="0" op-digest="e773372fde8a6c242c1993820114d5c3" op-secure-params=" user " op-secure-digest="e773372fde8a6c242c1993820114d5c3"/>
+            <lrm_rsc_op id="galera_monitor_10000" operation_key="galera_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="57:18:8:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:8;57:18:8:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-2" call-id="34789" rc-code="8" op-status="0" interval="10000" last-rc-change="1493817768" exec-time="61" queue-time="0" op-digest="20ec44e3280211739f6ba9523159629e" op-secure-params=" user " op-secure-digest="e773372fde8a6c242c1993820114d5c3"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+    </node_state>
+    <node_state id="galera-0" remote_node="true" uname="galera-0" crm-debug-origin="post_cache_update" in_ccm="true">
+      <transient_attributes id="galera-0">
+        <instance_attributes id="status-galera-0">
+          <nvpair id="status-galera-0-last-failure-galera" name="last-failure-galera" value="1493172797"/>
+          <nvpair id="status-galera-0-master-galera" name="master-galera" value="100"/>
+        </instance_attributes>
+      </transient_attributes>
+      <lrm id="galera-0">
+        <lrm_resources>
+          <lrm_resource id="galera" type="galera" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="galera_last_failure_0" operation_key="galera_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="2:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:8;2:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-2" call-id="35583" rc-code="8" op-status="0" interval="0" last-run="1493817765" last-rc-change="1493817765" exec-time="1739" queue-time="0" op-digest="e773372fde8a6c242c1993820114d5c3"/>
+            <lrm_rsc_op id="galera_last_0" operation_key="galera_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="2:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:8;2:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-2" call-id="35583" rc-code="8" op-status="0" interval="0" last-run="1493817765" last-rc-change="1493817765" exec-time="1739" queue-time="0" op-digest="e773372fde8a6c242c1993820114d5c3" op-secure-params=" user " op-secure-digest="e773372fde8a6c242c1993820114d5c3"/>
+            <lrm_rsc_op id="galera_monitor_10000" operation_key="galera_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="62:18:8:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:8;62:18:8:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-2" call-id="35593" rc-code="8" op-status="0" interval="10000" last-rc-change="1493817768" exec-time="60" queue-time="0" op-digest="20ec44e3280211739f6ba9523159629e" op-secure-params=" user " op-secure-digest="e773372fde8a6c242c1993820114d5c3"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+    </node_state>
+    <node_state id="3" uname="controller-2" in_ccm="true" crmd="online" crm-debug-origin="post_cache_update" join="member" expected="member">
+      <lrm id="3">
+        <lrm_resources>
+          <lrm_resource id="messaging-0" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="messaging-0_last_0" operation_key="messaging-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="29:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;29:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="1" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="messaging-1" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="messaging-1_last_0" operation_key="messaging-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="30:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;30:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="2" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="messaging-2" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="messaging-2_last_0" operation_key="messaging-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="31:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;31:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="3" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="galera-0" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="galera-0_last_0" operation_key="galera-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="32:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;32:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="4" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="galera-1" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="galera-1_last_0" operation_key="galera-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="33:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;33:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="galera-2" type="remote" class="ocf" provider="pacemaker">
+            <lrm_rsc_op id="galera-2_last_0" operation_key="galera-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="34:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;34:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="6" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="haproxy" type="haproxy" class="systemd">
+            <lrm_rsc_op id="haproxy_last_0" operation_key="haproxy_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="138:1:0:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:0;138:1:0:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="46" rc-code="0" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="2103" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+            <lrm_rsc_op id="haproxy_monitor_60000" operation_key="haproxy_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="123:2:0:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:0;123:2:0:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="63" rc-code="0" op-status="0" interval="60000" last-rc-change="1493817975" exec-time="3" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
+          </lrm_resource>
+          <lrm_resource id="openstack-cinder-volume" type="openstack-cinder-volume" class="systemd">
+            <lrm_rsc_op id="openstack-cinder-volume_last_0" operation_key="openstack-cinder-volume_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="43:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;43:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="45" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="2" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+          </lrm_resource>
+          <lrm_resource id="ip-192.168.24.6" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-192.168.24.6_last_0" operation_key="ip-192.168.24.6_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="36:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;36:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="42" queue-time="0" op-digest="22692fc1751093fc15ab6c0d90fafe22"/>
+          </lrm_resource>
+          <lrm_resource id="ip-172.17.1.14" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-172.17.1.14_last_0" operation_key="ip-172.17.1.14_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="38:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;38:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="24" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="52" queue-time="0" op-digest="1fab2783a8d283e33a945588908e98a4"/>
+          </lrm_resource>
+          <lrm_resource id="ip-10.0.0.102" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-10.0.0.102_last_0" operation_key="ip-10.0.0.102_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="37:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;37:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="20" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="59" queue-time="0" op-digest="194c484ea9d1eb9955c0cfdaf53ccdae"/>
+          </lrm_resource>
+          <lrm_resource id="ip-172.17.3.15" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-172.17.3.15_last_0" operation_key="ip-172.17.3.15_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="40:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;40:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="32" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="52" queue-time="0" op-digest="27e0700bb641af6a5b0fea09d0ea2482"/>
+          </lrm_resource>
+          <lrm_resource id="ip-172.17.4.11" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-172.17.4.11_last_0" operation_key="ip-172.17.4.11_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="41:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;41:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="36" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="50" queue-time="0" op-digest="fe27c3edbb73480aff571d34c88b21a7"/>
+          </lrm_resource>
+          <lrm_resource id="ip-172.17.1.17" type="IPaddr2" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="ip-172.17.1.17_last_0" operation_key="ip-172.17.1.17_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="39:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;39:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="28" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="55" queue-time="0" op-digest="edc8fdae4cc326c15a779f36f28eb3f8"/>
+          </lrm_resource>
+          <lrm_resource id="stonith-fence_ipmilan-525400bbf613" type="fence_ipmilan" class="stonith">
+            <lrm_rsc_op id="stonith-fence_ipmilan-525400bbf613_last_0" operation_key="stonith-fence_ipmilan-525400bbf613_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="44:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;44:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="50" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="2" queue-time="0" op-digest="a1b3d562a7e722cbf686e1c2750888a3" op-secure-params=" passwd " op-secure-digest="2d0324390caa209c81283f07749d6dae"/>
+          </lrm_resource>
+          <lrm_resource id="stonith-fence_ipmilan-525400b4f6bd" type="fence_ipmilan" class="stonith">
+            <lrm_rsc_op id="stonith-fence_ipmilan-525400b4f6bd_last_0" operation_key="stonith-fence_ipmilan-525400b4f6bd_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="45:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;45:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="54" rc-code="7" op-status="0" interval="0" last-run="1493817971" last-rc-change="1493817971" exec-time="0" queue-time="0" op-digest="190a5d7184e8c0736ea8d50b25d1896b" op-secure-params=" passwd " op-secure-digest="e710ff47e4fa69f83f5f46f9de9570b6"/>
+          </lrm_resource>
+          <lrm_resource id="redis" type="redis" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="redis_last_0" operation_key="redis_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="95:1:0:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:0;95:1:0:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="59" rc-code="0" op-status="0" interval="0" last-run="1493817972" last-rc-change="1493817972" exec-time="2559" queue-time="0" op-digest="a5b2a4f5c557278af14d6cbffc5a229d" op-secure-params=" user " op-secure-digest="a5b2a4f5c557278af14d6cbffc5a229d"/>
+            <lrm_rsc_op id="redis_monitor_60000" operation_key="redis_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="80:2:0:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:0;80:2:0:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="61" rc-code="0" op-status="0" interval="60000" last-rc-change="1493817975" exec-time="121" queue-time="0" op-digest="992feffd37882eb5ce9bfc847b2fa75e" op-secure-params=" user " op-secure-digest="a5b2a4f5c557278af14d6cbffc5a229d"/>
+            <lrm_rsc_op id="redis_monitor_45000" operation_key="redis_monitor_45000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="79:2:0:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:0;79:2:0:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="62" rc-code="0" op-status="0" interval="45000" last-rc-change="1493817975" exec-time="117" queue-time="120" op-digest="992feffd37882eb5ce9bfc847b2fa75e" op-secure-params=" user " op-secure-digest="a5b2a4f5c557278af14d6cbffc5a229d"/>
+          </lrm_resource>
+          <lrm_resource id="stonith-fence_ipmilan-5254005bdbb5" type="fence_ipmilan" class="stonith">
+            <lrm_rsc_op id="stonith-fence_ipmilan-5254005bdbb5_last_0" operation_key="stonith-fence_ipmilan-5254005bdbb5_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="46:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" transition-magic="0:7;46:1:7:e9fa94e7-ffc2-40ab-91b6-b69d0f610c13" on_node="controller-2" call-id="58" rc-code="7" op-status="0" interval="0" last-run="1493817972" last-rc-change="1493817972" exec-time="0" queue-time="1" op-digest="25087bde0e53bf4f4e4efb2b0bd9d0de" op-secure-params=" passwd " op-secure-digest="ecf31bd4bca13bb934be683ab04ee8cf"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+      <transient_attributes id="3">
+        <instance_attributes id="status-3">
+          <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
+          <nvpair id="status-3-master-redis" name="master-redis" value="1"/>
+        </instance_attributes>
+      </transient_attributes>
+    </node_state>
+    <node_state id="messaging-2" remote_node="true" uname="messaging-2" crm-debug-origin="post_cache_update" in_ccm="true">
+      <transient_attributes id="messaging-2">
+        <instance_attributes id="status-messaging-2">
+          <nvpair id="status-messaging-2-rmq-node-attr-rabbitmq" name="rmq-node-attr-rabbitmq" value="rabbit@messaging-2"/>
+          <nvpair id="status-messaging-2-last-failure-rabbitmq" name="last-failure-rabbitmq" value="1493172992"/>
+        </instance_attributes>
+      </transient_attributes>
+      <lrm id="messaging-2">
+        <lrm_resources>
+          <lrm_resource id="rabbitmq" type="rabbitmq-cluster" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rabbitmq_last_failure_0" operation_key="rabbitmq_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="7:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;7:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-2" call-id="1041497" rc-code="0" op-status="0" interval="0" last-run="1493817765" last-rc-change="1493817765" exec-time="3053" queue-time="0" op-digest="497e3cffa03bc3ed4830dc4b0ba109ae"/>
+            <lrm_rsc_op id="rabbitmq_last_0" operation_key="rabbitmq_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="7:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;7:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-2" call-id="1041497" rc-code="0" op-status="0" interval="0" last-run="1493817765" last-rc-change="1493817765" exec-time="3053" queue-time="0" op-digest="497e3cffa03bc3ed4830dc4b0ba109ae"/>
+            <lrm_rsc_op id="rabbitmq_monitor_10000" operation_key="rabbitmq_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="37:18:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;37:18:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-2" call-id="1041515" rc-code="0" op-status="0" interval="10000" last-rc-change="1493817768" exec-time="3053" queue-time="0" op-digest="41cce5252b1fb189afe9efa00fb5e2cb"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+    </node_state>
+    <node_state id="messaging-0" remote_node="true" uname="messaging-0" in_ccm="true" crm-debug-origin="post_cache_update">
+      <transient_attributes id="messaging-0">
+        <instance_attributes id="status-messaging-0">
+          <nvpair id="status-messaging-0-rmq-node-attr-rabbitmq" name="rmq-node-attr-rabbitmq" value="rabbit@messaging-0"/>
+          <nvpair id="status-messaging-0-last-failure-rabbitmq" name="last-failure-rabbitmq" value="1493330172"/>
+        </instance_attributes>
+      </transient_attributes>
+      <lrm id="messaging-0">
+        <lrm_resources>
+          <lrm_resource id="rabbitmq" type="rabbitmq-cluster" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rabbitmq_last_failure_0" operation_key="rabbitmq_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="5:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;5:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-1" call-id="875374" rc-code="0" op-status="0" interval="0" last-run="1493817764" last-rc-change="1493817764" exec-time="3026" queue-time="0" op-digest="497e3cffa03bc3ed4830dc4b0ba109ae"/>
+            <lrm_rsc_op id="rabbitmq_last_0" operation_key="rabbitmq_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="5:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;5:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-1" call-id="875374" rc-code="0" op-status="0" interval="0" last-run="1493817764" last-rc-change="1493817764" exec-time="3026" queue-time="0" op-digest="497e3cffa03bc3ed4830dc4b0ba109ae"/>
+            <lrm_rsc_op id="rabbitmq_monitor_10000" operation_key="rabbitmq_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="40:18:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;40:18:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-1" call-id="875393" rc-code="0" op-status="0" interval="10000" last-rc-change="1493817768" exec-time="2985" queue-time="0" op-digest="41cce5252b1fb189afe9efa00fb5e2cb"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+    </node_state>
+    <node_state id="messaging-1" remote_node="true" uname="messaging-1" in_ccm="true" crm-debug-origin="post_cache_update">
+      <transient_attributes id="messaging-1">
+        <instance_attributes id="status-messaging-1">
+          <nvpair id="status-messaging-1-rmq-node-attr-rabbitmq" name="rmq-node-attr-rabbitmq" value="rabbit@messaging-1"/>
+          <nvpair id="status-messaging-1-last-failure-rabbitmq" name="last-failure-rabbitmq" value="1493336946"/>
+        </instance_attributes>
+      </transient_attributes>
+      <lrm id="messaging-1">
+        <lrm_resources>
+          <lrm_resource id="rabbitmq" type="rabbitmq-cluster" class="ocf" provider="heartbeat">
+            <lrm_rsc_op id="rabbitmq_last_failure_0" operation_key="rabbitmq_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="6:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;6:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-1" call-id="251547" rc-code="0" op-status="0" interval="0" last-run="1493817765" last-rc-change="1493817765" exec-time="3074" queue-time="0" op-digest="497e3cffa03bc3ed4830dc4b0ba109ae"/>
+            <lrm_rsc_op id="rabbitmq_last_0" operation_key="rabbitmq_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="6:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;6:17:7:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-1" call-id="251547" rc-code="0" op-status="0" interval="0" last-run="1493817765" last-rc-change="1493817765" exec-time="3074" queue-time="0" op-digest="497e3cffa03bc3ed4830dc4b0ba109ae"/>
+            <lrm_rsc_op id="rabbitmq_monitor_10000" operation_key="rabbitmq_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="43:18:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" transition-magic="0:0;43:18:0:e47e0f5b-bac4-432e-9993-f38bc43128ea" on_node="controller-1" call-id="251566" rc-code="0" op-status="0" interval="10000" last-rc-change="1493817768" exec-time="3025" queue-time="0" op-digest="41cce5252b1fb189afe9efa00fb5e2cb"/>
+          </lrm_resource>
+        </lrm_resources>
+      </lrm>
+    </node_state>
+  </status>
+</cib>
-- 
1.8.3.1


From b08ff7bea963472a35e2b0fbb0a91e2a387b90a5 Mon Sep 17 00:00:00 2001
From: Andrew Beekhof <andrew@beekhof.net>
Date: Fri, 19 May 2017 17:44:37 +1000
Subject: [PATCH 03/13] Fix: PE: Prevent use-of-NULL when expanding containers

---
 lib/pengine/utils.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c
index ff142f0..9e47f03 100644
--- a/lib/pengine/utils.c
+++ b/lib/pengine/utils.c
@@ -1690,6 +1690,10 @@ bool fix_remote_addr(resource_t * rsc)
         "pacemaker"
     };
 
+    if(rsc == NULL) {
+        return FALSE;
+    }
+
     name = "addr";
     value = g_hash_table_lookup(rsc->parameters, name);
     if (safe_str_eq(value, "#uname") == FALSE) {
-- 
1.8.3.1


From 2d6b90ff01f91ad284b2ea5988cd3ccdec21aac3 Mon Sep 17 00:00:00 2001
From: Ken Gaillot <kgaillot@redhat.com>
Date: Fri, 19 May 2017 10:17:37 -0500
Subject: [PATCH 04/13] Low: pengine: improve detection of invalid constraints

The previous test was overbroad. The new test specifically checks
whether the constraint is between a resource running on a guest node
and the resource creating that guest node.
---
 pengine/graph.c | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/pengine/graph.c b/pengine/graph.c
index 4e8c6dc..72df371 100644
--- a/pengine/graph.c
+++ b/pengine/graph.c
@@ -1311,20 +1311,13 @@ check_dump_input(int last_action, action_t * action, action_wrapper_t * wrapper)
     type &= ~pe_order_implies_then_printed;
     type &= ~pe_order_optional;
 
-    if (wrapper->action->node
+    if (is_not_set(type, pe_order_preserve)
         && action->rsc && action->rsc->fillers
-        && is_not_set(type, pe_order_preserve)
+        && wrapper->action->rsc && wrapper->action->node
         && wrapper->action->node->details->remote_rsc
-        && uber_parent(action->rsc) != uber_parent(wrapper->action->rsc)
-        ) {
-        /* This prevents user-defined ordering constraints between
-         * resources in remote nodes and the resources that
-         * define/represent a remote node.
-         *
-         * There is no known valid reason to allow this sort of thing
-         * but if one arises, we'd need to change the
-         * action->rsc->fillers clause to be more specific, possibly
-         * to check that it contained wrapper->action->rsc
+        && (wrapper->action->node->details->remote_rsc->container == action->rsc)) {
+        /* This prevents user-defined ordering constraints between resources
+         * running in a guest node and the resource that defines that node.
          */
         crm_warn("Invalid ordering constraint between %s and %s",
                  wrapper->action->rsc->id, action->rsc->id);
-- 
1.8.3.1


From c9dcc29b1e9b77c87c6f6a653969f3f7ecb81e91 Mon Sep 17 00:00:00 2001
From: Ken Gaillot <kgaillot@redhat.com>
Date: Fri, 19 May 2017 18:28:48 -0500
Subject: [PATCH 05/13] Low: libpengine: don't double score when adding first
 allowed node

Not usually a problem in practice because first score added in a
symmetric cluster is 0
---
 lib/pengine/utils.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c
index 9e47f03..16687e0 100644
--- a/lib/pengine/utils.c
+++ b/lib/pengine/utils.c
@@ -1299,7 +1299,6 @@ resource_node_score(resource_t * rsc, node_t * node, int score, const char *tag)
     match = pe_hash_table_lookup(rsc->allowed_nodes, node->details->id);
     if (match == NULL) {
         match = node_copy(node);
-        match->weight = merge_weights(score, node->weight);
         g_hash_table_insert(rsc->allowed_nodes, (gpointer) match->details->id, match);
     }
     match->weight = merge_weights(match->weight, score);
-- 
1.8.3.1


From 74b95e26b815ab04609f05d02feb749a7dfed406 Mon Sep 17 00:00:00 2001
From: Ken Gaillot <kgaillot@redhat.com>
Date: Fri, 19 May 2017 18:38:27 -0500
Subject: [PATCH 06/13] Test: pengine: update regression tests for score change

---
 pengine/test10/remote-orphaned.scores   | 2 +-
 pengine/test10/whitebox-orphaned.scores | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/pengine/test10/remote-orphaned.scores b/pengine/test10/remote-orphaned.scores
index 53b4ada..c6f0957 100644
--- a/pengine/test10/remote-orphaned.scores
+++ b/pengine/test10/remote-orphaned.scores
@@ -15,7 +15,7 @@ clone_color: ping-1:1 allocation score on 18node3: 1
 clone_color: ping-1:2 allocation score on 18node1: 0
 clone_color: ping-1:2 allocation score on 18node2: 0
 clone_color: ping-1:2 allocation score on 18node3: 0
-clone_color: ping-1:2 allocation score on remote1: 2
+clone_color: ping-1:2 allocation score on remote1: 1
 clone_color: stateful-1:0 allocation score on 18node1: 11
 clone_color: stateful-1:0 allocation score on 18node2: -INFINITY
 clone_color: stateful-1:0 allocation score on 18node3: 0
diff --git a/pengine/test10/whitebox-orphaned.scores b/pengine/test10/whitebox-orphaned.scores
index 7f303b8..d626df2 100644
--- a/pengine/test10/whitebox-orphaned.scores
+++ b/pengine/test10/whitebox-orphaned.scores
@@ -26,7 +26,7 @@ native_color: A allocation score on lxc2: 0
 native_color: B allocation score on 18node1: 0
 native_color: B allocation score on 18node2: 0
 native_color: B allocation score on 18node3: 0
-native_color: B allocation score on lxc1: 200
+native_color: B allocation score on lxc1: 100
 native_color: B allocation score on lxc2: 0
 native_color: C allocation score on 18node1: 0
 native_color: C allocation score on 18node2: 0
-- 
1.8.3.1


From 048c3e28d2dead3180e6cedca05460728e271d82 Mon Sep 17 00:00:00 2001
From: Ken Gaillot <kgaillot@redhat.com>
Date: Fri, 19 May 2017 16:51:47 -0500
Subject: [PATCH 07/13] Low: pengine: avoid double include

---
 pengine/container.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/pengine/container.c b/pengine/container.c
index 49b288a..bfef976 100644
--- a/pengine/container.c
+++ b/pengine/container.c
@@ -22,7 +22,6 @@
 #include <allocate.h>
 #include <notif.h>
 #include <utils.h>
-#include <allocate.h>
 
 #define VARIANT_CONTAINER 1
 #include <lib/pengine/variant.h>
-- 
1.8.3.1


From ce01a26b779442e030a3f1aa6b1ce7cf46c925d0 Mon Sep 17 00:00:00 2001
From: Ken Gaillot <kgaillot@redhat.com>
Date: Tue, 9 May 2017 17:36:29 -0500
Subject: [PATCH 08/13] Fix: pengine: avoid use-of-NULL in bundle without
 primitive

---
 pengine/container.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/pengine/container.c b/pengine/container.c
index bfef976..b63dcb3 100644
--- a/pengine/container.c
+++ b/pengine/container.c
@@ -262,7 +262,9 @@ container_expand(resource_t * rsc, pe_working_set_t * data_set)
 
 
         CRM_ASSERT(tuple);
-        if(fix_remote_addr(tuple->remote) && tuple->docker->allocated_to) {
+        if (tuple->docker && tuple->remote && tuple->docker->allocated_to
+            && fix_remote_addr(tuple->remote)) {
+
             // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside
             xmlNode *nvpair = get_xpath_object("//nvpair[@name='addr']", tuple->remote->xml, LOG_ERR);
 
-- 
1.8.3.1


From 25d6b6f0112c42e20d59305169b68472870a0b43 Mon Sep 17 00:00:00 2001
From: Ken Gaillot <kgaillot@redhat.com>
Date: Tue, 9 May 2017 17:48:51 -0500
Subject: [PATCH 09/13] Low: pengine,libpengine: avoid potential use-of-NULL

no risk in current code, but handles any future misuse
---
 lib/pengine/utils.c | 5 ++++-
 pengine/allocate.c  | 3 ++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c
index 16687e0..3d4e60d 100644
--- a/lib/pengine/utils.c
+++ b/lib/pengine/utils.c
@@ -1699,7 +1699,7 @@ bool fix_remote_addr(resource_t * rsc)
         return FALSE;
     }
 
-    for (int lpc = 0; rsc && lpc < DIMOF(attr_list); lpc++) {
+    for (int lpc = 0; lpc < DIMOF(attr_list); lpc++) {
         name = attr_list[lpc];
         value = crm_element_value(rsc->xml, attr_list[lpc]);
         if (safe_str_eq(value, value_list[lpc]) == FALSE) {
@@ -1734,12 +1734,15 @@ rsc_action_digest_cmp(resource_t * rsc, xmlNode * xml_op, node_t * node,
     const char *restart_list;
     const char *op_version;
 
+    CRM_ASSERT(node != NULL);
+
     data = g_hash_table_lookup(node->details->digest_cache, op_id);
     if (data) {
         return data;
     }
 
     data = calloc(1, sizeof(op_digest_cache_t));
+    CRM_ASSERT(data != NULL);
 
     digest_all = crm_element_value(xml_op, XML_LRM_ATTR_OP_DIGEST);
     digest_restart = crm_element_value(xml_op, XML_LRM_ATTR_RESTART_DIGEST);
diff --git a/pengine/allocate.c b/pengine/allocate.c
index 3819c24..6b0025b 100644
--- a/pengine/allocate.c
+++ b/pengine/allocate.c
@@ -276,7 +276,8 @@ check_action_definition(resource_t * rsc, node_t * active_node, xmlNode * xml_op
         key = NULL;
     }
 
-    crm_trace("Testing %s_%s_%d on %s", rsc->id, task, interval, active_node?active_node->details->uname:"N/A");
+    crm_trace("Testing %s_%s_%d on %s",
+              rsc->id, task, interval, active_node->details->uname);
     if (interval == 0 && safe_str_eq(task, RSC_STATUS)) {
         /* Reload based on the start action not a probe */
         task = RSC_START;
-- 
1.8.3.1


From 32477db962b9798a323c7da27cece111519bf534 Mon Sep 17 00:00:00 2001
From: Ken Gaillot <kgaillot@redhat.com>
Date: Fri, 12 May 2017 17:54:04 -0500
Subject: [PATCH 10/13] Low: libpe_status: set #kind to "container" for bundle
 nodes

---
 lib/pengine/container.c | 29 +++++++++++++++++++++++------
 1 file changed, 23 insertions(+), 6 deletions(-)

diff --git a/lib/pengine/container.c b/lib/pengine/container.c
index 043f129..f93a60f 100644
--- a/lib/pengine/container.c
+++ b/lib/pengine/container.c
@@ -384,14 +384,13 @@ create_remote_resource(
 
         create_nvp(xml_obj, XML_OP_ATTR_ALLOW_MIGRATE, "false");
 
-        // Sets up node->details->remote_rsc->container == tuple->docker
+        /* This sets tuple->docker as tuple->remote's container, which is
+         * similar to what happens with guest nodes. This is how the PE knows
+         * that the bundle node is fenced by recovering docker, and that
+         * remote should be ordered relative to docker.
+         */
         create_nvp(xml_obj, XML_RSC_ATTR_CONTAINER, tuple->docker->id);
 
-        // TODO: Do this generically, eg with rsc->flags
-        // create_nvp(xml_obj, XML_RSC_ATTR_INTERNAL_RSC, "true"); // Suppress printing
-
-        // tuple->docker->fillers = g_list_append(tuple->docker->fillers, child);
-
         /* Ensure a node has been created for the guest (it may have already
          * been, if it has a permanent node attribute), and ensure its weight is
          * -INFINITY so no other resources can run on it.
@@ -422,6 +421,24 @@ create_remote_resource(
         }
 
         tuple->node->details->remote_rsc = tuple->remote;
+
+        /* #kind is irrelevant to bundles since it is only used in location
+         * constraint rules, and those don't matter for resources inside
+         * bundles. But just for clarity, a bundle is closer to "container"
+         * (guest node) than the "remote" set by pe_create_node().
+         */
+        g_hash_table_insert(tuple->node->details->attrs,
+                            strdup("#kind"), strdup("container"));
+
+        /* One effect of this is that setup_container() will add
+         * tuple->remote to tuple->docker's fillers, which will make
+         * rsc_contains_remote_node() true for tuple->docker.
+         *
+         * tuple->child does NOT get added to tuple->docker's fillers.
+         * The only noticeable effect if it did would be for its fail count to
+         * be taken into account when checking tuple->docker's migration
+         * threshold.
+         */
         parent->children = g_list_append(parent->children, tuple->remote);
     }
     return TRUE;
-- 
1.8.3.1


From bd7f2b64841514d08fb5bbd4b990857e4ccd8def Mon Sep 17 00:00:00 2001
From: Ken Gaillot <kgaillot@redhat.com>
Date: Mon, 15 May 2017 16:11:45 -0500
Subject: [PATCH 11/13] Log: pengine: re-phrase trace log for internal
 constraints

This improves comments and one trace message, and involves slight
refactoring that I initially planned to do more with, but decided against.
---
 pengine/native.c | 35 ++++++++++++++++++++++++++---------
 1 file changed, 26 insertions(+), 9 deletions(-)

diff --git a/pengine/native.c b/pengine/native.c
index f30bc8b..82b73bb 100644
--- a/pengine/native.c
+++ b/pengine/native.c
@@ -1447,16 +1447,24 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set)
     if (rsc->container) {
         resource_t *remote_rsc = NULL;
 
-        /* find out if the container is associated with remote node connection resource */
+        /* A user can specify that a resource must start on a Pacemaker Remote
+         * node by explicitly configuring it with the container=NODENAME
+         * meta-attribute. This is of questionable merit, since location
+         * constraints can accomplish the same thing. But we support it, so here
+         * we check whether a resource (that is not itself a remote connection)
+         * has container set to a remote node or guest node resource.
+         */
         if (rsc->container->is_remote_node) {
             remote_rsc = rsc->container;
         } else if (rsc->is_remote_node == FALSE) {
             remote_rsc = rsc_contains_remote_node(data_set, rsc->container);
         }
 
-        /* if the container is a remote-node, force the resource within the container
-         * instead of colocating the resource with the container. */
         if (remote_rsc) {
+            /* The container represents a Pacemaker Remote node, so force the
+             * resource on the Pacemaker Remote node instead of colocating the
+             * resource with the container resource.
+             */
             GHashTableIter iter;
             node_t *node = NULL;
             g_hash_table_iter_init(&iter, rsc->allowed_nodes);
@@ -1466,8 +1474,15 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set)
                 }
             }
         } else {
-            int score = 10000; /* Highly preferred but not essential */
-            crm_trace("Generating order and colocation rules for rsc %s with container %s", rsc->id, rsc->container->id);
+            /* This resource is either a filler for a container that does NOT
+             * represent a Pacemaker Remote node, or a Pacemaker Remote
+             * connection resource for a guest node or bundle.
+             */
+            int score;
+
+            crm_trace("Order and colocate %s relative to its container %s",
+                      rsc->id, rsc->container->id);
+
             custom_action_order(rsc->container, generate_op_key(rsc->container->id, RSC_START, 0), NULL,
                                 rsc, generate_op_key(rsc->id, RSC_START, 0), NULL,
                                 pe_order_implies_then | pe_order_runnable_left, data_set);
@@ -1476,11 +1491,13 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set)
                                 rsc->container, generate_op_key(rsc->container->id, RSC_STOP, 0), NULL,
                                 pe_order_implies_first, data_set);
 
-            if(is_not_set(rsc->flags, pe_rsc_allow_remote_remotes)) {
-                score = INFINITY; /* Force them to run on the same host */ 
+            if (is_set(rsc->flags, pe_rsc_allow_remote_remotes)) {
+                score = 10000;    /* Highly preferred but not essential */
+            } else {
+                score = INFINITY; /* Force them to run on the same host */
             }
-            rsc_colocation_new("resource-with-container", NULL, score, rsc, rsc->container, NULL,
-                               NULL, data_set);
+            rsc_colocation_new("resource-with-container", NULL, score, rsc,
+                               rsc->container, NULL, NULL, data_set);
         }
     }
 
-- 
1.8.3.1


From 56a7985a768cd42d0cfcb7b9fcea043652ed0aa0 Mon Sep 17 00:00:00 2001
From: Ken Gaillot <kgaillot@redhat.com>
Date: Mon, 15 May 2017 17:53:07 -0500
Subject: [PATCH 12/13] Low: pengine: improve internal bundle constraints

Ordering IP with docker requires pe_order_preserve.

Explicit ordering of remote relative to docker is redundant since it's handled
by native internal constraints.

Explicit colocation of remote with IP is both redundant (since both remote and
IP are colocated with docker) and harmful if mandatory (since it prohibits
running bundles on Pacemaker Remote nodes).
---
 pengine/container.c | 24 +++++++++---------------
 1 file changed, 9 insertions(+), 15 deletions(-)

diff --git a/pengine/container.c b/pengine/container.c
index b63dcb3..5bde89d 100644
--- a/pengine/container.c
+++ b/pengine/container.c
@@ -167,8 +167,10 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set)
             tuple->ip->cmds->internal_constraints(tuple->ip, data_set);
 
             // Start ip then docker
-            new_rsc_order(tuple->ip, RSC_START, tuple->docker, RSC_START, pe_order_runnable_left, data_set);
-            new_rsc_order(tuple->docker, RSC_STOP, tuple->ip, RSC_STOP, pe_order_implies_first, data_set);
+            new_rsc_order(tuple->ip, RSC_START, tuple->docker, RSC_START,
+                          pe_order_runnable_left|pe_order_preserve, data_set);
+            new_rsc_order(tuple->docker, RSC_STOP, tuple->ip, RSC_STOP,
+                          pe_order_implies_first|pe_order_preserve, data_set);
 
             id = crm_strdup_printf("%s-ip-with-docker-%d", rsc->id, tuple->offset);
             rsc_colocation_new(id, NULL, INFINITY, tuple->ip, tuple->docker, NULL, NULL, data_set);
@@ -176,20 +178,12 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set)
         }
 
         if(tuple->remote) {
+            /* This handles ordering and colocating remote relative to docker
+             * (via "resource-with-container"). Since IP is also ordered and
+             * colocated relative to docker, we don't need to do anything
+             * explicit here with IP.
+             */
             tuple->remote->cmds->internal_constraints(tuple->remote, data_set);
-            // Start docker then remote
-            new_rsc_order(
-                tuple->docker, RSC_START, tuple->remote, RSC_START, pe_order_runnable_left, data_set);
-            new_rsc_order(
-                tuple->remote, RSC_STOP, tuple->docker, RSC_STOP, pe_order_implies_first, data_set);
-
-            if(tuple->ip) {
-                id = crm_strdup_printf("%s-remote-with-ip-%d", rsc->id, tuple->offset);
-                rsc_colocation_new(id, NULL, INFINITY, tuple->remote, tuple->ip, NULL, NULL, data_set);
-                free(id);
-//            } else {
-                // remote-with-docker is already handled in native_internal_constraints() by 'resource-with-container'
-            }
         }
 
         if(tuple->child) {
-- 
1.8.3.1


From 6f0468b80ac6ec88644ce1517b3668bfd96a51e3 Mon Sep 17 00:00:00 2001
From: Ken Gaillot <kgaillot@redhat.com>
Date: Thu, 11 May 2017 17:59:10 -0500
Subject: [PATCH 13/13] Fix: libpe_status: correctly flag remote connection
 resources

Previously, unpack_resources() would set is_remote_node (when appropriate)
after calling common_unpack(). However, this meant that other paths to
common_unpack() (such as for bundles) did not get this set correctly.

Now, is_remote_node is set in common_unpack() so all paths are correct.
It's also the logical place to do it, since it really is part of unpacking,
and saves an extra call to xml_contains_remote_node().
---
 lib/pengine/complex.c |  1 +
 lib/pengine/unpack.c  |  5 -----
 pengine/native.c      | 11 ++++++-----
 3 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c
index 6246b08..c99b5af 100644
--- a/lib/pengine/complex.c
+++ b/lib/pengine/complex.c
@@ -542,6 +542,7 @@ common_unpack(xmlNode * xml_obj, resource_t ** rsc,
     }
 
     if (xml_contains_remote_node((*rsc)->xml)) {
+        (*rsc)->is_remote_node = TRUE;
         if (g_hash_table_lookup((*rsc)->meta, XML_RSC_ATTR_CONTAINER)) {
             container_remote_node = 1;
         } else {
diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c
index 6ec7daf..df9a133 100644
--- a/lib/pengine/unpack.c
+++ b/lib/pengine/unpack.c
@@ -789,10 +789,6 @@ unpack_resources(xmlNode * xml_resources, pe_working_set_t * data_set)
         crm_trace("Beginning unpack... <%s id=%s... >", crm_element_name(xml_obj), ID(xml_obj));
         if (common_unpack(xml_obj, &new_rsc, NULL, data_set)) {
             data_set->resources = g_list_append(data_set->resources, new_rsc);
-
-            if (xml_contains_remote_node(xml_obj)) {
-                new_rsc->is_remote_node = TRUE;
-            }
             print_resource(LOG_DEBUG_3, "Added ", new_rsc, FALSE);
 
         } else {
@@ -1673,7 +1669,6 @@ create_fake_resource(const char *rsc_id, xmlNode * rsc_entry, pe_working_set_t *
         node_t *node;
 
         crm_debug("Detected orphaned remote node %s", rsc_id);
-        rsc->is_remote_node = TRUE;
         node = pe_find_node(data_set->nodes, rsc_id);
         if (node == NULL) {
 	        node = pe_create_node(rsc_id, rsc_id, "remote", NULL, data_set);
diff --git a/pengine/native.c b/pengine/native.c
index 82b73bb..2c4e2a1 100644
--- a/pengine/native.c
+++ b/pengine/native.c
@@ -1507,11 +1507,12 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set)
         rsc_avoids_remote_nodes(rsc);
     }
 
-    /* If this rsc is a remote connection resource associated
-     * with a container ( which will most likely be a virtual guest )
-     * do not allow the container to live on any remote-nodes.
-     * remote-nodes managing nested remote-nodes should not be allowed. */
-    if (rsc->is_remote_node && rsc->container) {
+    /* If this is a guest node's implicit remote connection, do not allow the
+     * guest resource to live on a Pacemaker Remote node, to avoid nesting
+     * remotes. However, allow bundles to run on remote nodes.
+     */
+    if (rsc->is_remote_node && rsc->container
+        && is_not_set(rsc->flags, pe_rsc_allow_remote_remotes)) {
         rsc_avoids_remote_nodes(rsc->container);
     }
 }
-- 
1.8.3.1