ff725c
From dad337a96dfeca4dbde7bbd97f99f24956440fc2 Mon Sep 17 00:00:00 2001
ff725c
From: Ken Gaillot <kgaillot@redhat.com>
ff725c
Date: Sat, 8 Jun 2019 16:25:04 -0500
ff725c
Subject: [PATCH 1/4] Refactor: libpe_status: add function for checking
ff725c
 shutdown attribute
ff725c
ff725c
... to reduce code duplication and allow further reuse
ff725c
---
ff725c
 include/crm/pengine/internal.h |  2 ++
ff725c
 lib/pengine/unpack.c           |  8 ++------
ff725c
 lib/pengine/utils.c            | 20 ++++++++++++++++++++
ff725c
 3 files changed, 24 insertions(+), 6 deletions(-)
ff725c
ff725c
diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h
ff725c
index fd55bb9..a2a3d52 100644
ff725c
--- a/include/crm/pengine/internal.h
ff725c
+++ b/include/crm/pengine/internal.h
ff725c
@@ -359,4 +359,6 @@ void pe__foreach_param_check(pe_working_set_t *data_set,
ff725c
                                         enum pe_check_parameters,
ff725c
                                         pe_working_set_t*));
ff725c
 void pe__free_param_checks(pe_working_set_t *data_set);
ff725c
+
ff725c
+bool pe__shutdown_requested(pe_node_t *node);
ff725c
 #endif
ff725c
diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c
ff725c
index 081df07..9d13a57 100644
ff725c
--- a/lib/pengine/unpack.c
ff725c
+++ b/lib/pengine/unpack.c
ff725c
@@ -909,7 +909,6 @@ unpack_handle_remote_attrs(node_t *this_node, xmlNode *state, pe_working_set_t *
ff725c
     const char *resource_discovery_enabled = NULL;
ff725c
     xmlNode *attrs = NULL;
ff725c
     resource_t *rsc = NULL;
ff725c
-    const char *shutdown = NULL;
ff725c
 
ff725c
     if (crm_str_eq((const char *)state->name, XML_CIB_TAG_STATE, TRUE) == FALSE) {
ff725c
         return;
ff725c
@@ -931,8 +930,7 @@ unpack_handle_remote_attrs(node_t *this_node, xmlNode *state, pe_working_set_t *
ff725c
     attrs = find_xml_node(state, XML_TAG_TRANSIENT_NODEATTRS, FALSE);
ff725c
     add_node_attrs(attrs, this_node, TRUE, data_set);
ff725c
 
ff725c
-    shutdown = pe_node_attribute_raw(this_node, XML_CIB_ATTR_SHUTDOWN);
ff725c
-    if (shutdown != NULL && safe_str_neq("0", shutdown)) {
ff725c
+    if (pe__shutdown_requested(this_node)) {
ff725c
         crm_info("Node %s is shutting down", this_node->details->uname);
ff725c
         this_node->details->shutdown = TRUE;
ff725c
         if (rsc) {
ff725c
@@ -1392,7 +1390,6 @@ gboolean
ff725c
 determine_online_status(xmlNode * node_state, node_t * this_node, pe_working_set_t * data_set)
ff725c
 {
ff725c
     gboolean online = FALSE;
ff725c
-    const char *shutdown = NULL;
ff725c
     const char *exp_state = crm_element_value(node_state, XML_NODE_EXPECTED);
ff725c
 
ff725c
     if (this_node == NULL) {
ff725c
@@ -1402,9 +1399,8 @@ determine_online_status(xmlNode * node_state, node_t * this_node, pe_working_set
ff725c
 
ff725c
     this_node->details->shutdown = FALSE;
ff725c
     this_node->details->expected_up = FALSE;
ff725c
-    shutdown = pe_node_attribute_raw(this_node, XML_CIB_ATTR_SHUTDOWN);
ff725c
 
ff725c
-    if (shutdown != NULL && safe_str_neq("0", shutdown)) {
ff725c
+    if (pe__shutdown_requested(this_node)) {
ff725c
         this_node->details->shutdown = TRUE;
ff725c
 
ff725c
     } else if (safe_str_eq(exp_state, CRMD_JOINSTATE_MEMBER)) {
ff725c
diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c
ff725c
index 5b893f7..c5fd0f7 100644
ff725c
--- a/lib/pengine/utils.c
ff725c
+++ b/lib/pengine/utils.c
ff725c
@@ -2510,3 +2510,23 @@ void pe_action_set_reason(pe_action_t *action, const char *reason, bool overwrit
ff725c
         }
ff725c
     }
ff725c
 }
ff725c
+
ff725c
+/*!
ff725c
+ * \internal
ff725c
+ * \brief Check whether shutdown has been requested for a node
ff725c
+ *
ff725c
+ * \param[in] node  Node to check
ff725c
+ *
ff725c
+ * \return TRUE if node has shutdown attribute set and nonzero, FALSE otherwise
ff725c
+ * \note This differs from simply using node->details->shutdown in that it can
ff725c
+ *       be used before that has been determined (and in fact to determine it),
ff725c
+ *       and it can also be used to distinguish requested shutdown from implicit
ff725c
+ *       shutdown of remote nodes by virtue of their connection stopping.
ff725c
+ */
ff725c
+bool
ff725c
+pe__shutdown_requested(pe_node_t *node)
ff725c
+{
ff725c
+    const char *shutdown = pe_node_attribute_raw(node, XML_CIB_ATTR_SHUTDOWN);
ff725c
+
ff725c
+    return shutdown && strcmp(shutdown, "0");
ff725c
+}
ff725c
-- 
ff725c
1.8.3.1
ff725c
ff725c
ff725c
From 1e9903326a59f58d9dd2f2618d709f8aa61e41e9 Mon Sep 17 00:00:00 2001
ff725c
From: Ken Gaillot <kgaillot@redhat.com>
ff725c
Date: Wed, 5 Jun 2019 16:37:26 -0500
ff725c
Subject: [PATCH 2/4] Fix: scheduler: remote state is failed if node is
ff725c
 shutting down with connection failure
ff725c
ff725c
When determining remote state, if the connection resource is failed and not
ff725c
being started again, we consider the state to be unknown if the connection has
ff725c
a reconnect interval, because we won't know whether the connection can be
ff725c
recovered until the interval expires and we re-attempt connection.
ff725c
ff725c
However, if the node is shutting down at the time, we won't re-attempt
ff725c
connection, so consider the state failed in that case. (Note that we check the
ff725c
actual shutdown node attribute, rather than node->details->shutdown, since that
ff725c
is set for remote nodes whenever the connection is stopping.)
ff725c
ff725c
This avoids a situation where actions that cannot succeed can be scheduled on a
ff725c
remote node that's shutting down.
ff725c
---
ff725c
 daemons/schedulerd/sched_allocate.c | 3 ++-
ff725c
 1 file changed, 2 insertions(+), 1 deletion(-)
ff725c
ff725c
diff --git a/daemons/schedulerd/sched_allocate.c b/daemons/schedulerd/sched_allocate.c
ff725c
index 3363a72..b7d1b48 100644
ff725c
--- a/daemons/schedulerd/sched_allocate.c
ff725c
+++ b/daemons/schedulerd/sched_allocate.c
ff725c
@@ -1972,7 +1972,8 @@ get_remote_node_state(pe_node_t *node)
ff725c
 
ff725c
         if ((remote_rsc->next_role == RSC_ROLE_STOPPED)
ff725c
             && remote_rsc->remote_reconnect_ms
ff725c
-            && node->details->remote_was_fenced) {
ff725c
+            && node->details->remote_was_fenced
ff725c
+            && !pe__shutdown_requested(node)) {
ff725c
 
ff725c
             /* We won't know whether the connection is recoverable until the
ff725c
              * reconnect interval expires and we reattempt connection.
ff725c
-- 
ff725c
1.8.3.1
ff725c
ff725c
ff725c
From ea70750d04219618b5feeda04443b27616e441a0 Mon Sep 17 00:00:00 2001
ff725c
From: Ken Gaillot <kgaillot@redhat.com>
ff725c
Date: Wed, 5 Jun 2019 16:43:19 -0500
ff725c
Subject: [PATCH 3/4] Fix: libpe_status: don't order implied stops relative to
ff725c
 a remote connection
ff725c
ff725c
Actions behind a remote connection are ordered relative to any start or stop of
ff725c
the remote connection. However, if the action is a stop implied due to fencing,
ff725c
it does not require the remote connection, and the ordering should not be done.
ff725c
ff725c
This avoids a delay in the remote connection recovery if it is failed, e.g.
ff725c
previously the ordering would look like:
ff725c
ff725c
   fence remote node -> implied stop of resource on remote -> stop connection
ff725c
ff725c
Now, the connection stop can proceed simultaneously with the remote node
ff725c
fencing.
ff725c
---
ff725c
 daemons/schedulerd/sched_allocate.c | 11 +++++------
ff725c
 1 file changed, 5 insertions(+), 6 deletions(-)
ff725c
ff725c
diff --git a/daemons/schedulerd/sched_allocate.c b/daemons/schedulerd/sched_allocate.c
ff725c
index b7d1b48..9f82c00 100644
ff725c
--- a/daemons/schedulerd/sched_allocate.c
ff725c
+++ b/daemons/schedulerd/sched_allocate.c
ff725c
@@ -2065,14 +2065,13 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set)
ff725c
                                        pe_order_implies_first, data_set);
ff725c
 
ff725c
             } else if(state == remote_state_failed) {
ff725c
-                /* We would only be here if the resource is
ff725c
-                 * running on the remote node.  Since we have no
ff725c
-                 * way to stop it, it is necessary to fence the
ff725c
-                 * node.
ff725c
+                /* The resource is active on the node, but since we don't have a
ff725c
+                 * valid connection, the only way to stop the resource is by
ff725c
+                 * fencing the node. There is no need to order the stop relative
ff725c
+                 * to the remote connection, since the stop will become implied
ff725c
+                 * by the fencing.
ff725c
                  */
ff725c
                 pe_fence_node(data_set, action->node, "resources are active and the connection is unrecoverable");
ff725c
-                order_action_then_stop(action, remote_rsc,
ff725c
-                                       pe_order_implies_first, data_set);
ff725c
 
ff725c
             } else if(remote_rsc->next_role == RSC_ROLE_STOPPED) {
ff725c
                 /* State must be remote_state_unknown or remote_state_stopped.
ff725c
-- 
ff725c
1.8.3.1
ff725c
ff725c
ff725c
From 091c367369b892d26fe0de99d35cf521b6249d10 Mon Sep 17 00:00:00 2001
ff725c
From: Ken Gaillot <kgaillot@redhat.com>
ff725c
Date: Sat, 8 Jun 2019 16:51:20 -0500
ff725c
Subject: [PATCH 4/4] Test: cts-scheduler: update regression tests for remote
ff725c
 connection ordering change
ff725c
ff725c
Remote connection stops no longer have to wait for implied stops of resources
ff725c
behind the connection.
ff725c
ff725c
Unchanged from before, if the remote connection stops are implied themselves,
ff725c
they can be confirmed immediately without waiting for their host's fencing,
ff725c
because remote connections have "requires" set to "quorum" rather than
ff725c
"fencing".
ff725c
---
ff725c
 cts/scheduler/order-expired-failure.dot               |  1 -
ff725c
 cts/scheduler/order-expired-failure.exp               |  6 +-----
ff725c
 cts/scheduler/order-expired-failure.summary           |  2 +-
ff725c
 cts/scheduler/remote-connection-unrecoverable.dot     |  1 -
ff725c
 cts/scheduler/remote-connection-unrecoverable.exp     |   6+-----
ff725c
 cts/scheduler/remote-connection-unrecoverable.summary |  2 +-
ff725c
 cts/scheduler/remote-fence-before-reconnect.dot       |  1 -
ff725c
 cts/scheduler/remote-fence-before-reconnect.exp       |  6 +-----
ff725c
 cts/scheduler/remote-fence-before-reconnect.summary   |  2 +-
ff725c
 cts/scheduler/remote-recover-all.dot                  |  2 --
ff725c
 cts/scheduler/remote-recover-all.exp                  | 12 ++----------
ff725c
 cts/scheduler/remote-recover-all.summary              |  4 ++--
ff725c
 cts/scheduler/remote-recover-no-resources.dot         |  1 -
ff725c
 cts/scheduler/remote-recover-no-resources.exp         |  6 +-----
ff725c
 cts/scheduler/remote-recover-no-resources.summary     |  2 +-
ff725c
 cts/scheduler/remote-recover-unknown.dot              |  1 -
ff725c
 cts/scheduler/remote-recover-unknown.exp              |  6 +-----
ff725c
 cts/scheduler/remote-recover-unknown.summary          |  2 +-
ff725c
 18 files changed, 14 insertions(+), 53 deletions(-)
ff725c
ff725c
diff --git a/cts/scheduler/order-expired-failure.dot b/cts/scheduler/order-expired-failure.dot
ff725c
index 2e9963b..5c21d5d 100644
ff725c
--- a/cts/scheduler/order-expired-failure.dot
ff725c
+++ b/cts/scheduler/order-expired-failure.dot
ff725c
@@ -4,7 +4,6 @@ digraph "g" {
ff725c
 "compute-unfence-trigger-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
ff725c
 "compute-unfence-trigger-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
ff725c
 "compute-unfence-trigger_stop_0 overcloud-novacompute-1" -> "compute-unfence-trigger-clone_stopped_0" [ style = bold]
ff725c
-"compute-unfence-trigger_stop_0 overcloud-novacompute-1" -> "overcloud-novacompute-1_stop_0 controller-1" [ style = bold]
ff725c
 "compute-unfence-trigger_stop_0 overcloud-novacompute-1" [ style=bold color="green" fontcolor="orange"]
ff725c
 "ip-10.0.0.110_monitor_10000 controller-1" [ style=bold color="green" fontcolor="black"]
ff725c
 "ip-10.0.0.110_start_0 controller-1" -> "ip-10.0.0.110_monitor_10000 controller-1" [ style = bold]
ff725c
diff --git a/cts/scheduler/order-expired-failure.exp b/cts/scheduler/order-expired-failure.exp
ff725c
index c476bc2..4a50493 100644
ff725c
--- a/cts/scheduler/order-expired-failure.exp
ff725c
+++ b/cts/scheduler/order-expired-failure.exp
ff725c
@@ -9,11 +9,7 @@
ff725c
         </downed>
ff725c
       </rsc_op>
ff725c
     </action_set>
ff725c
-    <inputs>
ff725c
-      <trigger>
ff725c
-        <pseudo_event id="220" operation="stop" operation_key="compute-unfence-trigger_stop_0" internal_operation_key="compute-unfence-trigger:1_stop_0"/>
ff725c
-      </trigger>
ff725c
-    </inputs>
ff725c
+    <inputs/>
ff725c
   </synapse>
ff725c
   <synapse id="1">
ff725c
     <action_set>
ff725c
diff --git a/cts/scheduler/order-expired-failure.summary b/cts/scheduler/order-expired-failure.summary
ff725c
index c86bb91..2cf43ed 100644
ff725c
--- a/cts/scheduler/order-expired-failure.summary
ff725c
+++ b/cts/scheduler/order-expired-failure.summary
ff725c
@@ -52,6 +52,7 @@ Transition Summary:
ff725c
  * Stop       compute-unfence-trigger:1            ( overcloud-novacompute-1 )   due to node availability
ff725c
 
ff725c
 Executing cluster transition:
ff725c
+ * Resource action: overcloud-novacompute-1 stop on controller-1
ff725c
  * Resource action: stonith-fence_compute-fence-nova stop on controller-2
ff725c
  * Fencing overcloud-novacompute-1 (reboot)
ff725c
  * Cluster action:  clear_failcount for overcloud-novacompute-1 on controller-1
ff725c
@@ -62,7 +63,6 @@ Executing cluster transition:
ff725c
  * Resource action: ip-10.0.0.110   monitor=10000 on controller-1
ff725c
  * Pseudo action:   compute-unfence-trigger_stop_0
ff725c
  * Pseudo action:   compute-unfence-trigger-clone_stopped_0
ff725c
- * Resource action: overcloud-novacompute-1 stop on controller-1
ff725c
 Using the original execution date of: 2018-04-09 07:55:35Z
ff725c
 
ff725c
 Revised cluster status:
ff725c
diff --git a/cts/scheduler/remote-connection-unrecoverable.dot b/cts/scheduler/remote-connection-unrecoverable.dot
ff725c
index c86bb91..2cf43ed 100644
ff725c
--- a/cts/scheduler/remote-connection-unrecoverable.dot
ff725c
+++ b/cts/scheduler/remote-connection-unrecoverable.dot
ff725c
@@ -12,7 +12,6 @@
ff725c
 "rsc1_monitor_10000 node2" [ style=bold color="green" fontcolor="black"]
ff725c
 "rsc1_start_0 node2" -> "rsc1_monitor_10000 node2" [ style = bold]
ff725c
 "rsc1_start_0 node2" [ style=bold color="green" fontcolor="black"]
ff725c
-"rsc1_stop_0 remote1" -> "remote1_stop_0 node1" [ style = bold]
ff725c
 "rsc1_stop_0 remote1" -> "rsc1_delete_0 remote1" [ style = dashed]
ff725c
 "rsc1_stop_0 remote1" -> "rsc1_start_0 node2" [ style = bold]
ff725c
 "rsc1_stop_0 remote1" -> "rsc2-master_demote_0" [ style = bold]
ff725c
ff725c
diff --git a/cts/scheduler/remote-connection-unrecoverable.exp b/cts/scheduler/remote-connection-unrecoverable.exp
ff725c
index c86bb91..2cf43ed 100644
ff725c
--- a/cts/scheduler/remote-connection-unrecoverable.exp
ff725c
+++ b/cts/scheduler/remote-connection-unrecoverable.exp
ff725c
@@ -5,11 +5,7 @@
ff725c
         <attributes CRM_meta_timeout="20000"  reconnect_interval="60"/>
ff725c
       </pseudo_event>
ff725c
     </action_set>
ff725c
-    <inputs>
ff725c
-      <trigger>
ff725c
-        <pseudo_event id="6" operation="stop" operation_key="rsc1_stop_0"/>
ff725c
-      </trigger>
ff725c
-    </inputs>
ff725c
+    <inputs/>
ff725c
   </synapse>
ff725c
   <synapse id="1">
ff725c
     <action_set>
ff725c
ff725c
diff --git a/cts/scheduler/remote-connection-unrecoverable.summary b/cts/scheduler/remote-connection-unrecoverable.summary
ff725c
index 23fa9ca..caff564 100644
ff725c
--- a/cts/scheduler/remote-connection-unrecoverable.summary
ff725c
+++ b/cts/scheduler/remote-connection-unrecoverable.summary
ff725c
@@ -21,6 +21,7 @@ Transition Summary:
ff725c
  * Stop       rsc2:0      (     Master node1 )   due to node availability
ff725c
 
ff725c
 Executing cluster transition:
ff725c
+ * Pseudo action:   remote1_stop_0
ff725c
  * Resource action: killer          stop on node2
ff725c
  * Resource action: rsc1            monitor on node2
ff725c
  * Fencing node1 (reboot)
ff725c
@@ -29,7 +30,6 @@ Executing cluster transition:
ff725c
  * Resource action: killer          monitor=60000 on node2
ff725c
  * Pseudo action:   rsc1_stop_0
ff725c
  * Pseudo action:   rsc2-master_demote_0
ff725c
- * Pseudo action:   remote1_stop_0
ff725c
  * Resource action: rsc1            start on node2
ff725c
  * Pseudo action:   rsc2_demote_0
ff725c
  * Pseudo action:   rsc2-master_demoted_0
ff725c
diff --git a/cts/scheduler/remote-fence-before-reconnect.dot b/cts/scheduler/remote-fence-before-reconnect.dot
ff725c
index 4ced43e..5812b7f 100644
ff725c
--- a/cts/scheduler/remote-fence-before-reconnect.dot
ff725c
+++ b/cts/scheduler/remote-fence-before-reconnect.dot
ff725c
@@ -3,7 +3,6 @@
ff725c
 "fake2_monitor_10000 c7auto1" [ style=bold color="green" fontcolor="black"]
ff725c
 "fake2_start_0 c7auto1" -> "fake2_monitor_10000 c7auto1" [ style = bold]
ff725c
 "fake2_start_0 c7auto1" [ style=bold color="green" fontcolor="black"]
ff725c
-"fake2_stop_0 c7auto4" -> "c7auto4_stop_0 c7auto1" [ style = bold]
ff725c
 "fake2_stop_0 c7auto4" -> "fake2_start_0 c7auto1" [ style = bold]
ff725c
 "fake2_stop_0 c7auto4" [ style=bold color="green" fontcolor="orange"]
ff725c
 "stonith 'reboot' c7auto4" -> "fake2_start_0 c7auto1" [ style = bold]
ff725c
diff --git a/cts/scheduler/remote-fence-before-reconnect.exp b/cts/scheduler/remote-fence-before-reconnect.exp
ff725c
index f99d9ef..f506f85 100644
ff725c
--- a/cts/scheduler/remote-fence-before-reconnect.exp
ff725c
+++ b/cts/scheduler/remote-fence-before-reconnect.exp
ff725c
@@ -9,11 +9,7 @@
ff725c
         </downed>
ff725c
       </rsc_op>
ff725c
     </action_set>
ff725c
-    <inputs>
ff725c
-      <trigger>
ff725c
-        <pseudo_event id="13" operation="stop" operation_key="fake2_stop_0"/>
ff725c
-      </trigger>
ff725c
-    </inputs>
ff725c
+    <inputs/>
ff725c
   </synapse>
ff725c
   <synapse id="1">
ff725c
     <action_set>
ff725c
diff --git a/cts/scheduler/remote-fence-before-reconnect.summary b/cts/scheduler/remote-fence-before-reconnect.summary
ff725c
index f61e18b..03eac20 100644
ff725c
--- a/cts/scheduler/remote-fence-before-reconnect.summary
ff725c
+++ b/cts/scheduler/remote-fence-before-reconnect.summary
ff725c
@@ -17,9 +17,9 @@ Transition Summary:
ff725c
  * Move       fake2       ( c7auto4 -> c7auto1 )  
ff725c
 
ff725c
 Executing cluster transition:
ff725c
+ * Resource action: c7auto4         stop on c7auto1
ff725c
  * Fencing c7auto4 (reboot)
ff725c
  * Pseudo action:   fake2_stop_0
ff725c
- * Resource action: c7auto4         stop on c7auto1
ff725c
  * Resource action: fake2           start on c7auto1
ff725c
  * Resource action: fake2           monitor=10000 on c7auto1
ff725c
 
ff725c
diff --git a/cts/scheduler/remote-recover-all.dot b/cts/scheduler/remote-recover-all.dot
ff725c
index deed802..4128b10 100644
ff725c
--- a/cts/scheduler/remote-recover-all.dot
ff725c
+++ b/cts/scheduler/remote-recover-all.dot
ff725c
@@ -19,7 +19,6 @@ digraph "g" {
ff725c
 "galera_demote_0 galera-2" -> "galera_stop_0 galera-2" [ style = bold]
ff725c
 "galera_demote_0 galera-2" [ style=bold color="green" fontcolor="orange"]
ff725c
 "galera_monitor_10000 galera-0" [ style=bold color="green" fontcolor="black"]
ff725c
-"galera_stop_0 galera-2" -> "galera-2_stop_0 controller-1" [ style = bold]
ff725c
 "galera_stop_0 galera-2" -> "galera-master_stopped_0" [ style = bold]
ff725c
 "galera_stop_0 galera-2" [ style=bold color="green" fontcolor="orange"]
ff725c
 "haproxy-clone_stop_0" -> "haproxy-clone_stopped_0" [ style = bold]
ff725c
@@ -60,7 +59,6 @@ digraph "g" {
ff725c
 "rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 messaging-0" [ style = bold]
ff725c
 "rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 messaging-2" [ style = bold]
ff725c
 "rabbitmq_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"]
ff725c
-"rabbitmq_stop_0 messaging-1" -> "messaging-1_stop_0 controller-1" [ style = bold]
ff725c
 "rabbitmq_stop_0 messaging-1" -> "rabbitmq-clone_stopped_0" [ style = bold]
ff725c
 "rabbitmq_stop_0 messaging-1" [ style=bold color="green" fontcolor="orange"]
ff725c
 "redis-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"]
ff725c
diff --git a/cts/scheduler/remote-recover-all.exp b/cts/scheduler/remote-recover-all.exp
ff725c
index 8137ffb..0cb51f6 100644
ff725c
--- a/cts/scheduler/remote-recover-all.exp
ff725c
+++ b/cts/scheduler/remote-recover-all.exp
ff725c
@@ -5,11 +5,7 @@
ff725c
         <attributes CRM_meta_name="stop" CRM_meta_timeout="60000"  reconnect_interval="60"/>
ff725c
       </pseudo_event>
ff725c
     </action_set>
ff725c
-    <inputs>
ff725c
-      <trigger>
ff725c
-        <pseudo_event id="39" operation="stop" operation_key="rabbitmq_stop_0" internal_operation_key="rabbitmq:2_stop_0"/>
ff725c
-      </trigger>
ff725c
-    </inputs>
ff725c
+    <inputs/>
ff725c
   </synapse>
ff725c
   <synapse id="1">
ff725c
     <action_set>
ff725c
@@ -57,11 +53,7 @@
ff725c
         <attributes CRM_meta_name="stop" CRM_meta_timeout="60000"  reconnect_interval="60"/>
ff725c
       </pseudo_event>
ff725c
     </action_set>
ff725c
-    <inputs>
ff725c
-      <trigger>
ff725c
-        <pseudo_event id="49" operation="stop" operation_key="galera_stop_0" internal_operation_key="galera:1_stop_0"/>
ff725c
-      </trigger>
ff725c
-    </inputs>
ff725c
+    <inputs/>
ff725c
   </synapse>
ff725c
   <synapse id="5" priority="1000000">
ff725c
     <action_set>
ff725c
diff --git a/cts/scheduler/remote-recover-all.summary b/cts/scheduler/remote-recover-all.summary
ff725c
index 2ac0c6a..d095fdd 100644
ff725c
--- a/cts/scheduler/remote-recover-all.summary
ff725c
+++ b/cts/scheduler/remote-recover-all.summary
ff725c
@@ -56,7 +56,9 @@ Transition Summary:
ff725c
  * Move       stonith-fence_ipmilan-5254005bdbb5     ( controller-1 -> controller-2 )  
ff725c
 
ff725c
 Executing cluster transition:
ff725c
+ * Pseudo action:   messaging-1_stop_0
ff725c
  * Pseudo action:   galera-0_stop_0
ff725c
+ * Pseudo action:   galera-2_stop_0
ff725c
  * Pseudo action:   galera-master_demote_0
ff725c
  * Pseudo action:   redis-master_pre_notify_stop_0
ff725c
  * Resource action: stonith-fence_ipmilan-525400bbf613 stop on controller-0
ff725c
@@ -94,7 +96,6 @@ Executing cluster transition:
ff725c
  * Resource action: stonith-fence_ipmilan-525400b4f6bd monitor=60000 on controller-0
ff725c
  * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2
ff725c
  * Resource action: galera-0        monitor=20000 on controller-2
ff725c
- * Pseudo action:   galera-2_stop_0
ff725c
  * Resource action: rabbitmq        notify on messaging-2
ff725c
  * Resource action: rabbitmq        notify on messaging-0
ff725c
  * Pseudo action:   rabbitmq_notified_0
ff725c
@@ -107,7 +108,6 @@ Executing cluster transition:
ff725c
  * Resource action: ip-172.17.1.17  start on controller-2
ff725c
  * Resource action: ip-172.17.4.11  start on controller-2
ff725c
  * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2
ff725c
- * Pseudo action:   messaging-1_stop_0
ff725c
  * Pseudo action:   redis_notified_0
ff725c
  * Resource action: ip-172.17.1.14  monitor=10000 on controller-2
ff725c
  * Resource action: ip-172.17.1.17  monitor=10000 on controller-2
ff725c
diff --git a/cts/scheduler/remote-recover-no-resources.dot b/cts/scheduler/remote-recover-no-resources.dot
ff725c
index ef78aa6..a2f8ce0 100644
ff725c
--- a/cts/scheduler/remote-recover-no-resources.dot
ff725c
+++ b/cts/scheduler/remote-recover-no-resources.dot
ff725c
@@ -45,7 +45,6 @@ digraph "g" {
ff725c
 "rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 messaging-0" [ style = bold]
ff725c
 "rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 messaging-2" [ style = bold]
ff725c
 "rabbitmq_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"]
ff725c
-"rabbitmq_stop_0 messaging-1" -> "messaging-1_stop_0 controller-1" [ style = bold]
ff725c
 "rabbitmq_stop_0 messaging-1" -> "rabbitmq-clone_stopped_0" [ style = bold]
ff725c
 "rabbitmq_stop_0 messaging-1" [ style=bold color="green" fontcolor="orange"]
ff725c
 "redis-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"]
ff725c
diff --git a/cts/scheduler/remote-recover-no-resources.exp b/cts/scheduler/remote-recover-no-resources.exp
ff725c
index 8a67c11..90470fb 100644
ff725c
--- a/cts/scheduler/remote-recover-no-resources.exp
ff725c
+++ b/cts/scheduler/remote-recover-no-resources.exp
ff725c
@@ -5,11 +5,7 @@
ff725c
         <attributes CRM_meta_name="stop" CRM_meta_timeout="60000"  reconnect_interval="60"/>
ff725c
       </pseudo_event>
ff725c
     </action_set>
ff725c
-    <inputs>
ff725c
-      <trigger>
ff725c
-        <pseudo_event id="38" operation="stop" operation_key="rabbitmq_stop_0" internal_operation_key="rabbitmq:2_stop_0"/>
ff725c
-      </trigger>
ff725c
-    </inputs>
ff725c
+    <inputs/>
ff725c
   </synapse>
ff725c
   <synapse id="1">
ff725c
     <action_set>
ff725c
diff --git a/cts/scheduler/remote-recover-no-resources.summary b/cts/scheduler/remote-recover-no-resources.summary
ff725c
index 89da784..18a989b 100644
ff725c
--- a/cts/scheduler/remote-recover-no-resources.summary
ff725c
+++ b/cts/scheduler/remote-recover-no-resources.summary
ff725c
@@ -54,6 +54,7 @@ Transition Summary:
ff725c
  * Move       stonith-fence_ipmilan-5254005bdbb5     ( controller-1 -> controller-2 )  
ff725c
 
ff725c
 Executing cluster transition:
ff725c
+ * Pseudo action:   messaging-1_stop_0
ff725c
  * Pseudo action:   galera-0_stop_0
ff725c
  * Pseudo action:   galera-2_stop_0
ff725c
  * Pseudo action:   redis-master_pre_notify_stop_0
ff725c
@@ -92,7 +93,6 @@ Executing cluster transition:
ff725c
  * Pseudo action:   ip-172.17.1.17_stop_0
ff725c
  * Pseudo action:   ip-172.17.4.11_stop_0
ff725c
  * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2
ff725c
- * Pseudo action:   messaging-1_stop_0
ff725c
  * Resource action: redis           notify on controller-0
ff725c
  * Resource action: redis           notify on controller-2
ff725c
  * Pseudo action:   redis-master_confirmed-post_notify_stopped_0
ff725c
diff --git a/cts/scheduler/remote-recover-unknown.dot b/cts/scheduler/remote-recover-unknown.dot
ff725c
index 5cd760b..29ab59f 100644
ff725c
--- a/cts/scheduler/remote-recover-unknown.dot
ff725c
+++ b/cts/scheduler/remote-recover-unknown.dot
ff725c
@@ -46,7 +46,6 @@ digraph "g" {
ff725c
 "rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 messaging-0" [ style = bold]
ff725c
 "rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 messaging-2" [ style = bold]
ff725c
 "rabbitmq_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"]
ff725c
-"rabbitmq_stop_0 messaging-1" -> "messaging-1_stop_0 controller-1" [ style = bold]
ff725c
 "rabbitmq_stop_0 messaging-1" -> "rabbitmq-clone_stopped_0" [ style = bold]
ff725c
 "rabbitmq_stop_0 messaging-1" [ style=bold color="green" fontcolor="orange"]
ff725c
 "redis-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"]
ff725c
diff --git a/cts/scheduler/remote-recover-unknown.exp b/cts/scheduler/remote-recover-unknown.exp
ff725c
index ac6f004..82cb65f7 100644
ff725c
--- a/cts/scheduler/remote-recover-unknown.exp
ff725c
+++ b/cts/scheduler/remote-recover-unknown.exp
ff725c
@@ -5,11 +5,7 @@
ff725c
         <attributes CRM_meta_name="stop" CRM_meta_timeout="60000"  reconnect_interval="60"/>
ff725c
       </pseudo_event>
ff725c
     </action_set>
ff725c
-    <inputs>
ff725c
-      <trigger>
ff725c
-        <pseudo_event id="39" operation="stop" operation_key="rabbitmq_stop_0" internal_operation_key="rabbitmq:2_stop_0"/>
ff725c
-      </trigger>
ff725c
-    </inputs>
ff725c
+    <inputs/>
ff725c
   </synapse>
ff725c
   <synapse id="1">
ff725c
     <action_set>
ff725c
diff --git a/cts/scheduler/remote-recover-unknown.summary b/cts/scheduler/remote-recover-unknown.summary
ff725c
index 2c60713..4d7a411 100644
ff725c
--- a/cts/scheduler/remote-recover-unknown.summary
ff725c
+++ b/cts/scheduler/remote-recover-unknown.summary
ff725c
@@ -55,6 +55,7 @@ Transition Summary:
ff725c
  * Move       stonith-fence_ipmilan-5254005bdbb5     ( controller-1 -> controller-2 )  
ff725c
 
ff725c
 Executing cluster transition:
ff725c
+ * Pseudo action:   messaging-1_stop_0
ff725c
  * Pseudo action:   galera-0_stop_0
ff725c
  * Pseudo action:   galera-2_stop_0
ff725c
  * Pseudo action:   redis-master_pre_notify_stop_0
ff725c
@@ -94,7 +95,6 @@ Executing cluster transition:
ff725c
  * Pseudo action:   ip-172.17.1.17_stop_0
ff725c
  * Pseudo action:   ip-172.17.4.11_stop_0
ff725c
  * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2
ff725c
- * Pseudo action:   messaging-1_stop_0
ff725c
  * Resource action: redis           notify on controller-0
ff725c
  * Resource action: redis           notify on controller-2
ff725c
  * Pseudo action:   redis-master_confirmed-post_notify_stopped_0
ff725c
-- 
ff725c
1.8.3.1
ff725c