File pacemaker-pengine-migration-behind-migrating-remote.patch of Package pacemaker.14737

commit 2b1aae074e563b9e15ac60ce2aae5b387bb8af0b
Author: Ken Gaillot <kgaillot@redhat.com>
Date:   Thu Aug 24 18:32:59 2017 -0500

    Fix: pengine: handle resource migrating behind a migrating remote connection

Index: pacemaker-1.1.16+20170320.77ea74d/pengine/allocate.c
===================================================================
--- pacemaker-1.1.16+20170320.77ea74d.orig/pengine/allocate.c
+++ pacemaker-1.1.16+20170320.77ea74d/pengine/allocate.c
@@ -1800,6 +1800,14 @@ apply_container_ordering(action_t *actio
               is_set(container->flags, pe_rsc_failed)? "failed " : "",
               container->id);
 
+    if (safe_str_eq(action->task, CRMD_ACTION_MIGRATE)
+        || safe_str_eq(action->task, CRMD_ACTION_MIGRATE)) {
+        /* Migration ops map to "no_action", but we need to apply the same
+         * ordering as for stop or demote (see get_router_node()).
+         */
+        task = stop_rsc;
+    }
+
     switch (task) {
         case start_rsc:
         case action_promote:
@@ -1970,6 +1978,15 @@ apply_remote_ordering(action_t *action,
               action->task, action->uuid,
               is_set(remote_rsc->flags, pe_rsc_failed)? "failed " : "",
               remote_rsc->id, state);
+
+    if (safe_str_eq(action->task, CRMD_ACTION_MIGRATE)
+        || safe_str_eq(action->task, CRMD_ACTION_MIGRATE)) {
+        /* Migration ops map to "no_action", but we need to apply the same
+         * ordering as for stop or demote (see get_router_node()).
+         */
+        task = stop_rsc;
+    }
+
     switch (task) {
         case start_rsc:
         case action_promote:
Index: pacemaker-1.1.16+20170320.77ea74d/pengine/test10/migration-behind-migrating-remote.dot
===================================================================
--- pacemaker-1.1.16+20170320.77ea74d.orig/pengine/test10/migration-behind-migrating-remote.dot
+++ pacemaker-1.1.16+20170320.77ea74d/pengine/test10/migration-behind-migrating-remote.dot
@@ -7,7 +7,6 @@ digraph "g" {
 "remote1_migrate_to_0 node1" [ style=bold color="green" fontcolor="black"]
 "remote1_monitor_60000 node2" [ style=bold color="green" fontcolor="black"]
 "remote1_start_0 node2" -> "remote1_monitor_60000 node2" [ style = bold]
-"remote1_start_0 node2" -> "rsc1_migrate_to_0 remote1" [ style = bold]
 "remote1_start_0 node2" [ style=bold color="green" fontcolor="orange"]
 "remote1_stop_0 node1" -> "all_stopped" [ style = bold]
 "remote1_stop_0 node1" -> "remote1_start_0 node2" [ style = bold]
@@ -15,6 +14,7 @@ digraph "g" {
 "rsc1_migrate_from_0 remote2" -> "rsc1_start_0 remote2" [ style = bold]
 "rsc1_migrate_from_0 remote2" -> "rsc1_stop_0 remote1" [ style = bold]
 "rsc1_migrate_from_0 remote2" [ style=bold color="green" fontcolor="black"]
+"rsc1_migrate_to_0 remote1" -> "remote1_stop_0 node1" [ style = bold]
 "rsc1_migrate_to_0 remote1" -> "rsc1_migrate_from_0 remote2" [ style = bold]
 "rsc1_migrate_to_0 remote1" [ style=bold color="green" fontcolor="black"]
 "rsc1_monitor_10000 remote2" [ style=bold color="green" fontcolor="black"]
Index: pacemaker-1.1.16+20170320.77ea74d/pengine/test10/migration-behind-migrating-remote.exp
===================================================================
--- pacemaker-1.1.16+20170320.77ea74d.orig/pengine/test10/migration-behind-migrating-remote.exp
+++ pacemaker-1.1.16+20170320.77ea74d/pengine/test10/migration-behind-migrating-remote.exp
@@ -19,11 +19,7 @@
         <attributes CRM_meta_migrate_source="remote1" CRM_meta_migrate_target="remote2" CRM_meta_on_node="remote1" CRM_meta_on_node_uuid="remote1" CRM_meta_record_pending="true" CRM_meta_timeout="20000" />
       </rsc_op>
     </action_set>
-    <inputs>
-      <trigger>
-        <pseudo_event id="14" operation="start" operation_key="remote1_start_0"/>
-      </trigger>
-    </inputs>
+    <inputs/>
   </synapse>
   <synapse id="2">
     <action_set>
@@ -128,6 +124,9 @@
         <rsc_op id="8" operation="stop" operation_key="rsc1_stop_0" on_node="remote1" on_node_uuid="remote1" router_node="node1"/>
       </trigger>
       <trigger>
+        <rsc_op id="11" operation="migrate_to" operation_key="rsc1_migrate_to_0" on_node="remote1" on_node_uuid="remote1" router_node="node1"/>
+      </trigger>
+      <trigger>
         <rsc_op id="17" operation="migrate_from" operation_key="remote1_migrate_from_0" on_node="node2" on_node_uuid="2"/>
       </trigger>
     </inputs>
Index: pacemaker-1.1.16+20170320.77ea74d/pengine/test10/migration-behind-migrating-remote.scores
===================================================================
--- pacemaker-1.1.16+20170320.77ea74d.orig/pengine/test10/migration-behind-migrating-remote.scores
+++ pacemaker-1.1.16+20170320.77ea74d/pengine/test10/migration-behind-migrating-remote.scores
@@ -1,6 +1,4 @@
 Allocation scores:
-An invalid transition was produced
-Transition failed: terminated
 Using the original execution date of: 2017-08-21 17:12:54Z
 native_color: Fencing allocation score on node1: 0
 native_color: Fencing allocation score on node2: INFINITY
Index: pacemaker-1.1.16+20170320.77ea74d/pengine/test10/migration-behind-migrating-remote.summary
===================================================================
--- pacemaker-1.1.16+20170320.77ea74d.orig/pengine/test10/migration-behind-migrating-remote.summary
+++ pacemaker-1.1.16+20170320.77ea74d/pengine/test10/migration-behind-migrating-remote.summary
@@ -14,10 +14,17 @@ Transition Summary:
  * Migrate remote1	(Started node1 -> node2)
 
 Executing cluster transition:
+ * Resource action: rsc1            migrate_to on remote1
  * Resource action: remote1         migrate_to on node1
+ * Resource action: rsc1            migrate_from on remote2
+ * Resource action: rsc1            stop on remote1
  * Resource action: remote1         migrate_from on node2
-Transition failed: terminated
-An invalid transition was produced
+ * Resource action: remote1         stop on node1
+ * Pseudo action:   all_stopped
+ * Pseudo action:   rsc1_start_0
+ * Pseudo action:   remote1_start_0
+ * Resource action: rsc1            monitor=10000 on remote2
+ * Resource action: remote1         monitor=60000 on node2
 Using the original execution date of: 2017-08-21 17:12:54Z
 
 Revised cluster status:
@@ -25,7 +32,7 @@ Online: [ node1 node2 ]
 RemoteOnline: [ remote1 remote2 ]
 
  Fencing	(stonith:fence_xvm):	Started node2
- rsc1	(ocf::pacemaker:Dummy):	Started remote1
+ rsc1	(ocf::pacemaker:Dummy):	Started remote2
  remote1	(ocf::pacemaker:remote):	Started node2
  remote2	(ocf::pacemaker:remote):	Started node2
 
openSUSE Build Service is sponsored by