From 3997189c98ecbb9afd75f8dcf617d9f24a330af6 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Jan 25 2018 09:29:26 +0000 Subject: import pacemaker-1.1.16-12.el7_4.7 --- diff --git a/SOURCES/105-refactor.patch b/SOURCES/105-refactor.patch new file mode 100644 index 0000000..ea9c9c0 --- /dev/null +++ b/SOURCES/105-refactor.patch @@ -0,0 +1,230 @@ +From e57cbc5b85d3459d7a6f004f6252ffd1e60a51d5 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Tue, 22 Aug 2017 16:40:15 -0500 +Subject: [PATCH] Refactor: pengine: functionize common ordering tasks + +Enhances readability + +The only functional difference is that demotes of resources on guest nodes will +now get pe_order_runnable_left when ordered relative to the guest node +connection start (and the container is not failed). It was already used in +comparable situations, and makes sense. +--- + pengine/allocate.c | 111 ++++++++++++++++++++++++++++++----------------------- + 1 file changed, 63 insertions(+), 48 deletions(-) + +diff --git a/pengine/allocate.c b/pengine/allocate.c +index 3c3df27..a540f9f 100644 +--- a/pengine/allocate.c ++++ b/pengine/allocate.c +@@ -1206,6 +1206,37 @@ allocate_resources(pe_working_set_t * data_set) + } + } + ++/* We always use pe_order_preserve with these convenience functions to exempt ++ * internally generated constraints from the prohibition of user constraints ++ * involving remote connection resources. ++ * ++ * The start ordering additionally uses pe_order_runnable_left so that the ++ * specified action is not runnable if the start is not runnable. ++ */ ++ ++static inline void ++order_start_then_action(resource_t *lh_rsc, action_t *rh_action, ++ enum pe_ordering extra, pe_working_set_t *data_set) ++{ ++ if (lh_rsc && rh_action && data_set) { ++ custom_action_order(lh_rsc, start_key(lh_rsc), NULL, ++ rh_action->rsc, NULL, rh_action, ++ pe_order_preserve | pe_order_runnable_left | extra, ++ data_set); ++ } ++} ++ ++static inline void ++order_action_then_stop(action_t *lh_action, resource_t *rh_rsc, ++ enum pe_ordering extra, pe_working_set_t *data_set) ++{ ++ if (lh_action && rh_rsc && data_set) { ++ custom_action_order(lh_action->rsc, NULL, lh_action, ++ rh_rsc, stop_key(rh_rsc), NULL, ++ pe_order_preserve | extra, data_set); ++ } ++} ++ + static void + cleanup_orphans(resource_t * rsc, pe_working_set_t * data_set) + { +@@ -1235,9 +1266,12 @@ cleanup_orphans(resource_t * rsc, pe_working_set_t * data_set) + CRM_XS " %s", + rsc->id, node->details->uname, clear_op->uuid); + +- custom_action_order(rsc, NULL, clear_op, +- rsc, generate_op_key(rsc->id, RSC_STOP, 0), NULL, +- pe_order_optional, data_set); ++ /* We can't use order_action_then_stop() here because its ++ * pe_order_preserve breaks things ++ */ ++ custom_action_order(clear_op->rsc, NULL, clear_op, ++ rsc, stop_key(rsc), NULL, ++ pe_order_optional, data_set); + } + } + } +@@ -1817,14 +1851,12 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) + case start_rsc: + case action_promote: + /* Force resource recovery if the container is recovered */ +- custom_action_order(container, generate_op_key(container->id, RSC_START, 0), NULL, +- action->rsc, NULL, action, +- pe_order_preserve | pe_order_implies_then | pe_order_runnable_left, data_set); ++ order_start_then_action(container, action, pe_order_implies_then, ++ data_set); + + /* Wait for the connection resource to be up too */ +- custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, +- action->rsc, NULL, action, +- pe_order_preserve | pe_order_runnable_left, data_set); ++ order_start_then_action(remote_rsc, action, pe_order_none, ++ data_set); + break; + case stop_rsc: + if(is_set(container->flags, pe_rsc_failed)) { +@@ -1836,9 +1868,8 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) + */ + } else { + /* Otherwise, ensure the operation happens before the connection is brought down */ +- custom_action_order(action->rsc, NULL, action, +- remote_rsc, generate_op_key(remote_rsc->id, RSC_STOP, 0), NULL, +- pe_order_preserve, data_set); ++ order_action_then_stop(action, remote_rsc, pe_order_none, ++ data_set); + } + break; + case action_demote: +@@ -1854,9 +1885,8 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) + + } else { + /* Otherwise, ensure the operation happens before the connection is brought down */ +- custom_action_order(action->rsc, NULL, action, +- remote_rsc, generate_op_key(remote_rsc->id, RSC_STOP, 0), NULL, +- pe_order_preserve, data_set); ++ order_action_then_stop(action, remote_rsc, pe_order_none, ++ data_set); + } + break; + default: +@@ -1867,14 +1897,12 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) + * the connection was re-established + */ + if(task != no_action) { +- custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, +- action->rsc, NULL, action, +- pe_order_preserve | pe_order_runnable_left | pe_order_implies_then, data_set); ++ order_start_then_action(remote_rsc, action, ++ pe_order_implies_then, data_set); + } + } else { +- custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, +- action->rsc, NULL, action, +- pe_order_preserve | pe_order_runnable_left, data_set); ++ order_start_then_action(remote_rsc, action, pe_order_none, ++ data_set); + } + break; + } +@@ -1988,11 +2016,7 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) + switch (task) { + case start_rsc: + case action_promote: +- /* This as an internally generated constraint exempt from +- * user constraint prohibitions, and this action isn't runnable +- * if the connection start isn't runnable. +- */ +- order_opts = pe_order_preserve | pe_order_runnable_left; ++ order_opts = pe_order_none; + + if (state == remote_state_failed) { + /* Force recovery, by making this action required */ +@@ -2000,10 +2024,7 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) + } + + /* Ensure connection is up before running this action */ +- custom_action_order(remote_rsc, +- generate_op_key(remote_rsc->id, RSC_START, 0), +- NULL, action->rsc, NULL, action, order_opts, +- data_set); ++ order_start_then_action(remote_rsc, action, order_opts, data_set); + break; + + case stop_rsc: +@@ -2012,9 +2033,8 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) + */ + if(state == remote_state_resting) { + /* Wait for the connection resource to be up and assume everything is as we left it */ +- custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, +- action->rsc, NULL, action, +- pe_order_preserve | pe_order_runnable_left, data_set); ++ order_start_then_action(remote_rsc, action, pe_order_none, ++ data_set); + + } else { + if(state == remote_state_failed) { +@@ -2026,9 +2046,8 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) + pe_fence_node(data_set, action->node, "resources are active and the connection is unrecoverable"); + } + +- custom_action_order(action->rsc, NULL, action, +- remote_rsc, generate_op_key(remote_rsc->id, RSC_STOP, 0), NULL, +- pe_order_preserve | pe_order_implies_first, data_set); ++ order_action_then_stop(action, remote_rsc, ++ pe_order_implies_first, data_set); + } + break; + +@@ -2038,9 +2057,8 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) + * blocked because the connection start would not be allowed. + */ + if(state == remote_state_resting || state == remote_state_unknown) { +- custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, +- action->rsc, NULL, action, +- pe_order_preserve, data_set); ++ order_start_then_action(remote_rsc, action, pe_order_none, ++ data_set); + } /* Otherwise we can rely on the stop ordering */ + break; + +@@ -2051,9 +2069,8 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) + * recurring monitors to be restarted, even if just + * the connection was re-established + */ +- custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, +- action->rsc, NULL, action, +- pe_order_preserve | pe_order_runnable_left | pe_order_implies_then, data_set); ++ order_start_then_action(remote_rsc, action, ++ pe_order_implies_then, data_set); + + } else { + if(task == monitor_rsc && state == remote_state_failed) { +@@ -2073,14 +2090,12 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) + * stopped _before_ we let the connection get + * closed + */ +- custom_action_order(action->rsc, NULL, action, +- remote_rsc, generate_op_key(remote_rsc->id, RSC_STOP, 0), NULL, +- pe_order_preserve | pe_order_runnable_left, data_set); ++ order_action_then_stop(action, remote_rsc, ++ pe_order_runnable_left, data_set); + + } else { +- custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, +- action->rsc, NULL, action, +- pe_order_preserve | pe_order_runnable_left, data_set); ++ order_start_then_action(remote_rsc, action, pe_order_none, ++ data_set); + } + } + break; +-- +1.8.3.1 + diff --git a/SOURCES/106-probes.patch b/SOURCES/106-probes.patch new file mode 100644 index 0000000..93695d8 --- /dev/null +++ b/SOURCES/106-probes.patch @@ -0,0 +1,7442 @@ +From 15208f73303d5c9ecfedef55a77b8d04c442a80a Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Wed, 1 Nov 2017 22:27:38 +1100 +Subject: [PATCH 1/4] Fix: PE: Correctly defer processing of resources inside + containers + +--- + lib/pengine/unpack.c | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) + +diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c +index 6c54647..873d895 100644 +--- a/lib/pengine/unpack.c ++++ b/lib/pengine/unpack.c +@@ -1097,9 +1097,32 @@ unpack_node_loop(xmlNode * status, bool fence, pe_working_set_t * data_set) + process = TRUE; + + } else if (is_remote_node(this_node)) { ++ bool check = FALSE; + resource_t *rsc = this_node->details->remote_rsc; + +- if (fence || (rsc && rsc->role == RSC_ROLE_STARTED)) { ++ if(fence) { ++ check = TRUE; ++ ++ } else if(rsc == NULL) { ++ /* Not ready yet */ ++ ++ } else if (is_container_remote_node(this_node) ++ && rsc->role == RSC_ROLE_STARTED ++ && rsc->container->role == RSC_ROLE_STARTED) { ++ /* Both the connection and the underlying container ++ * need to be known 'up' before we volunterily process ++ * resources inside it ++ */ ++ check = TRUE; ++ crm_trace("Checking node %s/%s/%s status %d/%d/%d", id, rsc->id, rsc->container->id, fence, rsc->role, RSC_ROLE_STARTED); ++ ++ } else if (is_container_remote_node(this_node) == FALSE ++ && rsc->role == RSC_ROLE_STARTED) { ++ check = TRUE; ++ crm_trace("Checking node %s/%s status %d/%d/%d", id, rsc->id, fence, rsc->role, RSC_ROLE_STARTED); ++ } ++ ++ if (check) { + determine_remote_online_status(data_set, this_node); + unpack_handle_remote_attrs(this_node, state, data_set); + process = TRUE; +-- +1.8.3.1 + + +From 3a34feda66fea579f86aac6b525fddc4b68d00ff Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Thu, 2 Nov 2017 13:36:28 +1100 +Subject: [PATCH 2/4] Fix: PE: Allow all resources to stop prior to probes + completing + +- Avoids transition loops, particularly with bundles +- Fix docker/remote probe ordering for bundles +--- + pengine/graph.c | 48 +++++++++++++++++++++++++----------------------- + pengine/native.c | 12 ------------ + 2 files changed, 25 insertions(+), 35 deletions(-) + +diff --git a/pengine/graph.c b/pengine/graph.c +index e3ee4fc..0906f1a 100644 +--- a/pengine/graph.c ++++ b/pengine/graph.c +@@ -184,13 +184,34 @@ rsc_expand_action(action_t * action) + static enum pe_graph_flags + graph_update_action(action_t * first, action_t * then, node_t * node, + enum pe_action_flags first_flags, enum pe_action_flags then_flags, +- enum pe_ordering type) ++ action_wrapper_t *order) + { + enum pe_graph_flags changed = pe_graph_none; ++ enum pe_ordering type = order->type; + gboolean processed = FALSE; + + /* TODO: Do as many of these in parallel as possible */ + ++ if(is_set(type, pe_order_implies_then_on_node)) { ++ /* Normally we want the _whole_ 'then' clone to ++ * restart if 'first' is restarted, so then->node is ++ * needed. ++ * ++ * However for unfencing, we want to limit this to ++ * instances on the same node as 'first' (the ++ * unfencing operation), so first->node is supplied. ++ * ++ * Swap the node, from then on we can can treat it ++ * like any other 'pe_order_implies_then' ++ */ ++ ++ clear_bit(type, pe_order_implies_then_on_node); ++ set_bit(type, pe_order_implies_then); ++ node = first->node; ++ } ++ ++ clear_bit(first_flags, pe_action_pseudo); ++ + if (type & pe_order_implies_then) { + processed = TRUE; + if (then->rsc) { +@@ -300,6 +321,8 @@ graph_update_action(action_t * first, action_t * then, node_t * node, + if (is_not_set(first_flags, pe_action_runnable) && first->rsc->running_on != NULL) { + pe_rsc_trace(then->rsc, "Ignoring %s then %s - %s is about to be stopped", + first->uuid, then->uuid, first->rsc->id); ++ type = pe_order_none; ++ order->type = pe_order_none; + + } else { + pe_rsc_trace(then->rsc, "Enforcing %s then %s", first->uuid, then->uuid); +@@ -608,29 +631,8 @@ update_action(action_t * then) + * constraint to instances on the supplied node + * + */ +- int otype = other->type; + node_t *node = then->node; +- +- if(is_set(otype, pe_order_implies_then_on_node)) { +- /* Normally we want the _whole_ 'then' clone to +- * restart if 'first' is restarted, so then->node is +- * needed. +- * +- * However for unfencing, we want to limit this to +- * instances on the same node as 'first' (the +- * unfencing operation), so first->node is supplied. +- * +- * Swap the node, from then on we can can treat it +- * like any other 'pe_order_implies_then' +- */ +- +- clear_bit(otype, pe_order_implies_then_on_node); +- set_bit(otype, pe_order_implies_then); +- node = first->node; +- } +- clear_bit(first_flags, pe_action_pseudo); +- +- changed |= graph_update_action(first, then, node, first_flags, then_flags, otype); ++ changed |= graph_update_action(first, then, node, first_flags, then_flags, other); + + /* 'first' was for a complex resource (clone, group, etc), + * create a new dependency if necessary +diff --git a/pengine/native.c b/pengine/native.c +index 5ba7b5f..a8ae655 100644 +--- a/pengine/native.c ++++ b/pengine/native.c +@@ -3008,18 +3008,6 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, + top, reload_key(rsc), NULL, + pe_order_optional, data_set); + +- if(node->details->shutdown == FALSE +- && is_not_set(rsc->flags, pe_rsc_failed) +- && rsc->next_role != RSC_ROLE_STOPPED) { +- /* Avoid trying to move resources before we know the location +- * elsewhere, but stopping should always be allowed. +- * Especially if the resource has failed. +- */ +- custom_action_order(rsc, NULL, probe, +- rsc, generate_op_key(rsc->id, RSC_STOP, 0), NULL, +- pe_order_optional, data_set); +- } +- + if(is_set(rsc->flags, pe_rsc_fence_device) && is_set(data_set->flags, pe_flag_enable_unfencing)) { + /* Normally rsc.start depends on probe complete which depends + * on rsc.probe. But this can't be the case in this scenario as +-- +1.8.3.1 + + +From 837adaec3d26db2c94b312e2ca32830dbac33285 Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Thu, 2 Nov 2017 13:40:01 +1100 +Subject: [PATCH 3/4] Log: PE: Improved logging of reasons for stop/restart + actions + +--- + lib/pengine/utils.c | 28 +++++++++++++++++++++------- + pengine/allocate.c | 11 +++++++++-- + pengine/native.c | 13 +++++++++---- + 3 files changed, 39 insertions(+), 13 deletions(-) + +diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c +index 272fa16..baebc17 100644 +--- a/lib/pengine/utils.c ++++ b/lib/pengine/utils.c +@@ -547,7 +547,7 @@ custom_action(resource_t * rsc, char *key, const char *task, + + } else if (action->node == NULL) { + pe_rsc_trace(rsc, "Unset runnable on %s", action->uuid); +- pe_action_set_flag_reason(__FUNCTION__, __LINE__, action, NULL, "node availability", pe_action_runnable, TRUE); ++ pe_clear_action_bit(action, pe_action_runnable); + + } else if (is_not_set(rsc->flags, pe_rsc_managed) + && g_hash_table_lookup(action->meta, XML_LRM_ATTR_INTERVAL) == NULL) { +@@ -574,7 +574,7 @@ custom_action(resource_t * rsc, char *key, const char *task, + + } else if (action->needs == rsc_req_nothing) { + pe_rsc_trace(rsc, "Action %s does not require anything", action->uuid); +- free(action->reason); action->reason = NULL; ++ pe_action_set_reason(action, NULL, TRUE); + pe_set_action_bit(action, pe_action_runnable); + #if 0 + /* +@@ -599,9 +599,9 @@ custom_action(resource_t * rsc, char *key, const char *task, + action->node->details->uname, action->uuid); + } + +- } else { ++ } else if(is_not_set(action->flags, pe_action_runnable)) { + pe_rsc_trace(rsc, "Action %s is runnable", action->uuid); +- free(action->reason); action->reason = NULL; ++ //pe_action_set_reason(action, NULL, TRUE); + pe_set_action_bit(action, pe_action_runnable); + } + +@@ -1953,14 +1953,16 @@ rsc_action_digest_cmp(resource_t * rsc, xmlNode * xml_op, node_t * node, + char *key = NULL; + int interval = 0; + +- const char *interval_s = crm_element_value(xml_op, XML_LRM_ATTR_INTERVAL); ++ const char *op_version; + const char *task = crm_element_value(xml_op, XML_LRM_ATTR_TASK); ++ const char *interval_s = crm_element_value(xml_op, XML_LRM_ATTR_INTERVAL); + + const char *digest_all; + const char *digest_restart; + + CRM_ASSERT(node != NULL); + ++ op_version = crm_element_value(xml_op, XML_ATTR_CRM_VERSION); + digest_all = crm_element_value(xml_op, XML_LRM_ATTR_OP_DIGEST); + digest_restart = crm_element_value(xml_op, XML_LRM_ATTR_RESTART_DIGEST); + +@@ -1970,6 +1972,10 @@ rsc_action_digest_cmp(resource_t * rsc, xmlNode * xml_op, node_t * node, + + data->rc = RSC_DIGEST_MATCH; + if (digest_restart && data->digest_restart_calc && strcmp(data->digest_restart_calc, digest_restart) != 0) { ++ pe_rsc_info(rsc, "Parameters to %s on %s changed: was %s vs. now %s (restart:%s) %s", ++ key, node->details->uname, ++ crm_str(digest_restart), data->digest_restart_calc, ++ op_version, crm_element_value(xml_op, XML_ATTR_TRANSITION_MAGIC)); + data->rc = RSC_DIGEST_RESTART; + + } else if (digest_all == NULL) { +@@ -1977,6 +1983,10 @@ rsc_action_digest_cmp(resource_t * rsc, xmlNode * xml_op, node_t * node, + data->rc = RSC_DIGEST_UNKNOWN; + + } else if (strcmp(digest_all, data->digest_all_calc) != 0) { ++ pe_rsc_info(rsc, "Parameters to %s on %s changed: was %s vs. now %s (reload:%s) %s", ++ key, node->details->uname, ++ crm_str(digest_all), data->digest_all_calc, ++ op_version, crm_element_value(xml_op, XML_ATTR_TRANSITION_MAGIC)); + data->rc = RSC_DIGEST_ALL; + } + +@@ -2306,10 +2316,14 @@ void pe_action_set_flag_reason(const char *function, long line, + + void pe_action_set_reason(pe_action_t *action, const char *reason, bool overwrite) + { +- if(action->reason == NULL || overwrite) { ++ if(action->reason && overwrite) { ++ pe_rsc_trace(action->rsc, "Changing %s reason from '%s' to '%s'", action->uuid, action->reason, reason); + free(action->reason); ++ action->reason = NULL; ++ } ++ if(action->reason == NULL) { + if(reason) { +- crm_trace("Set %s reason to '%s'", action->uuid, reason); ++ pe_rsc_trace(action->rsc, "Set %s reason to '%s'", action->uuid, reason); + action->reason = strdup(reason); + } else { + action->reason = NULL; +diff --git a/pengine/allocate.c b/pengine/allocate.c +index 62b141a..b7a505a 100644 +--- a/pengine/allocate.c ++++ b/pengine/allocate.c +@@ -320,6 +320,7 @@ check_action_definition(resource_t * rsc, node_t * active_node, xmlNode * xml_op + + } else if (digest_data->rc == RSC_DIGEST_RESTART) { + /* Changes that force a restart */ ++ pe_action_t *required = NULL; + const char *digest_restart = crm_element_value(xml_op, XML_LRM_ATTR_RESTART_DIGEST); + + did_change = TRUE; +@@ -330,7 +331,10 @@ check_action_definition(resource_t * rsc, node_t * active_node, xmlNode * xml_op + crm_str(digest_restart), digest_data->digest_restart_calc, + op_version, crm_element_value(xml_op, XML_ATTR_TRANSITION_MAGIC)); + +- custom_action(rsc, key, task, NULL, FALSE, TRUE, data_set); ++ required = custom_action(rsc, key, task, NULL, TRUE, TRUE, data_set); ++ pe_action_set_flag_reason(__FUNCTION__, __LINE__, required, NULL, ++ "resource definition change", pe_action_optional, TRUE); ++ + trigger_unfencing(rsc, active_node, "Device parameters changed", NULL, data_set); + + } else if ((digest_data->rc == RSC_DIGEST_ALL) || (digest_data->rc == RSC_DIGEST_UNKNOWN)) { +@@ -367,12 +371,15 @@ check_action_definition(resource_t * rsc, node_t * active_node, xmlNode * xml_op + free(key); + + } else { ++ pe_action_t *required = NULL; + pe_rsc_trace(rsc, "Resource %s doesn't know how to reload", rsc->id); + + /* Re-send the start/demote/promote op + * Recurring ops will be detected independently + */ +- custom_action(rsc, key, task, NULL, FALSE, TRUE, data_set); ++ required = custom_action(rsc, key, task, NULL, TRUE, TRUE, data_set); ++ pe_action_set_flag_reason(__FUNCTION__, __LINE__, required, NULL, ++ "resource definition change", pe_action_optional, TRUE); + } + } + +diff --git a/pengine/native.c b/pengine/native.c +index a8ae655..26a4a7e 100644 +--- a/pengine/native.c ++++ b/pengine/native.c +@@ -2392,7 +2392,7 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) + next->details->uname); + + } else if (start && is_set(start->flags, pe_action_runnable) == FALSE) { +- LogAction("Stop", rsc, current, NULL, stop, start, terminal); ++ LogAction("Stop", rsc, current, NULL, stop, stop->reason?stop:start, terminal); + STOP_SANITY_ASSERT(__LINE__); + + } else if (moving && current) { +@@ -2433,7 +2433,7 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) + STOP_SANITY_ASSERT(__LINE__); + } + +- LogAction("Stop", rsc, node, NULL, stop_op, start, terminal); ++ LogAction("Stop", rsc, node, NULL, stop_op, stop_op->reason?stop_op:start, terminal); + } + + free(key); +@@ -2493,6 +2493,10 @@ StopRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * d + pe_rsc_trace(rsc, "%s on %s", rsc->id, current->details->uname); + stop = stop_action(rsc, current, optional); + ++ if(rsc->allocated_to == NULL) { ++ pe_action_set_reason(stop, "node availability", TRUE); ++ } ++ + if (is_not_set(rsc->flags, pe_rsc_managed)) { + update_action_flags(stop, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); + } +@@ -2521,7 +2525,7 @@ StartRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * + action_t *start = NULL; + + CRM_ASSERT(rsc); +- pe_rsc_trace(rsc, "%s on %s %d", rsc->id, next ? next->details->uname : "N/A", optional); ++ 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)) { +@@ -3310,9 +3314,10 @@ ReloadRsc(resource_t * rsc, node_t *node, pe_working_set_t * data_set) + + pe_rsc_trace(rsc, "Processing %s", rsc->id); + set_bit(rsc->flags, pe_rsc_reload); +- ++ + reload = custom_action( + rsc, reload_key(rsc), CRMD_ACTION_RELOAD, node, FALSE, TRUE, data_set); ++ pe_action_set_reason(reload, "resource definition change", FALSE); + + /* stop = stop_action(rsc, node, optional); */ + other = get_first_named_action(rsc, RSC_STOP, TRUE, node); +-- +1.8.3.1 + + +From 1fa28f088e04a58f5241461230e50357f281cab0 Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Thu, 2 Nov 2017 13:40:26 +1100 +Subject: [PATCH 4/4] Test: PE: Improved logging of reasons for stop/restart + actions + +--- + .../11-a-then-bm-b-move-a-clone-starting.dot | 1 - + .../11-a-then-bm-b-move-a-clone-starting.exp | 3 - + pengine/test10/594.dot | 2 - + pengine/test10/594.exp | 12 +-- + pengine/test10/594.summary | 4 +- + pengine/test10/662.dot | 3 - + pengine/test10/662.exp | 12 +-- + pengine/test10/662.summary | 4 +- + pengine/test10/696.dot | 2 - + pengine/test10/696.exp | 9 +- + pengine/test10/696.summary | 8 +- + pengine/test10/726.dot | 3 - + pengine/test10/726.exp | 12 +-- + pengine/test10/726.summary | 8 +- + pengine/test10/764.dot | 5 -- + pengine/test10/764.exp | 30 ++----- + pengine/test10/764.summary | 10 +-- + pengine/test10/797.dot | 7 -- + pengine/test10/797.exp | 36 ++------ + pengine/test10/797.summary | 8 +- + .../8-am-then-bm-a-migrating-b-stopping.summary | 2 +- + pengine/test10/829.dot | 3 - + pengine/test10/829.exp | 9 -- + pengine/test10/bug-1572-1.summary | 2 +- + pengine/test10/bug-5025-3.summary | 2 +- + pengine/test10/bug-5028.summary | 2 +- + pengine/test10/bug-cl-5219.summary | 2 +- + pengine/test10/bug-cl-5247.summary | 6 +- + pengine/test10/bug-lf-2106.summary | 4 +- + pengine/test10/bug-lf-2435.summary | 2 +- + pengine/test10/bug-lf-2551.summary | 32 ++++---- + pengine/test10/bug-lf-2606.summary | 2 +- + pengine/test10/bug-n-387749.dot | 2 - + pengine/test10/bug-n-387749.exp | 6 -- + pengine/test10/bug-n-387749.summary | 8 +- + pengine/test10/bug-pm-12.summary | 4 +- + pengine/test10/bug-rh-1097457.dot | 4 - + pengine/test10/bug-rh-1097457.exp | 12 --- + pengine/test10/bundle-nested-colocation.exp | 18 ++-- + pengine/test10/bundle-nested-colocation.summary | 6 +- + pengine/test10/bundle-nested-colocation.xml | 26 +++--- + pengine/test10/bundle-order-fencing.dot | 6 -- + pengine/test10/bundle-order-fencing.exp | 26 +----- + pengine/test10/bundle-order-fencing.xml | 34 ++++---- + pengine/test10/bundle-order-partial-start-2.exp | 12 +-- + pengine/test10/bundle-order-partial-start-2.xml | 18 ++-- + pengine/test10/bundle-order-partial-start.exp | 12 +-- + pengine/test10/bundle-order-partial-start.xml | 14 ++-- + pengine/test10/bundle-order-partial-stop.exp | 10 +-- + pengine/test10/bundle-order-partial-stop.xml | 4 +- + pengine/test10/bundle-order-startup-clone-2.exp | 90 ++++++++++---------- + pengine/test10/bundle-order-startup-clone.exp | 26 +++--- + pengine/test10/bundle-order-startup.exp | 30 +++---- + pengine/test10/bundle-order-stop-clone.dot | 2 - + pengine/test10/bundle-order-stop-clone.exp | 8 +- + pengine/test10/bundle-order-stop-clone.xml | 38 ++++----- + pengine/test10/bundle-order-stop.exp | 10 +-- + pengine/test10/bundle-order-stop.xml | 4 +- + pengine/test10/bundle-probe-order-1.exp | 18 ++-- + pengine/test10/bundle-probe-order-2.dot | 1 - + pengine/test10/bundle-probe-order-2.exp | 37 ++++----- + pengine/test10/bundle-probe-order-2.summary | 1 - + pengine/test10/bundle-probe-order-3.dot | 1 - + pengine/test10/bundle-probe-order-3.exp | 43 ++++------ + pengine/test10/bundle-probe-order-3.summary | 1 - + pengine/test10/bundle-probe-remotes.exp | 96 +++++++++++----------- + pengine/test10/clone-no-shuffle.summary | 2 +- + pengine/test10/cloned-group-stop.summary | 8 +- + pengine/test10/cloned-group.summary | 2 +- + .../colocation_constraint_stops_slave.summary | 2 +- + pengine/test10/group5.dot | 5 -- + pengine/test10/group5.exp | 18 +--- + pengine/test10/group5.summary | 2 +- + pengine/test10/group6.dot | 6 -- + pengine/test10/group6.exp | 18 ---- + pengine/test10/group6.summary | 2 +- + pengine/test10/group9.dot | 3 - + pengine/test10/group9.exp | 9 -- + pengine/test10/group9.summary | 4 +- + pengine/test10/guest-node-host-dies.dot | 6 -- + pengine/test10/guest-node-host-dies.exp | 18 ---- + pengine/test10/guest-node-host-dies.summary | 2 +- + pengine/test10/inc12.summary | 14 ++-- + pengine/test10/inc2.dot | 2 - + pengine/test10/inc2.exp | 6 -- + pengine/test10/inc3.dot | 4 - + pengine/test10/inc3.exp | 12 --- + pengine/test10/inc4.dot | 4 - + pengine/test10/inc4.exp | 12 --- + pengine/test10/inc5.dot | 4 - + pengine/test10/inc5.exp | 12 --- + pengine/test10/load-stopped-loop.summary | 4 +- + pengine/test10/master-9.summary | 2 +- + pengine/test10/migrate-1.dot | 1 - + pengine/test10/migrate-1.exp | 3 - + pengine/test10/migrate-shutdown.summary | 12 +-- + pengine/test10/mon-rsc-2.dot | 1 - + pengine/test10/mon-rsc-2.exp | 6 +- + pengine/test10/mon-rsc-2.summary | 2 +- + pengine/test10/mon-rsc-4.dot | 1 - + pengine/test10/mon-rsc-4.exp | 6 +- + pengine/test10/mon-rsc-4.summary | 4 +- + pengine/test10/monitor-onfail-stop.summary | 2 +- + pengine/test10/node-maintenance-1.summary | 2 +- + pengine/test10/notify-3.dot | 1 - + pengine/test10/notify-3.exp | 3 - + pengine/test10/novell-251689.summary | 2 +- + pengine/test10/novell-252693-2.dot | 1 - + pengine/test10/novell-252693-2.exp | 3 - + pengine/test10/novell-252693-3.dot | 1 - + pengine/test10/novell-252693-3.exp | 3 - + pengine/test10/order-serialize-set.summary | 4 +- + pengine/test10/order-serialize.summary | 4 +- + pengine/test10/order3.dot | 4 - + pengine/test10/order3.exp | 15 +--- + pengine/test10/order3.summary | 2 +- + pengine/test10/order5.dot | 4 - + pengine/test10/order5.exp | 24 +----- + pengine/test10/order5.summary | 8 +- + pengine/test10/order6.dot | 4 - + pengine/test10/order6.exp | 24 +----- + pengine/test10/order6.summary | 8 +- + pengine/test10/orphan-1.summary | 2 +- + pengine/test10/orphan-2.summary | 2 +- + pengine/test10/params-1.dot | 3 - + pengine/test10/params-1.exp | 12 +-- + pengine/test10/params-1.summary | 8 +- + pengine/test10/params-2.dot | 1 - + pengine/test10/params-2.exp | 6 +- + pengine/test10/params-2.summary | 2 +- + pengine/test10/params-5.dot | 3 - + pengine/test10/params-5.exp | 12 +-- + pengine/test10/params-5.summary | 8 +- + pengine/test10/placement-capacity.summary | 2 +- + pengine/test10/placement-location.summary | 2 +- + pengine/test10/placement-priority.summary | 2 +- + pengine/test10/placement-stickiness.summary | 2 +- + pengine/test10/probe-2.summary | 2 +- + pengine/test10/quorum-1.dot | 1 - + pengine/test10/quorum-1.exp | 6 +- + pengine/test10/quorum-1.summary | 4 +- + pengine/test10/quorum-2.dot | 1 - + pengine/test10/quorum-2.exp | 6 +- + pengine/test10/quorum-2.summary | 2 +- + pengine/test10/quorum-3.dot | 2 - + pengine/test10/quorum-3.exp | 12 +-- + pengine/test10/quorum-3.summary | 4 +- + pengine/test10/rec-node-10.dot | 2 - + pengine/test10/rec-node-11.dot | 2 - + pengine/test10/rec-node-11.exp | 6 -- + pengine/test10/rec-node-4.dot | 2 - + pengine/test10/rec-node-4.exp | 6 -- + pengine/test10/rec-node-6.dot | 2 - + pengine/test10/rec-node-6.exp | 6 -- + pengine/test10/rec-node-7.dot | 2 - + pengine/test10/rec-node-7.exp | 6 -- + pengine/test10/rec-node-8.dot | 2 - + pengine/test10/rec-rsc-0.summary | 4 +- + pengine/test10/rec-rsc-5.dot | 1 - + pengine/test10/rec-rsc-5.exp | 3 - + pengine/test10/rec-rsc-7.summary | 4 +- + pengine/test10/remote-disable.summary | 2 +- + .../test10/remote-fence-before-reconnect.summary | 2 +- + pengine/test10/remote-fence-unclean-3.summary | 2 +- + pengine/test10/remote-fence-unclean-3.xml | 56 ++++++------- + pengine/test10/remote-fence-unclean2.summary | 2 +- + pengine/test10/remote-probe-disable.summary | 2 +- + pengine/test10/remote-reconnect-delay.summary | 2 +- + pengine/test10/remote-recover-all.summary | 4 +- + pengine/test10/remote-recover-connection.summary | 4 +- + pengine/test10/remote-recover-no-resources.summary | 6 +- + pengine/test10/remote-recover-unknown.summary | 4 +- + pengine/test10/remote-recovery.summary | 4 +- + pengine/test10/remote-startup-probes.dot | 2 - + pengine/test10/remote-startup-probes.exp | 12 +-- + pengine/test10/remote-startup-probes.summary | 6 +- + pengine/test10/rsc-discovery-per-node.dot | 6 -- + pengine/test10/rsc-discovery-per-node.exp | 27 +----- + pengine/test10/rsc-discovery-per-node.summary | 20 ++--- + pengine/test10/rsc-sets-clone-1.dot | 1 - + pengine/test10/rsc-sets-clone-1.exp | 6 +- + pengine/test10/rsc-sets-clone-1.summary | 10 +-- + pengine/test10/rsc_dep4.dot | 1 - + pengine/test10/rsc_dep4.exp | 6 +- + pengine/test10/rsc_dep4.summary | 6 +- + pengine/test10/simple4.summary | 2 +- + pengine/test10/simple6.summary | 2 +- + pengine/test10/simple7.summary | 2 +- + pengine/test10/stopped-monitor-03.summary | 2 +- + pengine/test10/stopped-monitor-21.summary | 2 +- + pengine/test10/stopped-monitor-22.summary | 4 +- + pengine/test10/target-1.summary | 2 +- + pengine/test10/target-2.summary | 2 +- + pengine/test10/ticket-clone-21.summary | 2 +- + pengine/test10/ticket-clone-9.summary | 2 +- + pengine/test10/ticket-primitive-14.summary | 2 +- + pengine/test10/ticket-primitive-15.summary | 2 +- + pengine/test10/ticket-primitive-17.summary | 2 +- + pengine/test10/ticket-primitive-18.summary | 2 +- + pengine/test10/ticket-primitive-20.summary | 2 +- + pengine/test10/ticket-primitive-21.summary | 2 +- + pengine/test10/ticket-primitive-23.summary | 2 +- + pengine/test10/ticket-primitive-3.summary | 2 +- + pengine/test10/ticket-primitive-6.summary | 2 +- + pengine/test10/ticket-primitive-9.summary | 2 +- + pengine/test10/ticket-rsc-sets-10.summary | 2 +- + pengine/test10/ticket-rsc-sets-12.summary | 2 +- + pengine/test10/ticket-rsc-sets-13.summary | 2 +- + pengine/test10/ticket-rsc-sets-14.summary | 2 +- + pengine/test10/ticket-rsc-sets-3.summary | 2 +- + pengine/test10/ticket-rsc-sets-7.summary | 2 +- + pengine/test10/ticket-rsc-sets-9.summary | 2 +- + pengine/test10/unfence-definition.dot | 1 - + pengine/test10/unfence-definition.exp | 6 +- + pengine/test10/unfence-parameters.dot | 1 - + pengine/test10/unfence-parameters.exp | 6 +- + pengine/test10/unfence-parameters.summary | 4 +- + pengine/test10/unmanaged-block-restart.summary | 4 +- + pengine/test10/utilization-order1.summary | 2 +- + pengine/test10/utilization-order2.summary | 2 +- + pengine/test10/utilization-order4.summary | 2 +- + pengine/test10/whitebox-migrate1.dot | 1 - + pengine/test10/whitebox-migrate1.exp | 3 - + pengine/test10/whitebox-move.dot | 1 - + pengine/test10/whitebox-move.exp | 6 +- + pengine/test10/whitebox-move.summary | 2 +- + pengine/test10/whitebox-ms-ordering-move.dot | 4 - + pengine/test10/whitebox-ms-ordering-move.exp | 12 --- + pengine/test10/whitebox-orphan-ms.summary | 4 +- + pengine/test10/whitebox-orphaned.dot | 1 - + pengine/test10/whitebox-orphaned.exp | 6 +- + pengine/test10/whitebox-orphaned.summary | 6 +- + pengine/test10/whitebox-start.dot | 1 - + pengine/test10/whitebox-start.exp | 6 +- + pengine/test10/whitebox-start.summary | 8 +- + pengine/test10/whitebox-stop.dot | 1 - + pengine/test10/whitebox-stop.exp | 6 +- + pengine/test10/whitebox-stop.summary | 6 +- + 238 files changed, 557 insertions(+), 1162 deletions(-) + +diff --git a/pengine/test10/11-a-then-bm-b-move-a-clone-starting.dot b/pengine/test10/11-a-then-bm-b-move-a-clone-starting.dot +index f320584..f9b1125 100644 +--- a/pengine/test10/11-a-then-bm-b-move-a-clone-starting.dot ++++ b/pengine/test10/11-a-then-bm-b-move-a-clone-starting.dot +@@ -12,7 +12,6 @@ + "myclone-clone_stopped_0" -> "myclone-clone_start_0" [ style = bold] + "myclone-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] + "myclone_monitor_0 f20node2" -> "myclone-clone_start_0" [ style = bold] +-"myclone_monitor_0 f20node2" -> "myclone_stop_0 f20node1" [ style = bold] + "myclone_monitor_0 f20node2" [ style=bold color="green" fontcolor="black"] + "myclone_start_0 f20node2" -> "myclone-clone_running_0" [ style = bold] + "myclone_start_0 f20node2" [ style=bold color="green" fontcolor="black"] +diff --git a/pengine/test10/11-a-then-bm-b-move-a-clone-starting.exp b/pengine/test10/11-a-then-bm-b-move-a-clone-starting.exp +index 76652ab..3f17925 100644 +--- a/pengine/test10/11-a-then-bm-b-move-a-clone-starting.exp ++++ b/pengine/test10/11-a-then-bm-b-move-a-clone-starting.exp +@@ -24,9 +24,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/594.dot b/pengine/test10/594.dot +index 648a8f6..dcc2795 100644 +--- a/pengine/test10/594.dot ++++ b/pengine/test10/594.dot +@@ -1,6 +1,5 @@ + digraph "g" { + "DcIPaddr_monitor_0 hadev1" -> "DcIPaddr_start_0 hadev1" [ style = bold] +-"DcIPaddr_monitor_0 hadev1" -> "DcIPaddr_stop_0 hadev2" [ style = bold] + "DcIPaddr_monitor_0 hadev1" [ style=bold color="green" fontcolor="black" ] + "DcIPaddr_monitor_5000 hadev1" [ style=bold color="green" fontcolor="black" ] + "DcIPaddr_start_0 hadev1" -> "DcIPaddr_monitor_5000 hadev1" [ style = bold] +@@ -26,7 +25,6 @@ digraph "g" { + "child_DoFencing:2_stop_0 hadev1" [ style=bold color="green" fontcolor="black" ] + "do_shutdown hadev2" [ style=bold color="green" fontcolor="black" ] + "rsc_hadev2_monitor_0 hadev1" -> "rsc_hadev2_start_0 hadev1" [ style = bold] +-"rsc_hadev2_monitor_0 hadev1" -> "rsc_hadev2_stop_0 hadev2" [ style = bold] + "rsc_hadev2_monitor_0 hadev1" [ style=bold color="green" fontcolor="black" ] + "rsc_hadev2_monitor_5000 hadev1" [ style=bold color="green" fontcolor="black" ] + "rsc_hadev2_start_0 hadev1" -> "rsc_hadev2_monitor_5000 hadev1" [ style = bold] +diff --git a/pengine/test10/594.exp b/pengine/test10/594.exp +index a0b9fe1..fb2e9dd 100644 +--- a/pengine/test10/594.exp ++++ b/pengine/test10/594.exp +@@ -38,11 +38,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -101,11 +97,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/594.summary b/pengine/test10/594.summary +index 4a36789..fc15c50 100644 +--- a/pengine/test10/594.summary ++++ b/pengine/test10/594.summary +@@ -21,15 +21,15 @@ Transition Summary: + * Stop child_DoFencing:2 (hadev1) due to node availability + + Executing cluster transition: ++ * Resource action: DcIPaddr stop on hadev2 + * Resource action: DcIPaddr monitor on hadev1 + * Resource action: rsc_hadev3 monitor on hadev2 ++ * Resource action: rsc_hadev2 stop on hadev2 + * Resource action: rsc_hadev2 monitor on hadev1 + * Resource action: child_DoFencing:0 monitor on hadev1 + * Resource action: child_DoFencing:2 monitor on hadev2 + * Pseudo action: DoFencing_stop_0 + * Fencing hadev3 (reboot) +- * Resource action: DcIPaddr stop on hadev2 +- * Resource action: rsc_hadev2 stop on hadev2 + * Resource action: child_DoFencing:0 stop on hadev2 + * Resource action: child_DoFencing:2 stop on hadev1 + * Pseudo action: DoFencing_stopped_0 +diff --git a/pengine/test10/662.dot b/pengine/test10/662.dot +index 3287044..524e968 100644 +--- a/pengine/test10/662.dot ++++ b/pengine/test10/662.dot +@@ -22,13 +22,10 @@ + "child_DoFencing:3_monitor_0 c001n04" [ style=bold color="green" fontcolor="black" ] + "do_shutdown c001n02" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_monitor_0 c001n03" -> "rsc_c001n02_start_0 c001n03" [ style = bold] +-"rsc_c001n02_monitor_0 c001n03" -> "rsc_c001n02_stop_0 c001n02" [ style = bold] + "rsc_c001n02_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_monitor_0 c001n04" -> "rsc_c001n02_start_0 c001n03" [ style = bold] +-"rsc_c001n02_monitor_0 c001n04" -> "rsc_c001n02_stop_0 c001n02" [ style = bold] + "rsc_c001n02_monitor_0 c001n04" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_monitor_0 c001n09" -> "rsc_c001n02_start_0 c001n03" [ style = bold] +-"rsc_c001n02_monitor_0 c001n09" -> "rsc_c001n02_stop_0 c001n02" [ style = bold] + "rsc_c001n02_monitor_0 c001n09" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_monitor_5000 c001n03" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_start_0 c001n03" -> "rsc_c001n02_monitor_5000 c001n03" [ style = bold] +diff --git a/pengine/test10/662.exp b/pengine/test10/662.exp +index 4d95ef6..8aa7140 100644 +--- a/pengine/test10/662.exp ++++ b/pengine/test10/662.exp +@@ -95,17 +95,7 @@ + + + +- +- +- +- +- +- +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/662.summary b/pengine/test10/662.summary +index a19f71e..569b178 100644 +--- a/pengine/test10/662.summary ++++ b/pengine/test10/662.summary +@@ -25,6 +25,7 @@ Executing cluster transition: + * Resource action: rsc_c001n09 monitor on c001n04 + * Resource action: rsc_c001n09 monitor on c001n03 + * Resource action: rsc_c001n09 monitor on c001n02 ++ * Resource action: rsc_c001n02 stop on c001n02 + * Resource action: rsc_c001n02 monitor on c001n09 + * Resource action: rsc_c001n02 monitor on c001n04 + * Resource action: rsc_c001n02 monitor on c001n03 +@@ -43,12 +44,11 @@ Executing cluster transition: + * Resource action: child_DoFencing:3 monitor on c001n03 + * Resource action: child_DoFencing:3 monitor on c001n02 + * Pseudo action: DoFencing_stop_0 +- * Resource action: rsc_c001n02 stop on c001n02 ++ * Resource action: rsc_c001n02 start on c001n03 + * Resource action: child_DoFencing:0 stop on c001n02 + * Pseudo action: DoFencing_stopped_0 + * Cluster action: do_shutdown on c001n02 + * Pseudo action: all_stopped +- * Resource action: rsc_c001n02 start on c001n03 + * Resource action: rsc_c001n02 monitor=5000 on c001n03 + + Revised cluster status: +diff --git a/pengine/test10/696.dot b/pengine/test10/696.dot +index 3fd9569..032e927 100644 +--- a/pengine/test10/696.dot ++++ b/pengine/test10/696.dot +@@ -32,10 +32,8 @@ + "child_DoFencing:2_start_0 hadev1" -> "child_DoFencing:2_monitor_5000 hadev1" [ style = bold] + "child_DoFencing:2_start_0 hadev1" [ style=bold color="green" fontcolor="black" ] + "rsc_hadev1_monitor_0 hadev1" -> "rsc_hadev1_start_0 hadev1" [ style = bold] +-"rsc_hadev1_monitor_0 hadev1" -> "rsc_hadev1_stop_0 hadev3" [ style = bold] + "rsc_hadev1_monitor_0 hadev1" [ style=bold color="green" fontcolor="black" ] + "rsc_hadev1_monitor_0 hadev2" -> "rsc_hadev1_start_0 hadev1" [ style = bold] +-"rsc_hadev1_monitor_0 hadev2" -> "rsc_hadev1_stop_0 hadev3" [ style = bold] + "rsc_hadev1_monitor_0 hadev2" [ style=bold color="green" fontcolor="black" ] + "rsc_hadev1_monitor_5000 hadev1" [ style=bold color="green" fontcolor="black" ] + "rsc_hadev1_start_0 hadev1" -> "rsc_hadev1_monitor_5000 hadev1" [ style = bold] +diff --git a/pengine/test10/696.exp b/pengine/test10/696.exp +index 71befb4..74615b1 100644 +--- a/pengine/test10/696.exp ++++ b/pengine/test10/696.exp +@@ -85,14 +85,7 @@ + + + +- +- +- +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/696.summary b/pengine/test10/696.summary +index 78e40d1..6f6998a 100644 +--- a/pengine/test10/696.summary ++++ b/pengine/test10/696.summary +@@ -18,6 +18,7 @@ Transition Summary: + Executing cluster transition: + * Resource action: DcIPaddr monitor on hadev3 + * Resource action: DcIPaddr monitor on hadev1 ++ * Resource action: rsc_hadev1 stop on hadev3 + * Resource action: rsc_hadev1 monitor on hadev2 + * Resource action: rsc_hadev1 monitor on hadev1 + * Resource action: rsc_hadev2 monitor on hadev3 +@@ -35,17 +36,16 @@ Executing cluster transition: + * Resource action: child_DoFencing:2 monitor on hadev2 + * Resource action: child_DoFencing:2 monitor on hadev1 + * Pseudo action: DoFencing_start_0 ++ * Pseudo action: all_stopped + * Resource action: DcIPaddr start on hadev2 +- * Resource action: rsc_hadev1 stop on hadev3 ++ * Resource action: rsc_hadev1 start on hadev1 + * Resource action: rsc_hadev2 start on hadev2 + * Resource action: child_DoFencing:2 start on hadev1 + * Pseudo action: DoFencing_running_0 +- * Pseudo action: all_stopped + * Resource action: DcIPaddr monitor=5000 on hadev2 +- * Resource action: rsc_hadev1 start on hadev1 ++ * Resource action: rsc_hadev1 monitor=5000 on hadev1 + * Resource action: rsc_hadev2 monitor=5000 on hadev2 + * Resource action: child_DoFencing:2 monitor=5000 on hadev1 +- * Resource action: rsc_hadev1 monitor=5000 on hadev1 + + Revised cluster status: + Online: [ hadev1 hadev2 hadev3 ] +diff --git a/pengine/test10/726.dot b/pengine/test10/726.dot +index 910484a..be2a036 100644 +--- a/pengine/test10/726.dot ++++ b/pengine/test10/726.dot +@@ -54,13 +54,10 @@ + "child_DoFencing:3_start_0 sgi2" -> "child_DoFencing:3_monitor_5000 sgi2" [ style = bold] + "child_DoFencing:3_start_0 sgi2" [ style=bold color="green" fontcolor="black" ] + "rsc_ibm1_monitor_0 ibm1" -> "rsc_ibm1_start_0 ibm1" [ style = bold] +-"rsc_ibm1_monitor_0 ibm1" -> "rsc_ibm1_stop_0 test03" [ style = bold] + "rsc_ibm1_monitor_0 ibm1" [ style=bold color="green" fontcolor="black" ] + "rsc_ibm1_monitor_0 sgi2" -> "rsc_ibm1_start_0 ibm1" [ style = bold] +-"rsc_ibm1_monitor_0 sgi2" -> "rsc_ibm1_stop_0 test03" [ style = bold] + "rsc_ibm1_monitor_0 sgi2" [ style=bold color="green" fontcolor="black" ] + "rsc_ibm1_monitor_0 test02" -> "rsc_ibm1_start_0 ibm1" [ style = bold] +-"rsc_ibm1_monitor_0 test02" -> "rsc_ibm1_stop_0 test03" [ style = bold] + "rsc_ibm1_monitor_0 test02" [ style=bold color="green" fontcolor="black" ] + "rsc_ibm1_monitor_5000 ibm1" [ style=bold color="green" fontcolor="black" ] + "rsc_ibm1_start_0 ibm1" -> "rsc_ibm1_monitor_5000 ibm1" [ style = bold] +diff --git a/pengine/test10/726.exp b/pengine/test10/726.exp +index a1a0be4..737218e 100644 +--- a/pengine/test10/726.exp ++++ b/pengine/test10/726.exp +@@ -148,17 +148,7 @@ + + + +- +- +- +- +- +- +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/726.summary b/pengine/test10/726.summary +index b3cd4e4..f525dcc 100644 +--- a/pengine/test10/726.summary ++++ b/pengine/test10/726.summary +@@ -29,6 +29,7 @@ Executing cluster transition: + * Resource action: rsc_sgi2 monitor on test02 + * Resource action: rsc_sgi2 monitor on sgi2 + * Resource action: rsc_sgi2 monitor on ibm1 ++ * Resource action: rsc_ibm1 stop on test03 + * Resource action: rsc_ibm1 monitor on test02 + * Resource action: rsc_ibm1 monitor on sgi2 + * Resource action: rsc_ibm1 monitor on ibm1 +@@ -54,23 +55,22 @@ Executing cluster transition: + * Resource action: child_DoFencing:3 monitor on sgi2 + * Resource action: child_DoFencing:3 monitor on ibm1 + * Pseudo action: DoFencing_start_0 ++ * Pseudo action: all_stopped + * Resource action: rsc_sgi2 start on sgi2 +- * Resource action: rsc_ibm1 stop on test03 ++ * Resource action: rsc_ibm1 start on ibm1 + * Resource action: rsc_test02 start on test02 + * Resource action: child_DoFencing:0 start on test02 + * Resource action: child_DoFencing:1 start on test03 + * Resource action: child_DoFencing:2 start on ibm1 + * Resource action: child_DoFencing:3 start on sgi2 + * Pseudo action: DoFencing_running_0 +- * Pseudo action: all_stopped + * Resource action: rsc_sgi2 monitor=5000 on sgi2 +- * Resource action: rsc_ibm1 start on ibm1 ++ * Resource action: rsc_ibm1 monitor=5000 on ibm1 + * Resource action: rsc_test02 monitor=5000 on test02 + * Resource action: child_DoFencing:0 monitor=5000 on test02 + * Resource action: child_DoFencing:1 monitor=5000 on test03 + * Resource action: child_DoFencing:2 monitor=5000 on ibm1 + * Resource action: child_DoFencing:3 monitor=5000 on sgi2 +- * Resource action: rsc_ibm1 monitor=5000 on ibm1 + + Revised cluster status: + Online: [ ibm1 sgi2 test02 test03 ] +diff --git a/pengine/test10/764.dot b/pengine/test10/764.dot +index 67b6965..886cbb7 100644 +--- a/pengine/test10/764.dot ++++ b/pengine/test10/764.dot +@@ -1,6 +1,5 @@ + digraph "g" { + "DcIPaddr_monitor_0 posic041" -> "DcIPaddr_start_0 posic043" [ style = dashed] +-"DcIPaddr_monitor_0 posic041" -> "DcIPaddr_stop_0 posic043" [ style = bold] + "DcIPaddr_monitor_0 posic041" [ style=bold color="green" fontcolor="black" ] + "DcIPaddr_monitor_5000 posic043" [ style=dashed color="red" fontcolor="black"] + "DcIPaddr_start_0 posic043" -> "DcIPaddr_monitor_5000 posic043" [ style = dashed] +@@ -15,7 +14,6 @@ + "child_DoFencing:2_monitor_0 posic041" [ style=bold color="green" fontcolor="black" ] + "child_DoFencing:3_monitor_0 posic041" [ style=bold color="green" fontcolor="black" ] + "rsc_posic041_monitor_0 posic043" -> "rsc_posic041_start_0 posic041" [ style = dashed] +-"rsc_posic041_monitor_0 posic043" -> "rsc_posic041_stop_0 posic041" [ style = bold] + "rsc_posic041_monitor_0 posic043" [ style=bold color="green" fontcolor="black" ] + "rsc_posic041_monitor_5000 posic041" [ style=dashed color="red" fontcolor="black"] + "rsc_posic041_start_0 posic041" -> "rsc_posic041_monitor_5000 posic041" [ style = dashed] +@@ -24,7 +22,6 @@ + "rsc_posic041_stop_0 posic041" -> "rsc_posic041_start_0 posic041" [ style = dashed] + "rsc_posic041_stop_0 posic041" [ style=bold color="green" fontcolor="black" ] + "rsc_posic042_monitor_0 posic043" -> "rsc_posic042_start_0 posic041" [ style = dashed] +-"rsc_posic042_monitor_0 posic043" -> "rsc_posic042_stop_0 posic041" [ style = bold] + "rsc_posic042_monitor_0 posic043" [ style=bold color="green" fontcolor="black" ] + "rsc_posic042_monitor_5000 posic041" [ style=dashed color="red" fontcolor="black"] + "rsc_posic042_start_0 posic041" -> "rsc_posic042_monitor_5000 posic041" [ style = dashed] +@@ -33,7 +30,6 @@ + "rsc_posic042_stop_0 posic041" -> "rsc_posic042_start_0 posic041" [ style = dashed] + "rsc_posic042_stop_0 posic041" [ style=bold color="green" fontcolor="black" ] + "rsc_posic043_monitor_0 posic041" -> "rsc_posic043_start_0 posic043" [ style = dashed] +-"rsc_posic043_monitor_0 posic041" -> "rsc_posic043_stop_0 posic043" [ style = bold] + "rsc_posic043_monitor_0 posic041" [ style=bold color="green" fontcolor="black" ] + "rsc_posic043_monitor_5000 posic043" [ style=dashed color="red" fontcolor="black"] + "rsc_posic043_start_0 posic043" -> "rsc_posic043_monitor_5000 posic043" [ style = dashed] +@@ -42,7 +38,6 @@ + "rsc_posic043_stop_0 posic043" -> "rsc_posic043_start_0 posic043" [ style = dashed] + "rsc_posic043_stop_0 posic043" [ style=bold color="green" fontcolor="black" ] + "rsc_posic044_monitor_0 posic043" -> "rsc_posic044_start_0 posic041" [ style = dashed] +-"rsc_posic044_monitor_0 posic043" -> "rsc_posic044_stop_0 posic041" [ style = bold] + "rsc_posic044_monitor_0 posic043" [ style=bold color="green" fontcolor="black" ] + "rsc_posic044_monitor_5000 posic041" [ style=dashed color="red" fontcolor="black"] + "rsc_posic044_start_0 posic041" -> "rsc_posic044_monitor_5000 posic041" [ style = dashed] +diff --git a/pengine/test10/764.exp b/pengine/test10/764.exp +index 5101644..1f5b7c8 100644 +--- a/pengine/test10/764.exp ++++ b/pengine/test10/764.exp +@@ -6,11 +6,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -28,11 +24,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -50,11 +42,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -72,11 +60,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -94,11 +78,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/764.summary b/pengine/test10/764.summary +index ea62931..b50cdd4 100644 +--- a/pengine/test10/764.summary ++++ b/pengine/test10/764.summary +@@ -22,21 +22,21 @@ Transition Summary: + * Stop rsc_posic044 ( posic041 ) due to no quorum + + Executing cluster transition: ++ * Resource action: DcIPaddr stop on posic043 + * Resource action: DcIPaddr monitor on posic041 ++ * Resource action: rsc_posic041 stop on posic041 + * Resource action: rsc_posic041 monitor on posic043 ++ * Resource action: rsc_posic042 stop on posic041 + * Resource action: rsc_posic042 monitor on posic043 ++ * Resource action: rsc_posic043 stop on posic043 + * Resource action: rsc_posic043 monitor on posic041 ++ * Resource action: rsc_posic044 stop on posic041 + * Resource action: rsc_posic044 monitor on posic043 + * Resource action: child_DoFencing:0 monitor=5000 on posic043 + * Resource action: child_DoFencing:1 monitor=5000 on posic041 + * Resource action: child_DoFencing:1 monitor on posic043 + * Resource action: child_DoFencing:2 monitor on posic041 + * Resource action: child_DoFencing:3 monitor on posic041 +- * Resource action: DcIPaddr stop on posic043 +- * Resource action: rsc_posic041 stop on posic041 +- * Resource action: rsc_posic042 stop on posic041 +- * Resource action: rsc_posic043 stop on posic043 +- * Resource action: rsc_posic044 stop on posic041 + * Pseudo action: all_stopped + + Revised cluster status: +diff --git a/pengine/test10/797.dot b/pengine/test10/797.dot +index 5afc1a6..d02f0b6 100644 +--- a/pengine/test10/797.dot ++++ b/pengine/test10/797.dot +@@ -2,7 +2,6 @@ + "DcIPaddr_delete_0 c001n03" -> "DcIPaddr_start_0 c001n03" [ style = dashed] + "DcIPaddr_delete_0 c001n03" [ style=bold color="green" fontcolor="black" ] + "DcIPaddr_monitor_0 c001n01" -> "DcIPaddr_start_0 c001n03" [ style = dashed] +-"DcIPaddr_monitor_0 c001n01" -> "DcIPaddr_stop_0 c001n03" [ style = bold] + "DcIPaddr_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] + "DcIPaddr_monitor_0 c001n02" -> "DcIPaddr_start_0 c001n03" [ style = dashed] + "DcIPaddr_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] +@@ -51,7 +50,6 @@ + "child_DoFencing:3_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] + "do_shutdown c001n02" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n01_monitor_0 c001n03" -> "rsc_c001n01_start_0 c001n01" [ style = dashed] +-"rsc_c001n01_monitor_0 c001n03" -> "rsc_c001n01_stop_0 c001n01" [ style = bold] + "rsc_c001n01_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n01_monitor_5000 c001n01" [ style=dashed color="red" fontcolor="black"] + "rsc_c001n01_start_0 c001n01" -> "rsc_c001n01_monitor_5000 c001n01" [ style = dashed] +@@ -60,10 +58,8 @@ + "rsc_c001n01_stop_0 c001n01" -> "rsc_c001n01_start_0 c001n01" [ style = dashed] + "rsc_c001n01_stop_0 c001n01" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_monitor_0 c001n01" -> "rsc_c001n02_start_0 c001n01" [ style = dashed] +-"rsc_c001n02_monitor_0 c001n01" -> "rsc_c001n02_stop_0 c001n02" [ style = bold] + "rsc_c001n02_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_monitor_0 c001n03" -> "rsc_c001n02_start_0 c001n01" [ style = dashed] +-"rsc_c001n02_monitor_0 c001n03" -> "rsc_c001n02_stop_0 c001n02" [ style = bold] + "rsc_c001n02_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_monitor_5000 c001n01" [ style=dashed color="red" fontcolor="black" ] + "rsc_c001n02_start_0 c001n01" -> "rsc_c001n02_monitor_5000 c001n01" [ style = dashed] +@@ -73,7 +69,6 @@ + "rsc_c001n02_stop_0 c001n02" -> "rsc_c001n02_start_0 c001n01" [ style = dashed] + "rsc_c001n02_stop_0 c001n02" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n03_monitor_0 c001n01" -> "rsc_c001n03_start_0 c001n03" [ style = dashed] +-"rsc_c001n03_monitor_0 c001n01" -> "rsc_c001n03_stop_0 c001n03" [ style = bold] + "rsc_c001n03_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n03_monitor_0 c001n02" -> "rsc_c001n03_start_0 c001n03" [ style = dashed] + "rsc_c001n03_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] +@@ -84,10 +79,8 @@ + "rsc_c001n03_stop_0 c001n03" -> "rsc_c001n03_start_0 c001n03" [ style = dashed] + "rsc_c001n03_stop_0 c001n03" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n08_monitor_0 c001n01" -> "rsc_c001n08_start_0 c001n01" [ style = dashed] +-"rsc_c001n08_monitor_0 c001n01" -> "rsc_c001n08_stop_0 c001n02" [ style = bold] + "rsc_c001n08_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n08_monitor_0 c001n03" -> "rsc_c001n08_start_0 c001n01" [ style = dashed] +-"rsc_c001n08_monitor_0 c001n03" -> "rsc_c001n08_stop_0 c001n02" [ style = bold] + "rsc_c001n08_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n08_monitor_5000 c001n01" [ style=dashed color="red" fontcolor="black" ] + "rsc_c001n08_start_0 c001n01" -> "rsc_c001n08_monitor_5000 c001n01" [ style = dashed] +diff --git a/pengine/test10/797.exp b/pengine/test10/797.exp +index 4b83374..eb78641 100644 +--- a/pengine/test10/797.exp ++++ b/pengine/test10/797.exp +@@ -37,11 +37,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -50,14 +46,7 @@ + + + +- +- +- +- +- +- +- +- ++ + + + +@@ -84,14 +73,7 @@ + + + +- +- +- +- +- +- +- +- ++ + + + +@@ -118,11 +100,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -149,11 +127,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/797.summary b/pengine/test10/797.summary +index 61afbf1..47db825 100644 +--- a/pengine/test10/797.summary ++++ b/pengine/test10/797.summary +@@ -28,12 +28,16 @@ Executing cluster transition: + * Resource action: DcIPaddr monitor on c001n02 + * Resource action: DcIPaddr monitor on c001n01 + * Resource action: DcIPaddr stop on c001n03 ++ * Resource action: rsc_c001n08 stop on c001n02 + * Resource action: rsc_c001n08 monitor on c001n03 + * Resource action: rsc_c001n08 monitor on c001n01 ++ * Resource action: rsc_c001n02 stop on c001n02 + * Resource action: rsc_c001n02 monitor on c001n03 + * Resource action: rsc_c001n02 monitor on c001n01 ++ * Resource action: rsc_c001n03 stop on c001n03 + * Resource action: rsc_c001n03 monitor on c001n02 + * Resource action: rsc_c001n03 monitor on c001n01 ++ * Resource action: rsc_c001n01 stop on c001n01 + * Resource action: rsc_c001n01 monitor on c001n03 + * Resource action: child_DoFencing:2 monitor on c001n01 + * Resource action: child_DoFencing:3 monitor on c001n03 +@@ -41,10 +45,6 @@ Executing cluster transition: + * Resource action: child_DoFencing:3 monitor on c001n01 + * Pseudo action: DoFencing_stop_0 + * Resource action: DcIPaddr delete on c001n03 +- * Resource action: rsc_c001n08 stop on c001n02 +- * Resource action: rsc_c001n02 stop on c001n02 +- * Resource action: rsc_c001n03 stop on c001n03 +- * Resource action: rsc_c001n01 stop on c001n01 + * Resource action: child_DoFencing:0 stop on c001n03 + * Resource action: child_DoFencing:0 stop on c001n01 + * Resource action: child_DoFencing:1 stop on c001n02 +diff --git a/pengine/test10/8-am-then-bm-a-migrating-b-stopping.summary b/pengine/test10/8-am-then-bm-a-migrating-b-stopping.summary +index 06a1356..99d5c09 100644 +--- a/pengine/test10/8-am-then-bm-a-migrating-b-stopping.summary ++++ b/pengine/test10/8-am-then-bm-a-migrating-b-stopping.summary +@@ -8,7 +8,7 @@ Online: [ 18node1 18node2 18node3 ] + + Transition Summary: + * Migrate A ( 18node1 -> 18node2 ) +- * Stop B (18node2) ++ * Stop B ( 18node2 ) due to node availability + + Executing cluster transition: + * Resource action: B stop on 18node2 +diff --git a/pengine/test10/829.dot b/pengine/test10/829.dot +index a0ea381..1daa2aa 100644 +--- a/pengine/test10/829.dot ++++ b/pengine/test10/829.dot +@@ -18,13 +18,10 @@ digraph "g" { + "rsc_c001n01_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n01_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_monitor_0 c001n01" -> "rsc_c001n02_start_0 c001n01" [ style = bold] +-"rsc_c001n02_monitor_0 c001n01" -> "rsc_c001n02_stop_0 c001n02" [ style = bold] + "rsc_c001n02_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_monitor_0 c001n03" -> "rsc_c001n02_start_0 c001n01" [ style = bold] +-"rsc_c001n02_monitor_0 c001n03" -> "rsc_c001n02_stop_0 c001n02" [ style = bold] + "rsc_c001n02_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_monitor_0 c001n08" -> "rsc_c001n02_start_0 c001n01" [ style = bold] +-"rsc_c001n02_monitor_0 c001n08" -> "rsc_c001n02_stop_0 c001n02" [ style = bold] + "rsc_c001n02_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_monitor_5000 c001n01" [ style=bold color="green" fontcolor="black" ] + "rsc_c001n02_start_0 c001n01" -> "rsc_c001n02_monitor_5000 c001n01" [ style = bold] +diff --git a/pengine/test10/829.exp b/pengine/test10/829.exp +index a1617b9..ed8be6e 100644 +--- a/pengine/test10/829.exp ++++ b/pengine/test10/829.exp +@@ -83,15 +83,6 @@ + + + +- +- +- +- +- +- +- +- +- + + + +diff --git a/pengine/test10/bug-1572-1.summary b/pengine/test10/bug-1572-1.summary +index 7715980..7ca83a9 100644 +--- a/pengine/test10/bug-1572-1.summary ++++ b/pengine/test10/bug-1572-1.summary +@@ -13,7 +13,7 @@ Online: [ arc-dknightlx arc-tkincaidlx.wsicorp.com ] + Transition Summary: + * Shutdown arc-dknightlx + * Stop rsc_drbd_7788:0 ( Slave arc-dknightlx ) due to node availability +- * Restart rsc_drbd_7788:1 (Master arc-tkincaidlx.wsicorp.com) ++ * Restart rsc_drbd_7788:1 ( Master arc-tkincaidlx.wsicorp.com ) due to resource definition change + * Restart fs_mirror ( arc-tkincaidlx.wsicorp.com ) due to required ms_drbd_7788 notified + * Restart pgsql_5555 ( arc-tkincaidlx.wsicorp.com ) due to required fs_mirror start + * Restart IPaddr_147_81_84_133 ( arc-tkincaidlx.wsicorp.com ) due to required pgsql_5555 start +diff --git a/pengine/test10/bug-5025-3.summary b/pengine/test10/bug-5025-3.summary +index 9072771..720b462 100644 +--- a/pengine/test10/bug-5025-3.summary ++++ b/pengine/test10/bug-5025-3.summary +@@ -8,7 +8,7 @@ OFFLINE: [ fc16-builder2 fc16-builder3 ] + B (ocf::pacemaker:Dummy): Started fc16-builder + + Transition Summary: +- * Restart A ( fc16-builder ) ++ * Restart A ( fc16-builder ) due to resource definition change + + Executing cluster transition: + * Resource action: A stop on fc16-builder +diff --git a/pengine/test10/bug-5028.summary b/pengine/test10/bug-5028.summary +index f1c6f63..4a8556b 100644 +--- a/pengine/test10/bug-5028.summary ++++ b/pengine/test10/bug-5028.summary +@@ -8,7 +8,7 @@ Online: [ bl460g6a bl460g6b ] + + Transition Summary: + * Shutdown bl460g6a +- * Stop dummy01 ( bl460g6a ) blocked ++ * Stop dummy01 ( bl460g6a ) due to unrunnable dummy02 stop (blocked) + + Executing cluster transition: + * Pseudo action: dummy-g_stop_0 +diff --git a/pengine/test10/bug-cl-5219.summary b/pengine/test10/bug-cl-5219.summary +index 3a25265..c9ee54a 100644 +--- a/pengine/test10/bug-cl-5219.summary ++++ b/pengine/test10/bug-cl-5219.summary +@@ -17,7 +17,7 @@ Online: [ ha1.test.anchor.net.au ha2.test.anchor.net.au ] + Slaves: [ ha1.test.anchor.net.au ] + + Transition Summary: +- * Stop child1-service (ha2.test.anchor.net.au) ++ * Stop child1-service ( ha2.test.anchor.net.au ) due to node availability + + Executing cluster transition: + * Resource action: child1-service stop on ha2.test.anchor.net.au +diff --git a/pengine/test10/bug-cl-5247.summary b/pengine/test10/bug-cl-5247.summary +index 99c00e9..dbb612c 100644 +--- a/pengine/test10/bug-cl-5247.summary ++++ b/pengine/test10/bug-cl-5247.summary +@@ -20,12 +20,12 @@ Containers: [ pgsr01:prmDB1 ] + Transition Summary: + * Fence (off) pgsr02 (resource: prmDB2) 'guest is unclean' + * Stop prmDB2 (bl460g8n4) due to node availability +- * Restart prmStonith1-2 ( bl460g8n4 ) +- * Restart prmStonith2-2 ( bl460g8n3 ) ++ * Restart prmStonith1-2 ( bl460g8n4 ) due to resource definition change ++ * Restart prmStonith2-2 ( bl460g8n3 ) due to resource definition change + * Recover vip-master ( pgsr02 -> pgsr01 ) + * Recover vip-rep ( pgsr02 -> pgsr01 ) + * Stop pgsql:0 ( Master pgsr02 ) due to node availability +- * Stop pgsr02 (bl460g8n4) ++ * Stop pgsr02 ( bl460g8n4 ) due to node availability + + Executing cluster transition: + * Pseudo action: grpStonith1_stop_0 +diff --git a/pengine/test10/bug-lf-2106.summary b/pengine/test10/bug-lf-2106.summary +index 1cea829..0c7c485 100644 +--- a/pengine/test10/bug-lf-2106.summary ++++ b/pengine/test10/bug-lf-2106.summary +@@ -35,8 +35,8 @@ Online: [ cl-virt-1 cl-virt-2 ] + Slaves: [ cl-virt-1 ] + + Transition Summary: +- * Restart pingd:0 ( cl-virt-1 ) +- * Restart pingd:1 ( cl-virt-2 ) ++ * Restart pingd:0 ( cl-virt-1 ) due to resource definition change ++ * Restart pingd:1 ( cl-virt-2 ) due to resource definition change + + Executing cluster transition: + * Cluster action: clear_failcount for pingd on cl-virt-1 +diff --git a/pengine/test10/bug-lf-2435.summary b/pengine/test10/bug-lf-2435.summary +index bb07089..3d75500 100644 +--- a/pengine/test10/bug-lf-2435.summary ++++ b/pengine/test10/bug-lf-2435.summary +@@ -10,7 +10,7 @@ Online: [ c19.chepkov.lan c21.chepkov.lan ] + + Transition Summary: + * Move dummy2 ( c20.chepkov.lan -> c21.chepkov.lan ) +- * Stop dummy3 (c21.chepkov.lan) ++ * Stop dummy3 ( c21.chepkov.lan ) due to node availability + + Executing cluster transition: + * Resource action: dummy2 stop on c20.chepkov.lan +diff --git a/pengine/test10/bug-lf-2551.summary b/pengine/test10/bug-lf-2551.summary +index 1cd5108..a1686ed 100644 +--- a/pengine/test10/bug-lf-2551.summary ++++ b/pengine/test10/bug-lf-2551.summary +@@ -90,22 +90,22 @@ Transition Summary: + * Stop cmirrord:3 (hex-9) due to node availability + * Stop vg1:3 (hex-9) due to node availability + * Stop ocfs2-1:3 (hex-9) due to node availability +- * Stop vm-03 (hex-9) +- * Stop vm-06 (hex-9) +- * Stop vm-09 (hex-9) +- * Stop vm-13 (hex-9) +- * Stop vm-17 (hex-9) +- * Stop vm-21 (hex-9) +- * Stop vm-25 (hex-9) +- * Stop vm-29 (hex-9) +- * Stop vm-33 (hex-9) +- * Stop vm-37 (hex-9) +- * Stop vm-41 (hex-9) +- * Stop vm-45 (hex-9) +- * Stop vm-49 (hex-9) +- * Stop vm-53 (hex-9) +- * Stop vm-57 (hex-9) +- * Stop vm-61 (hex-9) ++ * Stop vm-03 ( hex-9 ) due to node availability ++ * Stop vm-06 ( hex-9 ) due to node availability ++ * Stop vm-09 ( hex-9 ) due to node availability ++ * Stop vm-13 ( hex-9 ) due to node availability ++ * Stop vm-17 ( hex-9 ) due to node availability ++ * Stop vm-21 ( hex-9 ) due to node availability ++ * Stop vm-25 ( hex-9 ) due to node availability ++ * Stop vm-29 ( hex-9 ) due to node availability ++ * Stop vm-33 ( hex-9 ) due to node availability ++ * Stop vm-37 ( hex-9 ) due to node availability ++ * Stop vm-41 ( hex-9 ) due to node availability ++ * Stop vm-45 ( hex-9 ) due to node availability ++ * Stop vm-49 ( hex-9 ) due to node availability ++ * Stop vm-53 ( hex-9 ) due to node availability ++ * Stop vm-57 ( hex-9 ) due to node availability ++ * Stop vm-61 ( hex-9 ) due to node availability + + Executing cluster transition: + * Pseudo action: fencing-sbd_stop_0 +diff --git a/pengine/test10/bug-lf-2606.summary b/pengine/test10/bug-lf-2606.summary +index d3fdb24..ef30bac 100644 +--- a/pengine/test10/bug-lf-2606.summary ++++ b/pengine/test10/bug-lf-2606.summary +@@ -13,7 +13,7 @@ Online: [ node1 ] + + Transition Summary: + * Fence (reboot) node2 'rsc1 failed there' +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + * Move rsc2 ( node2 -> node1 ) + * Stop rsc3:1 ( Master node2 ) due to node availability + +diff --git a/pengine/test10/bug-n-387749.dot b/pengine/test10/bug-n-387749.dot +index 863a348..886f337 100644 +--- a/pengine/test10/bug-n-387749.dot ++++ b/pengine/test10/bug-n-387749.dot +@@ -43,7 +43,6 @@ digraph "g" { + "group_nfs_stopped_0" -> "group_nfs_start_0" [ style = bold] + "group_nfs_stopped_0" [ style=bold color="green" fontcolor="orange" ] + "resource_ipaddr1_single_monitor_0 power720-1" -> "resource_ipaddr1_single_start_0 power720-1" [ style = bold] +-"resource_ipaddr1_single_monitor_0 power720-1" -> "resource_ipaddr1_single_stop_0 power720-2" [ style = bold] + "resource_ipaddr1_single_monitor_0 power720-1" [ style=bold color="green" fontcolor="black" ] + "resource_ipaddr1_single_monitor_5000 power720-1" [ style=bold color="green" fontcolor="black" ] + "resource_ipaddr1_single_start_0 power720-1" -> "group_nfs_running_0" [ style = bold] +@@ -55,7 +54,6 @@ digraph "g" { + "resource_ipaddr1_single_stop_0 power720-2" -> "resource_ipaddr1_single_start_0 power720-1" [ style = bold] + "resource_ipaddr1_single_stop_0 power720-2" [ style=bold color="green" fontcolor="black" ] + "resource_nfsserver_single_monitor_0 power720-1" -> "resource_nfsserver_single_start_0 power720-1" [ style = bold] +-"resource_nfsserver_single_monitor_0 power720-1" -> "resource_nfsserver_single_stop_0 power720-2" [ style = bold] + "resource_nfsserver_single_monitor_0 power720-1" [ style=bold color="green" fontcolor="black" ] + "resource_nfsserver_single_monitor_15000 power720-1" [ style=bold color="green" fontcolor="black" ] + "resource_nfsserver_single_start_0 power720-1" -> "group_nfs_running_0" [ style = bold] +diff --git a/pengine/test10/bug-n-387749.exp b/pengine/test10/bug-n-387749.exp +index bba3012..80f91bb 100644 +--- a/pengine/test10/bug-n-387749.exp ++++ b/pengine/test10/bug-n-387749.exp +@@ -270,9 +270,6 @@ + + + +- +- +- + + + +@@ -333,9 +330,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/bug-n-387749.summary b/pengine/test10/bug-n-387749.summary +index 9ef7e70..9959ce7 100644 +--- a/pengine/test10/bug-n-387749.summary ++++ b/pengine/test10/bug-n-387749.summary +@@ -23,17 +23,17 @@ Executing cluster transition: + * Pseudo action: export_home_ocfs2_clone_set_pre_notify_start_0 + * Pseudo action: group_nfs_stop_0 + * Resource action: resource_ipaddr1_single monitor on power720-1 ++ * Resource action: resource_nfsserver_single stop on power720-2 + * Resource action: resource_nfsserver_single monitor on power720-1 + * Resource action: export_home_ocfs2:1 notify on power720-2 + * Pseudo action: export_home_ocfs2_clone_set_confirmed-pre_notify_start_0 + * Pseudo action: export_home_ocfs2_clone_set_start_0 +- * Resource action: resource_nfsserver_single stop on power720-2 +- * Resource action: export_home_ocfs2:0 start on power720-1 +- * Pseudo action: export_home_ocfs2_clone_set_running_0 + * Resource action: resource_ipaddr1_single stop on power720-2 + * Pseudo action: all_stopped +- * Pseudo action: export_home_ocfs2_clone_set_post_notify_running_0 ++ * Resource action: export_home_ocfs2:0 start on power720-1 ++ * Pseudo action: export_home_ocfs2_clone_set_running_0 + * Pseudo action: group_nfs_stopped_0 ++ * Pseudo action: export_home_ocfs2_clone_set_post_notify_running_0 + * Resource action: export_home_ocfs2:0 notify on power720-1 + * Resource action: export_home_ocfs2:1 notify on power720-2 + * Pseudo action: export_home_ocfs2_clone_set_confirmed-post_notify_running_0 +diff --git a/pengine/test10/bug-pm-12.summary b/pengine/test10/bug-pm-12.summary +index 312e4a2..1ec6b8d 100644 +--- a/pengine/test10/bug-pm-12.summary ++++ b/pengine/test10/bug-pm-12.summary +@@ -11,8 +11,8 @@ Online: [ node-a node-b ] + stateful-2:1 (ocf::heartbeat:Stateful): Master node-a + + Transition Summary: +- * Restart stateful-2:0 (Slave node-b) +- * Restart stateful-2:1 (Master node-a) ++ * Restart stateful-2:0 ( Slave node-b ) due to resource definition change ++ * Restart stateful-2:1 ( Master node-a ) due to resource definition change + + Executing cluster transition: + * Pseudo action: ms-sf_demote_0 +diff --git a/pengine/test10/bug-rh-1097457.dot b/pengine/test10/bug-rh-1097457.dot +index 512510e..5984811 100644 +--- a/pengine/test10/bug-rh-1097457.dot ++++ b/pengine/test10/bug-rh-1097457.dot +@@ -6,10 +6,8 @@ digraph "g" { + "FAKE3-IP_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] + "FAKE3_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] + "FAKE4-IP_monitor_0 lamaVM1" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] +-"FAKE4-IP_monitor_0 lamaVM1" -> "FAKE4-IP_stop_0 lamaVM2" [ style = bold] + "FAKE4-IP_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] + "FAKE4-IP_monitor_0 lamaVM3" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] +-"FAKE4-IP_monitor_0 lamaVM3" -> "FAKE4-IP_stop_0 lamaVM2" [ style = bold] + "FAKE4-IP_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] + "FAKE4-IP_monitor_30000 lamaVM2" [ style=bold color="green" fontcolor="black"] + "FAKE4-IP_start_0 lamaVM2" -> "FAKE4-IP_monitor_30000 lamaVM2" [ style = bold] +@@ -21,10 +19,8 @@ digraph "g" { + "FAKE4-IP_stop_0 lamaVM2" -> "lamaVM2-G4_stopped_0" [ style = bold] + "FAKE4-IP_stop_0 lamaVM2" [ style=bold color="green" fontcolor="orange"] + "FAKE4_monitor_0 lamaVM1" -> "FAKE4_start_0 lamaVM2" [ style = bold] +-"FAKE4_monitor_0 lamaVM1" -> "FAKE4_stop_0 lamaVM2" [ style = bold] + "FAKE4_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] + "FAKE4_monitor_0 lamaVM3" -> "FAKE4_start_0 lamaVM2" [ style = bold] +-"FAKE4_monitor_0 lamaVM3" -> "FAKE4_stop_0 lamaVM2" [ style = bold] + "FAKE4_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] + "FAKE4_monitor_30000 lamaVM2" [ style=bold color="green" fontcolor="black"] + "FAKE4_start_0 lamaVM2" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] +diff --git a/pengine/test10/bug-rh-1097457.exp b/pengine/test10/bug-rh-1097457.exp +index e7e0e67..4eedd91 100644 +--- a/pengine/test10/bug-rh-1097457.exp ++++ b/pengine/test10/bug-rh-1097457.exp +@@ -353,12 +353,6 @@ + + + +- +- +- +- +- +- + + + +@@ -445,12 +439,6 @@ + + + +- +- +- +- +- +- + + + +diff --git a/pengine/test10/bundle-nested-colocation.exp b/pengine/test10/bundle-nested-colocation.exp +index 315c4be..a50809c 100644 +--- a/pengine/test10/bundle-nested-colocation.exp ++++ b/pengine/test10/bundle-nested-colocation.exp +@@ -302,7 +302,7 @@ + + + +- ++ + + + +@@ -315,7 +315,7 @@ + + + +- ++ + + + +@@ -331,7 +331,7 @@ + + + +- ++ + + + +@@ -466,7 +466,7 @@ + + + +- ++ + + + +@@ -479,7 +479,7 @@ + + + +- ++ + + + +@@ -495,7 +495,7 @@ + + + +- ++ + + + +@@ -630,7 +630,7 @@ + + + +- ++ + + + +@@ -643,7 +643,7 @@ + + + +- ++ + + + +@@ -659,7 +659,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/bundle-nested-colocation.summary b/pengine/test10/bundle-nested-colocation.summary +index 2eee05e..7464d15 100644 +--- a/pengine/test10/bundle-nested-colocation.summary ++++ b/pengine/test10/bundle-nested-colocation.summary +@@ -17,13 +17,13 @@ RemoteOnline: [ overcloud-rabbit-0 overcloud-rabbit-1 overcloud-rabbit-2 ] + galera-bundle-docker-2 (ocf::heartbeat:docker): Started overcloud-galera-2 + + Transition Summary: +- * Restart rabbitmq-bundle-docker-0 ( overcloud-rabbit-0 ) ++ * Restart rabbitmq-bundle-docker-0 ( overcloud-rabbit-0 ) due to resource definition change + * Start rabbitmq-bundle-0 (overcloud-controller-0) + * Start rabbitmq:0 (rabbitmq-bundle-0) +- * Restart rabbitmq-bundle-docker-1 ( overcloud-rabbit-1 ) ++ * Restart rabbitmq-bundle-docker-1 ( overcloud-rabbit-1 ) due to resource definition change + * Start rabbitmq-bundle-1 (overcloud-controller-1) + * Start rabbitmq:1 (rabbitmq-bundle-1) +- * Restart rabbitmq-bundle-docker-2 ( overcloud-rabbit-2 ) ++ * Restart rabbitmq-bundle-docker-2 ( overcloud-rabbit-2 ) due to resource definition change + * Start rabbitmq-bundle-2 (overcloud-controller-2) + * Start rabbitmq:2 (rabbitmq-bundle-2) + +diff --git a/pengine/test10/bundle-nested-colocation.xml b/pengine/test10/bundle-nested-colocation.xml +index d8f6139..7b5b2c4 100644 +--- a/pengine/test10/bundle-nested-colocation.xml ++++ b/pengine/test10/bundle-nested-colocation.xml +@@ -165,7 +165,7 @@ + + + +- ++ + + + +@@ -242,8 +242,8 @@ + + + +- +- ++ ++ + + + +@@ -323,8 +323,8 @@ + + + +- +- ++ ++ + + + +@@ -365,8 +365,8 @@ + + + +- +- ++ ++ + + + +@@ -380,8 +380,8 @@ + + + +- +- ++ ++ + + + +@@ -408,8 +408,8 @@ + + + +- +- ++ ++ + + + +@@ -436,8 +436,8 @@ + + + +- +- ++ ++ + + + +diff --git a/pengine/test10/bundle-order-fencing.dot b/pengine/test10/bundle-order-fencing.dot +index cff477b..a7e5805 100644 +--- a/pengine/test10/bundle-order-fencing.dot ++++ b/pengine/test10/bundle-order-fencing.dot +@@ -7,10 +7,8 @@ digraph "g" { + "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" -> "galera-bundle-0_stop_0 controller-0" [ style = bold] + "galera-bundle-0_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] + "galera-bundle-0_monitor_0 controller-2" -> "galera-bundle-0_start_0 controller-2" [ style = dashed] +-"galera-bundle-0_monitor_0 controller-2" -> "galera-bundle-0_stop_0 controller-0" [ style = bold] + "galera-bundle-0_monitor_0 controller-2" [ style=bold color="green" fontcolor="black"] + "galera-bundle-0_monitor_60000 controller-2" [ style=dashed color="red" fontcolor="black"] + "galera-bundle-0_start_0 controller-2" -> "galera-bundle-0_monitor_60000 controller-2" [ style = dashed] +@@ -103,10 +101,8 @@ digraph "g" { + "ip-192.168.24.7_stop_0 controller-0" -> "ip-192.168.24.7_start_0 controller-2" [ style = bold] + "ip-192.168.24.7_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] + "rabbitmq-bundle-0_monitor_0 controller-1" -> "rabbitmq-bundle-0_start_0 controller-1" [ style = dashed] +-"rabbitmq-bundle-0_monitor_0 controller-1" -> "rabbitmq-bundle-0_stop_0 controller-0" [ style = bold] + "rabbitmq-bundle-0_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] + "rabbitmq-bundle-0_monitor_0 controller-2" -> "rabbitmq-bundle-0_start_0 controller-1" [ style = dashed] +-"rabbitmq-bundle-0_monitor_0 controller-2" -> "rabbitmq-bundle-0_stop_0 controller-0" [ style = bold] + "rabbitmq-bundle-0_monitor_0 controller-2" [ style=bold color="green" fontcolor="black"] + "rabbitmq-bundle-0_monitor_60000 controller-1" [ style=dashed color="red" fontcolor="black"] + "rabbitmq-bundle-0_start_0 controller-1" -> "rabbitmq-bundle-0_monitor_60000 controller-1" [ style = dashed] +@@ -206,10 +202,8 @@ digraph "g" { + "rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] + "rabbitmq_stop_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="orange"] + "redis-bundle-0_monitor_0 controller-1" -> "redis-bundle-0_start_0 controller-1" [ style = dashed] +-"redis-bundle-0_monitor_0 controller-1" -> "redis-bundle-0_stop_0 controller-0" [ style = bold] + "redis-bundle-0_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] + "redis-bundle-0_monitor_0 controller-2" -> "redis-bundle-0_start_0 controller-1" [ style = dashed] +-"redis-bundle-0_monitor_0 controller-2" -> "redis-bundle-0_stop_0 controller-0" [ style = bold] + "redis-bundle-0_monitor_0 controller-2" [ style=bold color="green" fontcolor="black"] + "redis-bundle-0_monitor_60000 controller-1" [ style=dashed color="red" fontcolor="black"] + "redis-bundle-0_start_0 controller-1" -> "redis-bundle-0_monitor_60000 controller-1" [ style = dashed] +diff --git a/pengine/test10/bundle-order-fencing.exp b/pengine/test10/bundle-order-fencing.exp +index c32e834..8e35f32 100644 +--- a/pengine/test10/bundle-order-fencing.exp ++++ b/pengine/test10/bundle-order-fencing.exp +@@ -361,7 +361,7 @@ + + + +- ++ + + + +@@ -386,12 +386,6 @@ + + + +- +- +- +- +- +- + + + +@@ -559,7 +553,7 @@ + + + +- ++ + + + +@@ -584,12 +578,6 @@ + + + +- +- +- +- +- +- + + + +@@ -1419,7 +1407,7 @@ + + + +- ++ + + + +@@ -1444,12 +1432,6 @@ + + + +- +- +- +- +- +- + + + +@@ -1623,7 +1605,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/bundle-order-fencing.xml b/pengine/test10/bundle-order-fencing.xml +index 96eba09..ac88e14 100644 +--- a/pengine/test10/bundle-order-fencing.xml ++++ b/pengine/test10/bundle-order-fencing.xml +@@ -419,8 +419,8 @@ + + + +- +- ++ ++ + + + +@@ -437,8 +437,8 @@ + + + +- +- ++ ++ + + + +@@ -448,11 +448,11 @@ + + + +- ++ + + +- +- ++ ++ + + + +@@ -461,8 +461,8 @@ + + + +- +- ++ ++ + + + +@@ -544,20 +544,20 @@ + + + +- +- ++ ++ + + +- +- ++ ++ + + +- +- ++ ++ + + +- +- ++ ++ + + + +diff --git a/pengine/test10/bundle-order-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp +index cea15dd..afba801 100644 +--- a/pengine/test10/bundle-order-partial-start-2.exp ++++ b/pengine/test10/bundle-order-partial-start-2.exp +@@ -231,7 +231,7 @@ + + + +- ++ + + + +@@ -247,7 +247,7 @@ + + + +- ++ + + + +@@ -263,7 +263,7 @@ + + + +- ++ + + + +@@ -452,7 +452,7 @@ + + + +- ++ + + + +@@ -465,7 +465,7 @@ + + + +- ++ + + + +@@ -481,7 +481,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/bundle-order-partial-start-2.xml b/pengine/test10/bundle-order-partial-start-2.xml +index 26fccf0..6dfa711 100644 +--- a/pengine/test10/bundle-order-partial-start-2.xml ++++ b/pengine/test10/bundle-order-partial-start-2.xml +@@ -307,24 +307,24 @@ + + + +- +- ++ ++ + + + + + + +- +- ++ ++ + + + + + + +- +- ++ ++ + + + +@@ -355,9 +355,9 @@ + + + +- +- +- ++ ++ ++ + + + +diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp +index d21193a..cb10bad 100644 +--- a/pengine/test10/bundle-order-partial-start.exp ++++ b/pengine/test10/bundle-order-partial-start.exp +@@ -218,7 +218,7 @@ + + + +- ++ + + + +@@ -231,7 +231,7 @@ + + + +- ++ + + + +@@ -247,7 +247,7 @@ + + + +- ++ + + + +@@ -433,7 +433,7 @@ + + + +- ++ + + + +@@ -446,7 +446,7 @@ + + + +- ++ + + + +@@ -462,7 +462,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/bundle-order-partial-start.xml b/pengine/test10/bundle-order-partial-start.xml +index 9b28b0d..8a5efdb 100644 +--- a/pengine/test10/bundle-order-partial-start.xml ++++ b/pengine/test10/bundle-order-partial-start.xml +@@ -307,16 +307,16 @@ + + + +- +- ++ ++ + + + + + + +- +- ++ ++ + + + +@@ -347,9 +347,9 @@ + + + +- +- +- ++ ++ ++ + + + +diff --git a/pengine/test10/bundle-order-partial-stop.exp b/pengine/test10/bundle-order-partial-stop.exp +index f73a046..6119950 100644 +--- a/pengine/test10/bundle-order-partial-stop.exp ++++ b/pengine/test10/bundle-order-partial-stop.exp +@@ -112,7 +112,7 @@ + + + +- ++ + + + +@@ -245,7 +245,7 @@ + + + +- ++ + + + +@@ -533,7 +533,7 @@ + + + +- ++ + + + +@@ -646,7 +646,7 @@ + + + +- ++ + + + +@@ -659,7 +659,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/bundle-order-partial-stop.xml b/pengine/test10/bundle-order-partial-stop.xml +index 467082a..e5fba3e 100644 +--- a/pengine/test10/bundle-order-partial-stop.xml ++++ b/pengine/test10/bundle-order-partial-stop.xml +@@ -359,8 +359,8 @@ + + + +- +- ++ ++ + + + +diff --git a/pengine/test10/bundle-order-startup-clone-2.exp b/pengine/test10/bundle-order-startup-clone-2.exp +index 0ffa79b..22bfa37 100644 +--- a/pengine/test10/bundle-order-startup-clone-2.exp ++++ b/pengine/test10/bundle-order-startup-clone-2.exp +@@ -479,7 +479,7 @@ + + + +- ++ + + + +@@ -492,7 +492,7 @@ + + + +- ++ + + + +@@ -520,7 +520,7 @@ + + + +- ++ + + + +@@ -529,7 +529,7 @@ + + + +- ++ + + + +@@ -538,7 +538,7 @@ + + + +- ++ + + + +@@ -621,7 +621,7 @@ + + + +- ++ + + + +@@ -634,7 +634,7 @@ + + + +- ++ + + + +@@ -662,7 +662,7 @@ + + + +- ++ + + + +@@ -671,7 +671,7 @@ + + + +- ++ + + + +@@ -680,7 +680,7 @@ + + + +- ++ + + + +@@ -763,7 +763,7 @@ + + + +- ++ + + + +@@ -776,7 +776,7 @@ + + + +- ++ + + + +@@ -804,7 +804,7 @@ + + + +- ++ + + + +@@ -813,7 +813,7 @@ + + + +- ++ + + + +@@ -822,7 +822,7 @@ + + + +- ++ + + + +@@ -905,7 +905,7 @@ + + + +- ++ + + + +@@ -918,7 +918,7 @@ + + + +- ++ + + + +@@ -946,7 +946,7 @@ + + + +- ++ + + + +@@ -955,7 +955,7 @@ + + + +- ++ + + + +@@ -964,7 +964,7 @@ + + + +- ++ + + + +@@ -973,7 +973,7 @@ + + + +- ++ + + + +@@ -986,7 +986,7 @@ + + + +- ++ + + + +@@ -1014,7 +1014,7 @@ + + + +- ++ + + + +@@ -1023,7 +1023,7 @@ + + + +- ++ + + + +@@ -1032,7 +1032,7 @@ + + + +- ++ + + + +@@ -1041,7 +1041,7 @@ + + + +- ++ + + + +@@ -1054,7 +1054,7 @@ + + + +- ++ + + + +@@ -1082,7 +1082,7 @@ + + + +- ++ + + + +@@ -1091,7 +1091,7 @@ + + + +- ++ + + + +@@ -1100,7 +1100,7 @@ + + + +- ++ + + + +@@ -1660,7 +1660,7 @@ + + + +- ++ + + + +@@ -1673,7 +1673,7 @@ + + + +- ++ + + + +@@ -1701,7 +1701,7 @@ + + + +- ++ + + + +@@ -1710,7 +1710,7 @@ + + + +- ++ + + + +@@ -1719,7 +1719,7 @@ + + + +- ++ + + + +@@ -1802,7 +1802,7 @@ + + + +- ++ + + + +@@ -1815,7 +1815,7 @@ + + + +- ++ + + + +@@ -1843,7 +1843,7 @@ + + + +- ++ + + + +@@ -1852,7 +1852,7 @@ + + + +- ++ + + + +@@ -1861,7 +1861,7 @@ + + + +- ++ + + + +@@ -1944,7 +1944,7 @@ + + + +- ++ + + + +@@ -1957,7 +1957,7 @@ + + + +- ++ + + + +@@ -1985,7 +1985,7 @@ + + + +- ++ + + + +@@ -1994,7 +1994,7 @@ + + + +- ++ + + + +@@ -2003,7 +2003,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/bundle-order-startup-clone.exp b/pengine/test10/bundle-order-startup-clone.exp +index f4d61ee..42ee902 100644 +--- a/pengine/test10/bundle-order-startup-clone.exp ++++ b/pengine/test10/bundle-order-startup-clone.exp +@@ -30,7 +30,7 @@ + + + +- ++ + + + +@@ -39,7 +39,7 @@ + + + +- ++ + + + +@@ -48,7 +48,7 @@ + + + +- ++ + + + +@@ -57,7 +57,7 @@ + + + +- ++ + + + +@@ -70,7 +70,7 @@ + + + +- ++ + + + +@@ -92,7 +92,7 @@ + + + +- ++ + + + +@@ -101,7 +101,7 @@ + + + +- ++ + + + +@@ -110,7 +110,7 @@ + + + +- ++ + + + +@@ -278,7 +278,7 @@ + + + +- ++ + + + +@@ -291,7 +291,7 @@ + + + +- ++ + + + +@@ -313,7 +313,7 @@ + + + +- ++ + + + +@@ -322,7 +322,7 @@ + + + +- ++ + + + +@@ -331,7 +331,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp +index c025a41..1f83781 100644 +--- a/pengine/test10/bundle-order-startup.exp ++++ b/pengine/test10/bundle-order-startup.exp +@@ -137,7 +137,7 @@ + + + +- ++ + + + +@@ -150,7 +150,7 @@ + + + +- ++ + + + +@@ -166,7 +166,7 @@ + + + +- ++ + + + +@@ -298,7 +298,7 @@ + + + +- ++ + + + +@@ -311,7 +311,7 @@ + + + +- ++ + + + +@@ -327,7 +327,7 @@ + + + +- ++ + + + +@@ -531,7 +531,7 @@ + + + +- ++ + + + +@@ -544,7 +544,7 @@ + + + +- ++ + + + +@@ -560,7 +560,7 @@ + + + +- ++ + + + +@@ -821,7 +821,7 @@ + + + +- ++ + + + +@@ -834,7 +834,7 @@ + + + +- ++ + + + +@@ -850,7 +850,7 @@ + + + +- ++ + + + +@@ -859,7 +859,7 @@ + + + +- ++ + + + +@@ -872,7 +872,7 @@ + + + +- ++ + + + +@@ -888,7 +888,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/bundle-order-stop-clone.dot b/pengine/test10/bundle-order-stop-clone.dot +index 4d03564..48bb614 100644 +--- a/pengine/test10/bundle-order-stop-clone.dot ++++ b/pengine/test10/bundle-order-stop-clone.dot +@@ -1,10 +1,8 @@ + digraph "g" { + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "galera-bundle-0_monitor_0 metal-2" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] +-"galera-bundle-0_monitor_0 metal-2" -> "galera-bundle-0_stop_0 metal-1" [ style = bold] + "galera-bundle-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] + "galera-bundle-0_monitor_0 metal-3" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] +-"galera-bundle-0_monitor_0 metal-3" -> "galera-bundle-0_stop_0 metal-1" [ style = bold] + "galera-bundle-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] + "galera-bundle-0_monitor_60000 metal-1" [ style=dashed color="red" fontcolor="black"] + "galera-bundle-0_start_0 metal-1" -> "galera-bundle-0_monitor_60000 metal-1" [ style = dashed] +diff --git a/pengine/test10/bundle-order-stop-clone.exp b/pengine/test10/bundle-order-stop-clone.exp +index 92ca6de..3e3fe77 100644 +--- a/pengine/test10/bundle-order-stop-clone.exp ++++ b/pengine/test10/bundle-order-stop-clone.exp +@@ -243,7 +243,7 @@ + + + +- ++ + + + +@@ -267,12 +267,6 @@ + + + +- +- +- +- +- +- + + + +diff --git a/pengine/test10/bundle-order-stop-clone.xml b/pengine/test10/bundle-order-stop-clone.xml +index 87ed212..720517f 100644 +--- a/pengine/test10/bundle-order-stop-clone.xml ++++ b/pengine/test10/bundle-order-stop-clone.xml +@@ -193,8 +193,8 @@ + + + +- +- ++ ++ + + + +@@ -203,8 +203,8 @@ + + + +- +- ++ ++ + + + +@@ -213,8 +213,8 @@ + + + +- +- ++ ++ + + + +@@ -245,18 +245,18 @@ + + + +- +- ++ ++ + + + + + +- ++ + + +- +- ++ ++ + + + +@@ -265,8 +265,8 @@ + + + +- +- ++ ++ + + + +@@ -297,8 +297,8 @@ + + + +- +- ++ ++ + + + +@@ -307,8 +307,8 @@ + + + +- +- ++ ++ + + + +@@ -317,8 +317,8 @@ + + + +- +- ++ ++ + + + +diff --git a/pengine/test10/bundle-order-stop.exp b/pengine/test10/bundle-order-stop.exp +index f73a046..6119950 100644 +--- a/pengine/test10/bundle-order-stop.exp ++++ b/pengine/test10/bundle-order-stop.exp +@@ -112,7 +112,7 @@ + + + +- ++ + + + +@@ -245,7 +245,7 @@ + + + +- ++ + + + +@@ -533,7 +533,7 @@ + + + +- ++ + + + +@@ -646,7 +646,7 @@ + + + +- ++ + + + +@@ -659,7 +659,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/bundle-order-stop.xml b/pengine/test10/bundle-order-stop.xml +index 467082a..e5fba3e 100644 +--- a/pengine/test10/bundle-order-stop.xml ++++ b/pengine/test10/bundle-order-stop.xml +@@ -359,8 +359,8 @@ + + + +- +- ++ ++ + + + +diff --git a/pengine/test10/bundle-probe-order-1.exp b/pengine/test10/bundle-probe-order-1.exp +index e70680b..e5f2a9b 100644 +--- a/pengine/test10/bundle-probe-order-1.exp ++++ b/pengine/test10/bundle-probe-order-1.exp +@@ -3,7 +3,7 @@ + + + +- ++ + + + +@@ -12,7 +12,7 @@ + + + +- ++ + + + +@@ -21,7 +21,7 @@ + + + +- ++ + + + +@@ -30,7 +30,7 @@ + + + +- ++ + + + +@@ -39,7 +39,7 @@ + + + +- ++ + + + +@@ -48,7 +48,7 @@ + + + +- ++ + + + +@@ -57,7 +57,7 @@ + + + +- ++ + + + +@@ -66,7 +66,7 @@ + + + +- ++ + + + +@@ -75,7 +75,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/bundle-probe-order-2.dot b/pengine/test10/bundle-probe-order-2.dot +index 4fba741..80f6c3a 100644 +--- a/pengine/test10/bundle-probe-order-2.dot ++++ b/pengine/test10/bundle-probe-order-2.dot +@@ -1,6 +1,5 @@ + digraph "g" { + "galera-bundle-0_monitor_60000 centos2" [ style=bold color="green" fontcolor="black"] +-"galera-bundle-docker-0_monitor_60000 centos2" [ style=bold color="green" fontcolor="black"] + "galera-bundle-docker-1_monitor_0 centos2" [ style=bold color="green" fontcolor="black"] + "galera-bundle-docker-2_monitor_0 centos1" [ style=bold color="green" fontcolor="black"] + "galera-bundle-docker-2_monitor_0 centos2" [ style=bold color="green" fontcolor="black"] +diff --git a/pengine/test10/bundle-probe-order-2.exp b/pengine/test10/bundle-probe-order-2.exp +index f33da4d..0477c87 100644 +--- a/pengine/test10/bundle-probe-order-2.exp ++++ b/pengine/test10/bundle-probe-order-2.exp +@@ -1,7 +1,7 @@ + + + +- ++ + + + +@@ -10,54 +10,45 @@ + + + +- +- +- +- +- +- +- +- +- +- ++ + + + + + + +- ++ + +- ++ + +- ++ + + + + +- ++ + +- ++ + +- ++ + + + + +- ++ + +- ++ + +- ++ + + + + +- ++ + +- ++ + +- ++ + + + +diff --git a/pengine/test10/bundle-probe-order-2.summary b/pengine/test10/bundle-probe-order-2.summary +index e094e26..2bf58db 100644 +--- a/pengine/test10/bundle-probe-order-2.summary ++++ b/pengine/test10/bundle-probe-order-2.summary +@@ -13,7 +13,6 @@ Transition Summary: + + Executing cluster transition: + * Resource action: galera:0 monitor on galera-bundle-0 +- * Resource action: galera-bundle-docker-0 monitor=60000 on centos2 + * Resource action: galera-bundle-0 monitor=60000 on centos2 + * Resource action: galera-bundle-docker-1 monitor on centos2 + * Resource action: galera-bundle-docker-2 monitor on centos3 +diff --git a/pengine/test10/bundle-probe-order-3.dot b/pengine/test10/bundle-probe-order-3.dot +index 4dc54b5..daff1dc 100644 +--- a/pengine/test10/bundle-probe-order-3.dot ++++ b/pengine/test10/bundle-probe-order-3.dot +@@ -2,7 +2,6 @@ digraph "g" { + "galera-bundle-0_monitor_0 centos1" [ style=bold color="green" fontcolor="black"] + "galera-bundle-0_monitor_0 centos2" [ style=bold color="green" fontcolor="black"] + "galera-bundle-0_monitor_0 centos3" [ style=bold color="green" fontcolor="black"] +-"galera-bundle-docker-0_monitor_60000 centos2" [ style=bold color="green" fontcolor="black"] + "galera-bundle-docker-1_monitor_0 centos2" [ style=bold color="green" fontcolor="black"] + "galera-bundle-docker-2_monitor_0 centos1" [ style=bold color="green" fontcolor="black"] + "galera-bundle-docker-2_monitor_0 centos2" [ style=bold color="green" fontcolor="black"] +diff --git a/pengine/test10/bundle-probe-order-3.exp b/pengine/test10/bundle-probe-order-3.exp +index e93434b..395753e 100644 +--- a/pengine/test10/bundle-probe-order-3.exp ++++ b/pengine/test10/bundle-probe-order-3.exp +@@ -1,72 +1,63 @@ + + + +- +- +- +- +- +- +- +- +- +- ++ + + + + + + +- ++ + +- ++ + + + + + + +- ++ + +- ++ + + + + + + +- ++ + +- ++ + +- ++ + + + + +- ++ + +- ++ + +- ++ + + + + +- ++ + +- ++ + +- ++ + + + + +- ++ + +- ++ + +- ++ + + + +diff --git a/pengine/test10/bundle-probe-order-3.summary b/pengine/test10/bundle-probe-order-3.summary +index 4faaa6d..cb384a7 100644 +--- a/pengine/test10/bundle-probe-order-3.summary ++++ b/pengine/test10/bundle-probe-order-3.summary +@@ -11,7 +11,6 @@ Online: [ centos1 centos2 centos3 ] + Transition Summary: + + Executing cluster transition: +- * Resource action: galera-bundle-docker-0 monitor=60000 on centos2 + * Resource action: galera-bundle-0 monitor on centos3 + * Resource action: galera-bundle-0 monitor on centos2 + * Resource action: galera-bundle-0 monitor on centos1 +diff --git a/pengine/test10/bundle-probe-remotes.exp b/pengine/test10/bundle-probe-remotes.exp +index ebf778c..601b689 100644 +--- a/pengine/test10/bundle-probe-remotes.exp ++++ b/pengine/test10/bundle-probe-remotes.exp +@@ -555,7 +555,7 @@ + + + +- ++ + + + +@@ -568,7 +568,7 @@ + + + +- ++ + + + +@@ -614,7 +614,7 @@ + + + +- ++ + + + +@@ -627,7 +627,7 @@ + + + +- ++ + + + +@@ -640,7 +640,7 @@ + + + +- ++ + + + +@@ -653,7 +653,7 @@ + + + +- ++ + + + +@@ -662,7 +662,7 @@ + + + +- ++ + + + +@@ -671,7 +671,7 @@ + + + +- ++ + + + +@@ -754,7 +754,7 @@ + + + +- ++ + + + +@@ -767,7 +767,7 @@ + + + +- ++ + + + +@@ -813,7 +813,7 @@ + + + +- ++ + + + +@@ -826,7 +826,7 @@ + + + +- ++ + + + +@@ -839,7 +839,7 @@ + + + +- ++ + + + +@@ -852,7 +852,7 @@ + + + +- ++ + + + +@@ -861,7 +861,7 @@ + + + +- ++ + + + +@@ -870,7 +870,7 @@ + + + +- ++ + + + +@@ -953,7 +953,7 @@ + + + +- ++ + + + +@@ -966,7 +966,7 @@ + + + +- ++ + + + +@@ -1012,7 +1012,7 @@ + + + +- ++ + + + +@@ -1025,7 +1025,7 @@ + + + +- ++ + + + +@@ -1038,7 +1038,7 @@ + + + +- ++ + + + +@@ -1051,7 +1051,7 @@ + + + +- ++ + + + +@@ -1060,7 +1060,7 @@ + + + +- ++ + + + +@@ -1069,7 +1069,7 @@ + + + +- ++ + + + +@@ -1152,7 +1152,7 @@ + + + +- ++ + + + +@@ -1168,7 +1168,7 @@ + + + +- ++ + + + +@@ -1217,7 +1217,7 @@ + + + +- ++ + + + +@@ -1230,7 +1230,7 @@ + + + +- ++ + + + +@@ -1243,7 +1243,7 @@ + + + +- ++ + + + +@@ -1256,7 +1256,7 @@ + + + +- ++ + + + +@@ -1265,7 +1265,7 @@ + + + +- ++ + + + +@@ -1274,7 +1274,7 @@ + + + +- ++ + + + +@@ -1357,7 +1357,7 @@ + + + +- ++ + + + +@@ -1373,7 +1373,7 @@ + + + +- ++ + + + +@@ -1422,7 +1422,7 @@ + + + +- ++ + + + +@@ -1435,7 +1435,7 @@ + + + +- ++ + + + +@@ -1448,7 +1448,7 @@ + + + +- ++ + + + +@@ -1461,7 +1461,7 @@ + + + +- ++ + + + +@@ -1470,7 +1470,7 @@ + + + +- ++ + + + +@@ -1479,7 +1479,7 @@ + + + +- ++ + + + +@@ -1562,7 +1562,7 @@ + + + +- ++ + + + +@@ -1578,7 +1578,7 @@ + + + +- ++ + + + +@@ -1627,7 +1627,7 @@ + + + +- ++ + + + +@@ -1640,7 +1640,7 @@ + + + +- ++ + + + +@@ -1653,7 +1653,7 @@ + + + +- ++ + + + +@@ -1666,7 +1666,7 @@ + + + +- ++ + + + +@@ -1675,7 +1675,7 @@ + + + +- ++ + + + +@@ -1684,7 +1684,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/clone-no-shuffle.summary b/pengine/test10/clone-no-shuffle.summary +index c9cb373..50dd872 100644 +--- a/pengine/test10/clone-no-shuffle.summary ++++ b/pengine/test10/clone-no-shuffle.summary +@@ -12,7 +12,7 @@ Transition Summary: + * Start stonith-1 (dktest1sles10) + * Stop drbd1:0 ( Master dktest2sles10 ) due to node availability + * Start drbd1:1 (dktest1sles10) +- * Stop testip (dktest2sles10) ++ * Stop testip ( dktest2sles10 ) due to node availability + + Executing cluster transition: + * Resource action: stonith-1 monitor on dktest2sles10 +diff --git a/pengine/test10/cloned-group-stop.summary b/pengine/test10/cloned-group-stop.summary +index 4d5f390..dd1b02c 100644 +--- a/pengine/test10/cloned-group-stop.summary ++++ b/pengine/test10/cloned-group-stop.summary +@@ -23,16 +23,16 @@ Transition Summary: + * Stop keystone:0 ( rhos4-node4 ) due to unrunnable qpidd-clone running + * Stop keystone:1 ( rhos4-node3 ) due to unrunnable qpidd-clone running + * Stop glance-fs:0 ( rhos4-node4 ) due to required keystone-clone running +- * Stop glance-registry:0 ( rhos4-node4 ) due to required glance-fs:0 start ++ * Stop glance-registry:0 ( rhos4-node4 ) due to required glance-fs:0 stop + * Stop glance-api:0 ( rhos4-node4 ) due to required glance-registry:0 start + * Stop glance-fs:1 ( rhos4-node3 ) due to required keystone-clone running +- * Stop glance-registry:1 ( rhos4-node3 ) due to required glance-fs:1 start ++ * Stop glance-registry:1 ( rhos4-node3 ) due to required glance-fs:1 stop + * Stop glance-api:1 ( rhos4-node3 ) due to required glance-registry:1 start + * Stop cinder-api:0 ( rhos4-node4 ) due to required glance-clone running +- * Stop cinder-scheduler:0 ( rhos4-node4 ) due to required cinder-api:0 start ++ * Stop cinder-scheduler:0 ( rhos4-node4 ) due to required cinder-api:0 stop + * Stop cinder-volume:0 ( rhos4-node4 ) due to required cinder-scheduler:0 start + * Stop cinder-api:1 ( rhos4-node3 ) due to required glance-clone running +- * Stop cinder-scheduler:1 ( rhos4-node3 ) due to required cinder-api:1 start ++ * Stop cinder-scheduler:1 ( rhos4-node3 ) due to required cinder-api:1 stop + * Stop cinder-volume:1 ( rhos4-node3 ) due to required cinder-scheduler:1 start + + Executing cluster transition: +diff --git a/pengine/test10/cloned-group.summary b/pengine/test10/cloned-group.summary +index 1c4f277..0c9c061 100644 +--- a/pengine/test10/cloned-group.summary ++++ b/pengine/test10/cloned-group.summary +@@ -11,7 +11,7 @@ OFFLINE: [ webcluster02 ] + Stopped: [ webcluster02 ] + + Transition Summary: +- * Restart apache2:0 ( webcluster01 ) ++ * Restart apache2:0 ( webcluster01 ) due to resource definition change + * Restart mysql-proxy:0 ( webcluster01 ) due to required apache2:0 start + * Stop apache2:2 (webcluster01) due to node availability + * Stop mysql-proxy:2 (webcluster01) due to node availability +diff --git a/pengine/test10/colocation_constraint_stops_slave.summary b/pengine/test10/colocation_constraint_stops_slave.summary +index 4af4415..4a5a582 100644 +--- a/pengine/test10/colocation_constraint_stops_slave.summary ++++ b/pengine/test10/colocation_constraint_stops_slave.summary +@@ -10,7 +10,7 @@ OFFLINE: [ fc16-builder2 ] + + Transition Summary: + * Stop NATIVE_RSC_A:0 ( Slave fc16-builder ) due to node availability +- * Stop NATIVE_RSC_B (fc16-builder) ++ * Stop NATIVE_RSC_B ( fc16-builder ) due to node availability + + Executing cluster transition: + * Pseudo action: MASTER_RSC_A_pre_notify_stop_0 +diff --git a/pengine/test10/group5.dot b/pengine/test10/group5.dot +index c84be65..e17a7f7 100644 +--- a/pengine/test10/group5.dot ++++ b/pengine/test10/group5.dot +@@ -1,7 +1,6 @@ + digraph "g" { + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "child_rsc1_monitor_0 node2" -> "child_rsc1_start_0 node2" [ style = bold] +-"child_rsc1_monitor_0 node2" -> "child_rsc1_stop_0 node1" [ style = bold] + "child_rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc1_start_0 node2" -> "child_rsc2_start_0 node2" [ style = bold] + "child_rsc1_start_0 node2" -> "rsc2_running_0" [ style = bold] +@@ -11,7 +10,6 @@ + "child_rsc1_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] + "child_rsc1_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc2_monitor_0 node2" -> "child_rsc2_start_0 node2" [ style = bold] +-"child_rsc2_monitor_0 node2" -> "child_rsc2_stop_0 node1" [ style = bold] + "child_rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc2_start_0 node2" -> "child_rsc3_start_0 node2" [ style = bold] + "child_rsc2_start_0 node2" -> "rsc2_running_0" [ style = bold] +@@ -22,7 +20,6 @@ + "child_rsc2_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] + "child_rsc2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc3_monitor_0 node2" -> "child_rsc3_start_0 node2" [ style = bold] +-"child_rsc3_monitor_0 node2" -> "child_rsc3_stop_0 node1" [ style = bold] + "child_rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc3_start_0 node2" -> "rsc2_running_0" [ style = bold] + "child_rsc3_start_0 node2" [ style=bold color="green" fontcolor="black" ] +@@ -32,7 +29,6 @@ + "child_rsc3_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] + "child_rsc3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = bold] +-"rsc1_monitor_0 node2" -> "rsc1_stop_0 node1" [ style = bold] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc1_start_0 node2" -> "rsc2_start_0" [ style = bold] + "rsc1_start_0 node2" [ style=bold color="green" fontcolor="black" ] +@@ -55,7 +51,6 @@ + "rsc2_stopped_0" -> "rsc2_start_0" [ style = bold] + "rsc2_stopped_0" [ style=bold color="green" fontcolor="orange" ] + "rsc3_monitor_0 node2" -> "rsc3_start_0 node2" [ style = bold] +-"rsc3_monitor_0 node2" -> "rsc3_stop_0 node1" [ style = bold] + "rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc3_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc3_stop_0 node1" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/group5.exp b/pengine/test10/group5.exp +index f03f4ab..c2c2edc 100644 +--- a/pengine/test10/group5.exp ++++ b/pengine/test10/group5.exp +@@ -24,9 +24,6 @@ + + + +- +- +- + + + +@@ -137,9 +134,6 @@ + + + +- +- +- + + + +@@ -187,9 +181,6 @@ + + + +- +- +- + + + +@@ -237,9 +228,6 @@ + + + +- +- +- + + + +@@ -279,11 +267,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/group5.summary b/pengine/test10/group5.summary +index f709b9d..7b158c0 100644 +--- a/pengine/test10/group5.summary ++++ b/pengine/test10/group5.summary +@@ -21,8 +21,8 @@ Executing cluster transition: + * Resource action: child_rsc1 monitor on node2 + * Resource action: child_rsc2 monitor on node2 + * Resource action: child_rsc3 monitor on node2 +- * Resource action: rsc3 monitor on node2 + * Resource action: rsc3 stop on node1 ++ * Resource action: rsc3 monitor on node2 + * Pseudo action: rsc2_stop_0 + * Resource action: child_rsc3 stop on node1 + * Resource action: child_rsc2 stop on node1 +diff --git a/pengine/test10/group6.dot b/pengine/test10/group6.dot +index 2141e02..fb15b68 100644 +--- a/pengine/test10/group6.dot ++++ b/pengine/test10/group6.dot +@@ -1,7 +1,6 @@ + digraph "g" { + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "child_rsc1_monitor_0 node2" -> "child_rsc1_start_0 node2" [ style = bold] +-"child_rsc1_monitor_0 node2" -> "child_rsc1_stop_0 node1" [ style = bold] + "child_rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc1_start_0 node2" -> "child_rsc2_start_0 node2" [ style = bold] + "child_rsc1_start_0 node2" -> "rsc1_running_0" [ style = bold] +@@ -11,7 +10,6 @@ + "child_rsc1_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] + "child_rsc1_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc2_monitor_0 node2" -> "child_rsc2_start_0 node2" [ style = bold] +-"child_rsc2_monitor_0 node2" -> "child_rsc2_stop_0 node1" [ style = bold] + "child_rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc2_start_0 node2" -> "child_rsc3_start_0 node2" [ style = bold] + "child_rsc2_start_0 node2" -> "rsc1_running_0" [ style = bold] +@@ -22,7 +20,6 @@ + "child_rsc2_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] + "child_rsc2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc3_monitor_0 node2" -> "child_rsc3_start_0 node2" [ style = bold] +-"child_rsc3_monitor_0 node2" -> "child_rsc3_stop_0 node1" [ style = bold] + "child_rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc3_start_0 node2" -> "rsc1_running_0" [ style = bold] + "child_rsc3_start_0 node2" [ style=bold color="green" fontcolor="black" ] +@@ -32,7 +29,6 @@ + "child_rsc3_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] + "child_rsc3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc4_monitor_0 node2" -> "child_rsc4_start_0 node2" [ style = bold] +-"child_rsc4_monitor_0 node2" -> "child_rsc4_stop_0 node1" [ style = bold] + "child_rsc4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc4_start_0 node2" -> "child_rsc5_start_0 node2" [ style = bold] + "child_rsc4_start_0 node2" -> "rsc2_running_0" [ style = bold] +@@ -42,7 +38,6 @@ + "child_rsc4_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] + "child_rsc4_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc5_monitor_0 node2" -> "child_rsc5_start_0 node2" [ style = bold] +-"child_rsc5_monitor_0 node2" -> "child_rsc5_stop_0 node1" [ style = bold] + "child_rsc5_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc5_start_0 node2" -> "child_rsc6_start_0 node2" [ style = bold] + "child_rsc5_start_0 node2" -> "rsc2_running_0" [ style = bold] +@@ -53,7 +48,6 @@ + "child_rsc5_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] + "child_rsc5_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc6_monitor_0 node2" -> "child_rsc6_start_0 node2" [ style = bold] +-"child_rsc6_monitor_0 node2" -> "child_rsc6_stop_0 node1" [ style = bold] + "child_rsc6_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc6_start_0 node2" -> "rsc2_running_0" [ style = bold] + "child_rsc6_start_0 node2" [ style=bold color="green" fontcolor="black" ] +diff --git a/pengine/test10/group6.exp b/pengine/test10/group6.exp +index 7a7d265..1b1f906 100644 +--- a/pengine/test10/group6.exp ++++ b/pengine/test10/group6.exp +@@ -93,9 +93,6 @@ + + + +- +- +- + + + +@@ -143,9 +140,6 @@ + + + +- +- +- + + + +@@ -193,9 +187,6 @@ + + + +- +- +- + + + +@@ -302,9 +293,6 @@ + + + +- +- +- + + + +@@ -352,9 +340,6 @@ + + + +- +- +- + + + +@@ -402,9 +387,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/group6.summary b/pengine/test10/group6.summary +index 0d18868..9d43e66 100644 +--- a/pengine/test10/group6.summary ++++ b/pengine/test10/group6.summary +@@ -26,8 +26,8 @@ Executing cluster transition: + * Pseudo action: rsc2_stop_0 + * Resource action: child_rsc4 monitor on node2 + * Resource action: child_rsc5 monitor on node2 +- * Resource action: child_rsc6 monitor on node2 + * Resource action: child_rsc6 stop on node1 ++ * Resource action: child_rsc6 monitor on node2 + * Resource action: child_rsc5 stop on node1 + * Resource action: child_rsc4 stop on node1 + * Pseudo action: rsc2_stopped_0 +diff --git a/pengine/test10/group9.dot b/pengine/test10/group9.dot +index bc58f15..085f816 100644 +--- a/pengine/test10/group9.dot ++++ b/pengine/test10/group9.dot +@@ -37,7 +37,6 @@ + "rsc4_stop_0 node1" -> "rsc4_start_0 node1" [ style = bold] + "rsc4_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc5_monitor_0 node2" -> "rsc5_start_0 node1" [ style = bold] +-"rsc5_monitor_0 node2" -> "rsc5_stop_0 node1" [ style = bold] + "rsc5_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc5_start_0 node1" -> "foo_running_0" [ style = bold] + "rsc5_start_0 node1" [ style=bold color="green" fontcolor="black" ] +@@ -47,7 +46,6 @@ + "rsc5_stop_0 node1" -> "rsc5_start_0 node1" [ style = bold] + "rsc5_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc6_monitor_0 node2" -> "rsc6_start_0 node2" [ style = bold] +-"rsc6_monitor_0 node2" -> "rsc6_stop_0 node1" [ style = bold] + "rsc6_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc6_start_0 node2" -> "bar_running_0" [ style = bold] + "rsc6_start_0 node2" -> "rsc7_start_0 node2" [ style = bold] +@@ -67,7 +65,6 @@ + "rsc7_stop_0 node1" -> "rsc7_start_0 node2" [ style = bold] + "rsc7_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc8_monitor_0 node2" -> "rsc8_start_0 node2" [ style = bold] +-"rsc8_monitor_0 node2" -> "rsc8_stop_0 node1" [ style = bold] + "rsc8_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc8_start_0 node2" -> "bar_running_0" [ style = bold] + "rsc8_start_0 node2" [ style=bold color="green" fontcolor="black" ] +diff --git a/pengine/test10/group9.exp b/pengine/test10/group9.exp +index f57f2b4..62d2a40 100644 +--- a/pengine/test10/group9.exp ++++ b/pengine/test10/group9.exp +@@ -157,9 +157,6 @@ + + + +- +- +- + + + +@@ -266,9 +263,6 @@ + + + +- +- +- + + + +@@ -360,9 +354,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/group9.summary b/pengine/test10/group9.summary +index ede3c82..1ef9d10 100644 +--- a/pengine/test10/group9.summary ++++ b/pengine/test10/group9.summary +@@ -26,13 +26,13 @@ Executing cluster transition: + * Pseudo action: foo_stop_0 + * Resource action: rsc3 monitor on node2 + * Resource action: rsc4 monitor on node2 ++ * Resource action: rsc5 stop on node1 + * Resource action: rsc5 monitor on node2 + * Pseudo action: bar_stop_0 + * Resource action: rsc6 monitor on node2 + * Resource action: rsc7 monitor on node2 +- * Resource action: rsc8 monitor on node2 +- * Resource action: rsc5 stop on node1 + * Resource action: rsc8 stop on node1 ++ * Resource action: rsc8 monitor on node2 + * Resource action: rsc4 stop on node1 + * Resource action: rsc7 stop on node1 + * Pseudo action: foo_stopped_0 +diff --git a/pengine/test10/guest-node-host-dies.dot b/pengine/test10/guest-node-host-dies.dot +index 2082d07..a85250d 100644 +--- a/pengine/test10/guest-node-host-dies.dot ++++ b/pengine/test10/guest-node-host-dies.dot +@@ -69,13 +69,10 @@ digraph "g" { + "lxc-ms_stop_0 lxc2" -> "lxc-ms_start_0 lxc2" [ style = bold] + "lxc-ms_stop_0 lxc2" [ style=bold color="green" fontcolor="orange"] + "lxc1_monitor_0 rhel7-3" -> "lxc1_start_0 rhel7-2" [ style = bold] +-"lxc1_monitor_0 rhel7-3" -> "lxc1_stop_0 rhel7-1" [ style = bold] + "lxc1_monitor_0 rhel7-3" [ style=bold color="green" fontcolor="black"] + "lxc1_monitor_0 rhel7-4" -> "lxc1_start_0 rhel7-2" [ style = bold] +-"lxc1_monitor_0 rhel7-4" -> "lxc1_stop_0 rhel7-1" [ style = bold] + "lxc1_monitor_0 rhel7-4" [ style=bold color="green" fontcolor="black"] + "lxc1_monitor_0 rhel7-5" -> "lxc1_start_0 rhel7-2" [ style = bold] +-"lxc1_monitor_0 rhel7-5" -> "lxc1_stop_0 rhel7-1" [ style = bold] + "lxc1_monitor_0 rhel7-5" [ style=bold color="green" fontcolor="black"] + "lxc1_monitor_30000 rhel7-2" [ style=bold color="green" fontcolor="black"] + "lxc1_start_0 rhel7-2" -> "lxc-ms_promote_0 lxc1" [ style = bold] +@@ -87,13 +84,10 @@ digraph "g" { + "lxc1_stop_0 rhel7-1" -> "lxc1_start_0 rhel7-2" [ style = bold] + "lxc1_stop_0 rhel7-1" [ style=bold color="green" fontcolor="orange"] + "lxc2_monitor_0 rhel7-2" -> "lxc2_start_0 rhel7-3" [ style = bold] +-"lxc2_monitor_0 rhel7-2" -> "lxc2_stop_0 rhel7-1" [ style = bold] + "lxc2_monitor_0 rhel7-2" [ style=bold color="green" fontcolor="black"] + "lxc2_monitor_0 rhel7-4" -> "lxc2_start_0 rhel7-3" [ style = bold] +-"lxc2_monitor_0 rhel7-4" -> "lxc2_stop_0 rhel7-1" [ style = bold] + "lxc2_monitor_0 rhel7-4" [ style=bold color="green" fontcolor="black"] + "lxc2_monitor_0 rhel7-5" -> "lxc2_start_0 rhel7-3" [ style = bold] +-"lxc2_monitor_0 rhel7-5" -> "lxc2_stop_0 rhel7-1" [ style = bold] + "lxc2_monitor_0 rhel7-5" [ style=bold color="green" fontcolor="black"] + "lxc2_monitor_30000 rhel7-3" [ style=bold color="green" fontcolor="black"] + "lxc2_start_0 rhel7-3" -> "lxc-ms_monitor_10000 lxc2" [ style = bold] +diff --git a/pengine/test10/guest-node-host-dies.exp b/pengine/test10/guest-node-host-dies.exp +index 06362e2..8dbadde 100644 +--- a/pengine/test10/guest-node-host-dies.exp ++++ b/pengine/test10/guest-node-host-dies.exp +@@ -461,15 +461,6 @@ + + + +- +- +- +- +- +- +- +- +- + + + +@@ -550,15 +541,6 @@ + + + +- +- +- +- +- +- +- +- +- + + + +diff --git a/pengine/test10/guest-node-host-dies.summary b/pengine/test10/guest-node-host-dies.summary +index ea0fa4c..4feee88 100644 +--- a/pengine/test10/guest-node-host-dies.summary ++++ b/pengine/test10/guest-node-host-dies.summary +@@ -14,7 +14,7 @@ Transition Summary: + * Fence (reboot) lxc2 (resource: container2) 'guest is unclean' + * Fence (reboot) lxc1 (resource: container1) 'guest is unclean' + * Fence (reboot) rhel7-1 'rsc_rhel7-1 is thought to be active there' +- * Restart Fencing ( rhel7-4 ) ++ * Restart Fencing ( rhel7-4 ) due to resource definition change + * Move rsc_rhel7-1 ( rhel7-1 -> rhel7-5 ) + * Recover container1 ( rhel7-1 -> rhel7-2 ) + * Recover container2 ( rhel7-1 -> rhel7-3 ) +diff --git a/pengine/test10/inc12.summary b/pengine/test10/inc12.summary +index cfe99c5..97a834f 100644 +--- a/pengine/test10/inc12.summary ++++ b/pengine/test10/inc12.summary +@@ -41,13 +41,13 @@ Transition Summary: + * Stop ocf_192.168.100.181 (c001n02) due to node availability + * Stop heartbeat_192.168.100.182 (c001n02) due to node availability + * Stop ocf_192.168.100.183 (c001n02) due to node availability +- * Stop lsb_dummy (c001n04) +- * Stop rsc_c001n03 (c001n05) +- * Stop rsc_c001n02 (c001n02) +- * Stop rsc_c001n04 (c001n04) +- * Stop rsc_c001n05 (c001n05) +- * Stop rsc_c001n06 (c001n06) +- * Stop rsc_c001n07 (c001n07) ++ * Stop lsb_dummy ( c001n04 ) due to node availability ++ * Stop rsc_c001n03 ( c001n05 ) due to node availability ++ * Stop rsc_c001n02 ( c001n02 ) due to node availability ++ * Stop rsc_c001n04 ( c001n04 ) due to node availability ++ * Stop rsc_c001n05 ( c001n05 ) due to node availability ++ * Stop rsc_c001n06 ( c001n06 ) due to node availability ++ * Stop rsc_c001n07 ( c001n07 ) due to node availability + * Stop child_DoFencing:0 (c001n02) due to node availability + * Stop child_DoFencing:1 (c001n04) due to node availability + * Stop child_DoFencing:2 (c001n05) due to node availability +diff --git a/pengine/test10/inc2.dot b/pengine/test10/inc2.dot +index cd250e5..34d55a8 100644 +--- a/pengine/test10/inc2.dot ++++ b/pengine/test10/inc2.dot +@@ -4,7 +4,6 @@ + "child_rsc1:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc1:1_monitor_0 node2" -> "rsc1_start_0" [ style = bold] + "child_rsc1:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] +-"child_rsc1:2_monitor_0 node2" -> "child_rsc1:2_stop_0 node1" [ style = bold] + "child_rsc1:2_monitor_0 node2" -> "rsc1_start_0" [ style = bold] + "child_rsc1:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc1:2_start_0 node2" -> "rsc1_running_0" [ style = bold] +@@ -13,7 +12,6 @@ + "child_rsc1:2_stop_0 node1" -> "child_rsc1:2_start_0 node2" [ style = bold] + "child_rsc1:2_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] + "child_rsc1:2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +-"child_rsc1:3_monitor_0 node2" -> "child_rsc1:3_stop_0 node1" [ style = bold] + "child_rsc1:3_monitor_0 node2" -> "rsc1_start_0" [ style = bold] + "child_rsc1:3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc1:3_start_0 node2" -> "rsc1_running_0" [ style = bold] +diff --git a/pengine/test10/inc2.exp b/pengine/test10/inc2.exp +index 92b4cf1..51bef01 100644 +--- a/pengine/test10/inc2.exp ++++ b/pengine/test10/inc2.exp +@@ -42,9 +42,6 @@ + + + +- +- +- + + + +@@ -83,9 +80,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/inc3.dot b/pengine/test10/inc3.dot +index 113541a..e04a654 100644 +--- a/pengine/test10/inc3.dot ++++ b/pengine/test10/inc3.dot +@@ -4,7 +4,6 @@ + "child_rsc1:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc1:1_monitor_0 node2" -> "rsc1_start_0" [ style = bold] + "child_rsc1:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] +-"child_rsc1:2_monitor_0 node2" -> "child_rsc1:2_stop_0 node1" [ style = bold] + "child_rsc1:2_monitor_0 node2" -> "rsc1_start_0" [ style = bold] + "child_rsc1:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc1:2_start_0 node2" -> "rsc1_running_0" [ style = bold] +@@ -13,7 +12,6 @@ + "child_rsc1:2_stop_0 node1" -> "child_rsc1:2_start_0 node2" [ style = bold] + "child_rsc1:2_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] + "child_rsc1:2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +-"child_rsc1:3_monitor_0 node2" -> "child_rsc1:3_stop_0 node1" [ style = bold] + "child_rsc1:3_monitor_0 node2" -> "rsc1_start_0" [ style = bold] + "child_rsc1:3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc1:3_start_0 node2" -> "rsc1_running_0" [ style = bold] +@@ -33,7 +31,6 @@ + "child_rsc2:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc2:2_monitor_0 node1" -> "rsc2_start_0" [ style = bold] + "child_rsc2:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] +-"child_rsc2:3_monitor_0 node1" -> "child_rsc2:3_stop_0 node2" [ style = bold] + "child_rsc2:3_monitor_0 node1" -> "rsc2_start_0" [ style = bold] + "child_rsc2:3_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc2:3_start_0 node1" -> "rsc2_running_0" [ style = bold] +@@ -42,7 +39,6 @@ + "child_rsc2:3_stop_0 node2" -> "child_rsc2:3_start_0 node1" [ style = bold] + "child_rsc2:3_stop_0 node2" -> "rsc2_stopped_0" [ style = bold] + "child_rsc2:3_stop_0 node2" [ style=bold color="green" fontcolor="black" ] +-"child_rsc2:4_monitor_0 node1" -> "child_rsc2:4_stop_0 node2" [ style = bold] + "child_rsc2:4_monitor_0 node1" -> "rsc2_start_0" [ style = bold] + "child_rsc2:4_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc2:4_start_0 node1" -> "rsc2_running_0" [ style = bold] +diff --git a/pengine/test10/inc3.exp b/pengine/test10/inc3.exp +index 4c1e46d..baa921f 100644 +--- a/pengine/test10/inc3.exp ++++ b/pengine/test10/inc3.exp +@@ -42,9 +42,6 @@ + + + +- +- +- + + + +@@ -83,9 +80,6 @@ + + + +- +- +- + + + +@@ -251,9 +245,6 @@ + + + +- +- +- + + + +@@ -292,9 +283,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/inc4.dot b/pengine/test10/inc4.dot +index c5a1a00..9f70f8a 100644 +--- a/pengine/test10/inc4.dot ++++ b/pengine/test10/inc4.dot +@@ -4,7 +4,6 @@ + "child_rsc1:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc1:1_monitor_0 node2" -> "rsc1_start_0" [ style = bold] + "child_rsc1:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] +-"child_rsc1:2_monitor_0 node2" -> "child_rsc1:2_stop_0 node1" [ style = bold] + "child_rsc1:2_monitor_0 node2" -> "rsc1_start_0" [ style = bold] + "child_rsc1:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc1:2_start_0 node2" -> "child_rsc1:3_start_0 node2" [ style = bold] +@@ -14,7 +13,6 @@ + "child_rsc1:2_stop_0 node1" -> "child_rsc1:2_start_0 node2" [ style = bold] + "child_rsc1:2_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] + "child_rsc1:2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +-"child_rsc1:3_monitor_0 node2" -> "child_rsc1:3_stop_0 node1" [ style = bold] + "child_rsc1:3_monitor_0 node2" -> "rsc1_start_0" [ style = bold] + "child_rsc1:3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc1:3_start_0 node2" -> "rsc1_running_0" [ style = bold] +@@ -36,7 +34,6 @@ + "child_rsc2:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc2:2_monitor_0 node1" -> "rsc2_start_0" [ style = bold] + "child_rsc2:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] +-"child_rsc2:3_monitor_0 node1" -> "child_rsc2:3_stop_0 node2" [ style = bold] + "child_rsc2:3_monitor_0 node1" -> "rsc2_start_0" [ style = bold] + "child_rsc2:3_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc2:3_start_0 node1" -> "child_rsc2:4_start_0 node1" [ style = bold] +@@ -46,7 +43,6 @@ + "child_rsc2:3_stop_0 node2" -> "child_rsc2:3_start_0 node1" [ style = bold] + "child_rsc2:3_stop_0 node2" -> "rsc2_stopped_0" [ style = bold] + "child_rsc2:3_stop_0 node2" [ style=bold color="green" fontcolor="black" ] +-"child_rsc2:4_monitor_0 node1" -> "child_rsc2:4_stop_0 node2" [ style = bold] + "child_rsc2:4_monitor_0 node1" -> "rsc2_start_0" [ style = bold] + "child_rsc2:4_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc2:4_start_0 node1" -> "rsc2_running_0" [ style = bold] +diff --git a/pengine/test10/inc4.exp b/pengine/test10/inc4.exp +index 0d767d6..b7c160e 100644 +--- a/pengine/test10/inc4.exp ++++ b/pengine/test10/inc4.exp +@@ -42,9 +42,6 @@ + + + +- +- +- + + + +@@ -89,9 +86,6 @@ + + + +- +- +- + + + +@@ -260,9 +254,6 @@ + + + +- +- +- + + + +@@ -307,9 +298,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/inc5.dot b/pengine/test10/inc5.dot +index 684cd95..c9fa119 100644 +--- a/pengine/test10/inc5.dot ++++ b/pengine/test10/inc5.dot +@@ -6,7 +6,6 @@ + "child_rsc1:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc2:0_monitor_0 node2" -> "rsc2_start_0" [ style = bold] + "child_rsc2:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] +-"child_rsc2:1_monitor_0 node2" -> "child_rsc2:1_stop_0 node1" [ style = bold] + "child_rsc2:1_monitor_0 node2" -> "rsc2_start_0" [ style = bold] + "child_rsc2:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc2:1_start_0 node2" -> "rsc2_running_0" [ style = bold] +@@ -25,7 +24,6 @@ + "child_rsc3:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc4:0_monitor_0 node2" -> "rsc4_start_0" [ style = bold] + "child_rsc4:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] +-"child_rsc4:1_monitor_0 node2" -> "child_rsc4:1_stop_0 node1" [ style = bold] + "child_rsc4:1_monitor_0 node2" -> "rsc4_start_0" [ style = bold] + "child_rsc4:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc4:1_start_0 node2" -> "rsc4_running_0" [ style = bold] +@@ -40,7 +38,6 @@ + "child_rsc4:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc5:0_monitor_0 node1" -> "rsc5_start_0" [ style = bold] + "child_rsc5:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] +-"child_rsc5:1_monitor_0 node1" -> "child_rsc5:1_stop_0 node2" [ style = bold] + "child_rsc5:1_monitor_0 node1" -> "rsc5_start_0" [ style = bold] + "child_rsc5:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc5:1_start_0 node1" -> "rsc5_running_0" [ style = bold] +@@ -59,7 +56,6 @@ + "child_rsc6:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "child_rsc7:0_monitor_0 node1" -> "rsc7_start_0" [ style = bold] + "child_rsc7:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] +-"child_rsc7:1_monitor_0 node1" -> "child_rsc7:1_stop_0 node2" [ style = bold] + "child_rsc7:1_monitor_0 node1" -> "rsc7_start_0" [ style = bold] + "child_rsc7:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc7:1_start_0 node1" -> "rsc7_running_0" [ style = bold] +diff --git a/pengine/test10/inc5.exp b/pengine/test10/inc5.exp +index 5eff72f..89e064f 100644 +--- a/pengine/test10/inc5.exp ++++ b/pengine/test10/inc5.exp +@@ -69,9 +69,6 @@ + + + +- +- +- + + + +@@ -235,9 +232,6 @@ + + + +- +- +- + + + +@@ -365,9 +359,6 @@ + + + +- +- +- + + + +@@ -531,9 +522,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/load-stopped-loop.summary b/pengine/test10/load-stopped-loop.summary +index bc5a0f9..93e675d 100644 +--- a/pengine/test10/load-stopped-loop.summary ++++ b/pengine/test10/load-stopped-loop.summary +@@ -149,8 +149,8 @@ Transition Summary: + * Reload vds-ok-pool-1-iscsi:0 ( mgmt01 ) + * Reload vds-ok-pool-1-iscsi:1 ( v03-b ) + * Reload vds-ok-pool-1-iscsi:2 ( v03-a ) +- * Restart stonith-v03-b ( v03-a ) +- * Restart stonith-v03-a ( v03-b ) ++ * Restart stonith-v03-b ( v03-a ) due to resource definition change ++ * Restart stonith-v03-a ( v03-b ) due to resource definition change + * Migrate license.anbriz.vds-ok.com-vm ( v03-b -> v03-a ) + * Migrate terminal0.anbriz.vds-ok.com-vm ( v03-a -> v03-b ) + * Start vd01-d.cdev.ttc.prague.cz.vds-ok.com-vm (v03-a) +diff --git a/pengine/test10/master-9.summary b/pengine/test10/master-9.summary +index 55ccf50..9554242 100644 +--- a/pengine/test10/master-9.summary ++++ b/pengine/test10/master-9.summary +@@ -41,7 +41,7 @@ Transition Summary: + * Start rsc_va1 ( va1 ) due to no quorum (blocked) + * Start rsc_test02 ( va1 ) due to no quorum (blocked) + * Stop child_DoFencing:1 (ibm1) due to node availability +- * Promote ocf_msdummy:0 ( Stopped -> Master va1 ) due to node availability (blocked) ++ * Promote ocf_msdummy:0 ( Stopped -> Master va1 ) blocked + * Start ocf_msdummy:1 ( va1 ) due to no quorum (blocked) + + Executing cluster transition: +diff --git a/pengine/test10/migrate-1.dot b/pengine/test10/migrate-1.dot +index ffd25ec..650a071 100644 +--- a/pengine/test10/migrate-1.dot ++++ b/pengine/test10/migrate-1.dot +@@ -7,7 +7,6 @@ + "rsc3_migrate_to_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc3_monitor_0 node2" -> "rsc3_migrate_to_0 node1" [ style = bold] + "rsc3_monitor_0 node2" -> "rsc3_start_0 node2" [ style = bold] +-"rsc3_monitor_0 node2" -> "rsc3_stop_0 node1" [ style = bold] + "rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc3_start_0 node2" [ style=bold color="green" fontcolor="orange" ] + "rsc3_stop_0 node1" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/migrate-1.exp b/pengine/test10/migrate-1.exp +index 399cc8c..e842659 100644 +--- a/pengine/test10/migrate-1.exp ++++ b/pengine/test10/migrate-1.exp +@@ -52,9 +52,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/migrate-shutdown.summary b/pengine/test10/migrate-shutdown.summary +index 508c399..24008a9 100644 +--- a/pengine/test10/migrate-shutdown.summary ++++ b/pengine/test10/migrate-shutdown.summary +@@ -26,15 +26,15 @@ Transition Summary: + * Shutdown pcmk-3 + * Shutdown pcmk-2 + * Shutdown pcmk-1 +- * Stop Fencing (pcmk-1) ++ * Stop Fencing ( pcmk-1 ) due to node availability + * Stop r192.168.122.105 (pcmk-2) due to node availability + * Stop r192.168.122.106 (pcmk-2) due to node availability + * Stop r192.168.122.107 (pcmk-2) due to node availability +- * Stop rsc_pcmk-1 (pcmk-1) +- * Stop rsc_pcmk-2 (pcmk-2) +- * Stop rsc_pcmk-4 (pcmk-4) +- * Stop lsb-dummy (pcmk-2) +- * Stop migrator (pcmk-1) ++ * Stop rsc_pcmk-1 ( pcmk-1 ) due to node availability ++ * Stop rsc_pcmk-2 ( pcmk-2 ) due to node availability ++ * Stop rsc_pcmk-4 ( pcmk-4 ) due to node availability ++ * Stop lsb-dummy ( pcmk-2 ) due to node availability ++ * Stop migrator ( pcmk-1 ) due to node availability + * Stop ping-1:0 (pcmk-1) due to node availability + * Stop ping-1:1 (pcmk-2) due to node availability + * Stop ping-1:2 (pcmk-4) due to node availability +diff --git a/pengine/test10/mon-rsc-2.dot b/pengine/test10/mon-rsc-2.dot +index 9e370fe..c47d2aa 100644 +--- a/pengine/test10/mon-rsc-2.dot ++++ b/pengine/test10/mon-rsc-2.dot +@@ -1,7 +1,6 @@ + digraph "g" { + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "rsc1_monitor_0 node1" -> "rsc1_start_0 node1" [ style = bold] +-"rsc1_monitor_0 node1" -> "rsc1_stop_0 node2" [ style = bold] + "rsc1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc1_monitor_5000 node1" [ style=bold color="green" fontcolor="black" ] + "rsc1_start_0 node1" -> "rsc1_monitor_5000 node1" [ style = bold] +diff --git a/pengine/test10/mon-rsc-2.exp b/pengine/test10/mon-rsc-2.exp +index 5afe53f..526abeb 100644 +--- a/pengine/test10/mon-rsc-2.exp ++++ b/pengine/test10/mon-rsc-2.exp +@@ -35,11 +35,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/mon-rsc-2.summary b/pengine/test10/mon-rsc-2.summary +index 6c219b5..c4611c4 100644 +--- a/pengine/test10/mon-rsc-2.summary ++++ b/pengine/test10/mon-rsc-2.summary +@@ -9,8 +9,8 @@ Transition Summary: + * Move rsc1 ( node2 -> node1 ) + + Executing cluster transition: +- * Resource action: rsc1 monitor on node1 + * Resource action: rsc1 stop on node2 ++ * Resource action: rsc1 monitor on node1 + * Pseudo action: all_stopped + * Resource action: rsc1 start on node1 + * Resource action: rsc1 monitor=5000 on node1 +diff --git a/pengine/test10/mon-rsc-4.dot b/pengine/test10/mon-rsc-4.dot +index 9e370fe..c47d2aa 100644 +--- a/pengine/test10/mon-rsc-4.dot ++++ b/pengine/test10/mon-rsc-4.dot +@@ -1,7 +1,6 @@ + digraph "g" { + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "rsc1_monitor_0 node1" -> "rsc1_start_0 node1" [ style = bold] +-"rsc1_monitor_0 node1" -> "rsc1_stop_0 node2" [ style = bold] + "rsc1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc1_monitor_5000 node1" [ style=bold color="green" fontcolor="black" ] + "rsc1_start_0 node1" -> "rsc1_monitor_5000 node1" [ style = bold] +diff --git a/pengine/test10/mon-rsc-4.exp b/pengine/test10/mon-rsc-4.exp +index 914535b..41c3b17 100644 +--- a/pengine/test10/mon-rsc-4.exp ++++ b/pengine/test10/mon-rsc-4.exp +@@ -19,11 +19,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/mon-rsc-4.summary b/pengine/test10/mon-rsc-4.summary +index d4debf3..3c3f0ba 100644 +--- a/pengine/test10/mon-rsc-4.summary ++++ b/pengine/test10/mon-rsc-4.summary +@@ -9,10 +9,10 @@ Transition Summary: + * Move rsc1 ( node2 -> node1 ) + + Executing cluster transition: +- * Resource action: rsc1 monitor on node1 + * Resource action: rsc1 stop on node2 +- * Resource action: rsc1 start on node1 ++ * Resource action: rsc1 monitor on node1 + * Pseudo action: all_stopped ++ * Resource action: rsc1 start on node1 + * Resource action: rsc1 monitor=5000 on node1 + + Revised cluster status: +diff --git a/pengine/test10/monitor-onfail-stop.summary b/pengine/test10/monitor-onfail-stop.summary +index 54ad25a..6c100c0 100644 +--- a/pengine/test10/monitor-onfail-stop.summary ++++ b/pengine/test10/monitor-onfail-stop.summary +@@ -6,7 +6,7 @@ OFFLINE: [ fc16-builder2 ] + A (ocf::pacemaker:Dummy): FAILED fc16-builder + + Transition Summary: +- * Stop A (fc16-builder) ++ * Stop A ( fc16-builder ) due to node availability + + Executing cluster transition: + * Resource action: A stop on fc16-builder +diff --git a/pengine/test10/node-maintenance-1.summary b/pengine/test10/node-maintenance-1.summary +index 85dfb46..196c144 100644 +--- a/pengine/test10/node-maintenance-1.summary ++++ b/pengine/test10/node-maintenance-1.summary +@@ -8,7 +8,7 @@ Online: [ node1 ] + rsc2 (ocf::pacemaker:Dummy): Started node2 (unmanaged) + + Transition Summary: +- * Stop rsc1 (node1) ++ * Stop rsc1 ( node1 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node1 +diff --git a/pengine/test10/notify-3.dot b/pengine/test10/notify-3.dot +index 26b4899..bb75ccb 100644 +--- a/pengine/test10/notify-3.dot ++++ b/pengine/test10/notify-3.dot +@@ -10,7 +10,6 @@ + "child_rsc1:0_pre_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc1:0_pre_notify_stop_0 node1" -> "rsc1_confirmed-pre_notify_stop_0" [ style = bold] + "child_rsc1:0_pre_notify_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +-"child_rsc1:1_monitor_0 node1" -> "child_rsc1:1_stop_0 node2" [ style = bold] + "child_rsc1:1_monitor_0 node1" -> "rsc1_start_0" [ style = bold] + "child_rsc1:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "child_rsc1:1_post_notify_start_0 node1" -> "rsc1_confirmed-post_notify_running_0" [ style = bold] +diff --git a/pengine/test10/notify-3.exp b/pengine/test10/notify-3.exp +index fb96109..d878783 100644 +--- a/pengine/test10/notify-3.exp ++++ b/pengine/test10/notify-3.exp +@@ -111,9 +111,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/novell-251689.summary b/pengine/test10/novell-251689.summary +index 8d69588..04bbe59 100644 +--- a/pengine/test10/novell-251689.summary ++++ b/pengine/test10/novell-251689.summary +@@ -16,7 +16,7 @@ Online: [ node1 node2 ] + sles10 (ocf::heartbeat:Xen): Started node2 ( disabled ) + + Transition Summary: +- * Stop sles10 (node2) ++ * Stop sles10 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: sles10 stop on node2 +diff --git a/pengine/test10/novell-252693-2.dot b/pengine/test10/novell-252693-2.dot +index dec80eb..c628b47 100644 +--- a/pengine/test10/novell-252693-2.dot ++++ b/pengine/test10/novell-252693-2.dot +@@ -108,7 +108,6 @@ + "sles10_migrate_to_0 node2" [ style=bold color="green" fontcolor="black" ] + "sles10_monitor_0 node1" -> "sles10_migrate_to_0 node2" [ style = bold] + "sles10_monitor_0 node1" -> "sles10_start_0 node1" [ style = bold] +-"sles10_monitor_0 node1" -> "sles10_stop_0 node2" [ style = bold] + "sles10_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "sles10_monitor_10000 node1" [ style=bold color="green" fontcolor="black" ] + "sles10_start_0 node1" -> "sles10_monitor_10000 node1" [ style = bold] +diff --git a/pengine/test10/novell-252693-2.exp b/pengine/test10/novell-252693-2.exp +index 364692c..6e75a4f 100644 +--- a/pengine/test10/novell-252693-2.exp ++++ b/pengine/test10/novell-252693-2.exp +@@ -683,9 +683,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/novell-252693-3.dot b/pengine/test10/novell-252693-3.dot +index e26b164..28e9113 100644 +--- a/pengine/test10/novell-252693-3.dot ++++ b/pengine/test10/novell-252693-3.dot +@@ -134,7 +134,6 @@ + "sles10_migrate_to_0 node2" [ style=bold color="green" fontcolor="black"] + "sles10_monitor_0 node1" -> "sles10_migrate_to_0 node2" [ style = bold] + "sles10_monitor_0 node1" -> "sles10_start_0 node1" [ style = bold] +-"sles10_monitor_0 node1" -> "sles10_stop_0 node2" [ style = bold] + "sles10_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "sles10_monitor_10000 node1" [ style=bold color="green" fontcolor="black" ] + "sles10_start_0 node1" -> "sles10_monitor_10000 node1" [ style = bold] +diff --git a/pengine/test10/novell-252693-3.exp b/pengine/test10/novell-252693-3.exp +index 9c97271..4605df4 100644 +--- a/pengine/test10/novell-252693-3.exp ++++ b/pengine/test10/novell-252693-3.exp +@@ -812,9 +812,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/order-serialize-set.summary b/pengine/test10/order-serialize-set.summary +index a9f97a3..a2fe27b 100644 +--- a/pengine/test10/order-serialize-set.summary ++++ b/pengine/test10/order-serialize-set.summary +@@ -15,8 +15,8 @@ Online: [ xen-b ] + Email_Alerting (ocf::heartbeat:MailTo): Started xen-b + + Transition Summary: +- * Restart xen-a-fencing ( xen-b ) +- * Stop xen-b-fencing (xen-a) ++ * Restart xen-a-fencing ( xen-b ) due to resource definition change ++ * Stop xen-b-fencing ( xen-a ) due to node availability + * Migrate db ( xen-a -> xen-b ) + * Migrate core-101 ( xen-a -> xen-b ) + * Migrate core-200 ( xen-a -> xen-b ) +diff --git a/pengine/test10/order-serialize.summary b/pengine/test10/order-serialize.summary +index f58a6bc..eac994f 100644 +--- a/pengine/test10/order-serialize.summary ++++ b/pengine/test10/order-serialize.summary +@@ -15,8 +15,8 @@ Online: [ xen-b ] + Email_Alerting (ocf::heartbeat:MailTo): Started xen-b + + Transition Summary: +- * Restart xen-a-fencing ( xen-b ) +- * Stop xen-b-fencing (xen-a) ++ * Restart xen-a-fencing ( xen-b ) due to resource definition change ++ * Stop xen-b-fencing ( xen-a ) due to node availability + * Migrate db ( xen-a -> xen-b ) + * Migrate core-101 ( xen-a -> xen-b ) + * Migrate core-200 ( xen-a -> xen-b ) +diff --git a/pengine/test10/order3.dot b/pengine/test10/order3.dot +index 1243eac..87b1b36 100644 +--- a/pengine/test10/order3.dot ++++ b/pengine/test10/order3.dot +@@ -1,7 +1,6 @@ + digraph "g" { + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = bold] +-"rsc1_monitor_0 node2" -> "rsc1_stop_0 node1" [ style = bold] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc1_start_0 node2" -> "rsc2_start_0 node2" [ style = bold] + "rsc1_start_0 node2" [ style=bold color="green" fontcolor="black" ] +@@ -9,7 +8,6 @@ + "rsc1_stop_0 node1" -> "rsc1_start_0 node2" [ style = bold] + "rsc1_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] +-"rsc2_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = bold] + "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" -> "rsc3_start_0 node2" [ style = bold] + "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] +@@ -19,7 +17,6 @@ + "rsc2_stop_0 node1" -> "rsc4_stop_0 node1" [ style = bold] + "rsc2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc3_monitor_0 node2" -> "rsc3_start_0 node2" [ style = bold] +-"rsc3_monitor_0 node2" -> "rsc3_stop_0 node1" [ style = bold] + "rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc3_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc3_stop_0 node1" -> "all_stopped" [ style = bold] +@@ -27,7 +24,6 @@ + "rsc3_stop_0 node1" -> "rsc3_start_0 node2" [ style = bold] + "rsc3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc4_monitor_0 node2" -> "rsc4_start_0 node2" [ style = bold] +-"rsc4_monitor_0 node2" -> "rsc4_stop_0 node1" [ style = bold] + "rsc4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc4_start_0 node2" -> "rsc2_start_0 node2" [ style = bold] + "rsc4_start_0 node2" [ style=bold color="green" fontcolor="black" ] +diff --git a/pengine/test10/order3.exp b/pengine/test10/order3.exp +index 655ad74..f4833e6 100644 +--- a/pengine/test10/order3.exp ++++ b/pengine/test10/order3.exp +@@ -24,9 +24,6 @@ + + + +- +- +- + + + +@@ -71,9 +68,6 @@ + + + +- +- +- + + + +@@ -113,11 +107,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -153,9 +143,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/order3.summary b/pengine/test10/order3.summary +index 6694c0e..b22ff75 100644 +--- a/pengine/test10/order3.summary ++++ b/pengine/test10/order3.summary +@@ -16,9 +16,9 @@ Transition Summary: + Executing cluster transition: + * Resource action: rsc1 monitor on node2 + * Resource action: rsc2 monitor on node2 ++ * Resource action: rsc3 stop on node1 + * Resource action: rsc3 monitor on node2 + * Resource action: rsc4 monitor on node2 +- * Resource action: rsc3 stop on node1 + * Resource action: rsc2 stop on node1 + * Resource action: rsc4 stop on node1 + * Resource action: rsc1 stop on node1 +diff --git a/pengine/test10/order5.dot b/pengine/test10/order5.dot +index db0ce44..a1ac025 100644 +--- a/pengine/test10/order5.dot ++++ b/pengine/test10/order5.dot +@@ -2,7 +2,6 @@ + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] +-"rsc2_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = bold] + "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_stop_0 node1" -> "all_stopped" [ style = bold] +@@ -10,7 +9,6 @@ + "rsc2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc4_monitor_0 node2" -> "rsc4_start_0 node2" [ style = bold] +-"rsc4_monitor_0 node2" -> "rsc4_stop_0 node1" [ style = bold] + "rsc4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc4_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc4_stop_0 node1" -> "all_stopped" [ style = bold] +@@ -18,7 +16,6 @@ + "rsc4_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc5_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc6_monitor_0 node1" -> "rsc6_start_0 node1" [ style = bold] +-"rsc6_monitor_0 node1" -> "rsc6_stop_0 node2" [ style = bold] + "rsc6_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc6_start_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc6_stop_0 node2" -> "all_stopped" [ style = bold] +@@ -26,7 +23,6 @@ + "rsc6_stop_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc7_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc8_monitor_0 node1" -> "rsc8_start_0 node1" [ style = bold] +-"rsc8_monitor_0 node1" -> "rsc8_stop_0 node2" [ style = bold] + "rsc8_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc8_start_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc8_stop_0 node2" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/order5.exp b/pengine/test10/order5.exp +index e019ca3..a0c2a15 100644 +--- a/pengine/test10/order5.exp ++++ b/pengine/test10/order5.exp +@@ -31,11 +31,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -78,11 +74,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -125,11 +117,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -172,11 +160,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/order5.summary b/pengine/test10/order5.summary +index db222c4..703f66f 100644 +--- a/pengine/test10/order5.summary ++++ b/pengine/test10/order5.summary +@@ -19,17 +19,17 @@ Transition Summary: + + Executing cluster transition: + * Resource action: rsc1 monitor on node2 ++ * Resource action: rsc2 stop on node1 + * Resource action: rsc2 monitor on node2 + * Resource action: rsc3 monitor on node2 ++ * Resource action: rsc4 stop on node1 + * Resource action: rsc4 monitor on node2 + * Resource action: rsc5 monitor on node1 ++ * Resource action: rsc6 stop on node2 + * Resource action: rsc6 monitor on node1 + * Resource action: rsc7 monitor on node1 +- * Resource action: rsc8 monitor on node1 +- * Resource action: rsc2 stop on node1 +- * Resource action: rsc4 stop on node1 +- * Resource action: rsc6 stop on node2 + * Resource action: rsc8 stop on node2 ++ * Resource action: rsc8 monitor on node1 + * Pseudo action: all_stopped + * Resource action: rsc2 start on node2 + * Resource action: rsc4 start on node2 +diff --git a/pengine/test10/order6.dot b/pengine/test10/order6.dot +index db0ce44..a1ac025 100644 +--- a/pengine/test10/order6.dot ++++ b/pengine/test10/order6.dot +@@ -2,7 +2,6 @@ + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] +-"rsc2_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = bold] + "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_stop_0 node1" -> "all_stopped" [ style = bold] +@@ -10,7 +9,6 @@ + "rsc2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc4_monitor_0 node2" -> "rsc4_start_0 node2" [ style = bold] +-"rsc4_monitor_0 node2" -> "rsc4_stop_0 node1" [ style = bold] + "rsc4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc4_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc4_stop_0 node1" -> "all_stopped" [ style = bold] +@@ -18,7 +16,6 @@ + "rsc4_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc5_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc6_monitor_0 node1" -> "rsc6_start_0 node1" [ style = bold] +-"rsc6_monitor_0 node1" -> "rsc6_stop_0 node2" [ style = bold] + "rsc6_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc6_start_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc6_stop_0 node2" -> "all_stopped" [ style = bold] +@@ -26,7 +23,6 @@ + "rsc6_stop_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc7_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc8_monitor_0 node1" -> "rsc8_start_0 node1" [ style = bold] +-"rsc8_monitor_0 node1" -> "rsc8_stop_0 node2" [ style = bold] + "rsc8_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc8_start_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc8_stop_0 node2" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/order6.exp b/pengine/test10/order6.exp +index d6eb81e..513f221 100644 +--- a/pengine/test10/order6.exp ++++ b/pengine/test10/order6.exp +@@ -31,11 +31,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -78,11 +74,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -125,11 +117,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -172,11 +160,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/order6.summary b/pengine/test10/order6.summary +index db222c4..703f66f 100644 +--- a/pengine/test10/order6.summary ++++ b/pengine/test10/order6.summary +@@ -19,17 +19,17 @@ Transition Summary: + + Executing cluster transition: + * Resource action: rsc1 monitor on node2 ++ * Resource action: rsc2 stop on node1 + * Resource action: rsc2 monitor on node2 + * Resource action: rsc3 monitor on node2 ++ * Resource action: rsc4 stop on node1 + * Resource action: rsc4 monitor on node2 + * Resource action: rsc5 monitor on node1 ++ * Resource action: rsc6 stop on node2 + * Resource action: rsc6 monitor on node1 + * Resource action: rsc7 monitor on node1 +- * Resource action: rsc8 monitor on node1 +- * Resource action: rsc2 stop on node1 +- * Resource action: rsc4 stop on node1 +- * Resource action: rsc6 stop on node2 + * Resource action: rsc8 stop on node2 ++ * Resource action: rsc8 monitor on node1 + * Pseudo action: all_stopped + * Resource action: rsc2 start on node2 + * Resource action: rsc4 start on node2 +diff --git a/pengine/test10/orphan-1.summary b/pengine/test10/orphan-1.summary +index 69bfb52..0ab96f4 100644 +--- a/pengine/test10/orphan-1.summary ++++ b/pengine/test10/orphan-1.summary +@@ -9,7 +9,7 @@ Online: [ c001n01 c001n02 c001n03 c001n08 ] + rsc_c001n08 (ocf::heartbeat:IPaddr): ORPHANED Started c001n08 + + Transition Summary: +- * Stop rsc_c001n08 (c001n08) ++ * Stop rsc_c001n08 ( c001n08 ) due to node availability + + Executing cluster transition: + * Resource action: DcIPaddr monitor on c001n08 +diff --git a/pengine/test10/orphan-2.summary b/pengine/test10/orphan-2.summary +index 7bc8221..e04363a 100644 +--- a/pengine/test10/orphan-2.summary ++++ b/pengine/test10/orphan-2.summary +@@ -9,7 +9,7 @@ Online: [ c001n01 c001n02 c001n03 c001n08 ] + rsc_c001n08 (ocf::heartbeat:IPaddr): ORPHANED Started c001n08 + + Transition Summary: +- * Stop rsc_c001n08 (c001n08) ++ * Stop rsc_c001n08 ( c001n08 ) due to node availability + + Executing cluster transition: + * Resource action: DcIPaddr monitor on c001n08 +diff --git a/pengine/test10/params-1.dot b/pengine/test10/params-1.dot +index 658d0c1..d44a701 100644 +--- a/pengine/test10/params-1.dot ++++ b/pengine/test10/params-1.dot +@@ -1,13 +1,10 @@ + digraph "g" { + "Cancel rsc_c001n02_monitor_5000 c001n02" [ style=bold color="green" fontcolor="black" ] + "DcIPaddr_monitor_0 c001n01" -> "DcIPaddr_start_0 c001n02" [ style = bold] +-"DcIPaddr_monitor_0 c001n01" -> "DcIPaddr_stop_0 c001n02" [ style = bold] + "DcIPaddr_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] + "DcIPaddr_monitor_0 c001n03" -> "DcIPaddr_start_0 c001n02" [ style = bold] +-"DcIPaddr_monitor_0 c001n03" -> "DcIPaddr_stop_0 c001n02" [ style = bold] + "DcIPaddr_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] + "DcIPaddr_monitor_0 c001n08" -> "DcIPaddr_start_0 c001n02" [ style = bold] +-"DcIPaddr_monitor_0 c001n08" -> "DcIPaddr_stop_0 c001n02" [ style = bold] + "DcIPaddr_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] + "DcIPaddr_monitor_5000 c001n02" [ style=bold color="green" fontcolor="black" ] + "DcIPaddr_start_0 c001n02" -> "DcIPaddr_monitor_5000 c001n02" [ style = bold] +diff --git a/pengine/test10/params-1.exp b/pengine/test10/params-1.exp +index d2efaf3..87e2669 100644 +--- a/pengine/test10/params-1.exp ++++ b/pengine/test10/params-1.exp +@@ -6,17 +6,7 @@ + + + +- +- +- +- +- +- +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/params-1.summary b/pengine/test10/params-1.summary +index 26fdecf..b237672 100644 +--- a/pengine/test10/params-1.summary ++++ b/pengine/test10/params-1.summary +@@ -9,12 +9,15 @@ Online: [ c001n01 c001n02 c001n03 c001n08 ] + rsc_c001n01 (ocf::heartbeat:IPaddr): Started c001n01 + + Transition Summary: +- * Restart DcIPaddr ( c001n02 ) ++ * Restart DcIPaddr ( c001n02 ) due to resource definition change + + Executing cluster transition: ++ * Resource action: DcIPaddr stop on c001n02 + * Resource action: DcIPaddr monitor on c001n08 + * Resource action: DcIPaddr monitor on c001n03 + * Resource action: DcIPaddr monitor on c001n01 ++ * Resource action: DcIPaddr start on c001n02 ++ * Resource action: DcIPaddr monitor=5000 on c001n02 + * Resource action: rsc_c001n08 monitor on c001n03 + * Resource action: rsc_c001n08 monitor on c001n02 + * Resource action: rsc_c001n08 monitor on c001n01 +@@ -30,9 +33,6 @@ Executing cluster transition: + * Resource action: rsc_c001n01 monitor on c001n08 + * Resource action: rsc_c001n01 monitor on c001n03 + * Resource action: rsc_c001n01 monitor on c001n02 +- * Resource action: DcIPaddr stop on c001n02 +- * Resource action: DcIPaddr start on c001n02 +- * Resource action: DcIPaddr monitor=5000 on c001n02 + * Pseudo action: all_stopped + + Revised cluster status: +diff --git a/pengine/test10/params-2.dot b/pengine/test10/params-2.dot +index 67f2873..162a5ae 100644 +--- a/pengine/test10/params-2.dot ++++ b/pengine/test10/params-2.dot +@@ -11,7 +11,6 @@ + "rsc2_monitor_0 node1" -> "rsc2_start_0 node2" [ style = bold] + "rsc2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc2_monitor_0 node3" -> "rsc2_start_0 node2" [ style = bold] +-"rsc2_monitor_0 node3" -> "rsc2_stop_0 node2" [ style = bold] + "rsc2_monitor_0 node3" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_stop_0 node2" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/params-2.exp b/pengine/test10/params-2.exp +index 3cbfe33..f6d7c53 100644 +--- a/pengine/test10/params-2.exp ++++ b/pengine/test10/params-2.exp +@@ -86,11 +86,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/params-2.summary b/pengine/test10/params-2.summary +index 97510f6..c19659a 100644 +--- a/pengine/test10/params-2.summary ++++ b/pengine/test10/params-2.summary +@@ -8,7 +8,7 @@ Online: [ node1 node2 node3 ] + + Transition Summary: + * Shutdown node1 +- * Stop rsc1 (node1) ++ * Stop rsc1 ( node1 ) due to node availability + * Restart rsc2 ( node2 ) + * Start rsc3 (node3) + +diff --git a/pengine/test10/params-5.dot b/pengine/test10/params-5.dot +index ee756dc..cb00964 100644 +--- a/pengine/test10/params-5.dot ++++ b/pengine/test10/params-5.dot +@@ -1,13 +1,10 @@ + digraph "g" { + "Cancel rsc_c001n02_monitor_5000 c001n02" [ style=bold color="green" fontcolor="black"] + "DcIPaddr_monitor_0 c001n01" -> "DcIPaddr_start_0 c001n02" [ style = bold] +-"DcIPaddr_monitor_0 c001n01" -> "DcIPaddr_stop_0 c001n02" [ style = bold] + "DcIPaddr_monitor_0 c001n01" [ style=bold color="green" fontcolor="black"] + "DcIPaddr_monitor_0 c001n03" -> "DcIPaddr_start_0 c001n02" [ style = bold] +-"DcIPaddr_monitor_0 c001n03" -> "DcIPaddr_stop_0 c001n02" [ style = bold] + "DcIPaddr_monitor_0 c001n03" [ style=bold color="green" fontcolor="black"] + "DcIPaddr_monitor_0 c001n08" -> "DcIPaddr_start_0 c001n02" [ style = bold] +-"DcIPaddr_monitor_0 c001n08" -> "DcIPaddr_stop_0 c001n02" [ style = bold] + "DcIPaddr_monitor_0 c001n08" [ style=bold color="green" fontcolor="black"] + "DcIPaddr_monitor_5000 c001n02" [ style=bold color="green" fontcolor="black"] + "DcIPaddr_start_0 c001n02" -> "DcIPaddr_monitor_5000 c001n02" [ style = bold] +diff --git a/pengine/test10/params-5.exp b/pengine/test10/params-5.exp +index 1208fd0..788dd8b 100644 +--- a/pengine/test10/params-5.exp ++++ b/pengine/test10/params-5.exp +@@ -6,17 +6,7 @@ + + + +- +- +- +- +- +- +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/params-5.summary b/pengine/test10/params-5.summary +index 26fdecf..b237672 100644 +--- a/pengine/test10/params-5.summary ++++ b/pengine/test10/params-5.summary +@@ -9,12 +9,15 @@ Online: [ c001n01 c001n02 c001n03 c001n08 ] + rsc_c001n01 (ocf::heartbeat:IPaddr): Started c001n01 + + Transition Summary: +- * Restart DcIPaddr ( c001n02 ) ++ * Restart DcIPaddr ( c001n02 ) due to resource definition change + + Executing cluster transition: ++ * Resource action: DcIPaddr stop on c001n02 + * Resource action: DcIPaddr monitor on c001n08 + * Resource action: DcIPaddr monitor on c001n03 + * Resource action: DcIPaddr monitor on c001n01 ++ * Resource action: DcIPaddr start on c001n02 ++ * Resource action: DcIPaddr monitor=5000 on c001n02 + * Resource action: rsc_c001n08 monitor on c001n03 + * Resource action: rsc_c001n08 monitor on c001n02 + * Resource action: rsc_c001n08 monitor on c001n01 +@@ -30,9 +33,6 @@ Executing cluster transition: + * Resource action: rsc_c001n01 monitor on c001n08 + * Resource action: rsc_c001n01 monitor on c001n03 + * Resource action: rsc_c001n01 monitor on c001n02 +- * Resource action: DcIPaddr stop on c001n02 +- * Resource action: DcIPaddr start on c001n02 +- * Resource action: DcIPaddr monitor=5000 on c001n02 + * Pseudo action: all_stopped + + Revised cluster status: +diff --git a/pengine/test10/placement-capacity.summary b/pengine/test10/placement-capacity.summary +index 4d58b57..232c3f2 100644 +--- a/pengine/test10/placement-capacity.summary ++++ b/pengine/test10/placement-capacity.summary +@@ -6,7 +6,7 @@ Online: [ node1 node2 ] + rsc2 (ocf::pacemaker:Dummy): Started node2 + + Transition Summary: +- * Stop rsc1 (node1) ++ * Stop rsc1 ( node1 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node1 +diff --git a/pengine/test10/placement-location.summary b/pengine/test10/placement-location.summary +index 7a90533..2a5c9f5 100644 +--- a/pengine/test10/placement-location.summary ++++ b/pengine/test10/placement-location.summary +@@ -7,7 +7,7 @@ Online: [ node2 ] + rsc2 (ocf::pacemaker:Dummy): Started node2 + + Transition Summary: +- * Stop rsc1 (node1) ++ * Stop rsc1 ( node1 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node1 +diff --git a/pengine/test10/placement-priority.summary b/pengine/test10/placement-priority.summary +index 5781801..1d59837 100644 +--- a/pengine/test10/placement-priority.summary ++++ b/pengine/test10/placement-priority.summary +@@ -7,7 +7,7 @@ Online: [ node2 ] + rsc1 (ocf::pacemaker:Dummy): Started node1 + + Transition Summary: +- * Stop rsc1 (node1) ++ * Stop rsc1 ( node1 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node1 +diff --git a/pengine/test10/placement-stickiness.summary b/pengine/test10/placement-stickiness.summary +index 7a90533..2a5c9f5 100644 +--- a/pengine/test10/placement-stickiness.summary ++++ b/pengine/test10/placement-stickiness.summary +@@ -7,7 +7,7 @@ Online: [ node2 ] + rsc2 (ocf::pacemaker:Dummy): Started node2 + + Transition Summary: +- * Stop rsc1 (node1) ++ * Stop rsc1 ( node1 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node1 +diff --git a/pengine/test10/probe-2.summary b/pengine/test10/probe-2.summary +index 7e74efc..7b8b124 100644 +--- a/pengine/test10/probe-2.summary ++++ b/pengine/test10/probe-2.summary +@@ -41,7 +41,7 @@ Transition Summary: + * Stop mysql-proxy:1 (wc02) due to node availability + * Stop fs_www:1 (wc02) due to node availability + * Stop apache2:1 (wc02) due to node availability +- * Restart stonith_rackpdu:0 ( wc01 ) ++ * Restart stonith_rackpdu:0 ( wc01 ) due to resource definition change + * Stop stonith_rackpdu:1 (wc02) due to node availability + + Executing cluster transition: +diff --git a/pengine/test10/quorum-1.dot b/pengine/test10/quorum-1.dot +index 8918d24..84dc105 100644 +--- a/pengine/test10/quorum-1.dot ++++ b/pengine/test10/quorum-1.dot +@@ -2,7 +2,6 @@ + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] +-"rsc2_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = bold] + "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_stop_0 node1" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/quorum-1.exp b/pengine/test10/quorum-1.exp +index 6f2f40f..65bfe1d 100644 +--- a/pengine/test10/quorum-1.exp ++++ b/pengine/test10/quorum-1.exp +@@ -31,11 +31,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/quorum-1.summary b/pengine/test10/quorum-1.summary +index fd01941..813a91a 100644 +--- a/pengine/test10/quorum-1.summary ++++ b/pengine/test10/quorum-1.summary +@@ -12,13 +12,13 @@ Transition Summary: + + Executing cluster transition: + * Resource action: rsc1 monitor on node2 ++ * Resource action: rsc2 stop on node1 + * Resource action: rsc2 monitor on node2 + * Resource action: rsc3 monitor on node2 + * Resource action: rsc3 monitor on node1 +- * Resource action: rsc2 stop on node1 +- * Resource action: rsc3 start on node1 + * Pseudo action: all_stopped + * Resource action: rsc2 start on node2 ++ * Resource action: rsc3 start on node1 + + Revised cluster status: + Online: [ node1 node2 ] +diff --git a/pengine/test10/quorum-2.dot b/pengine/test10/quorum-2.dot +index cff2834..6fbb758 100644 +--- a/pengine/test10/quorum-2.dot ++++ b/pengine/test10/quorum-2.dot +@@ -2,7 +2,6 @@ + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] +-"rsc2_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = bold] + "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_stop_0 node1" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/quorum-2.exp b/pengine/test10/quorum-2.exp +index 002cc16..c9ea21b 100644 +--- a/pengine/test10/quorum-2.exp ++++ b/pengine/test10/quorum-2.exp +@@ -31,11 +31,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/quorum-2.summary b/pengine/test10/quorum-2.summary +index f603bfa..fdc8976 100644 +--- a/pengine/test10/quorum-2.summary ++++ b/pengine/test10/quorum-2.summary +@@ -12,10 +12,10 @@ Transition Summary: + + Executing cluster transition: + * Resource action: rsc1 monitor on node2 ++ * Resource action: rsc2 stop on node1 + * Resource action: rsc2 monitor on node2 + * Resource action: rsc3 monitor on node2 + * Resource action: rsc3 monitor on node1 +- * Resource action: rsc2 stop on node1 + * Pseudo action: all_stopped + * Resource action: rsc2 start on node2 + +diff --git a/pengine/test10/quorum-3.dot b/pengine/test10/quorum-3.dot +index 88eff9f..e3cf205 100644 +--- a/pengine/test10/quorum-3.dot ++++ b/pengine/test10/quorum-3.dot +@@ -1,14 +1,12 @@ + digraph "g" { + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "rsc1_monitor_0 node2" -> "rsc1_start_0 node1" [ style = dashed] +-"rsc1_monitor_0 node2" -> "rsc1_stop_0 node1" [ style = bold] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc1_start_0 node1" [ style=dashed color="red" fontcolor="black" ] + "rsc1_stop_0 node1" -> "all_stopped" [ style = bold] + "rsc1_stop_0 node1" -> "rsc1_start_0 node1" [ style = dashed] + "rsc1_stop_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = dashed] +-"rsc2_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = bold] + "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" [ style=dashed color="red" fontcolor="black" ] + "rsc2_stop_0 node1" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/quorum-3.exp b/pengine/test10/quorum-3.exp +index e263aeb..bf93855 100644 +--- a/pengine/test10/quorum-3.exp ++++ b/pengine/test10/quorum-3.exp +@@ -6,11 +6,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -28,11 +24,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/quorum-3.summary b/pengine/test10/quorum-3.summary +index cda0278..50adf18 100644 +--- a/pengine/test10/quorum-3.summary ++++ b/pengine/test10/quorum-3.summary +@@ -12,12 +12,12 @@ Transition Summary: + * Start rsc3 ( node1 ) due to no quorum (blocked) + + Executing cluster transition: ++ * Resource action: rsc1 stop on node1 + * Resource action: rsc1 monitor on node2 ++ * Resource action: rsc2 stop on node1 + * Resource action: rsc2 monitor on node2 + * Resource action: rsc3 monitor on node2 + * Resource action: rsc3 monitor on node1 +- * Resource action: rsc1 stop on node1 +- * Resource action: rsc2 stop on node1 + * Pseudo action: all_stopped + + Revised cluster status: +diff --git a/pengine/test10/rec-node-10.dot b/pengine/test10/rec-node-10.dot +index e66dfa1..fac66e6 100644 +--- a/pengine/test10/rec-node-10.dot ++++ b/pengine/test10/rec-node-10.dot +@@ -1,14 +1,12 @@ + digraph "g" { + "all_stopped" [ style=dashed color="red" fontcolor="orange" ] + "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = dashed] +-"rsc1_monitor_0 node2" -> "rsc1_stop_0 node1" [ style = dashed] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc1_start_0 node2" [ style=dashed color="red" fontcolor="black" ] + "rsc1_stop_0 node1" -> "all_stopped" [ style = dashed] + "rsc1_stop_0 node1" -> "rsc1_start_0 node2" [ style = dashed] + "rsc1_stop_0 node1" [ style=dashed color="red" fontcolor="black" ] + "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = dashed] +-"rsc2_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = dashed] + "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" [ style=dashed color="red" fontcolor="black" ] + "rsc2_stop_0 node1" -> "all_stopped" [ style = dashed] +diff --git a/pengine/test10/rec-node-11.dot b/pengine/test10/rec-node-11.dot +index db3bc09..3b54385 100644 +--- a/pengine/test10/rec-node-11.dot ++++ b/pengine/test10/rec-node-11.dot +@@ -14,7 +14,6 @@ digraph "g" { + "group1_stopped_0" -> "rsc3_stop_0 node2" [ style = bold] + "group1_stopped_0" [ style=bold color="green" fontcolor="orange" ] + "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = bold] +-"rsc1_monitor_0 node2" -> "rsc1_stop_0 node1" [ style = bold] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc1_start_0 node2" -> "group1_running_0" [ style = bold] + "rsc1_start_0 node2" -> "rsc2_start_0 node2" [ style = bold] +@@ -24,7 +23,6 @@ digraph "g" { + "rsc1_stop_0 node1" -> "rsc1_start_0 node2" [ style = bold] + "rsc1_stop_0 node1" [ style=bold color="green" fontcolor="orange" ] + "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] +-"rsc2_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = bold] + "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" -> "group1_running_0" [ style = bold] + "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] +diff --git a/pengine/test10/rec-node-11.exp b/pengine/test10/rec-node-11.exp +index 6c7efcc..352771a 100644 +--- a/pengine/test10/rec-node-11.exp ++++ b/pengine/test10/rec-node-11.exp +@@ -120,9 +120,6 @@ + + + +- +- +- + + + +@@ -175,9 +172,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/rec-node-4.dot b/pengine/test10/rec-node-4.dot +index c1b46b9..2e37e11 100644 +--- a/pengine/test10/rec-node-4.dot ++++ b/pengine/test10/rec-node-4.dot +@@ -2,14 +2,12 @@ digraph "g" { + "all_stopped" -> "stonith-1_start_0 node2" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = bold] +-"rsc1_monitor_0 node2" -> "rsc1_stop_0 node1" [ style = bold] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc1_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc1_stop_0 node1" -> "all_stopped" [ style = bold] + "rsc1_stop_0 node1" -> "rsc1_start_0 node2" [ style = bold] + "rsc1_stop_0 node1" [ style=bold color="green" fontcolor="orange" ] + "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] +-"rsc2_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = bold] + "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_stop_0 node1" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/rec-node-4.exp b/pengine/test10/rec-node-4.exp +index 2aaa34b..61ec54c 100644 +--- a/pengine/test10/rec-node-4.exp ++++ b/pengine/test10/rec-node-4.exp +@@ -53,9 +53,6 @@ + + + +- +- +- + + + +@@ -96,9 +93,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/rec-node-6.dot b/pengine/test10/rec-node-6.dot +index c1b46b9..2e37e11 100644 +--- a/pengine/test10/rec-node-6.dot ++++ b/pengine/test10/rec-node-6.dot +@@ -2,14 +2,12 @@ digraph "g" { + "all_stopped" -> "stonith-1_start_0 node2" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = bold] +-"rsc1_monitor_0 node2" -> "rsc1_stop_0 node1" [ style = bold] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc1_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc1_stop_0 node1" -> "all_stopped" [ style = bold] + "rsc1_stop_0 node1" -> "rsc1_start_0 node2" [ style = bold] + "rsc1_stop_0 node1" [ style=bold color="green" fontcolor="orange" ] + "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] +-"rsc2_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = bold] + "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_stop_0 node1" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/rec-node-6.exp b/pengine/test10/rec-node-6.exp +index 2aaa34b..61ec54c 100644 +--- a/pengine/test10/rec-node-6.exp ++++ b/pengine/test10/rec-node-6.exp +@@ -53,9 +53,6 @@ + + + +- +- +- + + + +@@ -96,9 +93,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/rec-node-7.dot b/pengine/test10/rec-node-7.dot +index c1b46b9..2e37e11 100644 +--- a/pengine/test10/rec-node-7.dot ++++ b/pengine/test10/rec-node-7.dot +@@ -2,14 +2,12 @@ digraph "g" { + "all_stopped" -> "stonith-1_start_0 node2" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange" ] + "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = bold] +-"rsc1_monitor_0 node2" -> "rsc1_stop_0 node1" [ style = bold] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc1_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc1_stop_0 node1" -> "all_stopped" [ style = bold] + "rsc1_stop_0 node1" -> "rsc1_start_0 node2" [ style = bold] + "rsc1_stop_0 node1" [ style=bold color="green" fontcolor="orange" ] + "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] +-"rsc2_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = bold] + "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_stop_0 node1" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/rec-node-7.exp b/pengine/test10/rec-node-7.exp +index 2aaa34b..61ec54c 100644 +--- a/pengine/test10/rec-node-7.exp ++++ b/pengine/test10/rec-node-7.exp +@@ -53,9 +53,6 @@ + + + +- +- +- + + + +@@ -96,9 +93,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/rec-node-8.dot b/pengine/test10/rec-node-8.dot +index 6621154..f5c426a 100644 +--- a/pengine/test10/rec-node-8.dot ++++ b/pengine/test10/rec-node-8.dot +@@ -1,14 +1,12 @@ + digraph "g" { + "all_stopped" [ style=dashed color="red" fontcolor="orange" ] + "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = dashed] +-"rsc1_monitor_0 node2" -> "rsc1_stop_0 node1" [ style = dashed] + "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc1_start_0 node2" [ style=dashed color="red" fontcolor="black" ] + "rsc1_stop_0 node1" -> "all_stopped" [ style = dashed] + "rsc1_stop_0 node1" -> "rsc1_start_0 node2" [ style = dashed] + "rsc1_stop_0 node1" [ style=dashed color="red" fontcolor="black" ] + "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = dashed] +-"rsc2_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = dashed] + "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node2" [ style=dashed color="red" fontcolor="black" ] + "rsc2_stop_0 node1" -> "all_stopped" [ style = dashed] +diff --git a/pengine/test10/rec-rsc-0.summary b/pengine/test10/rec-rsc-0.summary +index e33ffeb..b3d4686 100644 +--- a/pengine/test10/rec-rsc-0.summary ++++ b/pengine/test10/rec-rsc-0.summary +@@ -5,8 +5,8 @@ Online: [ node1 node2 ] + rsc1 (heartbeat:apache): FAILED [ node1 node2 ] + + Transition Summary: +- * Stop rsc1 (node1) +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node1 ) due to node availability ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node2 +diff --git a/pengine/test10/rec-rsc-5.dot b/pengine/test10/rec-rsc-5.dot +index 7a20e74..d5fc8bf 100644 +--- a/pengine/test10/rec-rsc-5.dot ++++ b/pengine/test10/rec-rsc-5.dot +@@ -8,7 +8,6 @@ digraph "g" { + "rsc1_stop_0 node2" -> "rsc1_start_0 node1" [ style = bold] + "rsc1_stop_0 node2" [ style=bold color="green" fontcolor="orange" ] + "rsc2_monitor_0 node1" -> "rsc2_start_0 node1" [ style = bold] +-"rsc2_monitor_0 node1" -> "rsc2_stop_0 node2" [ style = bold] + "rsc2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc2_start_0 node1" [ style=bold color="green" fontcolor="black" ] + "rsc2_stop_0 node2" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/rec-rsc-5.exp b/pengine/test10/rec-rsc-5.exp +index 3092adf..792b328 100644 +--- a/pengine/test10/rec-rsc-5.exp ++++ b/pengine/test10/rec-rsc-5.exp +@@ -93,9 +93,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/rec-rsc-7.summary b/pengine/test10/rec-rsc-7.summary +index d32bdba..5238323 100644 +--- a/pengine/test10/rec-rsc-7.summary ++++ b/pengine/test10/rec-rsc-7.summary +@@ -5,8 +5,8 @@ Online: [ node1 node2 ] + rsc1 (heartbeat:apache): Started [ node1 node2 ] + + Transition Summary: +- * Stop rsc1 (node1) +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node1 ) due to node availability ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node2 +diff --git a/pengine/test10/remote-disable.summary b/pengine/test10/remote-disable.summary +index 2ec1748..f5de71f 100644 +--- a/pengine/test10/remote-disable.summary ++++ b/pengine/test10/remote-disable.summary +@@ -13,7 +13,7 @@ RemoteOnline: [ remote1 ] + + Transition Summary: + * Stop remote1 (18builder) due to node availability +- * Stop FAKE2 (remote1) ++ * Stop FAKE2 ( remote1 ) due to node availability + + Executing cluster transition: + * Resource action: FAKE2 stop on remote1 +diff --git a/pengine/test10/remote-fence-before-reconnect.summary b/pengine/test10/remote-fence-before-reconnect.summary +index 3aee89d..0761572 100644 +--- a/pengine/test10/remote-fence-before-reconnect.summary ++++ b/pengine/test10/remote-fence-before-reconnect.summary +@@ -13,7 +13,7 @@ Online: [ c7auto1 c7auto2 c7auto3 ] + + Transition Summary: + * Fence (reboot) c7auto4 'remote connection is unrecoverable' +- * Stop c7auto4 (c7auto1) ++ * Stop c7auto4 ( c7auto1 ) due to node availability + * Move fake2 ( c7auto4 -> c7auto1 ) + + Executing cluster transition: +diff --git a/pengine/test10/remote-fence-unclean-3.summary b/pengine/test10/remote-fence-unclean-3.summary +index c866c4e..5abed37 100644 +--- a/pengine/test10/remote-fence-unclean-3.summary ++++ b/pengine/test10/remote-fence-unclean-3.summary +@@ -36,7 +36,7 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bund + Transition Summary: + * Fence (reboot) overcloud-novacompute-0 'the connection is unrecoverable' + * Start fence1 (overcloud-controller-0) +- * Stop overcloud-novacompute-0 (overcloud-controller-0) ++ * Stop overcloud-novacompute-0 ( overcloud-controller-0 ) due to node availability + + Executing cluster transition: + * Resource action: fence1 monitor on overcloud-controller-2 +diff --git a/pengine/test10/remote-fence-unclean-3.xml b/pengine/test10/remote-fence-unclean-3.xml +index 66a4d8b..b3017b7 100644 +--- a/pengine/test10/remote-fence-unclean-3.xml ++++ b/pengine/test10/remote-fence-unclean-3.xml +@@ -396,8 +396,8 @@ + + + +- +- ++ ++ + + + +@@ -416,8 +416,8 @@ + + + +- +- ++ ++ + + + +@@ -430,8 +430,8 @@ + + + +- +- ++ ++ + + + +@@ -464,8 +464,8 @@ + + + +- +- ++ ++ + + + +@@ -491,8 +491,8 @@ + + + +- +- ++ ++ + + + +@@ -502,8 +502,8 @@ + + + +- +- ++ ++ + + + +@@ -522,8 +522,8 @@ + + + +- +- ++ ++ + + + +@@ -550,8 +550,8 @@ + + + +- +- ++ ++ + + + +@@ -563,8 +563,8 @@ + + + +- +- ++ ++ + + + +@@ -587,16 +587,16 @@ + + + +- +- ++ ++ + + + + + + +- +- ++ ++ + + + +@@ -609,8 +609,8 @@ + + + +- +- ++ ++ + + + +@@ -649,12 +649,12 @@ + + + +- +- ++ ++ + + +- +- ++ ++ + + + +diff --git a/pengine/test10/remote-fence-unclean2.summary b/pengine/test10/remote-fence-unclean2.summary +index bf7f907..2538823 100644 +--- a/pengine/test10/remote-fence-unclean2.summary ++++ b/pengine/test10/remote-fence-unclean2.summary +@@ -11,7 +11,7 @@ OFFLINE: [ rhel7-alt3 ] + + Transition Summary: + * Fence (reboot) rhel7-alt4 'fake is active there (fencing will be revoked if remote connection can be re-established elsewhere)' +- * Stop fake (rhel7-alt4) ++ * Stop fake ( rhel7-alt4 ) due to node availability + + Executing cluster transition: + * Fencing rhel7-alt4 (reboot) +diff --git a/pengine/test10/remote-probe-disable.summary b/pengine/test10/remote-probe-disable.summary +index 1824da6..527120f 100644 +--- a/pengine/test10/remote-probe-disable.summary ++++ b/pengine/test10/remote-probe-disable.summary +@@ -12,7 +12,7 @@ RemoteOnline: [ remote1 ] + FAKE4 (ocf::heartbeat:Dummy): Started 18node1 + + Transition Summary: +- * Stop remote1 (18builder) ++ * Stop remote1 ( 18builder ) due to node availability + + Executing cluster transition: + * Resource action: FAKE1 monitor on remote1 +diff --git a/pengine/test10/remote-reconnect-delay.summary b/pengine/test10/remote-reconnect-delay.summary +index ea11483..bd46eae 100644 +--- a/pengine/test10/remote-reconnect-delay.summary ++++ b/pengine/test10/remote-reconnect-delay.summary +@@ -28,7 +28,7 @@ RemoteOFFLINE: [ remote-rhel7-3 ] + remote-rsc (ocf::heartbeat:Dummy): Started rhel7-1 + + Transition Summary: +- * Restart Fencing ( rhel7-2 ) ++ * Restart Fencing ( rhel7-2 ) due to resource definition change + + Executing cluster transition: + * Resource action: Fencing stop on rhel7-2 +diff --git a/pengine/test10/remote-recover-all.summary b/pengine/test10/remote-recover-all.summary +index de31212..6c9f058 100644 +--- a/pengine/test10/remote-recover-all.summary ++++ b/pengine/test10/remote-recover-all.summary +@@ -51,8 +51,8 @@ Transition Summary: + * Move ip-172.17.1.17 ( controller-1 -> controller-2 ) + * Move ip-172.17.4.11 ( controller-1 -> controller-2 ) + * Stop haproxy:0 (controller-1) due to node availability +- * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) +- * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) ++ * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) due to resource definition change ++ * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) due to resource definition change + * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) + + Executing cluster transition: +diff --git a/pengine/test10/remote-recover-connection.summary b/pengine/test10/remote-recover-connection.summary +index 8e91068..b0433fe 100644 +--- a/pengine/test10/remote-recover-connection.summary ++++ b/pengine/test10/remote-recover-connection.summary +@@ -47,8 +47,8 @@ Transition Summary: + * Move ip-172.17.1.17 ( controller-1 -> controller-2 ) + * Move ip-172.17.4.11 ( controller-1 -> controller-2 ) + * Stop haproxy:0 (controller-1) due to node availability +- * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) +- * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) ++ * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) due to resource definition change ++ * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) due to resource definition change + * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) + + Executing cluster transition: +diff --git a/pengine/test10/remote-recover-no-resources.summary b/pengine/test10/remote-recover-no-resources.summary +index c05e355..b682e5f 100644 +--- a/pengine/test10/remote-recover-no-resources.summary ++++ b/pengine/test10/remote-recover-no-resources.summary +@@ -42,15 +42,15 @@ Transition Summary: + * Fence (reboot) controller-1 'peer is no longer part of the cluster' + * Stop messaging-1 (controller-1) due to node availability + * Move galera-0 ( controller-1 -> controller-2 ) +- * Stop galera-2 (controller-1) ++ * Stop galera-2 ( controller-1 ) due to node availability + * Stop rabbitmq:2 (messaging-1) due to node availability + * Stop redis:0 ( Slave controller-1 ) due to node availability + * Move ip-172.17.1.14 ( controller-1 -> controller-2 ) + * Move ip-172.17.1.17 ( controller-1 -> controller-2 ) + * Move ip-172.17.4.11 ( controller-1 -> controller-2 ) + * Stop haproxy:0 (controller-1) due to node availability +- * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) +- * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) ++ * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) due to resource definition change ++ * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) due to resource definition change + * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) + + Executing cluster transition: +diff --git a/pengine/test10/remote-recover-unknown.summary b/pengine/test10/remote-recover-unknown.summary +index bfbe7d3..09f10d8 100644 +--- a/pengine/test10/remote-recover-unknown.summary ++++ b/pengine/test10/remote-recover-unknown.summary +@@ -50,8 +50,8 @@ Transition Summary: + * Move ip-172.17.1.17 ( controller-1 -> controller-2 ) + * Move ip-172.17.4.11 ( controller-1 -> controller-2 ) + * Stop haproxy:0 (controller-1) due to node availability +- * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) +- * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) ++ * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) due to resource definition change ++ * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) due to resource definition change + * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) + + Executing cluster transition: +diff --git a/pengine/test10/remote-recovery.summary b/pengine/test10/remote-recovery.summary +index 8e91068..b0433fe 100644 +--- a/pengine/test10/remote-recovery.summary ++++ b/pengine/test10/remote-recovery.summary +@@ -47,8 +47,8 @@ Transition Summary: + * Move ip-172.17.1.17 ( controller-1 -> controller-2 ) + * Move ip-172.17.4.11 ( controller-1 -> controller-2 ) + * Stop haproxy:0 (controller-1) due to node availability +- * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) +- * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) ++ * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) due to resource definition change ++ * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) due to resource definition change + * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) + + Executing cluster transition: +diff --git a/pengine/test10/remote-startup-probes.dot b/pengine/test10/remote-startup-probes.dot +index 573bb3c..7174acf 100644 +--- a/pengine/test10/remote-startup-probes.dot ++++ b/pengine/test10/remote-startup-probes.dot +@@ -1,6 +1,5 @@ + digraph "g" { + "FAKE1_monitor_0 remote1" -> "FAKE1_start_0 18node2" [ style = bold] +-"FAKE1_monitor_0 remote1" -> "FAKE1_stop_0 18builder" [ style = bold] + "FAKE1_monitor_0 remote1" [ style=bold color="green" fontcolor="black"] + "FAKE1_monitor_60000 18node2" [ style=bold color="green" fontcolor="black"] + "FAKE1_start_0 18node2" -> "FAKE1_monitor_60000 18node2" [ style = bold] +@@ -9,7 +8,6 @@ + "FAKE1_stop_0 18builder" -> "all_stopped" [ style = bold] + "FAKE1_stop_0 18builder" [ style=bold color="green" fontcolor="black"] + "FAKE2_monitor_0 remote1" -> "FAKE2_start_0 remote1" [ style = bold] +-"FAKE2_monitor_0 remote1" -> "FAKE2_stop_0 18node2" [ style = bold] + "FAKE2_monitor_0 remote1" [ style=bold color="green" fontcolor="black"] + "FAKE2_monitor_60000 remote1" [ style=bold color="green" fontcolor="black"] + "FAKE2_start_0 remote1" -> "FAKE2_monitor_60000 remote1" [ style = bold] +diff --git a/pengine/test10/remote-startup-probes.exp b/pengine/test10/remote-startup-probes.exp +index 497e481..7ab0693 100644 +--- a/pengine/test10/remote-startup-probes.exp ++++ b/pengine/test10/remote-startup-probes.exp +@@ -57,11 +57,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -118,11 +114,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/remote-startup-probes.summary b/pengine/test10/remote-startup-probes.summary +index f47bf47..3e21d65 100644 +--- a/pengine/test10/remote-startup-probes.summary ++++ b/pengine/test10/remote-startup-probes.summary +@@ -17,14 +17,14 @@ Transition Summary: + + Executing cluster transition: + * Resource action: remote1 start on 18builder ++ * Resource action: FAKE1 stop on 18builder + * Resource action: FAKE1 monitor on remote1 ++ * Resource action: FAKE2 stop on 18node2 + * Resource action: FAKE2 monitor on remote1 + * Resource action: FAKE3 monitor on remote1 + * Resource action: FAKE4 monitor on remote1 +- * Resource action: remote1 monitor=60000 on 18builder +- * Resource action: FAKE1 stop on 18builder +- * Resource action: FAKE2 stop on 18node2 + * Pseudo action: all_stopped ++ * Resource action: remote1 monitor=60000 on 18builder + * Resource action: FAKE1 start on 18node2 + * Resource action: FAKE2 start on remote1 + * Resource action: FAKE1 monitor=60000 on 18node2 +diff --git a/pengine/test10/rsc-discovery-per-node.dot b/pengine/test10/rsc-discovery-per-node.dot +index 680e145..fa35cd8 100644 +--- a/pengine/test10/rsc-discovery-per-node.dot ++++ b/pengine/test10/rsc-discovery-per-node.dot +@@ -13,10 +13,8 @@ + "FAKE1_start_0 18node2" -> "FAKE1_monitor_60000 18node2" [ style = bold] + "FAKE1_start_0 18node2" [ style=bold color="green" fontcolor="black"] + "FAKE2_monitor_0 18node3" -> "FAKE2_start_0 18node3" [ style = bold] +-"FAKE2_monitor_0 18node3" -> "FAKE2_stop_0 18node2" [ style = bold] + "FAKE2_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] + "FAKE2_monitor_0 18node4" -> "FAKE2_start_0 18node3" [ style = bold] +-"FAKE2_monitor_0 18node4" -> "FAKE2_stop_0 18node2" [ style = bold] + "FAKE2_monitor_0 18node4" [ style=bold color="green" fontcolor="black"] + "FAKE2_monitor_60000 18node3" [ style=bold color="green" fontcolor="black"] + "FAKE2_start_0 18node3" -> "FAKE2_monitor_60000 18node3" [ style = bold] +@@ -25,10 +23,8 @@ + "FAKE2_stop_0 18node2" -> "all_stopped" [ style = bold] + "FAKE2_stop_0 18node2" [ style=bold color="green" fontcolor="black"] + "FAKE3_monitor_0 18node3" -> "FAKE3_start_0 18node4" [ style = bold] +-"FAKE3_monitor_0 18node3" -> "FAKE3_stop_0 18builder" [ style = bold] + "FAKE3_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] + "FAKE3_monitor_0 18node4" -> "FAKE3_start_0 18node4" [ style = bold] +-"FAKE3_monitor_0 18node4" -> "FAKE3_stop_0 18builder" [ style = bold] + "FAKE3_monitor_0 18node4" [ style=bold color="green" fontcolor="black"] + "FAKE3_monitor_60000 18node4" [ style=bold color="green" fontcolor="black"] + "FAKE3_start_0 18node4" -> "FAKE3_monitor_60000 18node4" [ style = bold] +@@ -37,10 +33,8 @@ + "FAKE3_stop_0 18builder" -> "all_stopped" [ style = bold] + "FAKE3_stop_0 18builder" [ style=bold color="green" fontcolor="black"] + "FAKE4_monitor_0 18node3" -> "FAKE4_start_0 remote1" [ style = bold] +-"FAKE4_monitor_0 18node3" -> "FAKE4_stop_0 18node1" [ style = bold] + "FAKE4_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] + "FAKE4_monitor_0 18node4" -> "FAKE4_start_0 remote1" [ style = bold] +-"FAKE4_monitor_0 18node4" -> "FAKE4_stop_0 18node1" [ style = bold] + "FAKE4_monitor_0 18node4" [ style=bold color="green" fontcolor="black"] + "FAKE4_monitor_60000 remote1" [ style=bold color="green" fontcolor="black"] + "FAKE4_start_0 remote1" -> "FAKE4_monitor_60000 remote1" [ style = bold] +diff --git a/pengine/test10/rsc-discovery-per-node.exp b/pengine/test10/rsc-discovery-per-node.exp +index a429298..434d9d0 100644 +--- a/pengine/test10/rsc-discovery-per-node.exp ++++ b/pengine/test10/rsc-discovery-per-node.exp +@@ -186,14 +186,7 @@ + + + +- +- +- +- +- +- +- +- ++ + + + +@@ -252,14 +245,7 @@ + + + +- +- +- +- +- +- +- +- ++ + + + +@@ -324,14 +310,7 @@ + + + +- +- +- +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/rsc-discovery-per-node.summary b/pengine/test10/rsc-discovery-per-node.summary +index 13dff85..88b4623 100644 +--- a/pengine/test10/rsc-discovery-per-node.summary ++++ b/pengine/test10/rsc-discovery-per-node.summary +@@ -45,10 +45,13 @@ Executing cluster transition: + * Resource action: FAKE1 monitor on 18node2 + * Resource action: FAKE1 monitor on 18node1 + * Resource action: FAKE1 monitor on 18builder ++ * Resource action: FAKE2 stop on 18node2 + * Resource action: FAKE2 monitor on 18node4 + * Resource action: FAKE2 monitor on 18node3 ++ * Resource action: FAKE3 stop on 18builder + * Resource action: FAKE3 monitor on 18node4 + * Resource action: FAKE3 monitor on 18node3 ++ * Resource action: FAKE4 stop on 18node1 + * Resource action: FAKE4 monitor on 18node4 + * Resource action: FAKE4 monitor on 18node3 + * Resource action: FAKE5 monitor on 18node4 +@@ -68,11 +71,12 @@ Executing cluster transition: + * Resource action: FAKECLONE2:3 monitor on 18node4 + * Resource action: FAKECLONE2:5 monitor on 18builder + * Pseudo action: FAKECLONE2-clone_start_0 ++ * Pseudo action: all_stopped + * Resource action: remote1 start on 18builder + * Resource action: FAKE1 start on 18node2 +- * Resource action: FAKE2 stop on 18node2 +- * Resource action: FAKE3 stop on 18builder +- * Resource action: FAKE4 stop on 18node1 ++ * Resource action: FAKE2 start on 18node3 ++ * Resource action: FAKE3 start on 18node4 ++ * Resource action: FAKE4 start on remote1 + * Resource action: FAKE5 start on 18builder + * Resource action: FAKECLONE1:0 start on 18node1 + * Resource action: FAKECLONE1:1 start on 18node2 +@@ -88,12 +92,11 @@ Executing cluster transition: + * Resource action: FAKECLONE2:4 start on remote1 + * Resource action: FAKECLONE2:5 start on 18builder + * Pseudo action: FAKECLONE2-clone_running_0 +- * Pseudo action: all_stopped + * Resource action: remote1 monitor=60000 on 18builder + * Resource action: FAKE1 monitor=60000 on 18node2 +- * Resource action: FAKE2 start on 18node3 +- * Resource action: FAKE3 start on 18node4 +- * Resource action: FAKE4 start on remote1 ++ * Resource action: FAKE2 monitor=60000 on 18node3 ++ * Resource action: FAKE3 monitor=60000 on 18node4 ++ * Resource action: FAKE4 monitor=60000 on remote1 + * Resource action: FAKE5 monitor=60000 on 18builder + * Resource action: FAKECLONE1:0 monitor=60000 on 18node1 + * Resource action: FAKECLONE1:1 monitor=60000 on 18node2 +@@ -107,9 +110,6 @@ Executing cluster transition: + * Resource action: FAKECLONE2:3 monitor=60000 on 18node4 + * Resource action: FAKECLONE2:4 monitor=60000 on remote1 + * Resource action: FAKECLONE2:5 monitor=60000 on 18builder +- * Resource action: FAKE2 monitor=60000 on 18node3 +- * Resource action: FAKE3 monitor=60000 on 18node4 +- * Resource action: FAKE4 monitor=60000 on remote1 + + Revised cluster status: + Online: [ 18builder 18node1 18node2 18node3 18node4 ] +diff --git a/pengine/test10/rsc-sets-clone-1.dot b/pengine/test10/rsc-sets-clone-1.dot +index 58b2356..18a8865 100644 +--- a/pengine/test10/rsc-sets-clone-1.dot ++++ b/pengine/test10/rsc-sets-clone-1.dot +@@ -62,7 +62,6 @@ digraph "g" { + "stonithsys2_start_0 sys3" -> "stonithsys2_monitor_15000 sys3" [ style = bold] + "stonithsys2_start_0 sys3" [ style=bold color="green" fontcolor="black" ] + "stonithsys3_monitor_0 sys3" -> "stonithsys3_start_0 sys2" [ style = bold] +-"stonithsys3_monitor_0 sys3" -> "stonithsys3_stop_0 sys2" [ style = bold] + "stonithsys3_monitor_0 sys3" [ style=bold color="green" fontcolor="black" ] + "stonithsys3_monitor_15000 sys2" [ style=bold color="green" fontcolor="black" ] + "stonithsys3_start_0 sys2" -> "stonithsys3_monitor_15000 sys2" [ style = bold] +diff --git a/pengine/test10/rsc-sets-clone-1.exp b/pengine/test10/rsc-sets-clone-1.exp +index decabce..3a829b1 100644 +--- a/pengine/test10/rsc-sets-clone-1.exp ++++ b/pengine/test10/rsc-sets-clone-1.exp +@@ -42,11 +42,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/rsc-sets-clone-1.summary b/pengine/test10/rsc-sets-clone-1.summary +index 211ad97..1f78d20 100644 +--- a/pengine/test10/rsc-sets-clone-1.summary ++++ b/pengine/test10/rsc-sets-clone-1.summary +@@ -16,7 +16,7 @@ Online: [ sys2 sys3 ] + Stopped (disabled): [ sys2 sys3 ] + + Transition Summary: +- * Restart stonithsys3 ( sys2 ) ++ * Restart stonithsys3 ( sys2 ) due to resource definition change + * Start controld:1 (sys3) + * Start clvmd:1 (sys3) + * Start o2cb:1 (sys3) +@@ -32,7 +32,10 @@ Executing cluster transition: + * Resource action: vm2 monitor on sys3 + * Resource action: vm3 monitor on sys3 + * Resource action: vm4 monitor on sys3 ++ * Resource action: stonithsys3 stop on sys2 + * Resource action: stonithsys3 monitor on sys3 ++ * Resource action: stonithsys3 start on sys2 ++ * Resource action: stonithsys3 monitor=15000 on sys2 + * Resource action: controld:1 monitor on sys3 + * Resource action: clvmd:1 monitor on sys3 + * Resource action: o2cb:1 monitor on sys3 +@@ -46,9 +49,7 @@ Executing cluster transition: + * Resource action: stonithsys2 monitor on sys3 + * Pseudo action: load_stopped_sys3 + * Pseudo action: load_stopped_sys2 +- * Resource action: stonithsys3 stop on sys2 +- * Resource action: stonithsys3 start on sys2 +- * Resource action: stonithsys3 monitor=15000 on sys2 ++ * Pseudo action: all_stopped + * Pseudo action: basegrp:1_start_0 + * Resource action: controld:1 start on sys3 + * Resource action: clvmd:1 start on sys3 +@@ -59,7 +60,6 @@ Executing cluster transition: + * Resource action: vg2:1 start on sys3 + * Resource action: fs2:1 start on sys3 + * Resource action: stonithsys2 start on sys3 +- * Pseudo action: all_stopped + * Pseudo action: basegrp:1_running_0 + * Resource action: controld:1 monitor=10000 on sys3 + * Resource action: iscsi1:1 monitor=120000 on sys3 +diff --git a/pengine/test10/rsc_dep4.dot b/pengine/test10/rsc_dep4.dot +index 44ac33c..0977367 100644 +--- a/pengine/test10/rsc_dep4.dot ++++ b/pengine/test10/rsc_dep4.dot +@@ -12,7 +12,6 @@ + "rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc3_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc4_monitor_0 node2" -> "rsc4_start_0 node2" [ style = bold] +-"rsc4_monitor_0 node2" -> "rsc4_stop_0 node1" [ style = bold] + "rsc4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc4_start_0 node2" [ style=bold color="green" fontcolor="black" ] + "rsc4_stop_0 node1" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/rsc_dep4.exp b/pengine/test10/rsc_dep4.exp +index cd326d5..f9c75fc 100644 +--- a/pengine/test10/rsc_dep4.exp ++++ b/pengine/test10/rsc_dep4.exp +@@ -56,11 +56,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/rsc_dep4.summary b/pengine/test10/rsc_dep4.summary +index b911b46..e97105e 100644 +--- a/pengine/test10/rsc_dep4.summary ++++ b/pengine/test10/rsc_dep4.summary +@@ -15,15 +15,15 @@ Transition Summary: + Executing cluster transition: + * Resource action: rsc2 monitor on node2 + * Resource action: rsc2 monitor on node1 ++ * Resource action: rsc4 stop on node1 + * Resource action: rsc4 monitor on node2 + * Resource action: rsc1 monitor on node2 + * Resource action: rsc3 monitor on node2 + * Resource action: rsc3 monitor on node1 +- * Resource action: rsc2 start on node1 +- * Resource action: rsc4 stop on node1 +- * Resource action: rsc3 start on node2 + * Pseudo action: all_stopped ++ * Resource action: rsc2 start on node1 + * Resource action: rsc4 start on node2 ++ * Resource action: rsc3 start on node2 + + Revised cluster status: + Online: [ node1 node2 ] +diff --git a/pengine/test10/simple4.summary b/pengine/test10/simple4.summary +index fc81964..8484938 100644 +--- a/pengine/test10/simple4.summary ++++ b/pengine/test10/simple4.summary +@@ -5,7 +5,7 @@ Online: [ node1 ] + rsc1 (heartbeat:apache): FAILED node1 + + Transition Summary: +- * Stop rsc1 (node1) ++ * Stop rsc1 ( node1 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node1 +diff --git a/pengine/test10/simple6.summary b/pengine/test10/simple6.summary +index 6010663..58b3e55 100644 +--- a/pengine/test10/simple6.summary ++++ b/pengine/test10/simple6.summary +@@ -7,7 +7,7 @@ Online: [ node1 ] + + Transition Summary: + * Start rsc2 (node1) +- * Stop rsc1 (node1) ++ * Stop rsc1 ( node1 ) due to node availability + + Executing cluster transition: + * Resource action: rsc2 monitor on node1 +diff --git a/pengine/test10/simple7.summary b/pengine/test10/simple7.summary +index 021c15f..3b71657 100644 +--- a/pengine/test10/simple7.summary ++++ b/pengine/test10/simple7.summary +@@ -6,7 +6,7 @@ Online: [ node1 ] + + Transition Summary: + * Shutdown node1 +- * Stop rsc1 (node1) ++ * Stop rsc1 ( node1 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node1 +diff --git a/pengine/test10/stopped-monitor-03.summary b/pengine/test10/stopped-monitor-03.summary +index 521dc2f..c897eec 100644 +--- a/pengine/test10/stopped-monitor-03.summary ++++ b/pengine/test10/stopped-monitor-03.summary +@@ -6,7 +6,7 @@ Online: [ node1 node2 ] + rsc1 (ocf::pacemaker:Dummy): Started node1 ( disabled ) + + Transition Summary: +- * Stop rsc1 (node1) ++ * Stop rsc1 ( node1 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node1 +diff --git a/pengine/test10/stopped-monitor-21.summary b/pengine/test10/stopped-monitor-21.summary +index 058cde3..7c2732d 100644 +--- a/pengine/test10/stopped-monitor-21.summary ++++ b/pengine/test10/stopped-monitor-21.summary +@@ -6,7 +6,7 @@ Online: [ node1 node2 ] + rsc1 (ocf::pacemaker:Dummy): FAILED node1 ( disabled ) + + Transition Summary: +- * Stop rsc1 (node1) ++ * Stop rsc1 ( node1 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node1 +diff --git a/pengine/test10/stopped-monitor-22.summary b/pengine/test10/stopped-monitor-22.summary +index cb2d449..d26827a 100644 +--- a/pengine/test10/stopped-monitor-22.summary ++++ b/pengine/test10/stopped-monitor-22.summary +@@ -6,8 +6,8 @@ Online: [ node1 node2 ] + rsc1 (ocf::pacemaker:Dummy): FAILED ( disabled ) [ node1 node2 ] + + Transition Summary: +- * Stop rsc1 (node1) +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node1 ) due to node availability ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node2 +diff --git a/pengine/test10/target-1.summary b/pengine/test10/target-1.summary +index 12bbe4e..6044338 100644 +--- a/pengine/test10/target-1.summary ++++ b/pengine/test10/target-1.summary +@@ -11,7 +11,7 @@ Online: [ c001n01 c001n02 c001n03 c001n08 ] + rsc_c001n01 (ocf::heartbeat:IPaddr): Started c001n01 + + Transition Summary: +- * Stop rsc_c001n08 (c001n08) ++ * Stop rsc_c001n08 ( c001n08 ) due to node availability + + Executing cluster transition: + * Resource action: DcIPaddr monitor on c001n08 +diff --git a/pengine/test10/target-2.summary b/pengine/test10/target-2.summary +index a440494..6e83fdc 100644 +--- a/pengine/test10/target-2.summary ++++ b/pengine/test10/target-2.summary +@@ -10,7 +10,7 @@ Online: [ c001n01 c001n02 c001n03 c001n08 ] + rsc_c001n01 (ocf::heartbeat:IPaddr): Started c001n01 + + Transition Summary: +- * Stop rsc_c001n08 (c001n08) ++ * Stop rsc_c001n08 ( c001n08 ) due to node availability + + Executing cluster transition: + * Resource action: DcIPaddr monitor on c001n08 +diff --git a/pengine/test10/ticket-clone-21.summary b/pengine/test10/ticket-clone-21.summary +index 6b18cfa..1dde14b 100644 +--- a/pengine/test10/ticket-clone-21.summary ++++ b/pengine/test10/ticket-clone-21.summary +@@ -9,7 +9,7 @@ Online: [ node1 node2 ] + Transition Summary: + * Fence (reboot) node2 'deadman ticket was lost' + * Fence (reboot) node1 'deadman ticket was lost' +- * Stop rsc_stonith (node1) ++ * Stop rsc_stonith ( node1 ) due to node availability + * Stop rsc1:0 (node1) due to node availability + * Stop rsc1:1 (node2) due to node availability + +diff --git a/pengine/test10/ticket-clone-9.summary b/pengine/test10/ticket-clone-9.summary +index 6b18cfa..1dde14b 100644 +--- a/pengine/test10/ticket-clone-9.summary ++++ b/pengine/test10/ticket-clone-9.summary +@@ -9,7 +9,7 @@ Online: [ node1 node2 ] + Transition Summary: + * Fence (reboot) node2 'deadman ticket was lost' + * Fence (reboot) node1 'deadman ticket was lost' +- * Stop rsc_stonith (node1) ++ * Stop rsc_stonith ( node1 ) due to node availability + * Stop rsc1:0 (node1) due to node availability + * Stop rsc1:1 (node2) due to node availability + +diff --git a/pengine/test10/ticket-primitive-14.summary b/pengine/test10/ticket-primitive-14.summary +index fa7558a..b31757b 100644 +--- a/pengine/test10/ticket-primitive-14.summary ++++ b/pengine/test10/ticket-primitive-14.summary +@@ -6,7 +6,7 @@ Online: [ node1 node2 ] + rsc1 (ocf::pacemaker:Dummy): Started node2 + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node2 +diff --git a/pengine/test10/ticket-primitive-15.summary b/pengine/test10/ticket-primitive-15.summary +index fa7558a..b31757b 100644 +--- a/pengine/test10/ticket-primitive-15.summary ++++ b/pengine/test10/ticket-primitive-15.summary +@@ -6,7 +6,7 @@ Online: [ node1 node2 ] + rsc1 (ocf::pacemaker:Dummy): Started node2 + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node2 +diff --git a/pengine/test10/ticket-primitive-17.summary b/pengine/test10/ticket-primitive-17.summary +index fa7558a..b31757b 100644 +--- a/pengine/test10/ticket-primitive-17.summary ++++ b/pengine/test10/ticket-primitive-17.summary +@@ -6,7 +6,7 @@ Online: [ node1 node2 ] + rsc1 (ocf::pacemaker:Dummy): Started node2 + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node2 +diff --git a/pengine/test10/ticket-primitive-18.summary b/pengine/test10/ticket-primitive-18.summary +index fa7558a..b31757b 100644 +--- a/pengine/test10/ticket-primitive-18.summary ++++ b/pengine/test10/ticket-primitive-18.summary +@@ -6,7 +6,7 @@ Online: [ node1 node2 ] + rsc1 (ocf::pacemaker:Dummy): Started node2 + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node2 +diff --git a/pengine/test10/ticket-primitive-20.summary b/pengine/test10/ticket-primitive-20.summary +index fa7558a..b31757b 100644 +--- a/pengine/test10/ticket-primitive-20.summary ++++ b/pengine/test10/ticket-primitive-20.summary +@@ -6,7 +6,7 @@ Online: [ node1 node2 ] + rsc1 (ocf::pacemaker:Dummy): Started node2 + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node2 +diff --git a/pengine/test10/ticket-primitive-21.summary b/pengine/test10/ticket-primitive-21.summary +index 9b91672..6c0f1ba 100644 +--- a/pengine/test10/ticket-primitive-21.summary ++++ b/pengine/test10/ticket-primitive-21.summary +@@ -7,7 +7,7 @@ Online: [ node1 node2 ] + + Transition Summary: + * Fence (reboot) node2 'deadman ticket was lost' +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Fencing node2 (reboot) +diff --git a/pengine/test10/ticket-primitive-23.summary b/pengine/test10/ticket-primitive-23.summary +index fa7558a..b31757b 100644 +--- a/pengine/test10/ticket-primitive-23.summary ++++ b/pengine/test10/ticket-primitive-23.summary +@@ -6,7 +6,7 @@ Online: [ node1 node2 ] + rsc1 (ocf::pacemaker:Dummy): Started node2 + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node2 +diff --git a/pengine/test10/ticket-primitive-3.summary b/pengine/test10/ticket-primitive-3.summary +index fa7558a..b31757b 100644 +--- a/pengine/test10/ticket-primitive-3.summary ++++ b/pengine/test10/ticket-primitive-3.summary +@@ -6,7 +6,7 @@ Online: [ node1 node2 ] + rsc1 (ocf::pacemaker:Dummy): Started node2 + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node2 +diff --git a/pengine/test10/ticket-primitive-6.summary b/pengine/test10/ticket-primitive-6.summary +index fa7558a..b31757b 100644 +--- a/pengine/test10/ticket-primitive-6.summary ++++ b/pengine/test10/ticket-primitive-6.summary +@@ -6,7 +6,7 @@ Online: [ node1 node2 ] + rsc1 (ocf::pacemaker:Dummy): Started node2 + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node2 +diff --git a/pengine/test10/ticket-primitive-9.summary b/pengine/test10/ticket-primitive-9.summary +index 9b91672..6c0f1ba 100644 +--- a/pengine/test10/ticket-primitive-9.summary ++++ b/pengine/test10/ticket-primitive-9.summary +@@ -7,7 +7,7 @@ Online: [ node1 node2 ] + + Transition Summary: + * Fence (reboot) node2 'deadman ticket was lost' +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Fencing node2 (reboot) +diff --git a/pengine/test10/ticket-rsc-sets-10.summary b/pengine/test10/ticket-rsc-sets-10.summary +index 8ef03e0..0a36d45 100644 +--- a/pengine/test10/ticket-rsc-sets-10.summary ++++ b/pengine/test10/ticket-rsc-sets-10.summary +@@ -14,7 +14,7 @@ Online: [ node1 node2 ] + Slaves: [ node2 ] + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + * Stop rsc2 (node1) due to node availability + * Stop rsc3 (node1) due to node availability + * Stop rsc4:0 (node1) due to node availability +diff --git a/pengine/test10/ticket-rsc-sets-12.summary b/pengine/test10/ticket-rsc-sets-12.summary +index 616a2a2..fd22d77 100644 +--- a/pengine/test10/ticket-rsc-sets-12.summary ++++ b/pengine/test10/ticket-rsc-sets-12.summary +@@ -13,7 +13,7 @@ Online: [ node1 node2 ] + Slaves: [ node1 node2 ] + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + * Stop rsc2 (node1) due to node availability + * Stop rsc3 (node1) due to node availability + +diff --git a/pengine/test10/ticket-rsc-sets-13.summary b/pengine/test10/ticket-rsc-sets-13.summary +index 8ef03e0..0a36d45 100644 +--- a/pengine/test10/ticket-rsc-sets-13.summary ++++ b/pengine/test10/ticket-rsc-sets-13.summary +@@ -14,7 +14,7 @@ Online: [ node1 node2 ] + Slaves: [ node2 ] + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + * Stop rsc2 (node1) due to node availability + * Stop rsc3 (node1) due to node availability + * Stop rsc4:0 (node1) due to node availability +diff --git a/pengine/test10/ticket-rsc-sets-14.summary b/pengine/test10/ticket-rsc-sets-14.summary +index 8ef03e0..0a36d45 100644 +--- a/pengine/test10/ticket-rsc-sets-14.summary ++++ b/pengine/test10/ticket-rsc-sets-14.summary +@@ -14,7 +14,7 @@ Online: [ node1 node2 ] + Slaves: [ node2 ] + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + * Stop rsc2 (node1) due to node availability + * Stop rsc3 (node1) due to node availability + * Stop rsc4:0 (node1) due to node availability +diff --git a/pengine/test10/ticket-rsc-sets-3.summary b/pengine/test10/ticket-rsc-sets-3.summary +index 8ef03e0..0a36d45 100644 +--- a/pengine/test10/ticket-rsc-sets-3.summary ++++ b/pengine/test10/ticket-rsc-sets-3.summary +@@ -14,7 +14,7 @@ Online: [ node1 node2 ] + Slaves: [ node2 ] + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + * Stop rsc2 (node1) due to node availability + * Stop rsc3 (node1) due to node availability + * Stop rsc4:0 (node1) due to node availability +diff --git a/pengine/test10/ticket-rsc-sets-7.summary b/pengine/test10/ticket-rsc-sets-7.summary +index 8ef03e0..0a36d45 100644 +--- a/pengine/test10/ticket-rsc-sets-7.summary ++++ b/pengine/test10/ticket-rsc-sets-7.summary +@@ -14,7 +14,7 @@ Online: [ node1 node2 ] + Slaves: [ node2 ] + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + * Stop rsc2 (node1) due to node availability + * Stop rsc3 (node1) due to node availability + * Stop rsc4:0 (node1) due to node availability +diff --git a/pengine/test10/ticket-rsc-sets-9.summary b/pengine/test10/ticket-rsc-sets-9.summary +index 8ef03e0..0a36d45 100644 +--- a/pengine/test10/ticket-rsc-sets-9.summary ++++ b/pengine/test10/ticket-rsc-sets-9.summary +@@ -14,7 +14,7 @@ Online: [ node1 node2 ] + Slaves: [ node2 ] + + Transition Summary: +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + * Stop rsc2 (node1) due to node availability + * Stop rsc3 (node1) due to node availability + * Stop rsc4:0 (node1) due to node availability +diff --git a/pengine/test10/unfence-definition.dot b/pengine/test10/unfence-definition.dot +index c16bdb5..3bc29d3 100644 +--- a/pengine/test10/unfence-definition.dot ++++ b/pengine/test10/unfence-definition.dot +@@ -58,7 +58,6 @@ digraph "g" { + "fencing_delete_0 virt-1" -> "fencing_start_0 virt-1" [ style = bold] + "fencing_delete_0 virt-1" [ style=bold color="green" fontcolor="black"] + "fencing_monitor_0 virt-3" -> "fencing_start_0 virt-1" [ style = bold] +-"fencing_monitor_0 virt-3" -> "fencing_stop_0 virt-1" [ style = bold] + "fencing_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] + "fencing_start_0 virt-1" [ style=bold color="green" fontcolor="black"] + "fencing_stop_0 virt-1" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/unfence-definition.exp b/pengine/test10/unfence-definition.exp +index 4e619fe..b1e241a 100644 +--- a/pengine/test10/unfence-definition.exp ++++ b/pengine/test10/unfence-definition.exp +@@ -50,11 +50,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/unfence-parameters.dot b/pengine/test10/unfence-parameters.dot +index ccbddbd..ce006c4 100644 +--- a/pengine/test10/unfence-parameters.dot ++++ b/pengine/test10/unfence-parameters.dot +@@ -56,7 +56,6 @@ digraph "g" { + "dlm_stop_0 virt-1" -> "stonith 'on' virt-1" [ style = bold] + "dlm_stop_0 virt-1" [ style=bold color="green" fontcolor="black"] + "fencing_monitor_0 virt-3" -> "fencing_start_0 virt-1" [ style = bold] +-"fencing_monitor_0 virt-3" -> "fencing_stop_0 virt-1" [ style = bold] + "fencing_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] + "fencing_start_0 virt-1" [ style=bold color="green" fontcolor="black"] + "fencing_stop_0 virt-1" -> "all_stopped" [ style = bold] +diff --git a/pengine/test10/unfence-parameters.exp b/pengine/test10/unfence-parameters.exp +index 8022591..b8053c7 100644 +--- a/pengine/test10/unfence-parameters.exp ++++ b/pengine/test10/unfence-parameters.exp +@@ -6,11 +6,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/unfence-parameters.summary b/pengine/test10/unfence-parameters.summary +index b9f4953..5b582d9 100644 +--- a/pengine/test10/unfence-parameters.summary ++++ b/pengine/test10/unfence-parameters.summary +@@ -15,7 +15,7 @@ Transition Summary: + * Fence (reboot) virt-4 'node is unclean' + * Fence (on) virt-3 'Required by dlm:2' + * Fence (on) virt-1 'Device parameters changed (reload)' +- * Restart fencing ( virt-1 ) ++ * Restart fencing ( virt-1 ) due to resource definition change + * Restart dlm:0 ( virt-1 ) due to required stonith + * Start dlm:2 (virt-3) + * Restart clvmd:0 ( virt-1 ) due to required stonith +@@ -23,13 +23,13 @@ Transition Summary: + * Start clvmd:2 (virt-3) + + 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 stop on virt-1 + * 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/unmanaged-block-restart.summary b/pengine/test10/unmanaged-block-restart.summary +index d7725c9..87b5e29 100644 +--- a/pengine/test10/unmanaged-block-restart.summary ++++ b/pengine/test10/unmanaged-block-restart.summary +@@ -10,8 +10,8 @@ Online: [ yingying.site ] + + Transition Summary: + * Start rsc1 (yingying.site) +- * Stop rsc2 ( yingying.site ) due to required rsc1 start (blocked) +- * Stop rsc3 ( yingying.site ) due to required rsc2 start (blocked) ++ * Stop rsc2 ( yingying.site ) due to unrunnable rsc3 stop (blocked) ++ * Stop rsc3 ( yingying.site ) due to required rsc2 stop (blocked) + + Executing cluster transition: + * Pseudo action: group1_stop_0 +diff --git a/pengine/test10/utilization-order1.summary b/pengine/test10/utilization-order1.summary +index 282601d..3b93487 100644 +--- a/pengine/test10/utilization-order1.summary ++++ b/pengine/test10/utilization-order1.summary +@@ -7,7 +7,7 @@ Online: [ node1 node2 ] + + Transition Summary: + * Start rsc2 (node1) +- * Stop rsc1 (node1) ++ * Stop rsc1 ( node1 ) due to node availability + + Executing cluster transition: + * Resource action: rsc1 stop on node1 +diff --git a/pengine/test10/utilization-order2.summary b/pengine/test10/utilization-order2.summary +index ad3fd38..63bbbe4 100644 +--- a/pengine/test10/utilization-order2.summary ++++ b/pengine/test10/utilization-order2.summary +@@ -12,7 +12,7 @@ Transition Summary: + * Start rsc4 (node1) + * Move rsc3 ( node1 -> node2 ) + * Stop rsc2:0 (node1) due to node availability +- * Stop rsc1 (node2) ++ * Stop rsc1 ( node2 ) due to node availability + + Executing cluster transition: + * Resource action: rsc3 stop on node1 +diff --git a/pengine/test10/utilization-order4.summary b/pengine/test10/utilization-order4.summary +index 04c5f93..144ce40 100644 +--- a/pengine/test10/utilization-order4.summary ++++ b/pengine/test10/utilization-order4.summary +@@ -16,7 +16,7 @@ Online: [ deglxen001 ] + + Transition Summary: + * Migrate degllx62-vm ( deglxen002 -> deglxen001 ) +- * Stop degllx61-vm (deglxen001) ++ * Stop degllx61-vm ( deglxen001 ) due to node availability + * Stop nfs-xen_config:1 (deglxen002) due to node availability + * Stop nfs-xen_swapfiles:1 (deglxen002) due to node availability + * Stop nfs-xen_images:1 (deglxen002) due to node availability +diff --git a/pengine/test10/whitebox-migrate1.dot b/pengine/test10/whitebox-migrate1.dot +index 29874e6..500dc34 100644 +--- a/pengine/test10/whitebox-migrate1.dot ++++ b/pengine/test10/whitebox-migrate1.dot +@@ -28,7 +28,6 @@ + "rhel7-node1_migrate_to_0 rhel7-node2" [ style=bold color="green" fontcolor="black"] + "rhel7-node1_monitor_0 rhel7-node3" -> "rhel7-node1_migrate_to_0 rhel7-node2" [ style = bold] + "rhel7-node1_monitor_0 rhel7-node3" -> "rhel7-node1_start_0 rhel7-node3" [ style = bold] +-"rhel7-node1_monitor_0 rhel7-node3" -> "rhel7-node1_stop_0 rhel7-node2" [ style = bold] + "rhel7-node1_monitor_0 rhel7-node3" [ style=bold color="green" fontcolor="black"] + "rhel7-node1_monitor_30000 rhel7-node3" [ style=bold color="green" fontcolor="black"] + "rhel7-node1_start_0 rhel7-node3" -> "rhel7-node1_monitor_30000 rhel7-node3" [ style = bold] +diff --git a/pengine/test10/whitebox-migrate1.exp b/pengine/test10/whitebox-migrate1.exp +index 1b6c451..03e8b83 100644 +--- a/pengine/test10/whitebox-migrate1.exp ++++ b/pengine/test10/whitebox-migrate1.exp +@@ -207,9 +207,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/whitebox-move.dot b/pengine/test10/whitebox-move.dot +index ed06b7c..56f2fdd 100644 +--- a/pengine/test10/whitebox-move.dot ++++ b/pengine/test10/whitebox-move.dot +@@ -1,6 +1,5 @@ + digraph "g" { + "A_monitor_0 lxc2" -> "A_start_0 lxc1" [ style = bold] +-"A_monitor_0 lxc2" -> "A_stop_0 lxc1" [ style = bold] + "A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] + "A_monitor_10000 lxc1" [ style=bold color="green" fontcolor="black"] + "A_start_0 lxc1" -> "A_monitor_10000 lxc1" [ style = bold] +diff --git a/pengine/test10/whitebox-move.exp b/pengine/test10/whitebox-move.exp +index 6f00275..cb596bd 100644 +--- a/pengine/test10/whitebox-move.exp ++++ b/pengine/test10/whitebox-move.exp +@@ -155,11 +155,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/whitebox-move.summary b/pengine/test10/whitebox-move.summary +index 23bc5de..95e9680 100644 +--- a/pengine/test10/whitebox-move.summary ++++ b/pengine/test10/whitebox-move.summary +@@ -18,11 +18,11 @@ Transition Summary: + + Executing cluster transition: + * Pseudo action: M-clone_stop_0 ++ * Resource action: A stop on lxc1 + * Resource action: A monitor on lxc2 + * Resource action: M stop on lxc1 + * Pseudo action: M-clone_stopped_0 + * Pseudo action: M-clone_start_0 +- * Resource action: A stop on lxc1 + * Resource action: lxc1 stop on 18node1 + * Resource action: container1 stop on 18node1 + * Pseudo action: all_stopped +diff --git a/pengine/test10/whitebox-ms-ordering-move.dot b/pengine/test10/whitebox-ms-ordering-move.dot +index e6b5406..641dbca 100644 +--- a/pengine/test10/whitebox-ms-ordering-move.dot ++++ b/pengine/test10/whitebox-ms-ordering-move.dot +@@ -45,16 +45,12 @@ digraph "g" { + "lxc-ms_stop_0 lxc1" -> "lxc1_stop_0 rhel7-1" [ style = bold] + "lxc-ms_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] + "lxc1_monitor_0 rhel7-2" -> "lxc1_start_0 rhel7-2" [ style = bold] +-"lxc1_monitor_0 rhel7-2" -> "lxc1_stop_0 rhel7-1" [ style = bold] + "lxc1_monitor_0 rhel7-2" [ style=bold color="green" fontcolor="black"] + "lxc1_monitor_0 rhel7-3" -> "lxc1_start_0 rhel7-2" [ style = bold] +-"lxc1_monitor_0 rhel7-3" -> "lxc1_stop_0 rhel7-1" [ style = bold] + "lxc1_monitor_0 rhel7-3" [ style=bold color="green" fontcolor="black"] + "lxc1_monitor_0 rhel7-4" -> "lxc1_start_0 rhel7-2" [ style = bold] +-"lxc1_monitor_0 rhel7-4" -> "lxc1_stop_0 rhel7-1" [ style = bold] + "lxc1_monitor_0 rhel7-4" [ style=bold color="green" fontcolor="black"] + "lxc1_monitor_0 rhel7-5" -> "lxc1_start_0 rhel7-2" [ style = bold] +-"lxc1_monitor_0 rhel7-5" -> "lxc1_stop_0 rhel7-1" [ style = bold] + "lxc1_monitor_0 rhel7-5" [ style=bold color="green" fontcolor="black"] + "lxc1_monitor_30000 rhel7-2" [ style=bold color="green" fontcolor="black"] + "lxc1_start_0 rhel7-2" -> "lxc-ms_promote_0 lxc1" [ style = bold] +diff --git a/pengine/test10/whitebox-ms-ordering-move.exp b/pengine/test10/whitebox-ms-ordering-move.exp +index a8ffa64..aabcaa7 100644 +--- a/pengine/test10/whitebox-ms-ordering-move.exp ++++ b/pengine/test10/whitebox-ms-ordering-move.exp +@@ -372,18 +372,6 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- + + + +diff --git a/pengine/test10/whitebox-orphan-ms.summary b/pengine/test10/whitebox-orphan-ms.summary +index 2b0234b..71f87c5 100644 +--- a/pengine/test10/whitebox-orphan-ms.summary ++++ b/pengine/test10/whitebox-orphan-ms.summary +@@ -30,8 +30,8 @@ Transition Summary: + * Move FencingFail ( 18node3 -> 18node1 ) + * Stop container2 (18node1) due to node availability + * Stop lxc1 (18node1) due to node availability +- * Stop lxc-ms ( Master lxc1 ) +- * Stop lxc-ms ( Master lxc2 ) ++ * Stop lxc-ms ( Master lxc1 ) due to node availability ++ * Stop lxc-ms ( Master lxc2 ) due to node availability + * Stop lxc2 (18node1) due to node availability + * Stop container1 (18node1) due to node availability + +diff --git a/pengine/test10/whitebox-orphaned.dot b/pengine/test10/whitebox-orphaned.dot +index 48e167f..3e34f16 100644 +--- a/pengine/test10/whitebox-orphaned.dot ++++ b/pengine/test10/whitebox-orphaned.dot +@@ -1,7 +1,6 @@ + digraph "g" { + "A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] + "B_monitor_0 lxc2" -> "B_start_0 lxc2" [ style = bold] +-"B_monitor_0 lxc2" -> "B_stop_0 lxc1" [ style = bold] + "B_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] + "B_monitor_10000 lxc2" [ style=bold color="green" fontcolor="black"] + "B_start_0 lxc2" -> "B_monitor_10000 lxc2" [ style = bold] +diff --git a/pengine/test10/whitebox-orphaned.exp b/pengine/test10/whitebox-orphaned.exp +index b267010..2255fec 100644 +--- a/pengine/test10/whitebox-orphaned.exp ++++ b/pengine/test10/whitebox-orphaned.exp +@@ -80,11 +80,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/whitebox-orphaned.summary b/pengine/test10/whitebox-orphaned.summary +index e0928b1..f1cc8cb 100644 +--- a/pengine/test10/whitebox-orphaned.summary ++++ b/pengine/test10/whitebox-orphaned.summary +@@ -24,24 +24,24 @@ Transition Summary: + Executing cluster transition: + * Pseudo action: M-clone_stop_0 + * Resource action: A monitor on lxc2 ++ * Resource action: B stop on lxc1 + * Resource action: B monitor on lxc2 + * Resource action: D monitor on lxc2 + * Cluster action: clear_failcount for container1 on 18node2 + * Cluster action: clear_failcount for lxc1 on 18node2 + * Resource action: M stop on lxc1 + * Pseudo action: M-clone_stopped_0 +- * Resource action: B stop on lxc1 ++ * Resource action: B start on lxc2 + * Resource action: lxc1 stop on 18node2 + * Resource action: lxc1 delete on 18node3 + * Resource action: lxc1 delete on 18node2 + * Resource action: lxc1 delete on 18node1 +- * Resource action: B start on lxc2 ++ * Resource action: B monitor=10000 on lxc2 + * Resource action: container1 stop on 18node2 + * Resource action: container1 delete on 18node3 + * Resource action: container1 delete on 18node2 + * Resource action: container1 delete on 18node1 + * Pseudo action: all_stopped +- * Resource action: B monitor=10000 on lxc2 + + Revised cluster status: + Online: [ 18node1 18node2 18node3 ] +diff --git a/pengine/test10/whitebox-start.dot b/pengine/test10/whitebox-start.dot +index 28f747a..d6b6753 100644 +--- a/pengine/test10/whitebox-start.dot ++++ b/pengine/test10/whitebox-start.dot +@@ -1,6 +1,5 @@ + digraph "g" { + "A_monitor_0 lxc2" -> "A_start_0 lxc1" [ style = bold] +-"A_monitor_0 lxc2" -> "A_stop_0 18node1" [ style = bold] + "A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] + "A_monitor_10000 lxc1" [ style=bold color="green" fontcolor="black"] + "A_start_0 lxc1" -> "A_monitor_10000 lxc1" [ style = bold] +diff --git a/pengine/test10/whitebox-start.exp b/pengine/test10/whitebox-start.exp +index 360b8a7..f3c6879 100644 +--- a/pengine/test10/whitebox-start.exp ++++ b/pengine/test10/whitebox-start.exp +@@ -111,11 +111,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/whitebox-start.summary b/pengine/test10/whitebox-start.summary +index 01a1b74..b706193 100644 +--- a/pengine/test10/whitebox-start.summary ++++ b/pengine/test10/whitebox-start.summary +@@ -24,20 +24,20 @@ Transition Summary: + Executing cluster transition: + * Resource action: container1 start on 18node1 + * Pseudo action: M-clone_start_0 ++ * Resource action: A stop on 18node1 + * Resource action: A monitor on lxc2 + * Resource action: B stop on lxc2 + * Resource action: D monitor on lxc2 + * Resource action: lxc1 start on 18node1 ++ * Pseudo action: all_stopped + * Resource action: M start on lxc1 + * Pseudo action: M-clone_running_0 +- * Resource action: A stop on 18node1 ++ * Resource action: A start on lxc1 + * Resource action: B start on 18node3 + * Resource action: lxc1 monitor=30000 on 18node1 +- * Pseudo action: all_stopped + * Resource action: M monitor=10000 on lxc1 +- * Resource action: A start on lxc1 +- * Resource action: B monitor=10000 on 18node3 + * Resource action: A monitor=10000 on lxc1 ++ * Resource action: B monitor=10000 on 18node3 + + Revised cluster status: + Online: [ 18node1 18node2 18node3 ] +diff --git a/pengine/test10/whitebox-stop.dot b/pengine/test10/whitebox-stop.dot +index 0ecdcba..0eec273 100644 +--- a/pengine/test10/whitebox-stop.dot ++++ b/pengine/test10/whitebox-stop.dot +@@ -1,7 +1,6 @@ + digraph "g" { + "A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] + "B_monitor_0 lxc2" -> "B_start_0 lxc2" [ style = bold] +-"B_monitor_0 lxc2" -> "B_stop_0 lxc1" [ style = bold] + "B_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] + "B_monitor_10000 lxc2" [ style=bold color="green" fontcolor="black"] + "B_start_0 lxc2" -> "B_monitor_10000 lxc2" [ style = bold] +diff --git a/pengine/test10/whitebox-stop.exp b/pengine/test10/whitebox-stop.exp +index 84a5288..598ada5 100644 +--- a/pengine/test10/whitebox-stop.exp ++++ b/pengine/test10/whitebox-stop.exp +@@ -93,11 +93,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/whitebox-stop.summary b/pengine/test10/whitebox-stop.summary +index 44e570f..55a83c7 100644 +--- a/pengine/test10/whitebox-stop.summary ++++ b/pengine/test10/whitebox-stop.summary +@@ -23,16 +23,16 @@ Transition Summary: + Executing cluster transition: + * Pseudo action: M-clone_stop_0 + * Resource action: A monitor on lxc2 ++ * Resource action: B stop on lxc1 + * Resource action: B monitor on lxc2 + * Resource action: D monitor on lxc2 + * Resource action: M stop on lxc1 + * Pseudo action: M-clone_stopped_0 +- * Resource action: B stop on lxc1 ++ * Resource action: B start on lxc2 + * Resource action: lxc1 stop on 18node2 + * Resource action: container1 stop on 18node2 +- * Resource action: B start on lxc2 +- * Pseudo action: all_stopped + * Resource action: B monitor=10000 on lxc2 ++ * Pseudo action: all_stopped + + Revised cluster status: + Online: [ 18node1 18node2 18node3 ] +-- +1.8.3.1 + diff --git a/SOURCES/107-unfencing.patch b/SOURCES/107-unfencing.patch new file mode 100644 index 0000000..4d26bd8 --- /dev/null +++ b/SOURCES/107-unfencing.patch @@ -0,0 +1,825 @@ +From a87421042f5030e6dd7823cd80d7632b91296519 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 1 Dec 2017 11:02:54 -0600 +Subject: [PATCH 1/5] 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 2/5] 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 3/5] 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 4/5] 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 5/5] 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 + diff --git a/SOURCES/108-bundle-migrate.patch b/SOURCES/108-bundle-migrate.patch new file mode 100644 index 0000000..616cb69 --- /dev/null +++ b/SOURCES/108-bundle-migrate.patch @@ -0,0 +1,23 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Tue, 19 Dec 2017 19:00:00 -0600 +Subject: [PATCH 1/1] Equivalent of 2948a8e3 for 7.4 code base + +allow container remote connections to migrate +--- + pengine/container.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/pengine/container.c b/lib/pengine/container.c +index 0665a41..934eb54 100644 +--- a/lib/pengine/container.c ++++ b/lib/pengine/container.c +@@ -418,7 +418,7 @@ create_remote_resource( + xml_obj = create_xml_node(xml_remote, XML_TAG_META_SETS); + crm_xml_set_id(xml_obj, "%s-meta-%d", data->prefix, tuple->offset); + +- create_nvp(xml_obj, XML_OP_ATTR_ALLOW_MIGRATE, "false"); ++ //create_nvp(xml_obj, XML_OP_ATTR_ALLOW_MIGRATE, "false"); + + /* This sets tuple->docker as tuple->remote's container, which is + * similar to what happens with guest nodes. This is how the PE knows diff --git a/SOURCES/109-bundles.patch b/SOURCES/109-bundles.patch new file mode 100644 index 0000000..660abf9 --- /dev/null +++ b/SOURCES/109-bundles.patch @@ -0,0 +1,6404 @@ +From f3593e410643dcafa81e28da27c3a623e306fa61 Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Wed, 6 Dec 2017 14:48:57 +1100 +Subject: [PATCH 1/5] 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 2/5] 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 3/5] 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 4/5] 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 { + }; + + ++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)); + switch (task) { + case start_rsc: + case action_promote: +@@ -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 5/5] 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 + diff --git a/SOURCES/110-bundles.patch b/SOURCES/110-bundles.patch new file mode 100644 index 0000000..98fcd71 --- /dev/null +++ b/SOURCES/110-bundles.patch @@ -0,0 +1,200 @@ +From 55c9b5ef9c6f531ea808926abaaea5c7c8890dad Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 8 Dec 2017 17:31:23 -0600 +Subject: [PATCH 1/3] 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 2/3] 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 3/3] 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 + diff --git a/SOURCES/111-use-of-null.patch b/SOURCES/111-use-of-null.patch new file mode 100644 index 0000000..cdbacc4 --- /dev/null +++ b/SOURCES/111-use-of-null.patch @@ -0,0 +1,26 @@ +From fd04f2a9fa8e0bef9bc1dadcc439c59885dff390 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 3 Nov 2017 16:41:29 -0500 +Subject: [PATCH] Low: pengine: avoid potential use-of-NULL introduced in rc4 + +--- + pengine/native.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/pengine/native.c b/pengine/native.c +index 5dc0420..6d1ca24 100644 +--- a/pengine/native.c ++++ b/pengine/native.c +@@ -2449,7 +2449,8 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) + STOP_SANITY_ASSERT(__LINE__); + } + +- LogAction("Stop", rsc, node, NULL, stop_op, stop_op->reason?stop_op:start, terminal); ++ LogAction("Stop", rsc, node, NULL, stop_op, ++ (stop_op && stop_op->reason)? stop_op : start, terminal); + } + + free(key); +-- +1.8.3.1 + diff --git a/SOURCES/112-use-of-null.patch b/SOURCES/112-use-of-null.patch new file mode 100644 index 0000000..e9bb3ae --- /dev/null +++ b/SOURCES/112-use-of-null.patch @@ -0,0 +1,26 @@ +From 88bd30b1e750138551a7b45786eaf6c28985f91d Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Thu, 2 Nov 2017 18:08:56 -0500 +Subject: [PATCH] Low: pengine: avoid use-of-NULL + +--- + pengine/native.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/pengine/native.c b/pengine/native.c +index d0cdcc4..5dc0420 100644 +--- a/pengine/native.c ++++ b/pengine/native.c +@@ -2407,7 +2407,8 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) + next->details->uname); + + } else if (start && is_set(start->flags, pe_action_runnable) == FALSE) { +- LogAction("Stop", rsc, current, NULL, stop, stop->reason?stop:start, terminal); ++ LogAction("Stop", rsc, current, NULL, stop, ++ (stop && stop->reason)? stop : start, terminal); + STOP_SANITY_ASSERT(__LINE__); + + } else if (moving && current) { +-- +1.8.3.1 + diff --git a/SPECS/pacemaker.spec b/SPECS/pacemaker.spec index 9a542c1..5584b4e 100644 --- a/SPECS/pacemaker.spec +++ b/SPECS/pacemaker.spec @@ -143,7 +143,7 @@ Name: pacemaker Summary: Scalable High-Availability cluster resource manager Version: %{pcmkversion} -Release: %{pcmk_release}%{?dist}.5 +Release: %{pcmk_release}%{?dist}.7 %if %{defined _unitdir} License: GPLv2+ and LGPLv2+ %else @@ -262,6 +262,14 @@ Patch101: 101-bundle-probes.patch Patch102: 102-stop-before-probes.patch Patch103: 103-use-of-null.patch Patch104: 104-cleanup-wait.patch +Patch105: 105-refactor.patch +Patch106: 106-probes.patch +Patch107: 107-unfencing.patch +Patch108: 108-bundle-migrate.patch +Patch109: 109-bundles.patch +Patch110: 110-bundles.patch +Patch111: 111-use-of-null.patch +Patch112: 112-use-of-null.patch # patches that aren't from upstream Patch200: lrmd-protocol-version.patch @@ -932,6 +940,16 @@ exit 0 %attr(0644,root,root) %{_datadir}/pacemaker/nagios/plugins-metadata/* %changelog +* Tue Jan 2 2018 Ken Gaillot - 1.1.16-12.7 +- Fix use-of-NULL memory issues +- Resolves: rhbz#1527810 + +* Wed Dec 20 2017 Ken Gaillot - 1.1.16-12.6 +- Fix unfencing regression +- Prevent invalid transition with bundles +- Resolves: rhbz#1524828 +- Resolves: rhbz#1527810 + * Mon Nov 13 2017 Ken Gaillot - 1.1.16-12.5 - Fix multiple issues with bundle resources - Handle clean-ups of primitive within bundle properly @@ -942,7 +960,6 @@ exit 0 - Avoid memory leak when unfencing is needed - Resolves: rhbz#1491544 -%changelog * Mon Oct 2 2017 Ken Gaillot - 1.1.16-12.3 - Allow unfencing of remote nodes - Support clone notifications for bundle resources @@ -951,12 +968,10 @@ exit 0 - Resolves: rhbz#1491544 - Resolves: rhbz#1497602 -%changelog * Fri Aug 18 2017 Ken Gaillot - 1.1.16-12.2 - Allow crm_report to work when no log files are specified - Resolves: rhbz#1482852 -%changelog * Tue Aug 15 2017 Ken Gaillot - 1.1.16-12.1 - Add cluster-ipc-limit option to avoid CIB eviction in large clusters - Implement ordering constraints involving bundles