From 87856f05a85e2d20b7265b78373657e97dbf18e4 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Wed, 29 Nov 2017 17:21:29 -0600 Subject: [PATCH 01/16] Fix: attrd: ensure node name is broadcast at start-up (CLBZ#5330) This fixes a regression introduced in 1.1.18. Since c9d1c3cd, the crmd no longer explicitly clears the terminate and shutdown node attributes at first join. An unwanted side effect of this was that the attrd writer no longer reliably learned a joining node's name. If a node is known only by its ID, the writer can not write its attributes to the CIB. The worst outcome is that the joining node would be unable to shut down, since the shutdown attribute would never trigger the policy engine. The window was limited because the writer learns the node's name if a new attrd election was required, or a node attribute was set locally on the joining node. The fix is to set a new private attribute, #attrd-protocol, at attrd start-up, with the supported attrd protocol version. This has the additional benefit of allowing any node to determine the minimum supported protocol version across all active cluster nodes. --- attrd/commands.c | 30 ++++++++++++++++++++++++------ attrd/internal.h | 1 + attrd/main.c | 7 +++++++ include/crm/crm.h | 1 + 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/attrd/commands.c b/attrd/commands.c index 967703f..0a20b26 100644 --- a/attrd/commands.c +++ b/attrd/commands.c @@ -35,8 +35,9 @@ * heartbeat, CMAN, or corosync-plugin stacks) is unversioned. * * With atomic attrd, each attrd will send ATTRD_PROTOCOL_VERSION with every - * peer request and reply. Currently, there is no way to know the minimum - * version supported by all peers, which limits its usefulness. + * peer request and reply. As of Pacemaker 2.0.0, at start-up each attrd will + * also set a private attribute for itself with its version, so any attrd can + * determine the minimum version supported by all peers. * * Protocol Pacemaker Significant changes * -------- --------- ------------------- @@ -289,11 +290,10 @@ void attrd_client_clear_failure(xmlNode *xml) { #if 0 - /* @TODO This would be most efficient, but there is currently no way to - * verify that all peers support the op. If that ever changes, we could - * enable this code. + /* @TODO Track the minimum supported protocol version across all nodes, + * then enable this more-efficient code. */ - if (all_peers_support_clear_failure) { + if (compare_version("2", minimum_protocol_version) <= 0) { /* Propagate to all peers (including ourselves). * This ends up at attrd_peer_message(). */ @@ -523,6 +523,24 @@ attrd_peer_clear_failure(crm_node_t *peer, xmlNode *xml) regfree(®ex); } +/*! + \internal + \brief Broadcast private attribute for local node with protocol version +*/ +void +attrd_broadcast_protocol() +{ + xmlNode *attrd_op = create_xml_node(NULL, __FUNCTION__); + + crm_xml_add(attrd_op, F_TYPE, T_ATTRD); + crm_xml_add(attrd_op, F_ORIG, crm_system_name); + crm_xml_add(attrd_op, F_ATTRD_TASK, ATTRD_OP_UPDATE); + crm_xml_add(attrd_op, F_ATTRD_ATTRIBUTE, CRM_ATTR_PROTOCOL); + crm_xml_add(attrd_op, F_ATTRD_VALUE, ATTRD_PROTOCOL_VERSION); + crm_xml_add_int(attrd_op, F_ATTRD_IS_PRIVATE, 1); + attrd_client_update(attrd_op); +} + void attrd_peer_message(crm_node_t *peer, xmlNode *xml) { diff --git a/attrd/internal.h b/attrd/internal.h index 99fc3fd..23bcbda 100644 --- a/attrd/internal.h +++ b/attrd/internal.h @@ -53,6 +53,7 @@ election_t *writer; crm_ipcs_send_ack((client), (id), (flags), "ack", __FUNCTION__, __LINE__) void write_attributes(bool all); +void attrd_broadcast_protocol(void); void attrd_peer_message(crm_node_t *client, xmlNode *msg); void attrd_client_peer_remove(const char *client_name, xmlNode *xml); void attrd_client_clear_failure(xmlNode *xml); diff --git a/attrd/main.c b/attrd/main.c index 2670dc5..7721439 100644 --- a/attrd/main.c +++ b/attrd/main.c @@ -220,6 +220,13 @@ attrd_cib_connect(int max_retry) // Always read the CIB at start-up mainloop_set_trigger(attrd_config_read); + /* Set a private attribute for ourselves with the protocol version we + * support. This lets all nodes determine the minimum supported version + * across all nodes. It also ensures that the writer learns our node name, + * so it can send our attributes to the CIB. + */ + attrd_broadcast_protocol(); + return pcmk_ok; cleanup: diff --git a/include/crm/crm.h b/include/crm/crm.h index 05ec555..6e2bcfa 100644 --- a/include/crm/crm.h +++ b/include/crm/crm.h @@ -106,6 +106,7 @@ extern char *crm_system_name; # define CRM_ATTR_DIGESTS_ALL "#digests-all" # define CRM_ATTR_DIGESTS_SECURE "#digests-secure" # define CRM_ATTR_RA_VERSION "#ra-version" +# define CRM_ATTR_PROTOCOL "#attrd-protocol" /* Valid operations */ # define CRM_OP_NOOP "noop" -- 1.8.3.1 From a87421042f5030e6dd7823cd80d7632b91296519 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 1 Dec 2017 11:02:54 -0600 Subject: [PATCH 02/16] Refactor: pengine: functionize checking whether node was unfenced reduces code duplication and enhances readability --- pengine/native.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/pengine/native.c b/pengine/native.c index e72dec4..c998e4b 100644 --- a/pengine/native.c +++ b/pengine/native.c @@ -429,6 +429,14 @@ rsc_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes, const c return work; } +static inline bool +node_has_been_unfenced(node_t *node) +{ + const char *unfenced = pe_node_attribute_raw(node, CRM_ATTR_UNFENCED); + + return unfenced && strcmp("0", unfenced); +} + node_t * native_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) { @@ -2524,10 +2532,9 @@ StopRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * d if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { action_t *unfence = pe_fence_op(current, "on", TRUE, NULL, data_set); - const char *unfenced = pe_node_attribute_raw(current, CRM_ATTR_UNFENCED); order_actions(stop, unfence, pe_order_implies_first); - if (unfenced == NULL || safe_str_eq("0", unfenced)) { + if (!node_has_been_unfenced(current)) { pe_proc_err("Stopping %s until %s can be unfenced", rsc->id, current->details->uname); } } @@ -2547,11 +2554,9 @@ StartRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { action_t *unfence = pe_fence_op(next, "on", TRUE, NULL, data_set); - const char *unfenced = pe_node_attribute_raw(next, CRM_ATTR_UNFENCED); order_actions(unfence, start, pe_order_implies_then); - - if (unfenced == NULL || safe_str_eq("0", unfenced)) { + if (!node_has_been_unfenced(next)) { char *reason = crm_strdup_printf("Required by %s", rsc->id); trigger_unfencing(NULL, next, reason, NULL, data_set); free(reason); -- 1.8.3.1 From b6b3fb9e8c6c6b34fb39c9d7f0b89ef41e9486fa Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 1 Dec 2017 11:45:31 -0600 Subject: [PATCH 03/16] Refactor: pengine: functionize checking for unfence device Reduces code duplication and enhances readability. This also comments out some dead code from when probe_complete was still used. --- pengine/native.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/pengine/native.c b/pengine/native.c index c998e4b..e57fbc7 100644 --- a/pengine/native.c +++ b/pengine/native.c @@ -437,6 +437,13 @@ node_has_been_unfenced(node_t *node) return unfenced && strcmp("0", unfenced); } +static inline bool +is_unfence_device(resource_t *rsc, pe_working_set_t *data_set) +{ + return is_set(rsc->flags, pe_rsc_fence_device) + && is_set(data_set->flags, pe_flag_enable_unfencing); +} + node_t * native_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) { @@ -3015,12 +3022,8 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, crm_debug("Probing %s on %s (%s) %d %p", rsc->id, node->details->uname, role2text(rsc->role), is_set(probe->flags, pe_action_runnable), rsc->running_on); - if(is_set(rsc->flags, pe_rsc_fence_device) && is_set(data_set->flags, pe_flag_enable_unfencing)) { + if (is_unfence_device(rsc, data_set) || !pe_rsc_is_clone(top)) { top = rsc; - - } else if (pe_rsc_is_clone(top) == FALSE) { - top = rsc; - } else { crm_trace("Probing %s on %s (%s) as %s", rsc->id, node->details->uname, role2text(rsc->role), top->id); } @@ -3041,17 +3044,18 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, top, reload_key(rsc), NULL, pe_order_optional, data_set); - if(is_set(rsc->flags, pe_rsc_fence_device) && is_set(data_set->flags, pe_flag_enable_unfencing)) { +#if 0 + // complete is always null currently + if (!is_unfence_device(rsc, data_set)) { /* Normally rsc.start depends on probe complete which depends - * on rsc.probe. But this can't be the case in this scenario as - * it would create graph loops. + * on rsc.probe. But this can't be the case for fence devices + * with unfencing, as it would create graph loops. * * So instead we explicitly order 'rsc.probe then rsc.start' */ - - } else { order_actions(probe, complete, pe_order_implies_then); } +#endif return TRUE; } -- 1.8.3.1 From 63431baae2e544dc3b21d51b035942dfeeca5561 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 1 Dec 2017 12:06:16 -0600 Subject: [PATCH 04/16] Fix: pengine: unfence before probing or starting fence devices Regression since 7f8ba307 --- pengine/native.c | 62 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/pengine/native.c b/pengine/native.c index e57fbc7..0013e33 100644 --- a/pengine/native.c +++ b/pengine/native.c @@ -2550,6 +2550,39 @@ StopRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * d return TRUE; } +static void +order_after_unfencing(resource_t *rsc, pe_node_t *node, action_t *action, + enum pe_ordering order, pe_working_set_t *data_set) +{ + /* When unfencing is in use, we order unfence actions before any probe or + * start of resources that require unfencing, and also of fence devices. + * + * This might seem to violate the principle that fence devices require + * only quorum. However, fence agents that unfence often don't have enough + * information to even probe or start unless the node is first unfenced. + */ + if (is_unfence_device(rsc, data_set) + || is_set(rsc->flags, pe_rsc_needs_unfencing)) { + + /* Start with an optional ordering. Requiring unfencing would result in + * the node being unfenced, and all its resources being stopped, + * whenever a new resource is added -- which would be highly suboptimal. + */ + action_t *unfence = pe_fence_op(node, "on", TRUE, NULL, data_set); + + order_actions(unfence, action, order); + + if (!node_has_been_unfenced(node)) { + // But unfencing is required if it has never been done + char *reason = crm_strdup_printf("required by %s %s", + rsc->id, action->task); + + trigger_unfencing(NULL, node, reason, NULL, data_set); + free(reason); + } + } +} + gboolean StartRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * data_set) { @@ -2559,16 +2592,7 @@ StartRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * pe_rsc_trace(rsc, "%s on %s %d %d", rsc->id, next ? next->details->uname : "N/A", optional, next ? next->weight : 0); start = start_action(rsc, next, TRUE); - if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { - action_t *unfence = pe_fence_op(next, "on", TRUE, NULL, data_set); - - order_actions(unfence, start, pe_order_implies_then); - if (!node_has_been_unfenced(next)) { - char *reason = crm_strdup_printf("Required by %s", rsc->id); - trigger_unfencing(NULL, next, reason, NULL, data_set); - free(reason); - } - } + order_after_unfencing(rsc, next, start, pe_order_implies_then, data_set); if (is_set(start->flags, pe_action_runnable) && optional == FALSE) { update_action_flags(start, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); @@ -2989,23 +3013,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, probe = custom_action(rsc, key, RSC_STATUS, node, FALSE, TRUE, data_set); update_action_flags(probe, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); - /* If enabled, require unfencing before probing any fence devices - * but ensure it happens after any resources that require - * unfencing have been probed. - * - * Doing it the other way (requiring unfencing after probing - * resources that need it) would result in the node being - * unfenced, and all its resources being stopped, whenever a new - * resource is added. Which would be highly suboptimal. - * - * So essentially, at the point the fencing device(s) have been - * probed, we know the state of all resources that require - * unfencing and that unfencing occurred. - */ - if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { - action_t *unfence = pe_fence_op(node, "on", TRUE, NULL, data_set); - order_actions(unfence, probe, pe_order_optional); - } + order_after_unfencing(rsc, node, probe, pe_order_optional, data_set); /* * We need to know if it's running_on (not just known_on) this node -- 1.8.3.1 From 9d3840f374122f6258ddfe44bf85ff43d394d209 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 1 Dec 2017 12:24:55 -0600 Subject: [PATCH 05/16] Test: PE: update regression tests for unfencing change --- pengine/test10/start-then-stop-with-unfence.dot | 3 +++ pengine/test10/start-then-stop-with-unfence.exp | 15 +++++++++++++-- pengine/test10/start-then-stop-with-unfence.summary | 10 +++++----- pengine/test10/unfence-definition.dot | 2 ++ pengine/test10/unfence-definition.exp | 9 ++++++++- pengine/test10/unfence-definition.summary | 4 ++-- pengine/test10/unfence-parameters.dot | 2 ++ pengine/test10/unfence-parameters.exp | 9 ++++++++- pengine/test10/unfence-parameters.summary | 4 ++-- pengine/test10/unfence-startup.dot | 1 + pengine/test10/unfence-startup.exp | 6 +++++- pengine/test10/unfence-startup.summary | 4 ++-- 12 files changed, 53 insertions(+), 16 deletions(-) diff --git a/pengine/test10/start-then-stop-with-unfence.dot b/pengine/test10/start-then-stop-with-unfence.dot index 6e9569b..b324339 100644 --- a/pengine/test10/start-then-stop-with-unfence.dot +++ b/pengine/test10/start-then-stop-with-unfence.dot @@ -23,5 +23,8 @@ digraph "g" { "mpath-node2_monitor_0 rhel7-node1.example.com" [ style=bold color="green" fontcolor="black"] "stonith 'on' rhel7-node1.example.com" -> "ip1_start_0 rhel7-node1.example.com" [ style = bold] "stonith 'on' rhel7-node1.example.com" -> "jrummy_start_0 rhel7-node1.example.com" [ style = bold] +"stonith 'on' rhel7-node1.example.com" -> "mpath-node1_monitor_0 rhel7-node1.example.com" [ style = bold] +"stonith 'on' rhel7-node1.example.com" -> "mpath-node1_start_0 rhel7-node1.example.com" [ style = bold] +"stonith 'on' rhel7-node1.example.com" -> "mpath-node2_monitor_0 rhel7-node1.example.com" [ style = bold] "stonith 'on' rhel7-node1.example.com" [ style=bold color="green" fontcolor="black"] } diff --git a/pengine/test10/start-then-stop-with-unfence.exp b/pengine/test10/start-then-stop-with-unfence.exp index 75cb356..715ba40 100644 --- a/pengine/test10/start-then-stop-with-unfence.exp +++ b/pengine/test10/start-then-stop-with-unfence.exp @@ -6,7 +6,11 @@ - + + + + + @@ -30,6 +34,9 @@ + + + @@ -41,7 +48,11 @@ - + + + + + diff --git a/pengine/test10/start-then-stop-with-unfence.summary b/pengine/test10/start-then-stop-with-unfence.summary index 2e02a21..b2114d7 100644 --- a/pengine/test10/start-then-stop-with-unfence.summary +++ b/pengine/test10/start-then-stop-with-unfence.summary @@ -11,23 +11,23 @@ Online: [ rhel7-node1.example.com rhel7-node2.example.com ] Stopped: [ rhel7-node1.example.com ] Transition Summary: - * Fence (on) rhel7-node1.example.com 'Required by ip1' + * Fence (on) rhel7-node1.example.com 'required by mpath-node2 monitor' * Start mpath-node1 (rhel7-node1.example.com) * Move ip1 ( rhel7-node2.example.com -> rhel7-node1.example.com ) * Start jrummy:1 (rhel7-node1.example.com) Executing cluster transition: - * Resource action: mpath-node2 monitor on rhel7-node1.example.com - * Resource action: mpath-node1 monitor on rhel7-node1.example.com * Pseudo action: jrummy-clone_start_0 * Fencing rhel7-node1.example.com (on) - * Resource action: mpath-node1 start on rhel7-node1.example.com + * Resource action: mpath-node2 monitor on rhel7-node1.example.com + * Resource action: mpath-node1 monitor on rhel7-node1.example.com * Resource action: jrummy start on rhel7-node1.example.com * Pseudo action: jrummy-clone_running_0 - * Resource action: mpath-node1 monitor=60000 on rhel7-node1.example.com + * Resource action: mpath-node1 start on rhel7-node1.example.com * Resource action: ip1 stop on rhel7-node2.example.com * Resource action: jrummy monitor=10000 on rhel7-node1.example.com * Pseudo action: all_stopped + * Resource action: mpath-node1 monitor=60000 on rhel7-node1.example.com * Resource action: ip1 start on rhel7-node1.example.com * Resource action: ip1 monitor=10000 on rhel7-node1.example.com diff --git a/pengine/test10/unfence-definition.dot b/pengine/test10/unfence-definition.dot index 3bc29d3..c42391a 100644 --- a/pengine/test10/unfence-definition.dot +++ b/pengine/test10/unfence-definition.dot @@ -66,11 +66,13 @@ digraph "g" { "fencing_stop_0 virt-1" [ style=bold color="green" fontcolor="black"] "stonith 'on' virt-1" -> "clvmd_start_0 virt-1" [ style = bold] "stonith 'on' virt-1" -> "dlm_start_0 virt-1" [ style = bold] +"stonith 'on' virt-1" -> "fencing_start_0 virt-1" [ style = bold] "stonith 'on' virt-1" [ style=bold color="green" fontcolor="black"] "stonith 'on' virt-3" -> "clvmd:2_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "dlm:2_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "dlm:2_start_0 virt-3" [ style = bold] +"stonith 'on' virt-3" -> "fencing_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" [ style=bold color="green" fontcolor="black"] "stonith 'reboot' virt-4" -> "stonith_complete" [ style = bold] "stonith 'reboot' virt-4" [ style=bold color="green" fontcolor="black"] diff --git a/pengine/test10/unfence-definition.exp b/pengine/test10/unfence-definition.exp index b1e241a..25c5674 100644 --- a/pengine/test10/unfence-definition.exp +++ b/pengine/test10/unfence-definition.exp @@ -11,6 +11,9 @@ + + + @@ -28,7 +31,11 @@ - + + + + + diff --git a/pengine/test10/unfence-definition.summary b/pengine/test10/unfence-definition.summary index 4ca9344..2051c51 100644 --- a/pengine/test10/unfence-definition.summary +++ b/pengine/test10/unfence-definition.summary @@ -13,7 +13,7 @@ Online: [ virt-1 virt-2 virt-3 ] Transition Summary: * Fence (reboot) virt-4 'node is unclean' - * Fence (on) virt-3 'Required by dlm:2' + * Fence (on) virt-3 'required by fencing monitor' * Fence (on) virt-1 'Device definition changed' * Restart fencing ( virt-1 ) * Restart dlm:0 ( virt-1 ) due to required stonith @@ -23,13 +23,13 @@ Transition Summary: * Start clvmd:2 (virt-3) Executing cluster transition: - * Resource action: fencing monitor on virt-3 * Resource action: fencing stop on virt-1 * Resource action: clvmd monitor on virt-2 * Pseudo action: clvmd-clone_stop_0 * Fencing virt-4 (reboot) * Pseudo action: stonith_complete * Fencing virt-3 (on) + * Resource action: fencing monitor on virt-3 * Resource action: fencing delete on virt-1 * Resource action: dlm monitor on virt-3 * Resource action: clvmd stop on virt-1 diff --git a/pengine/test10/unfence-parameters.dot b/pengine/test10/unfence-parameters.dot index ce006c4..3c27b22 100644 --- a/pengine/test10/unfence-parameters.dot +++ b/pengine/test10/unfence-parameters.dot @@ -63,11 +63,13 @@ digraph "g" { "fencing_stop_0 virt-1" [ style=bold color="green" fontcolor="black"] "stonith 'on' virt-1" -> "clvmd_start_0 virt-1" [ style = bold] "stonith 'on' virt-1" -> "dlm_start_0 virt-1" [ style = bold] +"stonith 'on' virt-1" -> "fencing_start_0 virt-1" [ style = bold] "stonith 'on' virt-1" [ style=bold color="green" fontcolor="black"] "stonith 'on' virt-3" -> "clvmd:2_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "dlm:2_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "dlm:2_start_0 virt-3" [ style = bold] +"stonith 'on' virt-3" -> "fencing_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" [ style=bold color="green" fontcolor="black"] "stonith 'reboot' virt-4" -> "stonith_complete" [ style = bold] "stonith 'reboot' virt-4" [ style=bold color="green" fontcolor="black"] diff --git a/pengine/test10/unfence-parameters.exp b/pengine/test10/unfence-parameters.exp index b8053c7..3b73fc7 100644 --- a/pengine/test10/unfence-parameters.exp +++ b/pengine/test10/unfence-parameters.exp @@ -15,7 +15,11 @@ - + + + + + @@ -29,6 +33,9 @@ + + + diff --git a/pengine/test10/unfence-parameters.summary b/pengine/test10/unfence-parameters.summary index 5b582d9..2cc9e27 100644 --- a/pengine/test10/unfence-parameters.summary +++ b/pengine/test10/unfence-parameters.summary @@ -13,7 +13,7 @@ Online: [ virt-1 virt-2 virt-3 ] Transition Summary: * Fence (reboot) virt-4 'node is unclean' - * Fence (on) virt-3 'Required by dlm:2' + * Fence (on) virt-3 'required by fencing monitor' * Fence (on) virt-1 'Device parameters changed (reload)' * Restart fencing ( virt-1 ) due to resource definition change * Restart dlm:0 ( virt-1 ) due to required stonith @@ -24,12 +24,12 @@ Transition Summary: Executing cluster transition: * Resource action: fencing stop on virt-1 - * Resource action: fencing monitor on virt-3 * Resource action: clvmd monitor on virt-2 * Pseudo action: clvmd-clone_stop_0 * Fencing virt-4 (reboot) * Pseudo action: stonith_complete * Fencing virt-3 (on) + * Resource action: fencing monitor on virt-3 * Resource action: dlm monitor on virt-3 * Resource action: clvmd stop on virt-1 * Resource action: clvmd monitor on virt-3 diff --git a/pengine/test10/unfence-startup.dot b/pengine/test10/unfence-startup.dot index d496956..642f795 100644 --- a/pengine/test10/unfence-startup.dot +++ b/pengine/test10/unfence-startup.dot @@ -29,6 +29,7 @@ digraph "g" { "stonith 'on' virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "dlm:2_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "dlm:2_start_0 virt-3" [ style = bold] +"stonith 'on' virt-3" -> "fencing_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" [ style=bold color="green" fontcolor="black"] "stonith 'reboot' virt-4" -> "stonith_complete" [ style = bold] "stonith 'reboot' virt-4" [ style=bold color="green" fontcolor="black"] diff --git a/pengine/test10/unfence-startup.exp b/pengine/test10/unfence-startup.exp index 70c1686..bfd24c8 100644 --- a/pengine/test10/unfence-startup.exp +++ b/pengine/test10/unfence-startup.exp @@ -6,7 +6,11 @@ - + + + + + diff --git a/pengine/test10/unfence-startup.summary b/pengine/test10/unfence-startup.summary index 276358c..4601f31 100644 --- a/pengine/test10/unfence-startup.summary +++ b/pengine/test10/unfence-startup.summary @@ -13,18 +13,18 @@ Online: [ virt-1 virt-2 virt-3 ] Transition Summary: * Fence (reboot) virt-4 'node is unclean' - * Fence (on) virt-3 'Required by dlm:2' + * Fence (on) virt-3 'required by fencing monitor' * Start dlm:2 (virt-3) * Start clvmd:1 (virt-2) * Start clvmd:2 (virt-3) Executing cluster transition: - * Resource action: fencing monitor on virt-3 * Resource action: clvmd monitor on virt-2 * Fencing virt-4 (reboot) * Pseudo action: stonith_complete * Fencing virt-3 (on) * Pseudo action: all_stopped + * Resource action: fencing monitor on virt-3 * Resource action: dlm monitor on virt-3 * Pseudo action: dlm-clone_start_0 * Resource action: clvmd monitor on virt-3 -- 1.8.3.1 From c11d10ef4f04bbdb2e6b7e6251b88e50faccaaca Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 1 Dec 2017 14:36:03 -0600 Subject: [PATCH 06/16] Test: PE: add regression test for unfencing with only fence devices --- pengine/regression.sh | 1 + pengine/test10/unfence-device.dot | 18 ++++++ pengine/test10/unfence-device.exp | 100 ++++++++++++++++++++++++++++++++++ pengine/test10/unfence-device.scores | 5 ++ pengine/test10/unfence-device.summary | 29 ++++++++++ pengine/test10/unfence-device.xml | 66 ++++++++++++++++++++++ 6 files changed, 219 insertions(+) create mode 100644 pengine/test10/unfence-device.dot create mode 100644 pengine/test10/unfence-device.exp create mode 100644 pengine/test10/unfence-device.scores create mode 100644 pengine/test10/unfence-device.summary create mode 100644 pengine/test10/unfence-device.xml diff --git a/pengine/regression.sh b/pengine/regression.sh index db101e7..47cf0ba 100755 --- a/pengine/regression.sh +++ b/pengine/regression.sh @@ -393,6 +393,7 @@ echo "" do_test unfence-startup "Clean unfencing" do_test unfence-definition "Unfencing when the agent changes" do_test unfence-parameters "Unfencing when the agent parameters changes" +do_test unfence-device "Unfencing when a cluster has only fence devices" echo "" do_test master-0 "Stopped -> Slave" diff --git a/pengine/test10/unfence-device.dot b/pengine/test10/unfence-device.dot new file mode 100644 index 0000000..e383fd2 --- /dev/null +++ b/pengine/test10/unfence-device.dot @@ -0,0 +1,18 @@ +digraph "g" { +"fence_scsi_monitor_0 virt-008" -> "fence_scsi_start_0 virt-008" [ style = bold] +"fence_scsi_monitor_0 virt-008" [ style=bold color="green" fontcolor="black"] +"fence_scsi_monitor_0 virt-009" -> "fence_scsi_start_0 virt-008" [ style = bold] +"fence_scsi_monitor_0 virt-009" [ style=bold color="green" fontcolor="black"] +"fence_scsi_monitor_0 virt-013" -> "fence_scsi_start_0 virt-008" [ style = bold] +"fence_scsi_monitor_0 virt-013" [ style=bold color="green" fontcolor="black"] +"fence_scsi_monitor_60000 virt-008" [ style=bold color="green" fontcolor="black"] +"fence_scsi_start_0 virt-008" -> "fence_scsi_monitor_60000 virt-008" [ style = bold] +"fence_scsi_start_0 virt-008" [ style=bold color="green" fontcolor="black"] +"stonith 'on' virt-008" -> "fence_scsi_monitor_0 virt-008" [ style = bold] +"stonith 'on' virt-008" -> "fence_scsi_start_0 virt-008" [ style = bold] +"stonith 'on' virt-008" [ style=bold color="green" fontcolor="black"] +"stonith 'on' virt-009" -> "fence_scsi_monitor_0 virt-009" [ style = bold] +"stonith 'on' virt-009" [ style=bold color="green" fontcolor="black"] +"stonith 'on' virt-013" -> "fence_scsi_monitor_0 virt-013" [ style = bold] +"stonith 'on' virt-013" [ style=bold color="green" fontcolor="black"] +} diff --git a/pengine/test10/unfence-device.exp b/pengine/test10/unfence-device.exp new file mode 100644 index 0000000..98cb548 --- /dev/null +++ b/pengine/test10/unfence-device.exp @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/unfence-device.scores b/pengine/test10/unfence-device.scores new file mode 100644 index 0000000..8ea5036 --- /dev/null +++ b/pengine/test10/unfence-device.scores @@ -0,0 +1,5 @@ +Allocation scores: +Using the original execution date of: 2017-11-30 10:44:29Z +native_color: fence_scsi allocation score on virt-008: 0 +native_color: fence_scsi allocation score on virt-009: 0 +native_color: fence_scsi allocation score on virt-013: 0 diff --git a/pengine/test10/unfence-device.summary b/pengine/test10/unfence-device.summary new file mode 100644 index 0000000..181724b --- /dev/null +++ b/pengine/test10/unfence-device.summary @@ -0,0 +1,29 @@ +Using the original execution date of: 2017-11-30 10:44:29Z + +Current cluster status: +Online: [ virt-008 virt-009 virt-013 ] + + fence_scsi (stonith:fence_scsi): Stopped + +Transition Summary: + * Fence (on) virt-013 'required by fence_scsi monitor' + * Fence (on) virt-009 'required by fence_scsi monitor' + * Fence (on) virt-008 'required by fence_scsi monitor' + * Start fence_scsi ( virt-008 ) + +Executing cluster transition: + * Fencing virt-013 (on) + * Fencing virt-009 (on) + * Fencing virt-008 (on) + * Resource action: fence_scsi monitor on virt-013 + * Resource action: fence_scsi monitor on virt-009 + * Resource action: fence_scsi monitor on virt-008 + * Resource action: fence_scsi start on virt-008 + * Resource action: fence_scsi monitor=60000 on virt-008 +Using the original execution date of: 2017-11-30 10:44:29Z + +Revised cluster status: +Online: [ virt-008 virt-009 virt-013 ] + + fence_scsi (stonith:fence_scsi): Started virt-008 + diff --git a/pengine/test10/unfence-device.xml b/pengine/test10/unfence-device.xml new file mode 100644 index 0000000..e977d9b --- /dev/null +++ b/pengine/test10/unfence-device.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 1.8.3.1 From 2948a8e329cda42e5e7e106c0374d49d93b65481 Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Wed, 6 Dec 2017 14:05:05 +1100 Subject: [PATCH 07/16] Fix: PE: Passing boolean instead of a pointer --- lib/pengine/container.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pengine/container.c b/lib/pengine/container.c index 52b60a4..4d2d876 100644 --- a/lib/pengine/container.c +++ b/lib/pengine/container.c @@ -557,7 +557,7 @@ create_remote_resource( * remote should be ordered relative to docker. */ xml_remote = pe_create_remote_xml(NULL, id, tuple->docker->id, - XML_BOOLEAN_FALSE, NULL, "60s", NULL, + NULL, NULL, "60s", NULL, NULL, connect_name, (data->control_port? data->control_port : port_s)); -- 1.8.3.1 From f3593e410643dcafa81e28da27c3a623e306fa61 Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Wed, 6 Dec 2017 14:48:57 +1100 Subject: [PATCH 08/16] Fix: PE: Ordering bundle child stops/demotes after container fencing causes graph loops --- include/crm/pengine/status.h | 6 ++++++ lib/pengine/utils.c | 2 +- pengine/allocate.c | 4 +++- pengine/native.c | 9 +++++++-- pengine/test10/bundle-order-fencing.dot | 5 ----- pengine/test10/bundle-order-fencing.exp | 15 --------------- 6 files changed, 17 insertions(+), 24 deletions(-) diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h index f2a8910..fca7f12 100644 --- a/include/crm/pengine/status.h +++ b/include/crm/pengine/status.h @@ -517,4 +517,10 @@ pe_rsc_is_anon_clone(resource_t *rsc) return pe_rsc_is_clone(rsc) && is_not_set(rsc->flags, pe_rsc_unique); } +static inline bool +pe_rsc_is_bundled(resource_t *rsc) +{ + return uber_parent(rsc)->parent != NULL; +} + #endif diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index 0ce0e30..a875226 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -1015,7 +1015,7 @@ unpack_operation(action_t * action, xmlNode * xml_obj, resource_t * container, value = "nothing (resource)"; } - pe_rsc_trace(action->rsc, "\tAction %s requires: %s", action->task, value); + pe_rsc_trace(action->rsc, "\tAction %s requires: %s", action->uuid, value); value = unpack_operation_on_fail(action); diff --git a/pengine/allocate.c b/pengine/allocate.c index 98464a9..2ae491c 100644 --- a/pengine/allocate.c +++ b/pengine/allocate.c @@ -1470,7 +1470,9 @@ fence_guest(pe_node_t *node, pe_action_t *done, pe_working_set_t *data_set) /* Order/imply other actions relative to pseudo-fence as with real fence */ stonith_constraints(node, stonith_op, data_set); - order_actions(stonith_op, done, pe_order_implies_then); + if(done) { + order_actions(stonith_op, done, pe_order_implies_then); + } } /* diff --git a/pengine/native.c b/pengine/native.c index 0013e33..96c9a26 100644 --- a/pengine/native.c +++ b/pengine/native.c @@ -3164,7 +3164,9 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ */ flags |= pe_order_preserve; } - order_actions(stonith_op, action, flags); + if (pe_rsc_is_bundled(rsc) == FALSE) { + order_actions(stonith_op, action, flags); + } order_actions(stonith_op, parent_stop, flags); } @@ -3252,7 +3254,10 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__); update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); - if (start == NULL || start->needs > rsc_req_quorum) { + if (pe_rsc_is_bundled(rsc)) { + /* Do nothing, let the recovery be ordered after the parent's implied stop */ + + } else if (start == NULL || start->needs > rsc_req_quorum) { order_actions(stonith_op, action, pe_order_preserve|pe_order_optional); } } diff --git a/pengine/test10/bundle-order-fencing.dot b/pengine/test10/bundle-order-fencing.dot index a7e5805..64b6326 100644 --- a/pengine/test10/bundle-order-fencing.dot +++ b/pengine/test10/bundle-order-fencing.dot @@ -403,19 +403,14 @@ digraph "g" { "redis_stop_0 redis-bundle-0" -> "redis_start_0 redis-bundle-0" [ style = dashed] "redis_stop_0 redis-bundle-0" [ style=bold color="green" fontcolor="orange"] "stonith 'off' galera-bundle-0" -> "galera-bundle-master_stop_0" [ style = bold] -"stonith 'off' galera-bundle-0" -> "galera_demote_0 galera-bundle-0" [ style = bold] -"stonith 'off' galera-bundle-0" -> "galera_stop_0 galera-bundle-0" [ style = bold] "stonith 'off' galera-bundle-0" -> "stonith_complete" [ style = bold] "stonith 'off' galera-bundle-0" [ style=bold color="green" fontcolor="orange"] "stonith 'off' rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] "stonith 'off' rabbitmq-bundle-0" -> "rabbitmq_post_notify_stonith_0" [ style = bold] -"stonith 'off' rabbitmq-bundle-0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] "stonith 'off' rabbitmq-bundle-0" -> "stonith_complete" [ style = bold] "stonith 'off' rabbitmq-bundle-0" [ style=bold color="green" fontcolor="orange"] "stonith 'off' redis-bundle-0" -> "redis-bundle-master_stop_0" [ style = bold] -"stonith 'off' redis-bundle-0" -> "redis_demote_0 redis-bundle-0" [ style = bold] "stonith 'off' redis-bundle-0" -> "redis_post_notify_stonith_0" [ style = bold] -"stonith 'off' redis-bundle-0" -> "redis_stop_0 redis-bundle-0" [ style = bold] "stonith 'off' redis-bundle-0" -> "stonith_complete" [ style = bold] "stonith 'off' redis-bundle-0" [ style=bold color="green" fontcolor="orange"] "stonith 'reboot' controller-0" -> "galera-bundle-0_stop_0 controller-0" [ style = bold] diff --git a/pengine/test10/bundle-order-fencing.exp b/pengine/test10/bundle-order-fencing.exp index 8e35f32..78ce675 100644 --- a/pengine/test10/bundle-order-fencing.exp +++ b/pengine/test10/bundle-order-fencing.exp @@ -55,9 +55,6 @@ - - - @@ -440,9 +437,6 @@ - - - @@ -455,9 +449,6 @@ - - - @@ -701,9 +692,6 @@ - - - @@ -716,9 +704,6 @@ - - - -- 1.8.3.1 From 906cd4a9e6b871eefb6d113354f9045c1826711a Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Wed, 6 Dec 2017 15:04:21 +1100 Subject: [PATCH 09/16] Fix: PE: Only allowed nodes need to be considered when ordering resource startup after _all_ recovery --- pengine/native.c | 1 + pengine/test10/bundle-order-fencing.dot | 2 -- pengine/test10/bundle-order-fencing.exp | 6 ------ pengine/test10/bundle-order-fencing.summary | 8 ++++---- 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/pengine/native.c b/pengine/native.c index 96c9a26..d4f1ff7 100644 --- a/pengine/native.c +++ b/pengine/native.c @@ -3088,6 +3088,7 @@ native_start_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set order_actions(stonith_done, action, pe_order_optional); } else if (safe_str_eq(action->task, RSC_START) + && NULL != pe_hash_table_lookup(rsc->allowed_nodes, target->details->id) && NULL == pe_hash_table_lookup(rsc->known_on, target->details->id)) { /* if known == NULL, then we don't know if * the resource is active on the node diff --git a/pengine/test10/bundle-order-fencing.dot b/pengine/test10/bundle-order-fencing.dot index 64b6326..d653250 100644 --- a/pengine/test10/bundle-order-fencing.dot +++ b/pengine/test10/bundle-order-fencing.dot @@ -3,8 +3,6 @@ digraph "g" { "Cancel redis_monitor_45000 redis-bundle-1" [ style=bold color="green" fontcolor="black"] "Cancel redis_monitor_60000 redis-bundle-1" -> "redis_promote_0 redis-bundle-1" [ style = bold] "Cancel redis_monitor_60000 redis-bundle-1" [ style=bold color="green" fontcolor="black"] -"all_stopped" -> "stonith-fence_ipmilan-5254000dcb3f_start_0 controller-2" [ style = bold] -"all_stopped" -> "stonith-fence_ipmilan-5254003e8e97_start_0 controller-1" [ style = bold] "all_stopped" [ style=bold color="green" fontcolor="orange"] "galera-bundle-0_monitor_0 controller-1" -> "galera-bundle-0_start_0 controller-2" [ style = dashed] "galera-bundle-0_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] diff --git a/pengine/test10/bundle-order-fencing.exp b/pengine/test10/bundle-order-fencing.exp index 78ce675..708815f 100644 --- a/pengine/test10/bundle-order-fencing.exp +++ b/pengine/test10/bundle-order-fencing.exp @@ -1624,9 +1624,6 @@ - - - @@ -1661,9 +1658,6 @@ - - - diff --git a/pengine/test10/bundle-order-fencing.summary b/pengine/test10/bundle-order-fencing.summary index e78c531..ee2c361 100644 --- a/pengine/test10/bundle-order-fencing.summary +++ b/pengine/test10/bundle-order-fencing.summary @@ -91,6 +91,8 @@ Executing cluster transition: * Pseudo action: redis-bundle-master_demote_0 * Pseudo action: redis-bundle-0_stop_0 * Pseudo action: haproxy-bundle-docker-0_stop_0 + * Resource action: stonith-fence_ipmilan-5254003e8e97 start on controller-1 + * Resource action: stonith-fence_ipmilan-5254000dcb3f start on controller-2 * Pseudo action: stonith-redis-bundle-0-off on redis-bundle-0 * Pseudo action: stonith-rabbitmq-bundle-0-off on rabbitmq-bundle-0 * Pseudo action: stonith-galera-bundle-0-off on galera-bundle-0 @@ -107,6 +109,8 @@ Executing cluster transition: * Pseudo action: ip-192.168.24.7_stop_0 * Pseudo action: ip-10.0.0.109_stop_0 * Pseudo action: ip-172.17.4.11_stop_0 + * Resource action: stonith-fence_ipmilan-5254003e8e97 monitor=60000 on controller-1 + * Resource action: stonith-fence_ipmilan-5254000dcb3f monitor=60000 on controller-2 * Pseudo action: galera-bundle_demoted_0 * Pseudo action: galera-bundle_stop_0 * Pseudo action: rabbitmq_stop_0 @@ -172,11 +176,7 @@ Executing cluster transition: * Pseudo action: rabbitmq-bundle_running_0 * Pseudo action: all_stopped * Pseudo action: redis-bundle-master_running_0 - * Resource action: stonith-fence_ipmilan-5254003e8e97 start on controller-1 - * Resource action: stonith-fence_ipmilan-5254000dcb3f start on controller-2 * Pseudo action: redis-bundle-master_post_notify_running_0 - * Resource action: stonith-fence_ipmilan-5254003e8e97 monitor=60000 on controller-1 - * Resource action: stonith-fence_ipmilan-5254000dcb3f monitor=60000 on controller-2 * Resource action: redis notify on redis-bundle-0 * Resource action: redis notify on redis-bundle-1 * Resource action: redis notify on redis-bundle-2 -- 1.8.3.1 From c6d208dfbda95d8610519de50075087e56a4f8c0 Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Wed, 6 Dec 2017 23:50:12 +1100 Subject: [PATCH 10/16] Fix: PE: Remote connection resources are safe to to require only quorum --- lib/pengine/complex.c | 6 ++++ pengine/test10/bug-rh-1097457.dot | 2 +- pengine/test10/bug-rh-1097457.exp | 6 ++-- pengine/test10/bug-rh-1097457.summary | 14 ++++---- pengine/test10/bundle-order-fencing.dot | 6 ---- pengine/test10/bundle-order-fencing.exp | 18 ++-------- pengine/test10/bundle-order-fencing.summary | 8 ++--- pengine/test10/guest-node-host-dies.dot | 6 ++-- pengine/test10/guest-node-host-dies.exp | 24 +++++--------- pengine/test10/guest-node-host-dies.summary | 12 +++---- pengine/test10/remote-fence-unclean.dot | 2 +- pengine/test10/remote-fence-unclean.exp | 2 +- pengine/test10/remote-partial-migrate2.dot | 6 +--- pengine/test10/remote-partial-migrate2.exp | 27 ++++----------- pengine/test10/remote-partial-migrate2.summary | 38 +++++++++++----------- pengine/test10/remote-recover-all.dot | 3 +- pengine/test10/remote-recover-all.exp | 10 ++---- pengine/test10/remote-recover-all.summary | 8 ++--- pengine/test10/remote-recover-connection.dot | 6 ---- pengine/test10/remote-recover-connection.exp | 27 ++------------- pengine/test10/remote-recover-connection.summary | 24 +++++++------- pengine/test10/remote-recover-fail.dot | 2 +- pengine/test10/remote-recover-fail.exp | 2 +- pengine/test10/remote-recover-no-resources.dot | 3 +- pengine/test10/remote-recover-no-resources.exp | 10 ++---- pengine/test10/remote-recover-no-resources.summary | 8 ++--- pengine/test10/remote-recover-unknown.dot | 3 +- pengine/test10/remote-recover-unknown.exp | 10 ++---- pengine/test10/remote-recover-unknown.summary | 8 ++--- pengine/test10/remote-recovery.dot | 6 ---- pengine/test10/remote-recovery.exp | 27 ++------------- pengine/test10/remote-recovery.summary | 24 +++++++------- pengine/test10/remote-unclean2.dot | 2 +- pengine/test10/remote-unclean2.exp | 2 +- pengine/test10/whitebox-fail1.dot | 2 +- pengine/test10/whitebox-fail1.exp | 6 ++-- pengine/test10/whitebox-fail1.summary | 8 ++--- pengine/test10/whitebox-fail2.dot | 2 +- pengine/test10/whitebox-fail2.exp | 6 ++-- pengine/test10/whitebox-fail2.summary | 8 ++--- pengine/test10/whitebox-imply-stop-on-fence.dot | 6 ++-- pengine/test10/whitebox-imply-stop-on-fence.exp | 24 +++++--------- .../test10/whitebox-imply-stop-on-fence.summary | 20 ++++++------ pengine/test10/whitebox-ms-ordering.dot | 4 +-- pengine/test10/whitebox-ms-ordering.exp | 12 +++---- pengine/test10/whitebox-ms-ordering.summary | 8 ++--- pengine/test10/whitebox-unexpectedly-running.dot | 2 ++ pengine/test10/whitebox-unexpectedly-running.exp | 6 ++++ 48 files changed, 182 insertions(+), 294 deletions(-) diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c index 3e0abed..d58d6be 100644 --- a/lib/pengine/complex.c +++ b/lib/pengine/complex.c @@ -784,6 +784,12 @@ common_unpack(xmlNode * xml_obj, resource_t ** rsc, if(is_set((*rsc)->flags, pe_rsc_fence_device)) { value = "quorum"; + } else if (safe_str_eq(crm_element_value((*rsc)->xml, XML_AGENT_ATTR_CLASS), "ocf") + && safe_str_eq(crm_element_value((*rsc)->xml, XML_AGENT_ATTR_PROVIDER), "pacemaker") + && safe_str_eq(crm_element_value((*rsc)->xml, XML_ATTR_TYPE), "remote") + ) { + value = "quorum"; + } else if (is_set(data_set->flags, pe_flag_enable_unfencing)) { value = "unfencing"; diff --git a/pengine/test10/bug-rh-1097457.dot b/pengine/test10/bug-rh-1097457.dot index 5984811..94ffe13 100644 --- a/pengine/test10/bug-rh-1097457.dot +++ b/pengine/test10/bug-rh-1097457.dot @@ -80,6 +80,7 @@ digraph "g" { "VM2_stop_0 lama3" -> "all_stopped" [ style = bold] "VM2_stop_0 lama3" -> "stonith 'reboot' lamaVM2" [ style = bold] "VM2_stop_0 lama3" [ style=bold color="green" fontcolor="black"] +"all_stopped" -> "lamaVM2_start_0 lama3" [ style = bold] "all_stopped" [ style=bold color="green" fontcolor="orange"] "lamaVM2-G4_running_0" [ style=bold color="green" fontcolor="orange"] "lamaVM2-G4_start_0" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] @@ -121,6 +122,5 @@ digraph "g" { "stonith_complete" -> "FSlun3_start_0 lama2" [ style = bold] "stonith_complete" -> "VM2_start_0 lama3" [ style = bold] "stonith_complete" -> "all_stopped" [ style = bold] -"stonith_complete" -> "lamaVM2_start_0 lama3" [ style = bold] "stonith_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/bug-rh-1097457.exp b/pengine/test10/bug-rh-1097457.exp index 4eedd91..f1451b5 100644 --- a/pengine/test10/bug-rh-1097457.exp +++ b/pengine/test10/bug-rh-1097457.exp @@ -599,13 +599,13 @@ - + - + - + diff --git a/pengine/test10/bug-rh-1097457.summary b/pengine/test10/bug-rh-1097457.summary index e23c6ad..0e7d2e0 100644 --- a/pengine/test10/bug-rh-1097457.summary +++ b/pengine/test10/bug-rh-1097457.summary @@ -70,26 +70,26 @@ Executing cluster transition: * Pseudo action: lamaVM2-G4_stop_0 * Pseudo action: FAKE4-IP_stop_0 * Pseudo action: FAKE6-clone_stop_0 - * Resource action: lamaVM2 start on lama3 - * Resource action: lamaVM2 monitor=30000 on lama3 - * Resource action: FSlun3 monitor=10000 on lamaVM2 * Pseudo action: FAKE4_stop_0 * Pseudo action: FAKE6_stop_0 * Pseudo action: FAKE6-clone_stopped_0 * Pseudo action: FAKE6-clone_start_0 * Pseudo action: lamaVM2-G4_stopped_0 - * Resource action: FAKE6 start on lamaVM2 - * Resource action: FAKE6 monitor=30000 on lamaVM2 - * Pseudo action: FAKE6-clone_running_0 * Pseudo action: FSlun3_stop_0 * Pseudo action: all_stopped * Resource action: FSlun3 start on lama2 * Pseudo action: lamaVM2-G4_start_0 + * Resource action: lamaVM2 start on lama3 + * Resource action: lamaVM2 monitor=30000 on lama3 + * Resource action: FSlun3 monitor=10000 on lama2 + * Resource action: FSlun3 monitor=10000 on lamaVM2 * Resource action: FAKE4 start on lamaVM2 * Resource action: FAKE4 monitor=30000 on lamaVM2 * Resource action: FAKE4-IP start on lamaVM2 * Resource action: FAKE4-IP monitor=30000 on lamaVM2 - * Resource action: FSlun3 monitor=10000 on lama2 + * Resource action: FAKE6 start on lamaVM2 + * Resource action: FAKE6 monitor=30000 on lamaVM2 + * Pseudo action: FAKE6-clone_running_0 * Pseudo action: lamaVM2-G4_running_0 Revised cluster status: diff --git a/pengine/test10/bundle-order-fencing.dot b/pengine/test10/bundle-order-fencing.dot index d653250..980bab4 100644 --- a/pengine/test10/bundle-order-fencing.dot +++ b/pengine/test10/bundle-order-fencing.dot @@ -411,15 +411,12 @@ digraph "g" { "stonith 'off' redis-bundle-0" -> "redis_post_notify_stonith_0" [ style = bold] "stonith 'off' redis-bundle-0" -> "stonith_complete" [ style = bold] "stonith 'off' redis-bundle-0" [ style=bold color="green" fontcolor="orange"] -"stonith 'reboot' controller-0" -> "galera-bundle-0_stop_0 controller-0" [ style = bold] "stonith 'reboot' controller-0" -> "galera-bundle-docker-0_stop_0 controller-0" [ style = bold] "stonith 'reboot' controller-0" -> "haproxy-bundle-docker-0_stop_0 controller-0" [ style = bold] "stonith 'reboot' controller-0" -> "ip-10.0.0.109_stop_0 controller-0" [ style = bold] "stonith 'reboot' controller-0" -> "ip-172.17.4.11_stop_0 controller-0" [ style = bold] "stonith 'reboot' controller-0" -> "ip-192.168.24.7_stop_0 controller-0" [ style = bold] -"stonith 'reboot' controller-0" -> "rabbitmq-bundle-0_stop_0 controller-0" [ style = bold] "stonith 'reboot' controller-0" -> "rabbitmq-bundle-docker-0_stop_0 controller-0" [ style = bold] -"stonith 'reboot' controller-0" -> "redis-bundle-0_stop_0 controller-0" [ style = bold] "stonith 'reboot' controller-0" -> "redis-bundle-docker-0_stop_0 controller-0" [ style = bold] "stonith 'reboot' controller-0" -> "stonith 'off' galera-bundle-0" [ style = bold] "stonith 'reboot' controller-0" -> "stonith 'off' rabbitmq-bundle-0" [ style = bold] @@ -439,14 +436,11 @@ digraph "g" { "stonith-fence_ipmilan-5254003e8e97_stop_0 controller-0" -> "stonith-fence_ipmilan-5254003e8e97_start_0 controller-1" [ style = bold] "stonith-fence_ipmilan-5254003e8e97_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] "stonith_complete" -> "all_stopped" [ style = bold] -"stonith_complete" -> "galera-bundle-0_start_0 controller-2" [ style = dashed] "stonith_complete" -> "galera_start_0 galera-bundle-0" [ style = dashed] "stonith_complete" -> "ip-10.0.0.109_start_0 controller-1" [ style = bold] "stonith_complete" -> "ip-172.17.4.11_start_0 controller-1" [ style = bold] "stonith_complete" -> "ip-192.168.24.7_start_0 controller-2" [ style = bold] -"stonith_complete" -> "rabbitmq-bundle-0_start_0 controller-1" [ style = dashed] "stonith_complete" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] -"stonith_complete" -> "redis-bundle-0_start_0 controller-1" [ style = dashed] "stonith_complete" -> "redis_promote_0 redis-bundle-1" [ style = bold] "stonith_complete" -> "redis_start_0 redis-bundle-0" [ style = dashed] "stonith_complete" [ style=bold color="green" fontcolor="orange"] diff --git a/pengine/test10/bundle-order-fencing.exp b/pengine/test10/bundle-order-fencing.exp index 708815f..dc4c5c9 100644 --- a/pengine/test10/bundle-order-fencing.exp +++ b/pengine/test10/bundle-order-fencing.exp @@ -379,11 +379,7 @@ - - - - - + @@ -565,11 +561,7 @@ - - - - - + @@ -1413,11 +1405,7 @@ - - - - - + diff --git a/pengine/test10/bundle-order-fencing.summary b/pengine/test10/bundle-order-fencing.summary index ee2c361..0457f83 100644 --- a/pengine/test10/bundle-order-fencing.summary +++ b/pengine/test10/bundle-order-fencing.summary @@ -56,10 +56,12 @@ Transition Summary: Executing cluster transition: * Pseudo action: rabbitmq-bundle-clone_pre_notify_stop_0 + * Pseudo action: rabbitmq-bundle-0_stop_0 * Resource action: rabbitmq-bundle-0 monitor on controller-2 * Resource action: rabbitmq-bundle-0 monitor on controller-1 * Resource action: rabbitmq-bundle-1 monitor on controller-2 * Resource action: rabbitmq-bundle-2 monitor on controller-1 + * Pseudo action: galera-bundle-0_stop_0 * Resource action: galera-bundle-0 monitor on controller-2 * Resource action: galera-bundle-0 monitor on controller-1 * Resource action: galera-bundle-1 monitor on controller-2 @@ -67,6 +69,7 @@ Executing cluster transition: * Resource action: redis cancel=45000 on redis-bundle-1 * Resource action: redis cancel=60000 on redis-bundle-1 * Pseudo action: redis-bundle-master_pre_notify_demote_0 + * Pseudo action: redis-bundle-0_stop_0 * Resource action: redis-bundle-0 monitor on controller-2 * Resource action: redis-bundle-0 monitor on controller-1 * Resource action: redis-bundle-1 monitor on controller-2 @@ -82,14 +85,12 @@ Executing cluster transition: * Resource action: rabbitmq notify on rabbitmq-bundle-1 * Resource action: rabbitmq notify on rabbitmq-bundle-2 * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_stop_0 - * Pseudo action: rabbitmq-bundle-0_stop_0 + * Pseudo action: rabbitmq-bundle-docker-0_stop_0 * Pseudo action: galera-bundle-master_demote_0 - * Pseudo action: galera-bundle-0_stop_0 * Resource action: redis notify on redis-bundle-1 * Resource action: redis notify on redis-bundle-2 * Pseudo action: redis-bundle-master_confirmed-pre_notify_demote_0 * Pseudo action: redis-bundle-master_demote_0 - * Pseudo action: redis-bundle-0_stop_0 * Pseudo action: haproxy-bundle-docker-0_stop_0 * Resource action: stonith-fence_ipmilan-5254003e8e97 start on controller-1 * Resource action: stonith-fence_ipmilan-5254000dcb3f start on controller-2 @@ -100,7 +101,6 @@ Executing cluster transition: * Pseudo action: haproxy-bundle_stopped_0 * Pseudo action: rabbitmq_post_notify_stop_0 * Pseudo action: rabbitmq-bundle-clone_stop_0 - * Pseudo action: rabbitmq-bundle-docker-0_stop_0 * Pseudo action: galera_demote_0 * Pseudo action: galera-bundle-master_demoted_0 * Pseudo action: redis_post_notify_stop_0 diff --git a/pengine/test10/guest-node-host-dies.dot b/pengine/test10/guest-node-host-dies.dot index a85250d..c50e071 100644 --- a/pengine/test10/guest-node-host-dies.dot +++ b/pengine/test10/guest-node-host-dies.dot @@ -6,6 +6,8 @@ digraph "g" { "Fencing_stop_0 rhel7-4" -> "all_stopped" [ style = bold] "Fencing_stop_0 rhel7-4" [ style=bold color="green" fontcolor="black"] "all_stopped" -> "Fencing_start_0 rhel7-4" [ style = bold] +"all_stopped" -> "lxc1_start_0 rhel7-2" [ style = bold] +"all_stopped" -> "lxc2_start_0 rhel7-3" [ style = bold] "all_stopped" [ style=bold color="green" fontcolor="orange"] "container1_start_0 rhel7-2" -> "lxc-ms_promote_0 lxc1" [ style = bold] "container1_start_0 rhel7-2" -> "lxc-ms_start_0 lxc1" [ style = bold] @@ -115,8 +117,6 @@ digraph "g" { "stonith 'reboot' lxc2" [ style=bold color="green" fontcolor="orange"] "stonith 'reboot' rhel7-1" -> "container1_stop_0 rhel7-1" [ style = bold] "stonith 'reboot' rhel7-1" -> "container2_stop_0 rhel7-1" [ style = bold] -"stonith 'reboot' rhel7-1" -> "lxc1_stop_0 rhel7-1" [ style = bold] -"stonith 'reboot' rhel7-1" -> "lxc2_stop_0 rhel7-1" [ style = bold] "stonith 'reboot' rhel7-1" -> "rsc_rhel7-1_stop_0 rhel7-1" [ style = bold] "stonith 'reboot' rhel7-1" -> "stonith_complete" [ style = bold] "stonith 'reboot' rhel7-1" [ style=bold color="green" fontcolor="black"] @@ -126,8 +126,6 @@ digraph "g" { "stonith_complete" -> "lxc-ms_promote_0 lxc1" [ style = bold] "stonith_complete" -> "lxc-ms_start_0 lxc1" [ style = bold] "stonith_complete" -> "lxc-ms_start_0 lxc2" [ style = bold] -"stonith_complete" -> "lxc1_start_0 rhel7-2" [ style = bold] -"stonith_complete" -> "lxc2_start_0 rhel7-3" [ style = bold] "stonith_complete" -> "rsc_rhel7-1_start_0 rhel7-5" [ style = bold] "stonith_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/guest-node-host-dies.exp b/pengine/test10/guest-node-host-dies.exp index 8dbadde..b5a34ea 100644 --- a/pengine/test10/guest-node-host-dies.exp +++ b/pengine/test10/guest-node-host-dies.exp @@ -432,6 +432,9 @@ + + + @@ -446,9 +449,6 @@ - - - @@ -457,11 +457,7 @@ - - - - - + @@ -512,6 +508,9 @@ + + + @@ -526,9 +525,6 @@ - - - @@ -537,11 +533,7 @@ - - - - - + diff --git a/pengine/test10/guest-node-host-dies.summary b/pengine/test10/guest-node-host-dies.summary index 4feee88..9813d2b 100644 --- a/pengine/test10/guest-node-host-dies.summary +++ b/pengine/test10/guest-node-host-dies.summary @@ -26,16 +26,16 @@ Transition Summary: Executing cluster transition: * Resource action: Fencing stop on rhel7-4 * Pseudo action: lxc-ms-master_demote_0 + * Pseudo action: lxc1_stop_0 * Resource action: lxc1 monitor on rhel7-5 * Resource action: lxc1 monitor on rhel7-4 * Resource action: lxc1 monitor on rhel7-3 + * Pseudo action: lxc2_stop_0 * Resource action: lxc2 monitor on rhel7-5 * Resource action: lxc2 monitor on rhel7-4 * Resource action: lxc2 monitor on rhel7-2 * Fencing rhel7-1 (reboot) * Pseudo action: rsc_rhel7-1_stop_0 - * Pseudo action: lxc1_stop_0 - * Pseudo action: lxc2_stop_0 * Pseudo action: container1_stop_0 * Pseudo action: container2_stop_0 * Pseudo action: stonith-lxc2-reboot on lxc2 @@ -47,21 +47,21 @@ Executing cluster transition: * Pseudo action: lxc-ms_demote_0 * Pseudo action: lxc-ms-master_demoted_0 * Pseudo action: lxc-ms-master_stop_0 - * Resource action: lxc1 start on rhel7-2 - * Resource action: lxc2 start on rhel7-3 * Resource action: rsc_rhel7-1 monitor=5000 on rhel7-5 * Pseudo action: lxc-ms_stop_0 * Pseudo action: lxc-ms_stop_0 * Pseudo action: lxc-ms-master_stopped_0 * Pseudo action: lxc-ms-master_start_0 - * Resource action: lxc1 monitor=30000 on rhel7-2 - * Resource action: lxc2 monitor=30000 on rhel7-3 * Pseudo action: all_stopped * Resource action: Fencing start on rhel7-4 * Resource action: Fencing monitor=120000 on rhel7-4 + * Resource action: lxc1 start on rhel7-2 + * Resource action: lxc2 start on rhel7-3 * Resource action: lxc-ms start on lxc1 * Resource action: lxc-ms start on lxc2 * Pseudo action: lxc-ms-master_running_0 + * Resource action: lxc1 monitor=30000 on rhel7-2 + * Resource action: lxc2 monitor=30000 on rhel7-3 * Resource action: lxc-ms monitor=10000 on lxc2 * Pseudo action: lxc-ms-master_promote_0 * Resource action: lxc-ms promote on lxc1 diff --git a/pengine/test10/remote-fence-unclean.dot b/pengine/test10/remote-fence-unclean.dot index b2829a7..76a676d 100644 --- a/pengine/test10/remote-fence-unclean.dot +++ b/pengine/test10/remote-fence-unclean.dot @@ -18,6 +18,7 @@ "FAKE4_stop_0 18node1" -> "FAKE4_start_0 18node2" [ style = bold] "FAKE4_stop_0 18node1" -> "all_stopped" [ style = bold] "FAKE4_stop_0 18node1" [ style=bold color="green" fontcolor="black"] +"all_stopped" -> "remote1_start_0 18node1" [ style = bold] "all_stopped" [ style=bold color="green" fontcolor="orange"] "remote1_monitor_60000 18node1" [ style=bold color="green" fontcolor="black"] "remote1_start_0 18node1" -> "remote1_monitor_60000 18node1" [ style = bold] @@ -32,6 +33,5 @@ "stonith_complete" -> "FAKE3_start_0 18node1" [ style = bold] "stonith_complete" -> "FAKE4_start_0 18node2" [ style = bold] "stonith_complete" -> "all_stopped" [ style = bold] -"stonith_complete" -> "remote1_start_0 18node1" [ style = bold] "stonith_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/remote-fence-unclean.exp b/pengine/test10/remote-fence-unclean.exp index 3a07384..f77d7f6 100644 --- a/pengine/test10/remote-fence-unclean.exp +++ b/pengine/test10/remote-fence-unclean.exp @@ -11,7 +11,7 @@ - + diff --git a/pengine/test10/remote-partial-migrate2.dot b/pengine/test10/remote-partial-migrate2.dot index a8bf29b..17c8bf3 100644 --- a/pengine/test10/remote-partial-migrate2.dot +++ b/pengine/test10/remote-partial-migrate2.dot @@ -89,6 +89,7 @@ "FAKE9_stop_0 pcmk2" -> "FAKE9_start_0 pcmk_remote4" [ style = bold] "FAKE9_stop_0 pcmk2" -> "all_stopped" [ style = bold] "FAKE9_stop_0 pcmk2" [ style=bold color="green" fontcolor="black"] +"all_stopped" -> "pcmk_remote5_start_0 pcmk2" [ style = bold] "all_stopped" [ style=bold color="green" fontcolor="orange"] "pcmk_remote2_migrate_from_0 pcmk1" -> "pcmk_remote2_start_0 pcmk1" [ style = bold] "pcmk_remote2_migrate_from_0 pcmk1" -> "pcmk_remote2_stop_0 pcmk3" [ style = bold] @@ -150,10 +151,5 @@ "stonith_complete" -> "FAKE5_start_0 pcmk_remote4" [ style = bold] "stonith_complete" -> "FAKE9_start_0 pcmk_remote4" [ style = bold] "stonith_complete" -> "all_stopped" [ style = bold] -"stonith_complete" -> "pcmk_remote2_migrate_from_0 pcmk1" [ style = bold] -"stonith_complete" -> "pcmk_remote2_start_0 pcmk1" [ style = bold] -"stonith_complete" -> "pcmk_remote4_start_0 pcmk2" [ style = bold] -"stonith_complete" -> "pcmk_remote5_migrate_to_0 pcmk1" [ style = bold] -"stonith_complete" -> "pcmk_remote5_start_0 pcmk2" [ style = bold] "stonith_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/remote-partial-migrate2.exp b/pengine/test10/remote-partial-migrate2.exp index abf281f..bae190c 100644 --- a/pengine/test10/remote-partial-migrate2.exp +++ b/pengine/test10/remote-partial-migrate2.exp @@ -6,11 +6,7 @@ - - - - - + @@ -38,9 +34,6 @@ - - - @@ -76,11 +69,7 @@ - - - - - + @@ -102,11 +91,7 @@ - - - - - + @@ -129,13 +114,13 @@ - + - + - + diff --git a/pengine/test10/remote-partial-migrate2.summary b/pengine/test10/remote-partial-migrate2.summary index 2a242bd..6b6428d 100644 --- a/pengine/test10/remote-partial-migrate2.summary +++ b/pengine/test10/remote-partial-migrate2.summary @@ -84,6 +84,10 @@ Transition Summary: * Move FAKE49 ( pcmk_remote3 -> pcmk_remote4 ) Executing cluster transition: + * Resource action: pcmk_remote2 migrate_from on pcmk1 + * Resource action: pcmk_remote2 stop on pcmk3 + * Resource action: pcmk_remote4 start on pcmk2 + * Resource action: pcmk_remote5 migrate_to on pcmk1 * Resource action: FAKE5 stop on pcmk1 * Resource action: FAKE9 stop on pcmk2 * Resource action: FAKE12 stop on pcmk1 @@ -99,11 +103,15 @@ Executing cluster transition: * Resource action: FAKE48 stop on pcmk1 * Resource action: FAKE49 stop on pcmk_remote3 * Fencing pcmk4 (reboot) + * Pseudo action: pcmk_remote2_start_0 + * Resource action: pcmk_remote4 monitor=60000 on pcmk2 + * Resource action: pcmk_remote5 migrate_from on pcmk2 + * Resource action: pcmk_remote5 stop on pcmk1 + * Resource action: FAKE41 stop on pcmk_remote2 * Pseudo action: stonith_complete - * Resource action: pcmk_remote2 migrate_from on pcmk1 - * Resource action: pcmk_remote2 stop on pcmk3 - * Resource action: pcmk_remote4 start on pcmk2 - * Resource action: pcmk_remote5 migrate_to on pcmk1 + * Pseudo action: all_stopped + * Resource action: pcmk_remote2 monitor=60000 on pcmk1 + * Pseudo action: pcmk_remote5_start_0 * Resource action: FAKE5 start on pcmk_remote4 * Resource action: FAKE9 start on pcmk_remote4 * Resource action: FAKE12 start on pcmk2 @@ -114,12 +122,12 @@ Executing cluster transition: * Resource action: FAKE30 start on pcmk_remote1 * Resource action: FAKE33 start on pcmk_remote4 * Resource action: FAKE38 start on pcmk_remote1 + * Resource action: FAKE39 start on pcmk_remote2 + * Resource action: FAKE41 start on pcmk_remote4 + * Resource action: FAKE47 start on pcmk_remote2 * Resource action: FAKE48 start on pcmk_remote3 * Resource action: FAKE49 start on pcmk_remote4 - * Pseudo action: pcmk_remote2_start_0 - * Resource action: pcmk_remote4 monitor=60000 on pcmk2 - * Resource action: pcmk_remote5 migrate_from on pcmk2 - * Resource action: pcmk_remote5 stop on pcmk1 + * Resource action: pcmk_remote5 monitor=60000 on pcmk2 * Resource action: FAKE5 monitor=10000 on pcmk_remote4 * Resource action: FAKE9 monitor=10000 on pcmk_remote4 * Resource action: FAKE12 monitor=10000 on pcmk2 @@ -130,19 +138,11 @@ Executing cluster transition: * Resource action: FAKE30 monitor=10000 on pcmk_remote1 * Resource action: FAKE33 monitor=10000 on pcmk_remote4 * Resource action: FAKE38 monitor=10000 on pcmk_remote1 - * Resource action: FAKE39 start on pcmk_remote2 - * Resource action: FAKE41 stop on pcmk_remote2 - * Resource action: FAKE47 start on pcmk_remote2 - * Resource action: FAKE48 monitor=10000 on pcmk_remote3 - * Resource action: FAKE49 monitor=10000 on pcmk_remote4 - * Pseudo action: all_stopped - * Resource action: pcmk_remote2 monitor=60000 on pcmk1 - * Pseudo action: pcmk_remote5_start_0 * Resource action: FAKE39 monitor=10000 on pcmk_remote2 - * Resource action: FAKE41 start on pcmk_remote4 - * Resource action: FAKE47 monitor=10000 on pcmk_remote2 - * Resource action: pcmk_remote5 monitor=60000 on pcmk2 * Resource action: FAKE41 monitor=10000 on pcmk_remote4 + * Resource action: FAKE47 monitor=10000 on pcmk_remote2 + * Resource action: FAKE48 monitor=10000 on pcmk_remote3 + * Resource action: FAKE49 monitor=10000 on pcmk_remote4 Revised cluster status: Online: [ pcmk1 pcmk2 pcmk3 ] diff --git a/pengine/test10/remote-recover-all.dot b/pengine/test10/remote-recover-all.dot index ad421e6..5b79602 100644 --- a/pengine/test10/remote-recover-all.dot +++ b/pengine/test10/remote-recover-all.dot @@ -1,4 +1,5 @@ digraph "g" { +"all_stopped" -> "galera-0_start_0 controller-2" [ style = bold] "all_stopped" -> "stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style = bold] "all_stopped" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold] "all_stopped" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] @@ -114,7 +115,6 @@ digraph "g" { "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] @@ -156,7 +156,6 @@ digraph "g" { "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" -> "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] diff --git a/pengine/test10/remote-recover-all.exp b/pengine/test10/remote-recover-all.exp index b0af5c4..556ccfd 100644 --- a/pengine/test10/remote-recover-all.exp +++ b/pengine/test10/remote-recover-all.exp @@ -36,10 +36,10 @@ - + - + @@ -49,11 +49,7 @@ - - - - - + diff --git a/pengine/test10/remote-recover-all.summary b/pengine/test10/remote-recover-all.summary index 6c9f058..ba074e5 100644 --- a/pengine/test10/remote-recover-all.summary +++ b/pengine/test10/remote-recover-all.summary @@ -56,13 +56,13 @@ Transition Summary: * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) Executing cluster transition: + * Pseudo action: galera-0_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-525400b4f6bd stop on controller-0 * Pseudo action: stonith-fence_ipmilan-5254005bdbb5_stop_0 * Fencing controller-1 (reboot) - * Pseudo action: galera-0_stop_0 * Pseudo action: redis_post_notify_stop_0 * Resource action: redis notify on controller-0 * Resource action: redis notify on controller-2 @@ -79,17 +79,14 @@ Executing cluster transition: * Pseudo action: haproxy-clone_stopped_0 * Fencing messaging-1 (reboot) * Pseudo action: stonith_complete - * Resource action: galera-0 start on controller-2 * Pseudo action: rabbitmq_post_notify_stop_0 * Pseudo action: rabbitmq-clone_stop_0 * Pseudo action: galera_stop_0 - * Resource action: galera monitor=10000 on galera-0 * Pseudo action: galera-master_stopped_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-0 monitor=20000 on controller-2 * Pseudo action: galera-2_stop_0 * Resource action: rabbitmq notify on messaging-2 * Resource action: rabbitmq notify on messaging-0 @@ -108,11 +105,14 @@ Executing cluster transition: * 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-0 start on controller-2 + * Resource action: galera monitor=10000 on galera-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 start on controller-0 * Resource action: stonith-fence_ipmilan-525400b4f6bd monitor=60000 on controller-0 * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2 + * Resource action: galera-0 monitor=20000 on controller-2 * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2 Using the original execution date of: 2017-05-03 13:33:24Z diff --git a/pengine/test10/remote-recover-connection.dot b/pengine/test10/remote-recover-connection.dot index d6fdefe..6cd342f 100644 --- a/pengine/test10/remote-recover-connection.dot +++ b/pengine/test10/remote-recover-connection.dot @@ -89,14 +89,11 @@ digraph "g" { "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] @@ -121,11 +118,8 @@ digraph "g" { "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" -> "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" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/remote-recover-connection.exp b/pengine/test10/remote-recover-connection.exp index cf74efb..40338b4 100644 --- a/pengine/test10/remote-recover-connection.exp +++ b/pengine/test10/remote-recover-connection.exp @@ -23,9 +23,6 @@ - - - @@ -34,11 +31,7 @@ - - - - - + @@ -64,9 +57,6 @@ - - - @@ -75,11 +65,7 @@ - - - - - + @@ -105,9 +91,6 @@ - - - @@ -116,11 +99,7 @@ - - - - - + diff --git a/pengine/test10/remote-recover-connection.summary b/pengine/test10/remote-recover-connection.summary index b0433fe..8246cd9 100644 --- a/pengine/test10/remote-recover-connection.summary +++ b/pengine/test10/remote-recover-connection.summary @@ -52,6 +52,9 @@ Transition Summary: * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) Executing cluster transition: + * Pseudo action: messaging-1_stop_0 + * Pseudo action: galera-0_stop_0 + * Pseudo action: galera-2_stop_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 @@ -61,9 +64,12 @@ Executing cluster transition: * 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: messaging-1_stop_0 - * Pseudo action: galera-0_stop_0 - * Pseudo action: galera-2_stop_0 + * 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 monitor=10000 on messaging-1 + * Resource action: galera monitor=10000 on galera-2 + * Resource action: galera monitor=10000 on galera-0 * Pseudo action: redis_post_notify_stop_0 * Resource action: redis notify on controller-0 * Resource action: redis notify on controller-2 @@ -72,20 +78,14 @@ Executing cluster transition: * Pseudo action: haproxy-clone_stop_0 * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2 * Pseudo action: stonith_complete - * 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 monitor=10000 on messaging-1 - * Resource action: galera monitor=10000 on galera-2 - * Resource action: galera monitor=10000 on galera-0 + * 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 * 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 * 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 diff --git a/pengine/test10/remote-recover-fail.dot b/pengine/test10/remote-recover-fail.dot index 7b6edaa..3375687 100644 --- a/pengine/test10/remote-recover-fail.dot +++ b/pengine/test10/remote-recover-fail.dot @@ -18,6 +18,7 @@ "FAKE6_stop_0 rhel7-auto4" -> "all_stopped" [ style = bold] "FAKE6_stop_0 rhel7-auto4" -> "rhel7-auto4_stop_0 rhel7-auto2" [ style = bold] "FAKE6_stop_0 rhel7-auto4" [ style=bold color="green" fontcolor="orange"] +"all_stopped" -> "rhel7-auto4_start_0 rhel7-auto2" [ style = bold] "all_stopped" [ style=bold color="green" fontcolor="orange"] "rhel7-auto4_monitor_60000 rhel7-auto2" [ style=bold color="green" fontcolor="black"] "rhel7-auto4_start_0 rhel7-auto2" -> "rhel7-auto4_monitor_60000 rhel7-auto2" [ style = bold] @@ -33,6 +34,5 @@ "stonith_complete" -> "FAKE2_start_0 rhel7-auto3" [ style = bold] "stonith_complete" -> "FAKE6_start_0 rhel7-auto2" [ style = bold] "stonith_complete" -> "all_stopped" [ style = bold] -"stonith_complete" -> "rhel7-auto4_start_0 rhel7-auto2" [ style = bold] "stonith_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/remote-recover-fail.exp b/pengine/test10/remote-recover-fail.exp index bd014ae..f908566 100644 --- a/pengine/test10/remote-recover-fail.exp +++ b/pengine/test10/remote-recover-fail.exp @@ -24,7 +24,7 @@ - + diff --git a/pengine/test10/remote-recover-no-resources.dot b/pengine/test10/remote-recover-no-resources.dot index 1e16221..8c2f783 100644 --- a/pengine/test10/remote-recover-no-resources.dot +++ b/pengine/test10/remote-recover-no-resources.dot @@ -1,4 +1,5 @@ digraph "g" { +"all_stopped" -> "galera-0_start_0 controller-2" [ style = bold] "all_stopped" -> "stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style = bold] "all_stopped" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold] "all_stopped" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] @@ -98,7 +99,6 @@ digraph "g" { "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] @@ -135,7 +135,6 @@ digraph "g" { "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" -> "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] diff --git a/pengine/test10/remote-recover-no-resources.exp b/pengine/test10/remote-recover-no-resources.exp index 987acfd..0a57e27 100644 --- a/pengine/test10/remote-recover-no-resources.exp +++ b/pengine/test10/remote-recover-no-resources.exp @@ -36,10 +36,10 @@ - + - + @@ -49,11 +49,7 @@ - - - - - + diff --git a/pengine/test10/remote-recover-no-resources.summary b/pengine/test10/remote-recover-no-resources.summary index b682e5f..bed02d0 100644 --- a/pengine/test10/remote-recover-no-resources.summary +++ b/pengine/test10/remote-recover-no-resources.summary @@ -54,12 +54,12 @@ Transition Summary: * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) Executing cluster transition: + * Pseudo action: galera-0_stop_0 * Pseudo action: redis-master_pre_notify_stop_0 * Resource action: stonith-fence_ipmilan-525400bbf613 stop on controller-0 * Resource action: stonith-fence_ipmilan-525400b4f6bd stop on controller-0 * Pseudo action: stonith-fence_ipmilan-5254005bdbb5_stop_0 * Fencing controller-1 (reboot) - * 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 @@ -69,15 +69,12 @@ Executing cluster transition: * Pseudo action: haproxy-clone_stop_0 * Fencing messaging-1 (reboot) * Pseudo action: stonith_complete - * Resource action: galera-0 start on controller-2 * Pseudo action: rabbitmq_post_notify_stop_0 * Pseudo action: rabbitmq-clone_stop_0 - * Resource action: galera monitor=10000 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: galera-0 monitor=20000 on controller-2 * Resource action: rabbitmq notify on messaging-2 * Resource action: rabbitmq notify on messaging-0 * Pseudo action: rabbitmq_notified_0 @@ -99,11 +96,14 @@ Executing cluster transition: * 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-0 start on controller-2 + * Resource action: galera monitor=10000 on galera-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 start on controller-0 * Resource action: stonith-fence_ipmilan-525400b4f6bd monitor=60000 on controller-0 * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2 + * Resource action: galera-0 monitor=20000 on controller-2 * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2 Using the original execution date of: 2017-05-03 13:33:24Z diff --git a/pengine/test10/remote-recover-unknown.dot b/pengine/test10/remote-recover-unknown.dot index a8b4e18..8ce59b4 100644 --- a/pengine/test10/remote-recover-unknown.dot +++ b/pengine/test10/remote-recover-unknown.dot @@ -1,4 +1,5 @@ digraph "g" { +"all_stopped" -> "galera-0_start_0 controller-2" [ style = bold] "all_stopped" -> "stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style = bold] "all_stopped" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold] "all_stopped" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] @@ -99,7 +100,6 @@ digraph "g" { "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] @@ -138,7 +138,6 @@ digraph "g" { "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" -> "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] diff --git a/pengine/test10/remote-recover-unknown.exp b/pengine/test10/remote-recover-unknown.exp index b8d51be..0d7b318 100644 --- a/pengine/test10/remote-recover-unknown.exp +++ b/pengine/test10/remote-recover-unknown.exp @@ -36,10 +36,10 @@ - + - + @@ -49,11 +49,7 @@ - - - - - + diff --git a/pengine/test10/remote-recover-unknown.summary b/pengine/test10/remote-recover-unknown.summary index 09f10d8..d47f174 100644 --- a/pengine/test10/remote-recover-unknown.summary +++ b/pengine/test10/remote-recover-unknown.summary @@ -55,12 +55,12 @@ Transition Summary: * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) Executing cluster transition: + * Pseudo action: galera-0_stop_0 * Pseudo action: redis-master_pre_notify_stop_0 * Resource action: stonith-fence_ipmilan-525400bbf613 stop on controller-0 * Resource action: stonith-fence_ipmilan-525400b4f6bd stop on controller-0 * Pseudo action: stonith-fence_ipmilan-5254005bdbb5_stop_0 * Fencing controller-1 (reboot) - * 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 @@ -71,15 +71,12 @@ Executing cluster transition: * Fencing galera-2 (reboot) * Fencing messaging-1 (reboot) * Pseudo action: stonith_complete - * Resource action: galera-0 start on controller-2 * Pseudo action: rabbitmq_post_notify_stop_0 * Pseudo action: rabbitmq-clone_stop_0 - * Resource action: galera monitor=10000 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: galera-0 monitor=20000 on controller-2 * Resource action: rabbitmq notify on messaging-2 * Resource action: rabbitmq notify on messaging-0 * Pseudo action: rabbitmq_notified_0 @@ -101,11 +98,14 @@ Executing cluster transition: * 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-0 start on controller-2 + * Resource action: galera monitor=10000 on galera-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 start on controller-0 * Resource action: stonith-fence_ipmilan-525400b4f6bd monitor=60000 on controller-0 * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2 + * Resource action: galera-0 monitor=20000 on controller-2 * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2 Using the original execution date of: 2017-05-03 13:33:24Z diff --git a/pengine/test10/remote-recovery.dot b/pengine/test10/remote-recovery.dot index d6fdefe..6cd342f 100644 --- a/pengine/test10/remote-recovery.dot +++ b/pengine/test10/remote-recovery.dot @@ -89,14 +89,11 @@ digraph "g" { "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] @@ -121,11 +118,8 @@ digraph "g" { "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" -> "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" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/remote-recovery.exp b/pengine/test10/remote-recovery.exp index cf74efb..40338b4 100644 --- a/pengine/test10/remote-recovery.exp +++ b/pengine/test10/remote-recovery.exp @@ -23,9 +23,6 @@ - - - @@ -34,11 +31,7 @@ - - - - - + @@ -64,9 +57,6 @@ - - - @@ -75,11 +65,7 @@ - - - - - + @@ -105,9 +91,6 @@ - - - @@ -116,11 +99,7 @@ - - - - - + diff --git a/pengine/test10/remote-recovery.summary b/pengine/test10/remote-recovery.summary index b0433fe..8246cd9 100644 --- a/pengine/test10/remote-recovery.summary +++ b/pengine/test10/remote-recovery.summary @@ -52,6 +52,9 @@ Transition Summary: * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) Executing cluster transition: + * Pseudo action: messaging-1_stop_0 + * Pseudo action: galera-0_stop_0 + * Pseudo action: galera-2_stop_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 @@ -61,9 +64,12 @@ Executing cluster transition: * 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: messaging-1_stop_0 - * Pseudo action: galera-0_stop_0 - * Pseudo action: galera-2_stop_0 + * 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 monitor=10000 on messaging-1 + * Resource action: galera monitor=10000 on galera-2 + * Resource action: galera monitor=10000 on galera-0 * Pseudo action: redis_post_notify_stop_0 * Resource action: redis notify on controller-0 * Resource action: redis notify on controller-2 @@ -72,20 +78,14 @@ Executing cluster transition: * Pseudo action: haproxy-clone_stop_0 * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2 * Pseudo action: stonith_complete - * 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 monitor=10000 on messaging-1 - * Resource action: galera monitor=10000 on galera-2 - * Resource action: galera monitor=10000 on galera-0 + * 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 * 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 * 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 diff --git a/pengine/test10/remote-unclean2.dot b/pengine/test10/remote-unclean2.dot index 3f8981b..2311a72 100644 --- a/pengine/test10/remote-unclean2.dot +++ b/pengine/test10/remote-unclean2.dot @@ -1,4 +1,5 @@ digraph "g" { +"all_stopped" -> "rhel7-auto4_start_0 rhel7-auto1" [ style = bold] "all_stopped" [ style=bold color="green" fontcolor="orange"] "rhel7-auto4_monitor_60000 rhel7-auto1" [ style=bold color="green" fontcolor="black"] "rhel7-auto4_start_0 rhel7-auto1" -> "rhel7-auto4_monitor_60000 rhel7-auto1" [ style = bold] @@ -9,6 +10,5 @@ "stonith 'reboot' rhel7-auto4" -> "stonith_complete" [ style = bold] "stonith 'reboot' rhel7-auto4" [ style=bold color="green" fontcolor="black"] "stonith_complete" -> "all_stopped" [ style = bold] -"stonith_complete" -> "rhel7-auto4_start_0 rhel7-auto1" [ style = bold] "stonith_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/remote-unclean2.exp b/pengine/test10/remote-unclean2.exp index ca0b3ba..2c73d82 100644 --- a/pengine/test10/remote-unclean2.exp +++ b/pengine/test10/remote-unclean2.exp @@ -11,7 +11,7 @@ - + diff --git a/pengine/test10/whitebox-fail1.dot b/pengine/test10/whitebox-fail1.dot index bfff4bf..9b755f9 100644 --- a/pengine/test10/whitebox-fail1.dot +++ b/pengine/test10/whitebox-fail1.dot @@ -26,6 +26,7 @@ digraph "g" { "M_stop_0 lxc1" -> "M_start_0 lxc1" [ style = bold] "M_stop_0 lxc1" -> "all_stopped" [ style = bold] "M_stop_0 lxc1" [ style=bold color="green" fontcolor="orange"] +"all_stopped" -> "lxc1_start_0 18node2" [ style = bold] "all_stopped" [ style=bold color="green" fontcolor="orange"] "container1_start_0 18node2" -> "B_start_0 lxc1" [ style = bold] "container1_start_0 18node2" -> "M_start_0 lxc1" [ style = bold] @@ -55,6 +56,5 @@ digraph "g" { "stonith_complete" -> "M_start_0 lxc1" [ style = bold] "stonith_complete" -> "all_stopped" [ style = bold] "stonith_complete" -> "container1_start_0 18node2" [ style = bold] -"stonith_complete" -> "lxc1_start_0 18node2" [ style = bold] "stonith_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/whitebox-fail1.exp b/pengine/test10/whitebox-fail1.exp index 901a1e3..1532c6e 100644 --- a/pengine/test10/whitebox-fail1.exp +++ b/pengine/test10/whitebox-fail1.exp @@ -227,13 +227,13 @@ - + - + - + diff --git a/pengine/test10/whitebox-fail1.summary b/pengine/test10/whitebox-fail1.summary index d1f3480..a5b85dd 100644 --- a/pengine/test10/whitebox-fail1.summary +++ b/pengine/test10/whitebox-fail1.summary @@ -31,17 +31,17 @@ Executing cluster transition: * Resource action: container1 start on 18node2 * Pseudo action: M-clone_stop_0 * Pseudo action: B_stop_0 - * Resource action: lxc1 start on 18node2 - * Resource action: lxc1 monitor=30000 on 18node2 * Pseudo action: M_stop_0 * Pseudo action: M-clone_stopped_0 * Pseudo action: M-clone_start_0 - * Resource action: B start on lxc1 * Pseudo action: all_stopped + * Resource action: lxc1 start on 18node2 + * Resource action: lxc1 monitor=30000 on 18node2 * Resource action: M start on lxc1 * Pseudo action: M-clone_running_0 - * Resource action: B monitor=10000 on lxc1 + * Resource action: B start on lxc1 * Resource action: M monitor=10000 on lxc1 + * Resource action: B monitor=10000 on lxc1 Revised cluster status: Online: [ 18node1 18node2 18node3 ] diff --git a/pengine/test10/whitebox-fail2.dot b/pengine/test10/whitebox-fail2.dot index bfff4bf..9b755f9 100644 --- a/pengine/test10/whitebox-fail2.dot +++ b/pengine/test10/whitebox-fail2.dot @@ -26,6 +26,7 @@ digraph "g" { "M_stop_0 lxc1" -> "M_start_0 lxc1" [ style = bold] "M_stop_0 lxc1" -> "all_stopped" [ style = bold] "M_stop_0 lxc1" [ style=bold color="green" fontcolor="orange"] +"all_stopped" -> "lxc1_start_0 18node2" [ style = bold] "all_stopped" [ style=bold color="green" fontcolor="orange"] "container1_start_0 18node2" -> "B_start_0 lxc1" [ style = bold] "container1_start_0 18node2" -> "M_start_0 lxc1" [ style = bold] @@ -55,6 +56,5 @@ digraph "g" { "stonith_complete" -> "M_start_0 lxc1" [ style = bold] "stonith_complete" -> "all_stopped" [ style = bold] "stonith_complete" -> "container1_start_0 18node2" [ style = bold] -"stonith_complete" -> "lxc1_start_0 18node2" [ style = bold] "stonith_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/whitebox-fail2.exp b/pengine/test10/whitebox-fail2.exp index 901a1e3..1532c6e 100644 --- a/pengine/test10/whitebox-fail2.exp +++ b/pengine/test10/whitebox-fail2.exp @@ -227,13 +227,13 @@ - + - + - + diff --git a/pengine/test10/whitebox-fail2.summary b/pengine/test10/whitebox-fail2.summary index ebf6c51..afee261 100644 --- a/pengine/test10/whitebox-fail2.summary +++ b/pengine/test10/whitebox-fail2.summary @@ -31,17 +31,17 @@ Executing cluster transition: * Resource action: container1 start on 18node2 * Pseudo action: M-clone_stop_0 * Pseudo action: B_stop_0 - * Resource action: lxc1 start on 18node2 - * Resource action: lxc1 monitor=30000 on 18node2 * Pseudo action: M_stop_0 * Pseudo action: M-clone_stopped_0 * Pseudo action: M-clone_start_0 - * Resource action: B start on lxc1 * Pseudo action: all_stopped + * Resource action: lxc1 start on 18node2 + * Resource action: lxc1 monitor=30000 on 18node2 * Resource action: M start on lxc1 * Pseudo action: M-clone_running_0 - * Resource action: B monitor=10000 on lxc1 + * Resource action: B start on lxc1 * Resource action: M monitor=10000 on lxc1 + * Resource action: B monitor=10000 on lxc1 Revised cluster status: Online: [ 18node1 18node2 18node3 ] diff --git a/pengine/test10/whitebox-imply-stop-on-fence.dot b/pengine/test10/whitebox-imply-stop-on-fence.dot index 7b536ea..1ef3cba 100644 --- a/pengine/test10/whitebox-imply-stop-on-fence.dot +++ b/pengine/test10/whitebox-imply-stop-on-fence.dot @@ -18,6 +18,8 @@ "R-lxc-02_kiff-01_stop_0 kiff-01" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] "R-lxc-02_kiff-01_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] "all_stopped" -> "fence-kiff-02_start_0 kiff-02" [ style = bold] +"all_stopped" -> "lxc-01_kiff-01_start_0 kiff-02" [ style = bold] +"all_stopped" -> "lxc-02_kiff-01_start_0 kiff-02" [ style = bold] "all_stopped" [ style=bold color="green" fontcolor="orange"] "clvmd-clone_stop_0" -> "clvmd-clone_stopped_0" [ style = bold] "clvmd-clone_stop_0" -> "clvmd_stop_0 kiff-01" [ style = bold] @@ -78,8 +80,6 @@ "stonith 'reboot' kiff-01" -> "clvmd_stop_0 kiff-01" [ style = bold] "stonith 'reboot' kiff-01" -> "dlm-clone_stop_0" [ style = bold] "stonith 'reboot' kiff-01" -> "dlm_stop_0 kiff-01" [ style = bold] -"stonith 'reboot' kiff-01" -> "lxc-01_kiff-01_stop_0 kiff-01" [ style = bold] -"stonith 'reboot' kiff-01" -> "lxc-02_kiff-01_stop_0 kiff-01" [ style = bold] "stonith 'reboot' kiff-01" -> "shared0-clone_stop_0" [ style = bold] "stonith 'reboot' kiff-01" -> "shared0_stop_0 kiff-01" [ style = bold] "stonith 'reboot' kiff-01" -> "stonith 'reboot' lxc-01_kiff-01" [ style = bold] @@ -94,8 +94,6 @@ "stonith_complete" -> "R-lxc-01_kiff-01_start_0 kiff-02" [ style = bold] "stonith_complete" -> "R-lxc-02_kiff-01_start_0 kiff-02" [ style = bold] "stonith_complete" -> "all_stopped" [ style = bold] -"stonith_complete" -> "lxc-01_kiff-01_start_0 kiff-02" [ style = bold] -"stonith_complete" -> "lxc-02_kiff-01_start_0 kiff-02" [ style = bold] "stonith_complete" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] "stonith_complete" [ style=bold color="green" fontcolor="orange"] "vm-fs_monitor_0 lxc-01_kiff-02" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] diff --git a/pengine/test10/whitebox-imply-stop-on-fence.exp b/pengine/test10/whitebox-imply-stop-on-fence.exp index f80dde1..c73d1d2 100644 --- a/pengine/test10/whitebox-imply-stop-on-fence.exp +++ b/pengine/test10/whitebox-imply-stop-on-fence.exp @@ -421,13 +421,13 @@ - + - + - + @@ -437,11 +437,7 @@ - - - - - + @@ -465,13 +461,13 @@ - + - + - + @@ -481,11 +477,7 @@ - - - - - + diff --git a/pengine/test10/whitebox-imply-stop-on-fence.summary b/pengine/test10/whitebox-imply-stop-on-fence.summary index d272b25..5ce580e 100644 --- a/pengine/test10/whitebox-imply-stop-on-fence.summary +++ b/pengine/test10/whitebox-imply-stop-on-fence.summary @@ -48,29 +48,23 @@ Executing cluster transition: * Resource action: shared0 monitor on lxc-01_kiff-02 * Resource action: vm-fs monitor on lxc-02_kiff-02 * Resource action: vm-fs monitor on lxc-01_kiff-02 - * Fencing kiff-01 (reboot) * Pseudo action: lxc-01_kiff-01_stop_0 * Pseudo action: lxc-02_kiff-01_stop_0 + * Fencing kiff-01 (reboot) + * Pseudo action: R-lxc-01_kiff-01_stop_0 + * Pseudo action: R-lxc-02_kiff-01_stop_0 * Pseudo action: stonith-lxc-02_kiff-01-reboot on lxc-02_kiff-01 * Pseudo action: stonith-lxc-01_kiff-01-reboot on lxc-01_kiff-01 * Pseudo action: stonith_complete - * Pseudo action: R-lxc-01_kiff-01_stop_0 - * Pseudo action: R-lxc-02_kiff-01_stop_0 - * Pseudo action: vm-fs_stop_0 * Pseudo action: shared0-clone_stop_0 * Resource action: R-lxc-01_kiff-01 start on kiff-02 * Resource action: R-lxc-02_kiff-01 start on kiff-02 - * Resource action: lxc-01_kiff-01 start on kiff-02 - * Resource action: lxc-02_kiff-01 start on kiff-02 + * Pseudo action: vm-fs_stop_0 * Pseudo action: shared0_stop_0 * Pseudo action: shared0-clone_stopped_0 * Resource action: R-lxc-01_kiff-01 monitor=10000 on kiff-02 * Resource action: R-lxc-02_kiff-01 monitor=10000 on kiff-02 - * Resource action: vm-fs start on lxc-01_kiff-01 - * Resource action: lxc-01_kiff-01 monitor=30000 on kiff-02 - * Resource action: lxc-02_kiff-01 monitor=30000 on kiff-02 * Pseudo action: clvmd-clone_stop_0 - * Resource action: vm-fs monitor=20000 on lxc-01_kiff-01 * Pseudo action: clvmd_stop_0 * Pseudo action: clvmd-clone_stopped_0 * Pseudo action: dlm-clone_stop_0 @@ -78,7 +72,13 @@ Executing cluster transition: * Pseudo action: dlm-clone_stopped_0 * Pseudo action: all_stopped * Resource action: fence-kiff-02 start on kiff-02 + * Resource action: lxc-01_kiff-01 start on kiff-02 + * Resource action: lxc-02_kiff-01 start on kiff-02 * Resource action: fence-kiff-02 monitor=60000 on kiff-02 + * Resource action: vm-fs start on lxc-01_kiff-01 + * Resource action: lxc-01_kiff-01 monitor=30000 on kiff-02 + * Resource action: lxc-02_kiff-01 monitor=30000 on kiff-02 + * Resource action: vm-fs monitor=20000 on lxc-01_kiff-01 Revised cluster status: Online: [ kiff-02 ] diff --git a/pengine/test10/whitebox-ms-ordering.dot b/pengine/test10/whitebox-ms-ordering.dot index 1f4d95b..d5112b9 100644 --- a/pengine/test10/whitebox-ms-ordering.dot +++ b/pengine/test10/whitebox-ms-ordering.dot @@ -1,4 +1,6 @@ digraph "g" { +"all_stopped" -> "lxc1_start_0 18node1" [ style = bold] +"all_stopped" -> "lxc2_start_0 18node1" [ style = bold] "all_stopped" [ style=bold color="green" fontcolor="orange"] "container1_monitor_0 18node1" -> "container1_start_0 18node1" [ style = bold] "container1_monitor_0 18node1" [ style=bold color="green" fontcolor="black"] @@ -106,7 +108,5 @@ "stonith_complete" -> "lxc-ms_promote_0 lxc1" [ style = bold] "stonith_complete" -> "lxc-ms_start_0 lxc1" [ style = bold] "stonith_complete" -> "lxc-ms_start_0 lxc2" [ style = bold] -"stonith_complete" -> "lxc1_start_0 18node1" [ style = bold] -"stonith_complete" -> "lxc2_start_0 18node1" [ style = bold] "stonith_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/whitebox-ms-ordering.exp b/pengine/test10/whitebox-ms-ordering.exp index c8fee5e..d5608e4 100644 --- a/pengine/test10/whitebox-ms-ordering.exp +++ b/pengine/test10/whitebox-ms-ordering.exp @@ -419,6 +419,9 @@ + + + @@ -430,9 +433,6 @@ - - - @@ -484,6 +484,9 @@ + + + @@ -495,9 +498,6 @@ - - - diff --git a/pengine/test10/whitebox-ms-ordering.summary b/pengine/test10/whitebox-ms-ordering.summary index d8ff62c..46fe9d1 100644 --- a/pengine/test10/whitebox-ms-ordering.summary +++ b/pengine/test10/whitebox-ms-ordering.summary @@ -43,18 +43,18 @@ Executing cluster transition: * Pseudo action: lxc-ms_demote_0 * Pseudo action: lxc-ms-master_demoted_0 * Pseudo action: lxc-ms-master_stop_0 - * Resource action: lxc1 start on 18node1 - * Resource action: lxc2 start on 18node1 * Pseudo action: lxc-ms_stop_0 * Pseudo action: lxc-ms_stop_0 * Pseudo action: lxc-ms-master_stopped_0 * Pseudo action: lxc-ms-master_start_0 - * Resource action: lxc1 monitor=30000 on 18node1 - * Resource action: lxc2 monitor=30000 on 18node1 * Pseudo action: all_stopped + * Resource action: lxc1 start on 18node1 + * Resource action: lxc2 start on 18node1 * Resource action: lxc-ms start on lxc1 * Resource action: lxc-ms start on lxc2 * Pseudo action: lxc-ms-master_running_0 + * Resource action: lxc1 monitor=30000 on 18node1 + * Resource action: lxc2 monitor=30000 on 18node1 * Resource action: lxc-ms monitor=10000 on lxc2 * Pseudo action: lxc-ms-master_promote_0 * Resource action: lxc-ms promote on lxc1 diff --git a/pengine/test10/whitebox-unexpectedly-running.dot b/pengine/test10/whitebox-unexpectedly-running.dot index fa1171e..f16e705 100644 --- a/pengine/test10/whitebox-unexpectedly-running.dot +++ b/pengine/test10/whitebox-unexpectedly-running.dot @@ -8,6 +8,8 @@ "FAKE-crashed_stop_0 18builder" -> "stonith 'reboot' remote2" [ style = bold] "FAKE-crashed_stop_0 18builder" [ style=bold color="green" fontcolor="black"] "FAKE_monitor_60000 18builder" [ style=bold color="green" fontcolor="black"] +"all_stopped" -> "remote1_start_0 18builder" [ style = bold] +"all_stopped" -> "remote2_start_0 18builder" [ style = bold] "all_stopped" [ style=bold color="green" fontcolor="orange"] "remote1_monitor_0 18builder" -> "remote1_start_0 18builder" [ style = bold] "remote1_monitor_0 18builder" [ style=bold color="green" fontcolor="black"] diff --git a/pengine/test10/whitebox-unexpectedly-running.exp b/pengine/test10/whitebox-unexpectedly-running.exp index c4e13b9..46376a5 100644 --- a/pengine/test10/whitebox-unexpectedly-running.exp +++ b/pengine/test10/whitebox-unexpectedly-running.exp @@ -65,6 +65,9 @@ + + + @@ -100,6 +103,9 @@ + + + -- 1.8.3.1 From b04b392925daa70af17f2abdef9a6198127c5608 Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Fri, 8 Dec 2017 13:53:36 +1100 Subject: [PATCH 11/16] Fix: PE: Ensure stop operations occur after stopped remote connections have been brought up --- pengine/allocate.c | 55 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/pengine/allocate.c b/pengine/allocate.c index 2ae491c..1c95e97 100644 --- a/pengine/allocate.c +++ b/pengine/allocate.c @@ -48,6 +48,25 @@ enum remote_connection_state { remote_state_stopped = 4 }; +static const char * +state2text(enum remote_connection_state state) +{ + switch (state) { + case remote_state_unknown: + return "unknown"; + case remote_state_alive: + return "alive"; + case remote_state_resting: + return "resting"; + case remote_state_failed: + return "failed"; + case remote_state_stopped: + return "stopped"; + } + + return "impossible"; +} + resource_alloc_functions_t resource_class_alloc_functions[] = { { native_merge_weights, @@ -2011,10 +2030,10 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) cluster_node = remote_rsc->running_on->data; } - crm_trace("Order %s action %s relative to %s%s (state %d)", + crm_trace("Order %s action %s relative to %s%s (state: %s)", action->task, action->uuid, is_set(remote_rsc->flags, pe_rsc_failed)? "failed " : "", - remote_rsc->id, state); + remote_rsc->id, state2text(state)); if (safe_str_eq(action->task, CRMD_ACTION_MIGRATE) || safe_str_eq(action->task, CRMD_ACTION_MIGRATE)) { @@ -2042,23 +2061,29 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) /* Handle special case with remote node where stop actions need to be * ordered after the connection resource starts somewhere else. */ - if(state == remote_state_resting) { - /* Wait for the connection resource to be up and assume everything is as we left it */ - order_start_then_action(remote_rsc, action, pe_order_none, - data_set); + if(state == remote_state_alive) { + order_action_then_stop(action, remote_rsc, + pe_order_implies_first, data_set); - } else { - if(state == remote_state_failed) { - /* We would only be here if the resource is - * running on the remote node. Since we have no - * way to stop it, it is necessary to fence the - * node. - */ - pe_fence_node(data_set, action->node, "resources are active and the connection is unrecoverable"); - } + } else if(state == remote_state_failed) { + /* We would only be here if the resource is + * running on the remote node. Since we have no + * way to stop it, it is necessary to fence the + * node. + */ + pe_fence_node(data_set, action->node, "resources are active and the connection is unrecoverable"); + order_action_then_stop(action, remote_rsc, + pe_order_implies_first, data_set); + } else if(remote_rsc->next_role == RSC_ROLE_STOPPED) { + /* If its not coming back up, better do what we need first */ order_action_then_stop(action, remote_rsc, pe_order_implies_first, data_set); + + } else { + /* Wait for the connection resource to be up and assume everything is as we left it */ + order_start_then_action(remote_rsc, action, pe_order_none, data_set); + } break; -- 1.8.3.1 From 502770c763807bc7ac19bf2b2fd50d4a0e195df0 Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Fri, 8 Dec 2017 13:56:03 +1100 Subject: [PATCH 12/16] Test: PE: Ensure stop operations occur after stopped remote connections have been brought up --- pengine/regression.sh | 1 + pengine/test10/bundle-order-stop-on-remote.dot | 307 ++++ pengine/test10/bundle-order-stop-on-remote.exp | 1607 ++++++++++++++++++++ pengine/test10/bundle-order-stop-on-remote.scores | 934 ++++++++++++ pengine/test10/bundle-order-stop-on-remote.summary | 224 +++ pengine/test10/bundle-order-stop-on-remote.xml | 1165 ++++++++++++++ 6 files changed, 4238 insertions(+) create mode 100644 pengine/test10/bundle-order-stop-on-remote.dot create mode 100644 pengine/test10/bundle-order-stop-on-remote.exp create mode 100644 pengine/test10/bundle-order-stop-on-remote.scores create mode 100644 pengine/test10/bundle-order-stop-on-remote.summary create mode 100644 pengine/test10/bundle-order-stop-on-remote.xml diff --git a/pengine/regression.sh b/pengine/regression.sh index 47cf0ba..cf1824a 100755 --- a/pengine/regression.sh +++ b/pengine/regression.sh @@ -819,6 +819,7 @@ do_test bundle-order-partial-start "Bundle startup ordering when some dependanci do_test bundle-order-partial-start-2 "Bundle startup ordering when some dependancies and the container are already running" do_test bundle-order-stop "Bundle stop ordering" do_test bundle-order-partial-stop "Bundle startup ordering when some dependancies are already stopped" +do_test bundle-order-stop-on-remote "Stop nested resource after bringing up the connection" do_test bundle-order-startup-clone "Prevent startup because bundle isn't promoted" do_test bundle-order-startup-clone-2 "Bundle startup with clones" diff --git a/pengine/test10/bundle-order-stop-on-remote.dot b/pengine/test10/bundle-order-stop-on-remote.dot new file mode 100644 index 0000000..f0b6336 --- /dev/null +++ b/pengine/test10/bundle-order-stop-on-remote.dot @@ -0,0 +1,307 @@ +digraph "g" { +"all_stopped" [ style=bold color="green" fontcolor="orange"] +"database-0_monitor_20000 controller-0" [ style=bold color="green" fontcolor="black"] +"database-0_start_0 controller-0" -> "database-0_monitor_20000 controller-0" [ style = bold] +"database-0_start_0 controller-0" -> "galera-bundle-docker-0_monitor_60000 database-0" [ style = bold] +"database-0_start_0 controller-0" -> "galera-bundle-docker-0_start_0 database-0" [ style = bold] +"database-0_start_0 controller-0" -> "galera-bundle-docker-0_stop_0 database-0" [ style = bold] +"database-0_start_0 controller-0" [ style=bold color="green" fontcolor="black"] +"database-2_monitor_20000 controller-1" [ style=bold color="green" fontcolor="black"] +"database-2_start_0 controller-1" -> "database-2_monitor_20000 controller-1" [ style = bold] +"database-2_start_0 controller-1" -> "galera-bundle-docker-2_monitor_60000 database-2" [ style = bold] +"database-2_start_0 controller-1" -> "galera-bundle-docker-2_start_0 database-2" [ style = bold] +"database-2_start_0 controller-1" -> "galera-bundle-docker-2_stop_0 database-2" [ style = bold] +"database-2_start_0 controller-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-0_monitor_0 controller-1" -> "galera-bundle-0_start_0 controller-0" [ style = bold] +"galera-bundle-0_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-0_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] +"galera-bundle-0_start_0 controller-0" -> "galera-bundle-0_monitor_60000 controller-0" [ style = bold] +"galera-bundle-0_start_0 controller-0" -> "galera_monitor_10000 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 controller-0" -> "galera_promote_0 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 controller-0" -> "galera_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 controller-0" [ style=bold color="green" fontcolor="black"] +"galera-bundle-2_monitor_0 controller-1" -> "galera-bundle-2_start_0 controller-1" [ style = bold] +"galera-bundle-2_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-2_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-2_start_0 controller-1" -> "galera-bundle-2_monitor_60000 controller-1" [ style = bold] +"galera-bundle-2_start_0 controller-1" -> "galera_monitor_10000 galera-bundle-2" [ style = bold] +"galera-bundle-2_start_0 controller-1" -> "galera_promote_0 galera-bundle-2" [ style = bold] +"galera-bundle-2_start_0 controller-1" -> "galera_start_0 galera-bundle-2" [ style = bold] +"galera-bundle-2_start_0 controller-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_60000 database-0" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_start_0 database-0" -> "galera-bundle-0_monitor_0 controller-1" [ style = bold] +"galera-bundle-docker-0_start_0 database-0" -> "galera-bundle-0_start_0 controller-0" [ style = bold] +"galera-bundle-docker-0_start_0 database-0" -> "galera-bundle-docker-0_monitor_60000 database-0" [ style = bold] +"galera-bundle-docker-0_start_0 database-0" -> "galera-bundle_running_0" [ style = bold] +"galera-bundle-docker-0_start_0 database-0" -> "galera_promote_0 galera-bundle-0" [ style = bold] +"galera-bundle-docker-0_start_0 database-0" -> "galera_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-docker-0_start_0 database-0" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_stop_0 database-0" -> "all_stopped" [ style = bold] +"galera-bundle-docker-0_stop_0 database-0" -> "galera-bundle-docker-0_start_0 database-0" [ style = bold] +"galera-bundle-docker-0_stop_0 database-0" -> "galera-bundle_stopped_0" [ style = bold] +"galera-bundle-docker-0_stop_0 database-0" -> "stonith 'reboot' galera-bundle-0" [ style = bold] +"galera-bundle-docker-0_stop_0 database-0" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-2_monitor_60000 database-2" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-2_start_0 database-2" -> "galera-bundle-2_monitor_0 controller-1" [ style = bold] +"galera-bundle-docker-2_start_0 database-2" -> "galera-bundle-2_start_0 controller-1" [ style = bold] +"galera-bundle-docker-2_start_0 database-2" -> "galera-bundle-docker-2_monitor_60000 database-2" [ style = bold] +"galera-bundle-docker-2_start_0 database-2" -> "galera-bundle_running_0" [ style = bold] +"galera-bundle-docker-2_start_0 database-2" -> "galera_promote_0 galera-bundle-2" [ style = bold] +"galera-bundle-docker-2_start_0 database-2" -> "galera_start_0 galera-bundle-2" [ style = bold] +"galera-bundle-docker-2_start_0 database-2" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-2_stop_0 database-2" -> "all_stopped" [ style = bold] +"galera-bundle-docker-2_stop_0 database-2" -> "galera-bundle-docker-2_start_0 database-2" [ style = bold] +"galera-bundle-docker-2_stop_0 database-2" -> "galera-bundle_stopped_0" [ style = bold] +"galera-bundle-docker-2_stop_0 database-2" -> "stonith 'reboot' galera-bundle-2" [ style = bold] +"galera-bundle-docker-2_stop_0 database-2" [ style=bold color="green" fontcolor="black"] +"galera-bundle-master_demote_0" -> "galera-bundle-master_demoted_0" [ style = bold] +"galera-bundle-master_demote_0" -> "galera_demote_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_demote_0" -> "galera_demote_0 galera-bundle-2" [ style = bold] +"galera-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_demoted_0" -> "galera-bundle-master_promote_0" [ style = bold] +"galera-bundle-master_demoted_0" -> "galera-bundle-master_start_0" [ style = bold] +"galera-bundle-master_demoted_0" -> "galera-bundle-master_stop_0" [ style = bold] +"galera-bundle-master_demoted_0" -> "galera-bundle_demoted_0" [ style = bold] +"galera-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_promote_0" -> "galera_promote_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_promote_0" -> "galera_promote_0 galera-bundle-2" [ style = bold] +"galera-bundle-master_promote_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_promoted_0" -> "galera-bundle_promoted_0" [ style = bold] +"galera-bundle-master_promoted_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_running_0" -> "galera-bundle-master_promote_0" [ style = bold] +"galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] +"galera-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = bold] +"galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-2" [ style = bold] +"galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_stop_0" -> "galera-bundle-master_stopped_0" [ style = bold] +"galera-bundle-master_stop_0" -> "galera_stop_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_stop_0" -> "galera_stop_0 galera-bundle-2" [ style = bold] +"galera-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_stopped_0" -> "galera-bundle-master_promote_0" [ style = bold] +"galera-bundle-master_stopped_0" -> "galera-bundle-master_start_0" [ style = bold] +"galera-bundle-master_stopped_0" -> "galera-bundle_stopped_0" [ style = bold] +"galera-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_demote_0" -> "galera-bundle-master_demote_0" [ style = bold] +"galera-bundle_demote_0" -> "galera-bundle_demoted_0" [ style = bold] +"galera-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_demoted_0" -> "galera-bundle_promote_0" [ style = bold] +"galera-bundle_demoted_0" -> "galera-bundle_start_0" [ style = bold] +"galera-bundle_demoted_0" -> "galera-bundle_stop_0" [ style = bold] +"galera-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_promote_0" -> "galera-bundle-master_promote_0" [ style = bold] +"galera-bundle_promote_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_running_0" -> "galera-bundle_promote_0" [ style = bold] +"galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 database-0" [ style = bold] +"galera-bundle_start_0" -> "galera-bundle-docker-2_start_0 database-2" [ style = bold] +"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] +"galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_stop_0" -> "galera-bundle-docker-0_stop_0 database-0" [ style = bold] +"galera-bundle_stop_0" -> "galera-bundle-docker-2_stop_0 database-2" [ style = bold] +"galera-bundle_stop_0" -> "galera-bundle-master_stop_0" [ style = bold] +"galera-bundle_stop_0" -> "galera_stop_0 galera-bundle-0" [ style = bold] +"galera-bundle_stop_0" -> "galera_stop_0 galera-bundle-2" [ style = bold] +"galera-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_stopped_0" -> "galera-bundle_promote_0" [ style = bold] +"galera-bundle_stopped_0" -> "galera-bundle_start_0" [ style = bold] +"galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] +"galera_demote_0 galera-bundle-0" -> "galera-bundle-master_demoted_0" [ style = bold] +"galera_demote_0 galera-bundle-0" -> "galera_promote_0 galera-bundle-0" [ style = bold] +"galera_demote_0 galera-bundle-0" -> "galera_stop_0 galera-bundle-0" [ style = bold] +"galera_demote_0 galera-bundle-0" [ style=bold color="green" fontcolor="orange"] +"galera_demote_0 galera-bundle-2" -> "galera-bundle-master_demoted_0" [ style = bold] +"galera_demote_0 galera-bundle-2" -> "galera_promote_0 galera-bundle-2" [ style = bold] +"galera_demote_0 galera-bundle-2" -> "galera_stop_0 galera-bundle-2" [ style = bold] +"galera_demote_0 galera-bundle-2" [ style=bold color="green" fontcolor="orange"] +"galera_monitor_10000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera_monitor_10000 galera-bundle-2" [ style=bold color="green" fontcolor="black"] +"galera_promote_0 galera-bundle-0" -> "galera-bundle-master_promoted_0" [ style = bold] +"galera_promote_0 galera-bundle-0" -> "galera_monitor_10000 galera-bundle-0" [ style = bold] +"galera_promote_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera_promote_0 galera-bundle-2" -> "galera-bundle-master_promoted_0" [ style = bold] +"galera_promote_0 galera-bundle-2" -> "galera_monitor_10000 galera-bundle-2" [ style = bold] +"galera_promote_0 galera-bundle-2" [ style=bold color="green" fontcolor="black"] +"galera_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = bold] +"galera_start_0 galera-bundle-0" -> "galera_monitor_10000 galera-bundle-0" [ style = bold] +"galera_start_0 galera-bundle-0" -> "galera_promote_0 galera-bundle-0" [ style = bold] +"galera_start_0 galera-bundle-0" -> "galera_start_0 galera-bundle-2" [ style = bold] +"galera_start_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera_start_0 galera-bundle-2" -> "galera-bundle-master_running_0" [ style = bold] +"galera_start_0 galera-bundle-2" -> "galera_monitor_10000 galera-bundle-2" [ style = bold] +"galera_start_0 galera-bundle-2" -> "galera_promote_0 galera-bundle-2" [ style = bold] +"galera_start_0 galera-bundle-2" [ style=bold color="green" fontcolor="black"] +"galera_stop_0 galera-bundle-0" -> "all_stopped" [ style = bold] +"galera_stop_0 galera-bundle-0" -> "galera-bundle-master_stopped_0" [ style = bold] +"galera_stop_0 galera-bundle-0" -> "galera_start_0 galera-bundle-0" [ style = bold] +"galera_stop_0 galera-bundle-0" [ style=bold color="green" fontcolor="orange"] +"galera_stop_0 galera-bundle-2" -> "all_stopped" [ style = bold] +"galera_stop_0 galera-bundle-2" -> "galera-bundle-master_stopped_0" [ style = bold] +"galera_stop_0 galera-bundle-2" -> "galera_start_0 galera-bundle-2" [ style = bold] +"galera_stop_0 galera-bundle-2" -> "galera_stop_0 galera-bundle-0" [ style = bold] +"galera_stop_0 galera-bundle-2" [ style=bold color="green" fontcolor="orange"] +"haproxy-bundle-docker-1_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-1_start_0 controller-1" -> "haproxy-bundle-docker-1_monitor_60000 controller-1" [ style = bold] +"haproxy-bundle-docker-1_start_0 controller-1" -> "haproxy-bundle_running_0" [ style = bold] +"haproxy-bundle-docker-1_start_0 controller-1" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"haproxy-bundle_start_0" -> "haproxy-bundle-docker-1_start_0 controller-1" [ style = bold] +"haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"ip-10.0.0.104_monitor_10000 controller-1" [ style=bold color="green" fontcolor="black"] +"ip-10.0.0.104_start_0 controller-1" -> "haproxy-bundle_start_0" [ style = bold] +"ip-10.0.0.104_start_0 controller-1" -> "ip-10.0.0.104_monitor_10000 controller-1" [ style = bold] +"ip-10.0.0.104_start_0 controller-1" [ style=bold color="green" fontcolor="black"] +"ip-172.17.1.11_monitor_10000 controller-0" [ style=bold color="green" fontcolor="black"] +"ip-172.17.1.11_start_0 controller-0" -> "haproxy-bundle_start_0" [ style = bold] +"ip-172.17.1.11_start_0 controller-0" -> "ip-172.17.1.11_monitor_10000 controller-0" [ style = bold] +"ip-172.17.1.11_start_0 controller-0" [ style=bold color="green" fontcolor="black"] +"ip-172.17.3.13_monitor_10000 controller-1" [ style=bold color="green" fontcolor="black"] +"ip-172.17.3.13_start_0 controller-1" -> "haproxy-bundle_start_0" [ style = bold] +"ip-172.17.3.13_start_0 controller-1" -> "ip-172.17.3.13_monitor_10000 controller-1" [ style = bold] +"ip-172.17.3.13_start_0 controller-1" [ style=bold color="green" fontcolor="black"] +"ip-192.168.24.11_monitor_10000 controller-0" [ style=bold color="green" fontcolor="black"] +"ip-192.168.24.11_start_0 controller-0" -> "haproxy-bundle_start_0" [ style = bold] +"ip-192.168.24.11_start_0 controller-0" -> "ip-192.168.24.11_monitor_10000 controller-0" [ style = bold] +"ip-192.168.24.11_start_0 controller-0" [ style=bold color="green" fontcolor="black"] +"openstack-cinder-volume_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] +"openstack-cinder-volume_start_0 controller-0" -> "openstack-cinder-volume_monitor_60000 controller-0" [ style = bold] +"openstack-cinder-volume_start_0 controller-0" [ style=bold color="green" fontcolor="black"] +"redis-bundle-1_monitor_0 controller-1" -> "redis-bundle-1_start_0 controller-1" [ style = bold] +"redis-bundle-1_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-1_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-1_start_0 controller-1" -> "redis-bundle-1_monitor_60000 controller-1" [ style = bold] +"redis-bundle-1_start_0 controller-1" -> "redis:1_monitor_45000 redis-bundle-1" [ style = bold] +"redis-bundle-1_start_0 controller-1" -> "redis:1_monitor_60000 redis-bundle-1" [ style = bold] +"redis-bundle-1_start_0 controller-1" -> "redis:1_start_0 redis-bundle-1" [ style = bold] +"redis-bundle-1_start_0 controller-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-1_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-1_start_0 controller-1" -> "redis-bundle-1_monitor_0 controller-1" [ style = bold] +"redis-bundle-docker-1_start_0 controller-1" -> "redis-bundle-1_start_0 controller-1" [ style = bold] +"redis-bundle-docker-1_start_0 controller-1" -> "redis-bundle-docker-1_monitor_60000 controller-1" [ style = bold] +"redis-bundle-docker-1_start_0 controller-1" -> "redis-bundle_running_0" [ style = bold] +"redis-bundle-docker-1_start_0 controller-1" -> "redis:1_start_0 redis-bundle-1" [ style = bold] +"redis-bundle-docker-1_start_0 controller-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis-bundle_promoted_0" [ style = bold] +"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis:1_monitor_45000 redis-bundle-1" [ style = bold] +"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis:1_monitor_60000 redis-bundle-1" [ style = bold] +"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis_monitor_20000 redis-bundle-0" [ style = bold] +"redis-bundle-master_confirmed-post_notify_promoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_confirmed-post_notify_running_0" -> "redis-bundle-master_pre_notify_promote_0" [ style = bold] +"redis-bundle-master_confirmed-post_notify_running_0" -> "redis-bundle_running_0" [ style = bold] +"redis-bundle-master_confirmed-post_notify_running_0" -> "redis:1_monitor_45000 redis-bundle-1" [ style = bold] +"redis-bundle-master_confirmed-post_notify_running_0" -> "redis:1_monitor_60000 redis-bundle-1" [ style = bold] +"redis-bundle-master_confirmed-post_notify_running_0" -> "redis_monitor_20000 redis-bundle-0" [ style = bold] +"redis-bundle-master_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_confirmed-pre_notify_promote_0" -> "redis-bundle-master_post_notify_promoted_0" [ style = bold] +"redis-bundle-master_confirmed-pre_notify_promote_0" -> "redis-bundle-master_promote_0" [ style = bold] +"redis-bundle-master_confirmed-pre_notify_promote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_confirmed-pre_notify_start_0" -> "redis-bundle-master_post_notify_running_0" [ style = bold] +"redis-bundle-master_confirmed-pre_notify_start_0" -> "redis-bundle-master_start_0" [ style = bold] +"redis-bundle-master_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_post_notify_promoted_0" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ style = bold] +"redis-bundle-master_post_notify_promoted_0" -> "redis:1_post_notify_promote_0 redis-bundle-1" [ style = bold] +"redis-bundle-master_post_notify_promoted_0" -> "redis_post_notify_promoted_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_post_notify_promoted_0" -> "redis_post_notify_promoted_0 redis-bundle-2" [ style = bold] +"redis-bundle-master_post_notify_promoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_post_notify_running_0" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] +"redis-bundle-master_post_notify_running_0" -> "redis:1_post_notify_start_0 redis-bundle-1" [ style = bold] +"redis-bundle-master_post_notify_running_0" -> "redis_post_notify_running_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_post_notify_running_0" -> "redis_post_notify_running_0 redis-bundle-2" [ style = bold] +"redis-bundle-master_post_notify_running_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_pre_notify_promote_0" -> "redis-bundle-master_confirmed-pre_notify_promote_0" [ style = bold] +"redis-bundle-master_pre_notify_promote_0" -> "redis:1_pre_notify_promote_0 redis-bundle-1" [ style = bold] +"redis-bundle-master_pre_notify_promote_0" -> "redis_pre_notify_promote_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_pre_notify_promote_0" -> "redis_pre_notify_promote_0 redis-bundle-2" [ style = bold] +"redis-bundle-master_pre_notify_promote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_pre_notify_start_0" -> "redis-bundle-master_confirmed-pre_notify_start_0" [ style = bold] +"redis-bundle-master_pre_notify_start_0" -> "redis_pre_notify_start_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_pre_notify_start_0" -> "redis_pre_notify_start_0 redis-bundle-2" [ style = bold] +"redis-bundle-master_pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_promote_0" -> "redis_promote_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_promote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_promoted_0" -> "redis-bundle-master_post_notify_promoted_0" [ style = bold] +"redis-bundle-master_promoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_running_0" -> "redis-bundle-master_post_notify_running_0" [ style = bold] +"redis-bundle-master_running_0" -> "redis-bundle-master_promote_0" [ style = bold] +"redis-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = bold] +"redis-bundle-master_start_0" -> "redis:1_start_0 redis-bundle-1" [ style = bold] +"redis-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_promote_0" -> "redis-bundle-master_promote_0" [ style = bold] +"redis-bundle_promote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_running_0" -> "redis-bundle_promote_0" [ style = bold] +"redis-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_start_0" -> "redis-bundle-docker-1_start_0 controller-1" [ style = bold] +"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = bold] +"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"redis:1_monitor_45000 redis-bundle-1" [ style=bold color="green" fontcolor="black"] +"redis:1_monitor_60000 redis-bundle-1" [ style=bold color="green" fontcolor="black"] +"redis:1_post_notify_promote_0 redis-bundle-1" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ style = bold] +"redis:1_post_notify_promote_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] +"redis:1_post_notify_start_0 redis-bundle-1" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] +"redis:1_post_notify_start_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] +"redis:1_pre_notify_promote_0 redis-bundle-1" -> "redis-bundle-master_confirmed-pre_notify_promote_0" [ style = bold] +"redis:1_pre_notify_promote_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] +"redis:1_start_0 redis-bundle-1" -> "redis-bundle-master_running_0" [ style = bold] +"redis:1_start_0 redis-bundle-1" -> "redis:1_monitor_45000 redis-bundle-1" [ style = bold] +"redis:1_start_0 redis-bundle-1" -> "redis:1_monitor_60000 redis-bundle-1" [ style = bold] +"redis:1_start_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] +"redis_monitor_20000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis_post_notify_promoted_0 redis-bundle-0" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ style = bold] +"redis_post_notify_promoted_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis_post_notify_promoted_0 redis-bundle-2" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ style = bold] +"redis_post_notify_promoted_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] +"redis_post_notify_running_0 redis-bundle-0" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] +"redis_post_notify_running_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis_post_notify_running_0 redis-bundle-2" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] +"redis_post_notify_running_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] +"redis_pre_notify_promote_0 redis-bundle-0" -> "redis-bundle-master_confirmed-pre_notify_promote_0" [ style = bold] +"redis_pre_notify_promote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis_pre_notify_promote_0 redis-bundle-2" -> "redis-bundle-master_confirmed-pre_notify_promote_0" [ style = bold] +"redis_pre_notify_promote_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] +"redis_pre_notify_start_0 redis-bundle-0" -> "redis-bundle-master_confirmed-pre_notify_start_0" [ style = bold] +"redis_pre_notify_start_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis_pre_notify_start_0 redis-bundle-2" -> "redis-bundle-master_confirmed-pre_notify_start_0" [ style = bold] +"redis_pre_notify_start_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] +"redis_promote_0 redis-bundle-0" -> "redis-bundle-master_promoted_0" [ style = bold] +"redis_promote_0 redis-bundle-0" -> "redis_monitor_20000 redis-bundle-0" [ style = bold] +"redis_promote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"stonith 'reboot' galera-bundle-0" -> "galera-bundle-master_stop_0" [ style = bold] +"stonith 'reboot' galera-bundle-0" -> "stonith_complete" [ style = bold] +"stonith 'reboot' galera-bundle-0" [ style=bold color="green" fontcolor="orange"] +"stonith 'reboot' galera-bundle-2" -> "galera-bundle-master_stop_0" [ style = bold] +"stonith 'reboot' galera-bundle-2" -> "stonith_complete" [ style = bold] +"stonith 'reboot' galera-bundle-2" [ style=bold color="green" fontcolor="orange"] +"stonith-fence_ipmilan-525400498d34_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] +"stonith-fence_ipmilan-525400498d34_start_0 controller-1" -> "stonith-fence_ipmilan-525400498d34_monitor_60000 controller-1" [ style = bold] +"stonith-fence_ipmilan-525400498d34_start_0 controller-1" [ style=bold color="green" fontcolor="black"] +"stonith-fence_ipmilan-525400542c06_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] +"stonith-fence_ipmilan-525400542c06_start_0 controller-0" -> "stonith-fence_ipmilan-525400542c06_monitor_60000 controller-0" [ style = bold] +"stonith-fence_ipmilan-525400542c06_start_0 controller-0" [ style=bold color="green" fontcolor="black"] +"stonith-fence_ipmilan-5254005ea387_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] +"stonith-fence_ipmilan-5254005ea387_start_0 controller-1" -> "stonith-fence_ipmilan-5254005ea387_monitor_60000 controller-1" [ style = bold] +"stonith-fence_ipmilan-5254005ea387_start_0 controller-1" [ style=bold color="green" fontcolor="black"] +"stonith-fence_ipmilan-525400c709f7_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] +"stonith-fence_ipmilan-525400c709f7_start_0 controller-1" -> "stonith-fence_ipmilan-525400c709f7_monitor_60000 controller-1" [ style = bold] +"stonith-fence_ipmilan-525400c709f7_start_0 controller-1" [ style=bold color="green" fontcolor="black"] +"stonith_complete" -> "all_stopped" [ style = bold] +"stonith_complete" -> "galera-bundle-docker-0_start_0 database-0" [ style = bold] +"stonith_complete" -> "galera-bundle-docker-2_start_0 database-2" [ style = bold] +"stonith_complete" -> "galera_promote_0 galera-bundle-0" [ style = bold] +"stonith_complete" -> "galera_promote_0 galera-bundle-2" [ style = bold] +"stonith_complete" -> "galera_start_0 galera-bundle-0" [ style = bold] +"stonith_complete" -> "galera_start_0 galera-bundle-2" [ style = bold] +"stonith_complete" -> "haproxy-bundle-docker-1_start_0 controller-1" [ style = bold] +"stonith_complete" -> "ip-10.0.0.104_start_0 controller-1" [ style = bold] +"stonith_complete" -> "ip-172.17.1.11_start_0 controller-0" [ style = bold] +"stonith_complete" -> "ip-172.17.3.13_start_0 controller-1" [ style = bold] +"stonith_complete" -> "ip-192.168.24.11_start_0 controller-0" [ style = bold] +"stonith_complete" -> "openstack-cinder-volume_start_0 controller-0" [ style = bold] +"stonith_complete" -> "redis-bundle-docker-1_start_0 controller-1" [ style = bold] +"stonith_complete" -> "redis:1_start_0 redis-bundle-1" [ style = bold] +"stonith_complete" -> "redis_promote_0 redis-bundle-0" [ style = bold] +"stonith_complete" [ style=bold color="green" fontcolor="orange"] +} diff --git a/pengine/test10/bundle-order-stop-on-remote.exp b/pengine/test10/bundle-order-stop-on-remote.exp new file mode 100644 index 0000000..db5386b --- /dev/null +++ b/pengine/test10/bundle-order-stop-on-remote.exp @@ -0,0 +1,1607 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-stop-on-remote.scores b/pengine/test10/bundle-order-stop-on-remote.scores new file mode 100644 index 0000000..e26f511 --- /dev/null +++ b/pengine/test10/bundle-order-stop-on-remote.scores @@ -0,0 +1,934 @@ +Allocation scores: +clone_color: galera-bundle-master allocation score on controller-0: -INFINITY +clone_color: galera-bundle-master allocation score on controller-1: -INFINITY +clone_color: galera-bundle-master allocation score on controller-2: -INFINITY +clone_color: galera-bundle-master allocation score on database-0: -INFINITY +clone_color: galera-bundle-master allocation score on database-1: -INFINITY +clone_color: galera-bundle-master allocation score on database-2: -INFINITY +clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 +clone_color: galera-bundle-master allocation score on galera-bundle-1: 0 +clone_color: galera-bundle-master allocation score on galera-bundle-2: 0 +clone_color: galera-bundle-master allocation score on messaging-0: -INFINITY +clone_color: galera-bundle-master allocation score on messaging-1: -INFINITY +clone_color: galera-bundle-master allocation score on messaging-2: -INFINITY +clone_color: galera:0 allocation score on galera-bundle-0: INFINITY +clone_color: galera:1 allocation score on galera-bundle-1: INFINITY +clone_color: galera:2 allocation score on galera-bundle-2: INFINITY +clone_color: rabbitmq-bundle-clone allocation score on controller-0: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on controller-1: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on controller-2: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on database-0: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on database-1: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on database-2: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on messaging-0: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on messaging-1: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on messaging-2: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-1: 0 +clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-2: 0 +clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY +clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY +clone_color: redis-bundle-master allocation score on controller-0: -INFINITY +clone_color: redis-bundle-master allocation score on controller-1: -INFINITY +clone_color: redis-bundle-master allocation score on controller-2: -INFINITY +clone_color: redis-bundle-master allocation score on database-0: -INFINITY +clone_color: redis-bundle-master allocation score on database-1: -INFINITY +clone_color: redis-bundle-master allocation score on database-2: -INFINITY +clone_color: redis-bundle-master allocation score on messaging-0: -INFINITY +clone_color: redis-bundle-master allocation score on messaging-1: -INFINITY +clone_color: redis-bundle-master allocation score on messaging-2: -INFINITY +clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 +clone_color: redis-bundle-master allocation score on redis-bundle-1: 0 +clone_color: redis-bundle-master allocation score on redis-bundle-2: 0 +clone_color: redis:0 allocation score on redis-bundle-0: INFINITY +clone_color: redis:1 allocation score on redis-bundle-1: INFINITY +clone_color: redis:2 allocation score on redis-bundle-2: INFINITY +container_color: galera-bundle allocation score on controller-0: -INFINITY +container_color: galera-bundle allocation score on controller-1: -INFINITY +container_color: galera-bundle allocation score on controller-2: -INFINITY +container_color: galera-bundle allocation score on database-0: 0 +container_color: galera-bundle allocation score on database-1: 0 +container_color: galera-bundle allocation score on database-2: 0 +container_color: galera-bundle allocation score on messaging-0: -INFINITY +container_color: galera-bundle allocation score on messaging-1: -INFINITY +container_color: galera-bundle allocation score on messaging-2: -INFINITY +container_color: galera-bundle-0 allocation score on controller-0: 0 +container_color: galera-bundle-0 allocation score on controller-1: 0 +container_color: galera-bundle-0 allocation score on controller-2: 0 +container_color: galera-bundle-0 allocation score on database-0: -INFINITY +container_color: galera-bundle-0 allocation score on database-1: -INFINITY +container_color: galera-bundle-0 allocation score on database-2: -INFINITY +container_color: galera-bundle-0 allocation score on messaging-0: -INFINITY +container_color: galera-bundle-0 allocation score on messaging-1: -INFINITY +container_color: galera-bundle-0 allocation score on messaging-2: -INFINITY +container_color: galera-bundle-1 allocation score on controller-0: 0 +container_color: galera-bundle-1 allocation score on controller-1: 0 +container_color: galera-bundle-1 allocation score on controller-2: INFINITY +container_color: galera-bundle-1 allocation score on database-0: -INFINITY +container_color: galera-bundle-1 allocation score on database-1: -INFINITY +container_color: galera-bundle-1 allocation score on database-2: -INFINITY +container_color: galera-bundle-1 allocation score on messaging-0: -INFINITY +container_color: galera-bundle-1 allocation score on messaging-1: -INFINITY +container_color: galera-bundle-1 allocation score on messaging-2: -INFINITY +container_color: galera-bundle-2 allocation score on controller-0: 0 +container_color: galera-bundle-2 allocation score on controller-1: 0 +container_color: galera-bundle-2 allocation score on controller-2: 0 +container_color: galera-bundle-2 allocation score on database-0: -INFINITY +container_color: galera-bundle-2 allocation score on database-1: -INFINITY +container_color: galera-bundle-2 allocation score on database-2: -INFINITY +container_color: galera-bundle-2 allocation score on messaging-0: -INFINITY +container_color: galera-bundle-2 allocation score on messaging-1: -INFINITY +container_color: galera-bundle-2 allocation score on messaging-2: -INFINITY +container_color: galera-bundle-docker-0 allocation score on controller-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on controller-1: -INFINITY +container_color: galera-bundle-docker-0 allocation score on controller-2: -INFINITY +container_color: galera-bundle-docker-0 allocation score on database-0: INFINITY +container_color: galera-bundle-docker-0 allocation score on database-1: 0 +container_color: galera-bundle-docker-0 allocation score on database-2: 0 +container_color: galera-bundle-docker-0 allocation score on messaging-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on messaging-1: -INFINITY +container_color: galera-bundle-docker-0 allocation score on messaging-2: -INFINITY +container_color: galera-bundle-docker-1 allocation score on controller-0: -INFINITY +container_color: galera-bundle-docker-1 allocation score on controller-1: -INFINITY +container_color: galera-bundle-docker-1 allocation score on controller-2: -INFINITY +container_color: galera-bundle-docker-1 allocation score on database-0: 0 +container_color: galera-bundle-docker-1 allocation score on database-1: INFINITY +container_color: galera-bundle-docker-1 allocation score on database-2: 0 +container_color: galera-bundle-docker-1 allocation score on messaging-0: -INFINITY +container_color: galera-bundle-docker-1 allocation score on messaging-1: -INFINITY +container_color: galera-bundle-docker-1 allocation score on messaging-2: -INFINITY +container_color: galera-bundle-docker-2 allocation score on controller-0: -INFINITY +container_color: galera-bundle-docker-2 allocation score on controller-1: -INFINITY +container_color: galera-bundle-docker-2 allocation score on controller-2: -INFINITY +container_color: galera-bundle-docker-2 allocation score on database-0: 0 +container_color: galera-bundle-docker-2 allocation score on database-1: 0 +container_color: galera-bundle-docker-2 allocation score on database-2: INFINITY +container_color: galera-bundle-docker-2 allocation score on messaging-0: -INFINITY +container_color: galera-bundle-docker-2 allocation score on messaging-1: -INFINITY +container_color: galera-bundle-docker-2 allocation score on messaging-2: -INFINITY +container_color: galera-bundle-master allocation score on controller-0: 0 +container_color: galera-bundle-master allocation score on controller-1: 0 +container_color: galera-bundle-master allocation score on controller-2: 0 +container_color: galera-bundle-master allocation score on database-0: 0 +container_color: galera-bundle-master allocation score on database-1: 0 +container_color: galera-bundle-master allocation score on database-2: 0 +container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-master allocation score on messaging-0: 0 +container_color: galera-bundle-master allocation score on messaging-1: 0 +container_color: galera-bundle-master allocation score on messaging-2: 0 +container_color: galera:0 allocation score on galera-bundle-0: INFINITY +container_color: galera:1 allocation score on galera-bundle-1: INFINITY +container_color: galera:2 allocation score on galera-bundle-2: INFINITY +container_color: haproxy-bundle allocation score on controller-0: 0 +container_color: haproxy-bundle allocation score on controller-0: 0 +container_color: haproxy-bundle allocation score on controller-0: 0 +container_color: haproxy-bundle allocation score on controller-0: 0 +container_color: haproxy-bundle allocation score on controller-0: 0 +container_color: haproxy-bundle allocation score on controller-0: 0 +container_color: haproxy-bundle allocation score on controller-0: 0 +container_color: haproxy-bundle allocation score on controller-1: 0 +container_color: haproxy-bundle allocation score on controller-1: 0 +container_color: haproxy-bundle allocation score on controller-1: 0 +container_color: haproxy-bundle allocation score on controller-1: 0 +container_color: haproxy-bundle allocation score on controller-1: 0 +container_color: haproxy-bundle allocation score on controller-1: 0 +container_color: haproxy-bundle allocation score on controller-1: 0 +container_color: haproxy-bundle allocation score on controller-2: 0 +container_color: haproxy-bundle allocation score on controller-2: 0 +container_color: haproxy-bundle allocation score on controller-2: 0 +container_color: haproxy-bundle allocation score on controller-2: 0 +container_color: haproxy-bundle allocation score on controller-2: 0 +container_color: haproxy-bundle allocation score on controller-2: 0 +container_color: haproxy-bundle allocation score on controller-2: 0 +container_color: haproxy-bundle allocation score on database-0: -INFINITY +container_color: haproxy-bundle allocation score on database-0: -INFINITY +container_color: haproxy-bundle allocation score on database-0: -INFINITY +container_color: haproxy-bundle allocation score on database-0: -INFINITY +container_color: haproxy-bundle allocation score on database-0: -INFINITY +container_color: haproxy-bundle allocation score on database-0: -INFINITY +container_color: haproxy-bundle allocation score on database-0: -INFINITY +container_color: haproxy-bundle allocation score on database-1: -INFINITY +container_color: haproxy-bundle allocation score on database-1: -INFINITY +container_color: haproxy-bundle allocation score on database-1: -INFINITY +container_color: haproxy-bundle allocation score on database-1: -INFINITY +container_color: haproxy-bundle allocation score on database-1: -INFINITY +container_color: haproxy-bundle allocation score on database-1: -INFINITY +container_color: haproxy-bundle allocation score on database-1: -INFINITY +container_color: haproxy-bundle allocation score on database-2: -INFINITY +container_color: haproxy-bundle allocation score on database-2: -INFINITY +container_color: haproxy-bundle allocation score on database-2: -INFINITY +container_color: haproxy-bundle allocation score on database-2: -INFINITY +container_color: haproxy-bundle allocation score on database-2: -INFINITY +container_color: haproxy-bundle allocation score on database-2: -INFINITY +container_color: haproxy-bundle allocation score on database-2: -INFINITY +container_color: haproxy-bundle allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on controller-2: 0 +container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-0: 0 +container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on controller-2: 0 +container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 +container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY +container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY +container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY +container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY +container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY +container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY +container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY +container_color: rabbitmq-bundle allocation score on controller-0: -INFINITY +container_color: rabbitmq-bundle allocation score on controller-1: -INFINITY +container_color: rabbitmq-bundle allocation score on controller-2: -INFINITY +container_color: rabbitmq-bundle allocation score on database-0: -INFINITY +container_color: rabbitmq-bundle allocation score on database-1: -INFINITY +container_color: rabbitmq-bundle allocation score on database-2: -INFINITY +container_color: rabbitmq-bundle allocation score on messaging-0: 0 +container_color: rabbitmq-bundle allocation score on messaging-1: 0 +container_color: rabbitmq-bundle allocation score on messaging-2: 0 +container_color: rabbitmq-bundle-0 allocation score on controller-0: 0 +container_color: rabbitmq-bundle-0 allocation score on controller-1: 0 +container_color: rabbitmq-bundle-0 allocation score on controller-2: INFINITY +container_color: rabbitmq-bundle-0 allocation score on database-0: -INFINITY +container_color: rabbitmq-bundle-0 allocation score on database-1: -INFINITY +container_color: rabbitmq-bundle-0 allocation score on database-2: -INFINITY +container_color: rabbitmq-bundle-0 allocation score on messaging-0: -INFINITY +container_color: rabbitmq-bundle-0 allocation score on messaging-1: -INFINITY +container_color: rabbitmq-bundle-0 allocation score on messaging-2: -INFINITY +container_color: rabbitmq-bundle-1 allocation score on controller-0: 0 +container_color: rabbitmq-bundle-1 allocation score on controller-1: 0 +container_color: rabbitmq-bundle-1 allocation score on controller-2: INFINITY +container_color: rabbitmq-bundle-1 allocation score on database-0: -INFINITY +container_color: rabbitmq-bundle-1 allocation score on database-1: -INFINITY +container_color: rabbitmq-bundle-1 allocation score on database-2: -INFINITY +container_color: rabbitmq-bundle-1 allocation score on messaging-0: -INFINITY +container_color: rabbitmq-bundle-1 allocation score on messaging-1: -INFINITY +container_color: rabbitmq-bundle-1 allocation score on messaging-2: -INFINITY +container_color: rabbitmq-bundle-2 allocation score on controller-0: 0 +container_color: rabbitmq-bundle-2 allocation score on controller-1: 0 +container_color: rabbitmq-bundle-2 allocation score on controller-2: INFINITY +container_color: rabbitmq-bundle-2 allocation score on database-0: -INFINITY +container_color: rabbitmq-bundle-2 allocation score on database-1: -INFINITY +container_color: rabbitmq-bundle-2 allocation score on database-2: -INFINITY +container_color: rabbitmq-bundle-2 allocation score on messaging-0: -INFINITY +container_color: rabbitmq-bundle-2 allocation score on messaging-1: -INFINITY +container_color: rabbitmq-bundle-2 allocation score on messaging-2: -INFINITY +container_color: rabbitmq-bundle-clone allocation score on controller-0: 0 +container_color: rabbitmq-bundle-clone allocation score on controller-1: 0 +container_color: rabbitmq-bundle-clone allocation score on controller-2: 0 +container_color: rabbitmq-bundle-clone allocation score on database-0: 0 +container_color: rabbitmq-bundle-clone allocation score on database-1: 0 +container_color: rabbitmq-bundle-clone allocation score on database-2: 0 +container_color: rabbitmq-bundle-clone allocation score on messaging-0: 0 +container_color: rabbitmq-bundle-clone allocation score on messaging-1: 0 +container_color: rabbitmq-bundle-clone allocation score on messaging-2: 0 +container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-1: -INFINITY +container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-2: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on controller-0: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on controller-1: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on controller-2: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on database-0: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on database-1: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on database-2: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on messaging-0: INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on messaging-1: 0 +container_color: rabbitmq-bundle-docker-0 allocation score on messaging-2: 0 +container_color: rabbitmq-bundle-docker-1 allocation score on controller-0: -INFINITY +container_color: rabbitmq-bundle-docker-1 allocation score on controller-1: -INFINITY +container_color: rabbitmq-bundle-docker-1 allocation score on controller-2: -INFINITY +container_color: rabbitmq-bundle-docker-1 allocation score on database-0: -INFINITY +container_color: rabbitmq-bundle-docker-1 allocation score on database-1: -INFINITY +container_color: rabbitmq-bundle-docker-1 allocation score on database-2: -INFINITY +container_color: rabbitmq-bundle-docker-1 allocation score on messaging-0: 0 +container_color: rabbitmq-bundle-docker-1 allocation score on messaging-1: INFINITY +container_color: rabbitmq-bundle-docker-1 allocation score on messaging-2: 0 +container_color: rabbitmq-bundle-docker-2 allocation score on controller-0: -INFINITY +container_color: rabbitmq-bundle-docker-2 allocation score on controller-1: -INFINITY +container_color: rabbitmq-bundle-docker-2 allocation score on controller-2: -INFINITY +container_color: rabbitmq-bundle-docker-2 allocation score on database-0: -INFINITY +container_color: rabbitmq-bundle-docker-2 allocation score on database-1: -INFINITY +container_color: rabbitmq-bundle-docker-2 allocation score on database-2: -INFINITY +container_color: rabbitmq-bundle-docker-2 allocation score on messaging-0: 0 +container_color: rabbitmq-bundle-docker-2 allocation score on messaging-1: 0 +container_color: rabbitmq-bundle-docker-2 allocation score on messaging-2: INFINITY +container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +container_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY +container_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY +container_color: redis-bundle allocation score on controller-0: 0 +container_color: redis-bundle allocation score on controller-1: 0 +container_color: redis-bundle allocation score on controller-2: 0 +container_color: redis-bundle allocation score on database-0: -INFINITY +container_color: redis-bundle allocation score on database-1: -INFINITY +container_color: redis-bundle allocation score on database-2: -INFINITY +container_color: redis-bundle allocation score on messaging-0: -INFINITY +container_color: redis-bundle allocation score on messaging-1: -INFINITY +container_color: redis-bundle allocation score on messaging-2: -INFINITY +container_color: redis-bundle-0 allocation score on controller-0: INFINITY +container_color: redis-bundle-0 allocation score on controller-1: 0 +container_color: redis-bundle-0 allocation score on controller-2: 0 +container_color: redis-bundle-0 allocation score on database-0: -INFINITY +container_color: redis-bundle-0 allocation score on database-1: -INFINITY +container_color: redis-bundle-0 allocation score on database-2: -INFINITY +container_color: redis-bundle-0 allocation score on messaging-0: -INFINITY +container_color: redis-bundle-0 allocation score on messaging-1: -INFINITY +container_color: redis-bundle-0 allocation score on messaging-2: -INFINITY +container_color: redis-bundle-1 allocation score on controller-0: 0 +container_color: redis-bundle-1 allocation score on controller-1: 0 +container_color: redis-bundle-1 allocation score on controller-2: 0 +container_color: redis-bundle-1 allocation score on database-0: -INFINITY +container_color: redis-bundle-1 allocation score on database-1: -INFINITY +container_color: redis-bundle-1 allocation score on database-2: -INFINITY +container_color: redis-bundle-1 allocation score on messaging-0: -INFINITY +container_color: redis-bundle-1 allocation score on messaging-1: -INFINITY +container_color: redis-bundle-1 allocation score on messaging-2: -INFINITY +container_color: redis-bundle-2 allocation score on controller-0: 0 +container_color: redis-bundle-2 allocation score on controller-1: 0 +container_color: redis-bundle-2 allocation score on controller-2: INFINITY +container_color: redis-bundle-2 allocation score on database-0: -INFINITY +container_color: redis-bundle-2 allocation score on database-1: -INFINITY +container_color: redis-bundle-2 allocation score on database-2: -INFINITY +container_color: redis-bundle-2 allocation score on messaging-0: -INFINITY +container_color: redis-bundle-2 allocation score on messaging-1: -INFINITY +container_color: redis-bundle-2 allocation score on messaging-2: -INFINITY +container_color: redis-bundle-docker-0 allocation score on controller-0: INFINITY +container_color: redis-bundle-docker-0 allocation score on controller-1: 0 +container_color: redis-bundle-docker-0 allocation score on controller-2: 0 +container_color: redis-bundle-docker-0 allocation score on database-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on database-1: -INFINITY +container_color: redis-bundle-docker-0 allocation score on database-2: -INFINITY +container_color: redis-bundle-docker-0 allocation score on messaging-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on messaging-1: -INFINITY +container_color: redis-bundle-docker-0 allocation score on messaging-2: -INFINITY +container_color: redis-bundle-docker-1 allocation score on controller-0: 0 +container_color: redis-bundle-docker-1 allocation score on controller-1: 0 +container_color: redis-bundle-docker-1 allocation score on controller-2: 0 +container_color: redis-bundle-docker-1 allocation score on database-0: -INFINITY +container_color: redis-bundle-docker-1 allocation score on database-1: -INFINITY +container_color: redis-bundle-docker-1 allocation score on database-2: -INFINITY +container_color: redis-bundle-docker-1 allocation score on messaging-0: -INFINITY +container_color: redis-bundle-docker-1 allocation score on messaging-1: -INFINITY +container_color: redis-bundle-docker-1 allocation score on messaging-2: -INFINITY +container_color: redis-bundle-docker-2 allocation score on controller-0: 0 +container_color: redis-bundle-docker-2 allocation score on controller-1: 0 +container_color: redis-bundle-docker-2 allocation score on controller-2: INFINITY +container_color: redis-bundle-docker-2 allocation score on database-0: -INFINITY +container_color: redis-bundle-docker-2 allocation score on database-1: -INFINITY +container_color: redis-bundle-docker-2 allocation score on database-2: -INFINITY +container_color: redis-bundle-docker-2 allocation score on messaging-0: -INFINITY +container_color: redis-bundle-docker-2 allocation score on messaging-1: -INFINITY +container_color: redis-bundle-docker-2 allocation score on messaging-2: -INFINITY +container_color: redis-bundle-master allocation score on controller-0: 0 +container_color: redis-bundle-master allocation score on controller-1: 0 +container_color: redis-bundle-master allocation score on controller-2: 0 +container_color: redis-bundle-master allocation score on database-0: 0 +container_color: redis-bundle-master allocation score on database-1: 0 +container_color: redis-bundle-master allocation score on database-2: 0 +container_color: redis-bundle-master allocation score on messaging-0: 0 +container_color: redis-bundle-master allocation score on messaging-1: 0 +container_color: redis-bundle-master allocation score on messaging-2: 0 +container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-master allocation score on redis-bundle-2: -INFINITY +container_color: redis:0 allocation score on redis-bundle-0: INFINITY +container_color: redis:1 allocation score on redis-bundle-1: 500 +container_color: redis:2 allocation score on redis-bundle-2: INFINITY +galera:0 promotion score on galera-bundle-0: 100 +galera:1 promotion score on galera-bundle-1: 100 +galera:2 promotion score on galera-bundle-2: 100 +native_color: database-0 allocation score on controller-0: 0 +native_color: database-0 allocation score on controller-1: 0 +native_color: database-0 allocation score on controller-2: 0 +native_color: database-0 allocation score on database-0: -INFINITY +native_color: database-0 allocation score on database-1: -INFINITY +native_color: database-0 allocation score on database-2: -INFINITY +native_color: database-0 allocation score on messaging-0: -INFINITY +native_color: database-0 allocation score on messaging-1: -INFINITY +native_color: database-0 allocation score on messaging-2: -INFINITY +native_color: database-1 allocation score on controller-0: 0 +native_color: database-1 allocation score on controller-1: 0 +native_color: database-1 allocation score on controller-2: INFINITY +native_color: database-1 allocation score on database-0: -INFINITY +native_color: database-1 allocation score on database-1: -INFINITY +native_color: database-1 allocation score on database-2: -INFINITY +native_color: database-1 allocation score on messaging-0: -INFINITY +native_color: database-1 allocation score on messaging-1: -INFINITY +native_color: database-1 allocation score on messaging-2: -INFINITY +native_color: database-2 allocation score on controller-0: 0 +native_color: database-2 allocation score on controller-1: 0 +native_color: database-2 allocation score on controller-2: 0 +native_color: database-2 allocation score on database-0: -INFINITY +native_color: database-2 allocation score on database-1: -INFINITY +native_color: database-2 allocation score on database-2: -INFINITY +native_color: database-2 allocation score on messaging-0: -INFINITY +native_color: database-2 allocation score on messaging-1: -INFINITY +native_color: database-2 allocation score on messaging-2: -INFINITY +native_color: galera-bundle-0 allocation score on controller-0: 0 +native_color: galera-bundle-0 allocation score on controller-1: -INFINITY +native_color: galera-bundle-0 allocation score on controller-2: -INFINITY +native_color: galera-bundle-0 allocation score on database-0: -INFINITY +native_color: galera-bundle-0 allocation score on database-1: -INFINITY +native_color: galera-bundle-0 allocation score on database-2: -INFINITY +native_color: galera-bundle-0 allocation score on messaging-0: -INFINITY +native_color: galera-bundle-0 allocation score on messaging-1: -INFINITY +native_color: galera-bundle-0 allocation score on messaging-2: -INFINITY +native_color: galera-bundle-1 allocation score on controller-0: -INFINITY +native_color: galera-bundle-1 allocation score on controller-1: -INFINITY +native_color: galera-bundle-1 allocation score on controller-2: INFINITY +native_color: galera-bundle-1 allocation score on database-0: -INFINITY +native_color: galera-bundle-1 allocation score on database-1: -INFINITY +native_color: galera-bundle-1 allocation score on database-2: -INFINITY +native_color: galera-bundle-1 allocation score on messaging-0: -INFINITY +native_color: galera-bundle-1 allocation score on messaging-1: -INFINITY +native_color: galera-bundle-1 allocation score on messaging-2: -INFINITY +native_color: galera-bundle-2 allocation score on controller-0: -INFINITY +native_color: galera-bundle-2 allocation score on controller-1: 0 +native_color: galera-bundle-2 allocation score on controller-2: -INFINITY +native_color: galera-bundle-2 allocation score on database-0: -INFINITY +native_color: galera-bundle-2 allocation score on database-1: -INFINITY +native_color: galera-bundle-2 allocation score on database-2: -INFINITY +native_color: galera-bundle-2 allocation score on messaging-0: -INFINITY +native_color: galera-bundle-2 allocation score on messaging-1: -INFINITY +native_color: galera-bundle-2 allocation score on messaging-2: -INFINITY +native_color: galera-bundle-docker-0 allocation score on controller-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on controller-1: -INFINITY +native_color: galera-bundle-docker-0 allocation score on controller-2: -INFINITY +native_color: galera-bundle-docker-0 allocation score on database-0: INFINITY +native_color: galera-bundle-docker-0 allocation score on database-1: -INFINITY +native_color: galera-bundle-docker-0 allocation score on database-2: -10000 +native_color: galera-bundle-docker-0 allocation score on messaging-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on messaging-1: -INFINITY +native_color: galera-bundle-docker-0 allocation score on messaging-2: -INFINITY +native_color: galera-bundle-docker-1 allocation score on controller-0: -INFINITY +native_color: galera-bundle-docker-1 allocation score on controller-1: -INFINITY +native_color: galera-bundle-docker-1 allocation score on controller-2: -INFINITY +native_color: galera-bundle-docker-1 allocation score on database-0: -10000 +native_color: galera-bundle-docker-1 allocation score on database-1: INFINITY +native_color: galera-bundle-docker-1 allocation score on database-2: -10000 +native_color: galera-bundle-docker-1 allocation score on messaging-0: -INFINITY +native_color: galera-bundle-docker-1 allocation score on messaging-1: -INFINITY +native_color: galera-bundle-docker-1 allocation score on messaging-2: -INFINITY +native_color: galera-bundle-docker-2 allocation score on controller-0: -INFINITY +native_color: galera-bundle-docker-2 allocation score on controller-1: -INFINITY +native_color: galera-bundle-docker-2 allocation score on controller-2: -INFINITY +native_color: galera-bundle-docker-2 allocation score on database-0: -INFINITY +native_color: galera-bundle-docker-2 allocation score on database-1: -INFINITY +native_color: galera-bundle-docker-2 allocation score on database-2: INFINITY +native_color: galera-bundle-docker-2 allocation score on messaging-0: -INFINITY +native_color: galera-bundle-docker-2 allocation score on messaging-1: -INFINITY +native_color: galera-bundle-docker-2 allocation score on messaging-2: -INFINITY +native_color: galera:0 allocation score on galera-bundle-0: INFINITY +native_color: galera:1 allocation score on galera-bundle-1: INFINITY +native_color: galera:2 allocation score on galera-bundle-2: INFINITY +native_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY +native_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 +native_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 +native_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 +native_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 +native_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY +native_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY +native_color: ip-10.0.0.104 allocation score on controller-0: 0 +native_color: ip-10.0.0.104 allocation score on controller-1: 0 +native_color: ip-10.0.0.104 allocation score on controller-2: 0 +native_color: ip-10.0.0.104 allocation score on database-0: -INFINITY +native_color: ip-10.0.0.104 allocation score on database-1: -INFINITY +native_color: ip-10.0.0.104 allocation score on database-2: -INFINITY +native_color: ip-10.0.0.104 allocation score on messaging-0: -INFINITY +native_color: ip-10.0.0.104 allocation score on messaging-1: -INFINITY +native_color: ip-10.0.0.104 allocation score on messaging-2: -INFINITY +native_color: ip-172.17.1.11 allocation score on controller-0: 0 +native_color: ip-172.17.1.11 allocation score on controller-1: 0 +native_color: ip-172.17.1.11 allocation score on controller-2: 0 +native_color: ip-172.17.1.11 allocation score on database-0: -INFINITY +native_color: ip-172.17.1.11 allocation score on database-1: -INFINITY +native_color: ip-172.17.1.11 allocation score on database-2: -INFINITY +native_color: ip-172.17.1.11 allocation score on messaging-0: -INFINITY +native_color: ip-172.17.1.11 allocation score on messaging-1: -INFINITY +native_color: ip-172.17.1.11 allocation score on messaging-2: -INFINITY +native_color: ip-172.17.1.19 allocation score on controller-0: 0 +native_color: ip-172.17.1.19 allocation score on controller-1: 0 +native_color: ip-172.17.1.19 allocation score on controller-2: INFINITY +native_color: ip-172.17.1.19 allocation score on database-0: -INFINITY +native_color: ip-172.17.1.19 allocation score on database-1: -INFINITY +native_color: ip-172.17.1.19 allocation score on database-2: -INFINITY +native_color: ip-172.17.1.19 allocation score on messaging-0: -INFINITY +native_color: ip-172.17.1.19 allocation score on messaging-1: -INFINITY +native_color: ip-172.17.1.19 allocation score on messaging-2: -INFINITY +native_color: ip-172.17.3.13 allocation score on controller-0: 0 +native_color: ip-172.17.3.13 allocation score on controller-1: 0 +native_color: ip-172.17.3.13 allocation score on controller-2: 0 +native_color: ip-172.17.3.13 allocation score on database-0: -INFINITY +native_color: ip-172.17.3.13 allocation score on database-1: -INFINITY +native_color: ip-172.17.3.13 allocation score on database-2: -INFINITY +native_color: ip-172.17.3.13 allocation score on messaging-0: -INFINITY +native_color: ip-172.17.3.13 allocation score on messaging-1: -INFINITY +native_color: ip-172.17.3.13 allocation score on messaging-2: -INFINITY +native_color: ip-172.17.4.19 allocation score on controller-0: 0 +native_color: ip-172.17.4.19 allocation score on controller-1: 0 +native_color: ip-172.17.4.19 allocation score on controller-2: INFINITY +native_color: ip-172.17.4.19 allocation score on database-0: -INFINITY +native_color: ip-172.17.4.19 allocation score on database-1: -INFINITY +native_color: ip-172.17.4.19 allocation score on database-2: -INFINITY +native_color: ip-172.17.4.19 allocation score on messaging-0: -INFINITY +native_color: ip-172.17.4.19 allocation score on messaging-1: -INFINITY +native_color: ip-172.17.4.19 allocation score on messaging-2: -INFINITY +native_color: ip-192.168.24.11 allocation score on controller-0: 0 +native_color: ip-192.168.24.11 allocation score on controller-1: 0 +native_color: ip-192.168.24.11 allocation score on controller-2: 0 +native_color: ip-192.168.24.11 allocation score on database-0: -INFINITY +native_color: ip-192.168.24.11 allocation score on database-1: -INFINITY +native_color: ip-192.168.24.11 allocation score on database-2: -INFINITY +native_color: ip-192.168.24.11 allocation score on messaging-0: -INFINITY +native_color: ip-192.168.24.11 allocation score on messaging-1: -INFINITY +native_color: ip-192.168.24.11 allocation score on messaging-2: -INFINITY +native_color: messaging-0 allocation score on controller-0: 0 +native_color: messaging-0 allocation score on controller-1: 0 +native_color: messaging-0 allocation score on controller-2: INFINITY +native_color: messaging-0 allocation score on database-0: -INFINITY +native_color: messaging-0 allocation score on database-1: -INFINITY +native_color: messaging-0 allocation score on database-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: 0 +native_color: messaging-1 allocation score on controller-2: INFINITY +native_color: messaging-1 allocation score on database-0: -INFINITY +native_color: messaging-1 allocation score on database-1: -INFINITY +native_color: messaging-1 allocation score on database-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: 0 +native_color: messaging-2 allocation score on controller-1: 0 +native_color: messaging-2 allocation score on controller-2: INFINITY +native_color: messaging-2 allocation score on database-0: -INFINITY +native_color: messaging-2 allocation score on database-1: -INFINITY +native_color: messaging-2 allocation score on database-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: 0 +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 database-0: -INFINITY +native_color: openstack-cinder-volume allocation score on database-1: -INFINITY +native_color: openstack-cinder-volume allocation score on database-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-bundle-0 allocation score on controller-0: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on controller-1: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on controller-2: INFINITY +native_color: rabbitmq-bundle-0 allocation score on database-0: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on database-1: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on database-2: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on messaging-0: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on messaging-1: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on messaging-2: -INFINITY +native_color: rabbitmq-bundle-1 allocation score on controller-0: -INFINITY +native_color: rabbitmq-bundle-1 allocation score on controller-1: -INFINITY +native_color: rabbitmq-bundle-1 allocation score on controller-2: INFINITY +native_color: rabbitmq-bundle-1 allocation score on database-0: -INFINITY +native_color: rabbitmq-bundle-1 allocation score on database-1: -INFINITY +native_color: rabbitmq-bundle-1 allocation score on database-2: -INFINITY +native_color: rabbitmq-bundle-1 allocation score on messaging-0: -INFINITY +native_color: rabbitmq-bundle-1 allocation score on messaging-1: -INFINITY +native_color: rabbitmq-bundle-1 allocation score on messaging-2: -INFINITY +native_color: rabbitmq-bundle-2 allocation score on controller-0: -INFINITY +native_color: rabbitmq-bundle-2 allocation score on controller-1: -INFINITY +native_color: rabbitmq-bundle-2 allocation score on controller-2: INFINITY +native_color: rabbitmq-bundle-2 allocation score on database-0: -INFINITY +native_color: rabbitmq-bundle-2 allocation score on database-1: -INFINITY +native_color: rabbitmq-bundle-2 allocation score on database-2: -INFINITY +native_color: rabbitmq-bundle-2 allocation score on messaging-0: -INFINITY +native_color: rabbitmq-bundle-2 allocation score on messaging-1: -INFINITY +native_color: rabbitmq-bundle-2 allocation score on messaging-2: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on controller-0: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on controller-1: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on controller-2: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on database-0: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on database-1: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on database-2: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on messaging-0: INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on messaging-1: -10000 +native_color: rabbitmq-bundle-docker-0 allocation score on messaging-2: -10000 +native_color: rabbitmq-bundle-docker-1 allocation score on controller-0: -INFINITY +native_color: rabbitmq-bundle-docker-1 allocation score on controller-1: -INFINITY +native_color: rabbitmq-bundle-docker-1 allocation score on controller-2: -INFINITY +native_color: rabbitmq-bundle-docker-1 allocation score on database-0: -INFINITY +native_color: rabbitmq-bundle-docker-1 allocation score on database-1: -INFINITY +native_color: rabbitmq-bundle-docker-1 allocation score on database-2: -INFINITY +native_color: rabbitmq-bundle-docker-1 allocation score on messaging-0: -INFINITY +native_color: rabbitmq-bundle-docker-1 allocation score on messaging-1: INFINITY +native_color: rabbitmq-bundle-docker-1 allocation score on messaging-2: -10000 +native_color: rabbitmq-bundle-docker-2 allocation score on controller-0: -INFINITY +native_color: rabbitmq-bundle-docker-2 allocation score on controller-1: -INFINITY +native_color: rabbitmq-bundle-docker-2 allocation score on controller-2: -INFINITY +native_color: rabbitmq-bundle-docker-2 allocation score on database-0: -INFINITY +native_color: rabbitmq-bundle-docker-2 allocation score on database-1: -INFINITY +native_color: rabbitmq-bundle-docker-2 allocation score on database-2: -INFINITY +native_color: rabbitmq-bundle-docker-2 allocation score on messaging-0: -INFINITY +native_color: rabbitmq-bundle-docker-2 allocation score on messaging-1: -INFINITY +native_color: rabbitmq-bundle-docker-2 allocation score on messaging-2: INFINITY +native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +native_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY +native_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY +native_color: redis-bundle-0 allocation score on controller-0: INFINITY +native_color: redis-bundle-0 allocation score on controller-1: 0 +native_color: redis-bundle-0 allocation score on controller-2: 0 +native_color: redis-bundle-0 allocation score on database-0: -INFINITY +native_color: redis-bundle-0 allocation score on database-1: -INFINITY +native_color: redis-bundle-0 allocation score on database-2: -INFINITY +native_color: redis-bundle-0 allocation score on messaging-0: -INFINITY +native_color: redis-bundle-0 allocation score on messaging-1: -INFINITY +native_color: redis-bundle-0 allocation score on messaging-2: -INFINITY +native_color: redis-bundle-1 allocation score on controller-0: 0 +native_color: redis-bundle-1 allocation score on controller-1: 10000 +native_color: redis-bundle-1 allocation score on controller-2: 0 +native_color: redis-bundle-1 allocation score on database-0: -INFINITY +native_color: redis-bundle-1 allocation score on database-1: -INFINITY +native_color: redis-bundle-1 allocation score on database-2: -INFINITY +native_color: redis-bundle-1 allocation score on messaging-0: -INFINITY +native_color: redis-bundle-1 allocation score on messaging-1: -INFINITY +native_color: redis-bundle-1 allocation score on messaging-2: -INFINITY +native_color: redis-bundle-2 allocation score on controller-0: 0 +native_color: redis-bundle-2 allocation score on controller-1: 0 +native_color: redis-bundle-2 allocation score on controller-2: INFINITY +native_color: redis-bundle-2 allocation score on database-0: -INFINITY +native_color: redis-bundle-2 allocation score on database-1: -INFINITY +native_color: redis-bundle-2 allocation score on database-2: -INFINITY +native_color: redis-bundle-2 allocation score on messaging-0: -INFINITY +native_color: redis-bundle-2 allocation score on messaging-1: -INFINITY +native_color: redis-bundle-2 allocation score on messaging-2: -INFINITY +native_color: redis-bundle-docker-0 allocation score on controller-0: INFINITY +native_color: redis-bundle-docker-0 allocation score on controller-1: 0 +native_color: redis-bundle-docker-0 allocation score on controller-2: 0 +native_color: redis-bundle-docker-0 allocation score on database-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on database-1: -INFINITY +native_color: redis-bundle-docker-0 allocation score on database-2: -INFINITY +native_color: redis-bundle-docker-0 allocation score on messaging-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on messaging-1: -INFINITY +native_color: redis-bundle-docker-0 allocation score on messaging-2: -INFINITY +native_color: redis-bundle-docker-1 allocation score on controller-0: -INFINITY +native_color: redis-bundle-docker-1 allocation score on controller-1: 0 +native_color: redis-bundle-docker-1 allocation score on controller-2: -INFINITY +native_color: redis-bundle-docker-1 allocation score on database-0: -INFINITY +native_color: redis-bundle-docker-1 allocation score on database-1: -INFINITY +native_color: redis-bundle-docker-1 allocation score on database-2: -INFINITY +native_color: redis-bundle-docker-1 allocation score on messaging-0: -INFINITY +native_color: redis-bundle-docker-1 allocation score on messaging-1: -INFINITY +native_color: redis-bundle-docker-1 allocation score on messaging-2: -INFINITY +native_color: redis-bundle-docker-2 allocation score on controller-0: -INFINITY +native_color: redis-bundle-docker-2 allocation score on controller-1: 0 +native_color: redis-bundle-docker-2 allocation score on controller-2: INFINITY +native_color: redis-bundle-docker-2 allocation score on database-0: -INFINITY +native_color: redis-bundle-docker-2 allocation score on database-1: -INFINITY +native_color: redis-bundle-docker-2 allocation score on database-2: -INFINITY +native_color: redis-bundle-docker-2 allocation score on messaging-0: -INFINITY +native_color: redis-bundle-docker-2 allocation score on messaging-1: -INFINITY +native_color: redis-bundle-docker-2 allocation score on messaging-2: -INFINITY +native_color: redis:0 allocation score on redis-bundle-0: INFINITY +native_color: redis:1 allocation score on redis-bundle-1: INFINITY +native_color: redis:2 allocation score on redis-bundle-2: INFINITY +native_color: stonith-fence_ipmilan-525400244e09 allocation score on controller-0: 0 +native_color: stonith-fence_ipmilan-525400244e09 allocation score on controller-1: 0 +native_color: stonith-fence_ipmilan-525400244e09 allocation score on controller-2: INFINITY +native_color: stonith-fence_ipmilan-525400244e09 allocation score on database-0: -INFINITY +native_color: stonith-fence_ipmilan-525400244e09 allocation score on database-1: -INFINITY +native_color: stonith-fence_ipmilan-525400244e09 allocation score on database-2: -INFINITY +native_color: stonith-fence_ipmilan-525400244e09 allocation score on messaging-0: -INFINITY +native_color: stonith-fence_ipmilan-525400244e09 allocation score on messaging-1: -INFINITY +native_color: stonith-fence_ipmilan-525400244e09 allocation score on messaging-2: -INFINITY +native_color: stonith-fence_ipmilan-525400498d34 allocation score on controller-0: -INFINITY +native_color: stonith-fence_ipmilan-525400498d34 allocation score on controller-1: 0 +native_color: stonith-fence_ipmilan-525400498d34 allocation score on controller-2: 0 +native_color: stonith-fence_ipmilan-525400498d34 allocation score on database-0: -INFINITY +native_color: stonith-fence_ipmilan-525400498d34 allocation score on database-1: -INFINITY +native_color: stonith-fence_ipmilan-525400498d34 allocation score on database-2: -INFINITY +native_color: stonith-fence_ipmilan-525400498d34 allocation score on messaging-0: -INFINITY +native_color: stonith-fence_ipmilan-525400498d34 allocation score on messaging-1: -INFINITY +native_color: stonith-fence_ipmilan-525400498d34 allocation score on messaging-2: -INFINITY +native_color: stonith-fence_ipmilan-525400542c06 allocation score on controller-0: 0 +native_color: stonith-fence_ipmilan-525400542c06 allocation score on controller-1: 0 +native_color: stonith-fence_ipmilan-525400542c06 allocation score on controller-2: -INFINITY +native_color: stonith-fence_ipmilan-525400542c06 allocation score on database-0: -INFINITY +native_color: stonith-fence_ipmilan-525400542c06 allocation score on database-1: -INFINITY +native_color: stonith-fence_ipmilan-525400542c06 allocation score on database-2: -INFINITY +native_color: stonith-fence_ipmilan-525400542c06 allocation score on messaging-0: -INFINITY +native_color: stonith-fence_ipmilan-525400542c06 allocation score on messaging-1: -INFINITY +native_color: stonith-fence_ipmilan-525400542c06 allocation score on messaging-2: -INFINITY +native_color: stonith-fence_ipmilan-5254005ea387 allocation score on controller-0: 0 +native_color: stonith-fence_ipmilan-5254005ea387 allocation score on controller-1: 0 +native_color: stonith-fence_ipmilan-5254005ea387 allocation score on controller-2: 0 +native_color: stonith-fence_ipmilan-5254005ea387 allocation score on database-0: -INFINITY +native_color: stonith-fence_ipmilan-5254005ea387 allocation score on database-1: -INFINITY +native_color: stonith-fence_ipmilan-5254005ea387 allocation score on database-2: -INFINITY +native_color: stonith-fence_ipmilan-5254005ea387 allocation score on messaging-0: -INFINITY +native_color: stonith-fence_ipmilan-5254005ea387 allocation score on messaging-1: -INFINITY +native_color: stonith-fence_ipmilan-5254005ea387 allocation score on messaging-2: -INFINITY +native_color: stonith-fence_ipmilan-525400a25787 allocation score on controller-0: 0 +native_color: stonith-fence_ipmilan-525400a25787 allocation score on controller-1: 0 +native_color: stonith-fence_ipmilan-525400a25787 allocation score on controller-2: INFINITY +native_color: stonith-fence_ipmilan-525400a25787 allocation score on database-0: -INFINITY +native_color: stonith-fence_ipmilan-525400a25787 allocation score on database-1: -INFINITY +native_color: stonith-fence_ipmilan-525400a25787 allocation score on database-2: -INFINITY +native_color: stonith-fence_ipmilan-525400a25787 allocation score on messaging-0: -INFINITY +native_color: stonith-fence_ipmilan-525400a25787 allocation score on messaging-1: -INFINITY +native_color: stonith-fence_ipmilan-525400a25787 allocation score on messaging-2: -INFINITY +native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on controller-0: INFINITY +native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on controller-1: 0 +native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on controller-2: 0 +native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on database-0: -INFINITY +native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on database-1: -INFINITY +native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on database-2: -INFINITY +native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on messaging-0: -INFINITY +native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on messaging-1: -INFINITY +native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on messaging-2: -INFINITY +native_color: stonith-fence_ipmilan-525400aac413 allocation score on controller-0: 0 +native_color: stonith-fence_ipmilan-525400aac413 allocation score on controller-1: -INFINITY +native_color: stonith-fence_ipmilan-525400aac413 allocation score on controller-2: INFINITY +native_color: stonith-fence_ipmilan-525400aac413 allocation score on database-0: -INFINITY +native_color: stonith-fence_ipmilan-525400aac413 allocation score on database-1: -INFINITY +native_color: stonith-fence_ipmilan-525400aac413 allocation score on database-2: -INFINITY +native_color: stonith-fence_ipmilan-525400aac413 allocation score on messaging-0: -INFINITY +native_color: stonith-fence_ipmilan-525400aac413 allocation score on messaging-1: -INFINITY +native_color: stonith-fence_ipmilan-525400aac413 allocation score on messaging-2: -INFINITY +native_color: stonith-fence_ipmilan-525400c709f7 allocation score on controller-0: 0 +native_color: stonith-fence_ipmilan-525400c709f7 allocation score on controller-1: 0 +native_color: stonith-fence_ipmilan-525400c709f7 allocation score on controller-2: 0 +native_color: stonith-fence_ipmilan-525400c709f7 allocation score on database-0: -INFINITY +native_color: stonith-fence_ipmilan-525400c709f7 allocation score on database-1: -INFINITY +native_color: stonith-fence_ipmilan-525400c709f7 allocation score on database-2: -INFINITY +native_color: stonith-fence_ipmilan-525400c709f7 allocation score on messaging-0: -INFINITY +native_color: stonith-fence_ipmilan-525400c709f7 allocation score on messaging-1: -INFINITY +native_color: stonith-fence_ipmilan-525400c709f7 allocation score on messaging-2: -INFINITY +native_color: stonith-fence_ipmilan-525400cdec10 allocation score on controller-0: 0 +native_color: stonith-fence_ipmilan-525400cdec10 allocation score on controller-1: 0 +native_color: stonith-fence_ipmilan-525400cdec10 allocation score on controller-2: INFINITY +native_color: stonith-fence_ipmilan-525400cdec10 allocation score on database-0: -INFINITY +native_color: stonith-fence_ipmilan-525400cdec10 allocation score on database-1: -INFINITY +native_color: stonith-fence_ipmilan-525400cdec10 allocation score on database-2: -INFINITY +native_color: stonith-fence_ipmilan-525400cdec10 allocation score on messaging-0: -INFINITY +native_color: stonith-fence_ipmilan-525400cdec10 allocation score on messaging-1: -INFINITY +native_color: stonith-fence_ipmilan-525400cdec10 allocation score on messaging-2: -INFINITY +redis:0 promotion score on redis-bundle-0: 1 +redis:1 promotion score on redis-bundle-1: -1 +redis:2 promotion score on redis-bundle-2: 1 diff --git a/pengine/test10/bundle-order-stop-on-remote.summary b/pengine/test10/bundle-order-stop-on-remote.summary new file mode 100644 index 0000000..8a04599 --- /dev/null +++ b/pengine/test10/bundle-order-stop-on-remote.summary @@ -0,0 +1,224 @@ + +Current cluster status: +RemoteNode database-0: UNCLEAN (offline) +RemoteNode database-2: UNCLEAN (offline) +Online: [ controller-0 controller-1 controller-2 ] +RemoteOnline: [ database-1 messaging-0 messaging-1 messaging-2 ] +Containers: [ galera-bundle-1:galera-bundle-docker-1 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 rabbitmq-bundle-1:rabbitmq-bundle-docker-1 rabbitmq-bundle-2:rabbitmq-bundle-docker-2 redis-bundle-0:redis-bundle-docker-0 redis-bundle-2:redis-bundle-docker-2 ] + + database-0 (ocf::pacemaker:remote): Stopped + database-1 (ocf::pacemaker:remote): Started controller-2 + database-2 (ocf::pacemaker:remote): Stopped + messaging-0 (ocf::pacemaker:remote): Started controller-2 + messaging-1 (ocf::pacemaker:remote): Started controller-2 + messaging-2 (ocf::pacemaker:remote): Started controller-2 + Docker container set: rabbitmq-bundle [192.168.24.1:8787/rhosp12/openstack-rabbitmq-docker:pcmklatest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started messaging-0 + rabbitmq-bundle-1 (ocf::heartbeat:rabbitmq-cluster): Started messaging-1 + rabbitmq-bundle-2 (ocf::heartbeat:rabbitmq-cluster): Started messaging-2 + Docker container set: galera-bundle [192.168.24.1:8787/rhosp12/openstack-mariadb-docker:pcmklatest] + galera-bundle-0 (ocf::heartbeat:galera): FAILED Master database-0 (UNCLEAN) + galera-bundle-1 (ocf::heartbeat:galera): Master database-1 + galera-bundle-2 (ocf::heartbeat:galera): FAILED Master database-2 (UNCLEAN) + Docker container set: redis-bundle [192.168.24.1:8787/rhosp12/openstack-redis-docker:pcmklatest] + redis-bundle-0 (ocf::heartbeat:redis): Slave controller-0 + redis-bundle-1 (ocf::heartbeat:redis): Stopped + redis-bundle-2 (ocf::heartbeat:redis): Slave controller-2 + ip-192.168.24.11 (ocf::heartbeat:IPaddr2): Stopped + ip-10.0.0.104 (ocf::heartbeat:IPaddr2): Stopped + ip-172.17.1.19 (ocf::heartbeat:IPaddr2): Started controller-2 + ip-172.17.1.11 (ocf::heartbeat:IPaddr2): Stopped + ip-172.17.3.13 (ocf::heartbeat:IPaddr2): Stopped + ip-172.17.4.19 (ocf::heartbeat:IPaddr2): Started controller-2 + Docker container set: haproxy-bundle [192.168.24.1:8787/rhosp12/openstack-haproxy-docker:pcmklatest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started controller-0 + haproxy-bundle-docker-1 (ocf::heartbeat:docker): Stopped + haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started controller-2 + openstack-cinder-volume (systemd:openstack-cinder-volume): Stopped + stonith-fence_ipmilan-525400244e09 (stonith:fence_ipmilan): Started controller-2 + stonith-fence_ipmilan-525400cdec10 (stonith:fence_ipmilan): Started controller-2 + stonith-fence_ipmilan-525400c709f7 (stonith:fence_ipmilan): Stopped + stonith-fence_ipmilan-525400a7f9e0 (stonith:fence_ipmilan): Started controller-0 + stonith-fence_ipmilan-525400a25787 (stonith:fence_ipmilan): Started controller-2 + stonith-fence_ipmilan-5254005ea387 (stonith:fence_ipmilan): Stopped + stonith-fence_ipmilan-525400542c06 (stonith:fence_ipmilan): Stopped + stonith-fence_ipmilan-525400aac413 (stonith:fence_ipmilan): Started controller-2 + stonith-fence_ipmilan-525400498d34 (stonith:fence_ipmilan): Stopped + +Transition Summary: + * Fence (reboot) galera-bundle-2 (resource: galera-bundle-docker-2) 'guest is unclean' + * Fence (reboot) galera-bundle-0 (resource: galera-bundle-docker-0) 'guest is unclean' + * Start database-0 ( controller-0 ) + * Start database-2 ( controller-1 ) + * Recover galera-bundle-docker-0 ( database-0 ) + * Start galera-bundle-0 ( controller-0 ) + * Recover galera:0 ( Master galera-bundle-0 ) + * Recover galera-bundle-docker-2 ( database-2 ) + * Start galera-bundle-2 ( controller-1 ) + * Recover galera:2 ( Master galera-bundle-2 ) + * Promote redis:0 ( Slave -> Master redis-bundle-0 ) + * Start redis-bundle-docker-1 ( controller-1 ) + * Start redis-bundle-1 ( controller-1 ) + * Start redis:1 ( redis-bundle-1 ) + * Start ip-192.168.24.11 ( controller-0 ) + * Start ip-10.0.0.104 ( controller-1 ) + * Start ip-172.17.1.11 ( controller-0 ) + * Start ip-172.17.3.13 ( controller-1 ) + * Start haproxy-bundle-docker-1 ( controller-1 ) + * Start openstack-cinder-volume ( controller-0 ) + * Start stonith-fence_ipmilan-525400c709f7 ( controller-1 ) + * Start stonith-fence_ipmilan-5254005ea387 ( controller-1 ) + * Start stonith-fence_ipmilan-525400542c06 ( controller-0 ) + * Start stonith-fence_ipmilan-525400498d34 ( controller-1 ) + +Executing cluster transition: + * Resource action: database-0 start on controller-0 + * Resource action: database-2 start on controller-1 + * Pseudo action: redis-bundle-master_pre_notify_start_0 + * Resource action: stonith-fence_ipmilan-525400c709f7 start on controller-1 + * Resource action: stonith-fence_ipmilan-5254005ea387 start on controller-1 + * Resource action: stonith-fence_ipmilan-525400542c06 start on controller-0 + * Resource action: stonith-fence_ipmilan-525400498d34 start on controller-1 + * Pseudo action: redis-bundle_start_0 + * Pseudo action: galera-bundle_demote_0 + * Resource action: database-0 monitor=20000 on controller-0 + * Resource action: database-2 monitor=20000 on controller-1 + * Pseudo action: galera-bundle-master_demote_0 + * Resource action: redis notify on redis-bundle-0 + * Resource action: redis notify on redis-bundle-2 + * Pseudo action: redis-bundle-master_confirmed-pre_notify_start_0 + * Pseudo action: redis-bundle-master_start_0 + * Resource action: stonith-fence_ipmilan-525400c709f7 monitor=60000 on controller-1 + * Resource action: stonith-fence_ipmilan-5254005ea387 monitor=60000 on controller-1 + * Resource action: stonith-fence_ipmilan-525400542c06 monitor=60000 on controller-0 + * Resource action: stonith-fence_ipmilan-525400498d34 monitor=60000 on controller-1 + * Pseudo action: galera_demote_0 + * Pseudo action: galera_demote_0 + * Pseudo action: galera-bundle-master_demoted_0 + * Pseudo action: galera-bundle_demoted_0 + * Pseudo action: galera-bundle_stop_0 + * Resource action: galera-bundle-docker-0 stop on database-0 + * Resource action: galera-bundle-docker-2 stop on database-2 + * Pseudo action: stonith-galera-bundle-2-reboot on galera-bundle-2 + * Pseudo action: stonith-galera-bundle-0-reboot on galera-bundle-0 + * Pseudo action: stonith_complete + * Pseudo action: galera-bundle-master_stop_0 + * Resource action: redis-bundle-docker-1 start on controller-1 + * Resource action: redis-bundle-1 monitor on controller-1 + * Resource action: ip-192.168.24.11 start on controller-0 + * Resource action: ip-10.0.0.104 start on controller-1 + * Resource action: ip-172.17.1.11 start on controller-0 + * Resource action: ip-172.17.3.13 start on controller-1 + * Resource action: openstack-cinder-volume start on controller-0 + * Pseudo action: haproxy-bundle_start_0 + * Pseudo action: galera_stop_0 + * Resource action: redis-bundle-docker-1 monitor=60000 on controller-1 + * Resource action: redis-bundle-1 start on controller-1 + * Resource action: ip-192.168.24.11 monitor=10000 on controller-0 + * Resource action: ip-10.0.0.104 monitor=10000 on controller-1 + * Resource action: ip-172.17.1.11 monitor=10000 on controller-0 + * Resource action: ip-172.17.3.13 monitor=10000 on controller-1 + * Resource action: haproxy-bundle-docker-1 start on controller-1 + * Resource action: openstack-cinder-volume monitor=60000 on controller-0 + * Pseudo action: haproxy-bundle_running_0 + * Pseudo action: galera_stop_0 + * Pseudo action: galera-bundle-master_stopped_0 + * Resource action: redis start on redis-bundle-1 + * Pseudo action: redis-bundle-master_running_0 + * Resource action: redis-bundle-1 monitor=60000 on controller-1 + * Resource action: haproxy-bundle-docker-1 monitor=60000 on controller-1 + * Pseudo action: galera-bundle_stopped_0 + * Pseudo action: galera-bundle_start_0 + * Pseudo action: all_stopped + * Pseudo action: galera-bundle-master_start_0 + * Resource action: galera-bundle-docker-0 start on database-0 + * Resource action: galera-bundle-0 monitor on controller-1 + * Resource action: galera-bundle-docker-2 start on database-2 + * Resource action: galera-bundle-2 monitor on controller-1 + * Pseudo action: redis-bundle-master_post_notify_running_0 + * Resource action: galera-bundle-docker-0 monitor=60000 on database-0 + * Resource action: galera-bundle-0 start on controller-0 + * Resource action: galera-bundle-docker-2 monitor=60000 on database-2 + * Resource action: galera-bundle-2 start on controller-1 + * Resource action: redis notify on redis-bundle-0 + * Resource action: redis notify on redis-bundle-1 + * Resource action: redis notify on redis-bundle-2 + * Pseudo action: redis-bundle-master_confirmed-post_notify_running_0 + * Pseudo action: redis-bundle_running_0 + * Resource action: galera start on galera-bundle-0 + * Resource action: galera start on galera-bundle-2 + * Pseudo action: galera-bundle-master_running_0 + * Resource action: galera-bundle-0 monitor=60000 on controller-0 + * Resource action: galera-bundle-2 monitor=60000 on controller-1 + * Pseudo action: redis-bundle-master_pre_notify_promote_0 + * Pseudo action: redis-bundle_promote_0 + * Pseudo action: galera-bundle_running_0 + * Resource action: redis notify on redis-bundle-0 + * Resource action: redis notify on redis-bundle-1 + * Resource action: redis notify on redis-bundle-2 + * Pseudo action: redis-bundle-master_confirmed-pre_notify_promote_0 + * Pseudo action: redis-bundle-master_promote_0 + * Pseudo action: galera-bundle_promote_0 + * Pseudo action: galera-bundle-master_promote_0 + * Resource action: redis promote on redis-bundle-0 + * Pseudo action: redis-bundle-master_promoted_0 + * Resource action: galera promote on galera-bundle-0 + * Resource action: galera promote on galera-bundle-2 + * Pseudo action: galera-bundle-master_promoted_0 + * Pseudo action: redis-bundle-master_post_notify_promoted_0 + * Pseudo action: galera-bundle_promoted_0 + * Resource action: galera monitor=10000 on galera-bundle-0 + * Resource action: galera monitor=10000 on galera-bundle-2 + * Resource action: redis notify on redis-bundle-0 + * Resource action: redis notify on redis-bundle-1 + * Resource action: redis notify on redis-bundle-2 + * Pseudo action: redis-bundle-master_confirmed-post_notify_promoted_0 + * Pseudo action: redis-bundle_promoted_0 + * Resource action: redis monitor=20000 on redis-bundle-0 + * Resource action: redis monitor=60000 on redis-bundle-1 + * Resource action: redis monitor=45000 on redis-bundle-1 + +Revised cluster status: +Online: [ controller-0 controller-1 controller-2 ] +RemoteOnline: [ database-0 database-1 database-2 messaging-0 messaging-1 messaging-2 ] +Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bundle-docker-1 galera-bundle-2:galera-bundle-docker-2 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 rabbitmq-bundle-1:rabbitmq-bundle-docker-1 rabbitmq-bundle-2:rabbitmq-bundle-docker-2 redis-bundle-0:redis-bundle-docker-0 redis-bundle-1:redis-bundle-docker-1 redis-bundle-2:redis-bundle-docker-2 ] + + database-0 (ocf::pacemaker:remote): Started controller-0 + database-1 (ocf::pacemaker:remote): Started controller-2 + database-2 (ocf::pacemaker:remote): Started controller-1 + messaging-0 (ocf::pacemaker:remote): Started controller-2 + messaging-1 (ocf::pacemaker:remote): Started controller-2 + messaging-2 (ocf::pacemaker:remote): Started controller-2 + Docker container set: rabbitmq-bundle [192.168.24.1:8787/rhosp12/openstack-rabbitmq-docker:pcmklatest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started messaging-0 + rabbitmq-bundle-1 (ocf::heartbeat:rabbitmq-cluster): Started messaging-1 + rabbitmq-bundle-2 (ocf::heartbeat:rabbitmq-cluster): Started messaging-2 + Docker container set: galera-bundle [192.168.24.1:8787/rhosp12/openstack-mariadb-docker:pcmklatest] + galera-bundle-0 (ocf::heartbeat:galera): Master database-0 + galera-bundle-1 (ocf::heartbeat:galera): Master database-1 + galera-bundle-2 (ocf::heartbeat:galera): Master database-2 + Docker container set: redis-bundle [192.168.24.1:8787/rhosp12/openstack-redis-docker:pcmklatest] + redis-bundle-0 (ocf::heartbeat:redis): Master controller-0 + redis-bundle-1 (ocf::heartbeat:redis): Slave controller-1 + redis-bundle-2 (ocf::heartbeat:redis): Slave controller-2 + ip-192.168.24.11 (ocf::heartbeat:IPaddr2): Started controller-0 + ip-10.0.0.104 (ocf::heartbeat:IPaddr2): Started controller-1 + ip-172.17.1.19 (ocf::heartbeat:IPaddr2): Started controller-2 + ip-172.17.1.11 (ocf::heartbeat:IPaddr2): Started controller-0 + ip-172.17.3.13 (ocf::heartbeat:IPaddr2): Started controller-1 + ip-172.17.4.19 (ocf::heartbeat:IPaddr2): Started controller-2 + Docker container set: haproxy-bundle [192.168.24.1:8787/rhosp12/openstack-haproxy-docker:pcmklatest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started controller-0 + haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started controller-1 + haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started controller-2 + openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-0 + stonith-fence_ipmilan-525400244e09 (stonith:fence_ipmilan): Started controller-2 + stonith-fence_ipmilan-525400cdec10 (stonith:fence_ipmilan): Started controller-2 + stonith-fence_ipmilan-525400c709f7 (stonith:fence_ipmilan): Started controller-1 + stonith-fence_ipmilan-525400a7f9e0 (stonith:fence_ipmilan): Started controller-0 + stonith-fence_ipmilan-525400a25787 (stonith:fence_ipmilan): Started controller-2 + stonith-fence_ipmilan-5254005ea387 (stonith:fence_ipmilan): Started controller-1 + stonith-fence_ipmilan-525400542c06 (stonith:fence_ipmilan): Started controller-0 + stonith-fence_ipmilan-525400aac413 (stonith:fence_ipmilan): Started controller-2 + stonith-fence_ipmilan-525400498d34 (stonith:fence_ipmilan): Started controller-1 + diff --git a/pengine/test10/bundle-order-stop-on-remote.xml b/pengine/test10/bundle-order-stop-on-remote.xml new file mode 100644 index 0000000..d3b87c8 --- /dev/null +++ b/pengine/test10/bundle-order-stop-on-remote.xml @@ -0,0 +1,1165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 1.8.3.1 From 47a5f6f5cd1fba2c6bac140329e563abd34b2ef4 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 8 Dec 2017 16:54:07 -0600 Subject: [PATCH 13/16] Low: PE: correct mispelled constant original intention of 2b1aae07 --- pengine/allocate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pengine/allocate.c b/pengine/allocate.c index 1c95e97..481a0ec 100644 --- a/pengine/allocate.c +++ b/pengine/allocate.c @@ -1870,7 +1870,7 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) container->id); if (safe_str_eq(action->task, CRMD_ACTION_MIGRATE) - || safe_str_eq(action->task, CRMD_ACTION_MIGRATE)) { + || safe_str_eq(action->task, CRMD_ACTION_MIGRATED)) { /* Migration ops map to "no_action", but we need to apply the same * ordering as for stop or demote (see get_router_node()). */ @@ -2036,7 +2036,7 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) remote_rsc->id, state2text(state)); if (safe_str_eq(action->task, CRMD_ACTION_MIGRATE) - || safe_str_eq(action->task, CRMD_ACTION_MIGRATE)) { + || safe_str_eq(action->task, CRMD_ACTION_MIGRATED)) { /* Migration ops map to "no_action", but we need to apply the same * ordering as for stop or demote (see get_router_node()). */ -- 1.8.3.1 From 55c9b5ef9c6f531ea808926abaaea5c7c8890dad Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 8 Dec 2017 17:31:23 -0600 Subject: [PATCH 14/16] Doc: PE: update remote stop ordering comments for recent changes --- pengine/allocate.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pengine/allocate.c b/pengine/allocate.c index 481a0ec..7ae4e02 100644 --- a/pengine/allocate.c +++ b/pengine/allocate.c @@ -2058,9 +2058,6 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) break; case stop_rsc: - /* Handle special case with remote node where stop actions need to be - * ordered after the connection resource starts somewhere else. - */ if(state == remote_state_alive) { order_action_then_stop(action, remote_rsc, pe_order_implies_first, data_set); @@ -2076,14 +2073,18 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) pe_order_implies_first, data_set); } else if(remote_rsc->next_role == RSC_ROLE_STOPPED) { - /* If its not coming back up, better do what we need first */ + /* State must be remote_state_unknown or remote_state_stopped. + * Since the connection is not coming back up in this + * transition, stop this resource first. + */ order_action_then_stop(action, remote_rsc, pe_order_implies_first, data_set); } else { - /* Wait for the connection resource to be up and assume everything is as we left it */ + /* The connection is going to be started somewhere else, so + * stop this resource after that completes. + */ order_start_then_action(remote_rsc, action, pe_order_none, data_set); - } break; -- 1.8.3.1 From 39441fa1dfe625cf00af463269052d4c2dafaa16 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 8 Dec 2017 17:16:55 -0600 Subject: [PATCH 15/16] Low: libpe_status: limit resource type check to primitives --- lib/pengine/complex.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c index d58d6be..86f290c 100644 --- a/lib/pengine/complex.c +++ b/lib/pengine/complex.c @@ -784,7 +784,9 @@ common_unpack(xmlNode * xml_obj, resource_t ** rsc, if(is_set((*rsc)->flags, pe_rsc_fence_device)) { value = "quorum"; - } else if (safe_str_eq(crm_element_value((*rsc)->xml, XML_AGENT_ATTR_CLASS), "ocf") + } else if (((*rsc)->variant == pe_native) + && safe_str_eq(crm_element_value((*rsc)->xml, XML_AGENT_ATTR_CLASS), + PCMK_RESOURCE_CLASS_OCF) && safe_str_eq(crm_element_value((*rsc)->xml, XML_AGENT_ATTR_PROVIDER), "pacemaker") && safe_str_eq(crm_element_value((*rsc)->xml, XML_ATTR_TYPE), "remote") ) { -- 1.8.3.1 From 68438917c3b1ed305af6da2acd23454cd777e1d1 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 8 Dec 2017 18:00:12 -0600 Subject: [PATCH 16/16] Fix: lrmd: always use most recent remote proxy Any working proxy is sufficient, but the newest connection is the most likely to be working. We want to avoid using an old proxy that has failed but whose TCP connection has not yet timed out. --- lrmd/ipc_proxy.c | 41 +++++++++++++---------------------------- 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/lrmd/ipc_proxy.c b/lrmd/ipc_proxy.c index 5d6ab34..4d1ee01 100644 --- a/lrmd/ipc_proxy.c +++ b/lrmd/ipc_proxy.c @@ -42,7 +42,7 @@ static qb_ipcs_service_t *crmd_ipcs = NULL; static qb_ipcs_service_t *stonith_ipcs = NULL; /* ipc providers == crmd clients connecting from cluster nodes */ -static GHashTable *ipc_providers = NULL; +static GList *ipc_providers = NULL; /* ipc clients == things like cibadmin, crm_resource, connecting locally */ static GHashTable *ipc_clients = NULL; @@ -52,24 +52,14 @@ static GHashTable *ipc_clients = NULL; * * \return Pointer to a provider if one exists, NULL otherwise * - * \note Grab the first provider available; any provider will work, and usually - * there will be only one. These are client connections originating from a - * cluster node's crmd. + * \note Grab the first provider, which is the most recent connection. That way, + * if we haven't yet timed out an old, failed connection, we don't try to + * use it. */ crm_client_t * ipc_proxy_get_provider() { - if (ipc_providers) { - GHashTableIter iter; - gpointer key = NULL; - gpointer value = NULL; - - g_hash_table_iter_init(&iter, ipc_providers); - if (g_hash_table_iter_next(&iter, &key, &value)) { - return (crm_client_t*)value; - } - } - return NULL; + return ipc_providers? (crm_client_t*) (ipc_providers->data) : NULL; } static int32_t @@ -378,10 +368,8 @@ static struct qb_ipcs_service_handlers cib_proxy_callbacks_rw = { void ipc_proxy_add_provider(crm_client_t *ipc_proxy) { - if (ipc_providers == NULL) { - return; - } - g_hash_table_insert(ipc_providers, ipc_proxy->id, ipc_proxy); + // Prepending ensures the most recent connection is always first + ipc_providers = g_list_prepend(ipc_providers, ipc_proxy); } void @@ -393,11 +381,7 @@ ipc_proxy_remove_provider(crm_client_t *ipc_proxy) GList *remove_these = NULL; GListPtr gIter = NULL; - if (ipc_providers == NULL) { - return; - } - - g_hash_table_remove(ipc_providers, ipc_proxy->id); + ipc_providers = g_list_remove(ipc_providers, ipc_proxy); g_hash_table_iter_init(&iter, ipc_clients); while (g_hash_table_iter_next(&iter, (gpointer *) & key, (gpointer *) & ipc_client)) { @@ -413,6 +397,8 @@ ipc_proxy_remove_provider(crm_client_t *ipc_proxy) for (gIter = remove_these; gIter != NULL; gIter = gIter->next) { ipc_client = gIter->data; + + // Disconnection callback will free the client here qb_ipcs_disconnect(ipc_client->ipcs); } @@ -424,7 +410,6 @@ void ipc_proxy_init(void) { ipc_clients = g_hash_table_new_full(crm_str_hash, g_str_equal, NULL, NULL); - ipc_providers = g_hash_table_new_full(crm_str_hash, g_str_equal, NULL, NULL); cib_ipc_servers_init(&cib_ro, &cib_rw, @@ -446,10 +431,12 @@ void ipc_proxy_cleanup(void) { if (ipc_providers) { - g_hash_table_destroy(ipc_providers); + g_list_free(ipc_providers); + ipc_providers = NULL; } if (ipc_clients) { g_hash_table_destroy(ipc_clients); + ipc_clients = NULL; } cib_ipc_servers_destroy(cib_ro, cib_rw, cib_shm); qb_ipcs_destroy(attrd_ipcs); @@ -458,6 +445,4 @@ ipc_proxy_cleanup(void) cib_ro = NULL; cib_rw = NULL; cib_shm = NULL; - ipc_providers = NULL; - ipc_clients = NULL; } -- 1.8.3.1