From 109fe282d95cc3bae740d89a6e17fd9cb3dfdd3b Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Apr 10 2018 05:33:25 +0000 Subject: import pacemaker-1.1.18-11.el7 --- diff --git a/.gitignore b/.gitignore index e0a68cb..8a90331 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ SOURCES/nagios-agents-metadata-105ab8a.tar.gz -SOURCES/pacemaker-94ff4df.tar.gz +SOURCES/pacemaker-2b07d5c.tar.gz diff --git a/.pacemaker.metadata b/.pacemaker.metadata index 3c4c7ec..984e5a1 100644 --- a/.pacemaker.metadata +++ b/.pacemaker.metadata @@ -1,2 +1,2 @@ ea6c0a27fd0ae8ce02f84a11f08a0d79377041c3 SOURCES/nagios-agents-metadata-105ab8a.tar.gz -39ab98f9b5a500df51b4283f003b42a68d8c7904 SOURCES/pacemaker-94ff4df.tar.gz +cd04ce3689e250b2b0d4ce2406222a0cd9767fea SOURCES/pacemaker-2b07d5c.tar.gz diff --git a/SOURCES/001-crm_report-log-search.patch b/SOURCES/001-crm_report-log-search.patch deleted file mode 100644 index 889b700..0000000 --- a/SOURCES/001-crm_report-log-search.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 083488ce76ee7ab83adb51c230687a9fd67b54a7 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 16 Dec 2016 17:56:30 -0600 -Subject: [PATCH] Fix: tools: avoid grep crashes in crm_report when looking for - system logs - -Grepping large binary files can exhaust memory. This avoids that and speeds up -crm_report's log scan by: skipping things that aren't files, aren't readable, -or are empty; skipping files with more than 256 nonprintable bytes in the first -1024; and using LC_ALL="C" to speed up grep. ---- - tools/report.common.in | 22 ++++++++++++++++++++-- - 1 file changed, 20 insertions(+), 2 deletions(-) - -diff --git a/tools/report.common.in b/tools/report.common.in -index 9b43486..70c920c 100644 ---- a/tools/report.common.in -+++ b/tools/report.common.in -@@ -421,8 +421,26 @@ findmsg() { - # Check each log file for matches. - logfiles="" - for f in $candidates; do -- local cat=$(find_decompressor "$f") -- $cat "$f" 2>/dev/null | grep -q -e "$pattern" -+ local cat="" -+ -+ # We only care about readable files with something in them. -+ if [ ! -f "$f" ] || [ ! -r "$f" ] || [ ! -s "$f" ] ; then -+ continue -+ fi -+ -+ cat=$(find_decompressor "$f") -+ -+ # We want to avoid grepping through potentially huge binary logs such -+ # as lastlog. However, control characters sometimes find their way into -+ # text logs, so we use a heuristic of more than 256 nonprintable -+ # characters in the file's first kilobyte. -+ if [ $($cat "$f" 2>/dev/null | head -c 1024 | tr -d '[:print:][:space:]' | wc -c) -gt 256 ] -+ then -+ continue -+ fi -+ -+ # Our patterns are ASCII, so we can use LC_ALL="C" to speed up grep -+ $cat "$f" 2>/dev/null | LC_ALL="C" grep -q -e "$pattern" - if [ $? -eq 0 ]; then - - # Add this file to the list of hits --- -1.8.3.1 - diff --git a/SOURCES/001-new-behavior.patch b/SOURCES/001-new-behavior.patch new file mode 100644 index 0000000..c09405b --- /dev/null +++ b/SOURCES/001-new-behavior.patch @@ -0,0 +1,99 @@ +From d0278eca6f2f8d4e707f73d12b4f8161f07e42fe Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Thu, 2 Nov 2017 18:26:03 -0500 +Subject: [PATCH 1/2] Feature: tools: enable new crm_resource + --cleanup/--refresh behavior + +it was temporarily disabled by 3576364 +--- + tools/crm_resource.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/tools/crm_resource.c b/tools/crm_resource.c +index 92255df..356bb05 100644 +--- a/tools/crm_resource.c ++++ b/tools/crm_resource.c +@@ -212,14 +212,11 @@ static struct crm_option long_options[] = { + }, + { + "cleanup", no_argument, NULL, 'C', +-#if 0 +- // new behavior disabled until 2.0.0 + "\t\tDelete failed operations from a resource's history allowing its current state to be rechecked.\n" + "\t\t\t\tOptionally filtered by --resource, --node, --operation, and --interval (otherwise all).\n" + }, + { + "refresh", no_argument, NULL, 'R', +-#endif + "\t\tDelete resource's history (including failures) so its current state is rechecked.\n" + "\t\t\t\tOptionally filtered by --resource, --node, --operation, and --interval (otherwise all).\n" + "\t\t\t\tUnless --force is specified, resource's group or clone (if any) will also be cleaned" +@@ -384,7 +381,6 @@ static struct crm_option long_options[] = { + {"un-migrate", no_argument, NULL, 'U', NULL, pcmk_option_hidden}, + {"un-move", no_argument, NULL, 'U', NULL, pcmk_option_hidden}, + +- {"refresh", 0, 0, 'R', NULL, pcmk_option_hidden}, // remove this line for 2.0.0 + {"reprobe", no_argument, NULL, 'P', NULL, pcmk_option_hidden}, + + {"-spacer-", 1, NULL, '-', "\nExamples:", pcmk_option_paragraph}, +@@ -645,7 +641,7 @@ main(int argc, char **argv) + if (cib_file == NULL) { + require_crmd = TRUE; + } +- just_errors = FALSE; // disable until 2.0.0 ++ just_errors = TRUE; + rsc_cmd = 'C'; + find_flags = pe_find_renamed|pe_find_anon; + break; +-- +1.8.3.1 + + +From b48ceeb041cee65a9b93b9b76235e475fa1a128f Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Mon, 16 Oct 2017 09:45:18 -0500 +Subject: [PATCH 2/2] Feature: crmd: default record-pending to TRUE + +--- + crmd/lrm.c | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) + +diff --git a/crmd/lrm.c b/crmd/lrm.c +index eb4e16e..36dc076 100644 +--- a/crmd/lrm.c ++++ b/crmd/lrm.c +@@ -2061,25 +2061,22 @@ stop_recurring_actions(gpointer key, gpointer value, gpointer user_data) + static void + record_pending_op(const char *node_name, lrmd_rsc_info_t *rsc, lrmd_event_data_t *op) + { ++ const char *record_pending = NULL; ++ + CRM_CHECK(node_name != NULL, return); + CRM_CHECK(rsc != NULL, return); + CRM_CHECK(op != NULL, return); + +- if (op->op_type == NULL ++ if ((op->op_type == NULL) || (op->params == NULL) + || safe_str_eq(op->op_type, CRMD_ACTION_CANCEL) + || safe_str_eq(op->op_type, CRMD_ACTION_DELETE)) { + return; + } + +- if (op->params == NULL) { ++ // defaults to true ++ record_pending = crm_meta_value(op->params, XML_OP_ATTR_PENDING); ++ if (record_pending && !crm_is_true(record_pending)) { + return; +- +- } else { +- const char *record_pending = crm_meta_value(op->params, XML_OP_ATTR_PENDING); +- +- if (record_pending == NULL || crm_is_true(record_pending) == FALSE) { +- return; +- } + } + + op->call_id = -1; +-- +1.8.3.1 + diff --git a/SOURCES/002-crm_diff-no-version.patch b/SOURCES/002-crm_diff-no-version.patch deleted file mode 100644 index fa573aa..0000000 --- a/SOURCES/002-crm_diff-no-version.patch +++ /dev/null @@ -1,121 +0,0 @@ -From 302b5ff8e1f1cc086b78658206670743ec04881a Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 12 Jan 2017 09:11:08 -0600 -Subject: [PATCH 1/2] Low: libcrmcommon: add convenience function for copying - XML element - ---- - include/crm/common/xml.h | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h -index 150055b..a948915 100644 ---- a/include/crm/common/xml.h -+++ b/include/crm/common/xml.h -@@ -210,6 +210,24 @@ crm_element_name(xmlNode *xml) - - const char *crm_element_value(xmlNode * data, const char *name); - -+/*! -+ * \brief Copy an element from one XML object to another -+ * -+ * \param[in] obj1 Source XML -+ * \param[in,out] obj2 Destination XML -+ * \param[in] element Name of element to copy -+ * -+ * \return Pointer to copied value (from source) -+ */ -+static inline const char * -+crm_copy_xml_element(xmlNode *obj1, xmlNode *obj2, const char *element) -+{ -+ const char *value = crm_element_value(obj1, element); -+ -+ crm_xml_add(obj2, element, value); -+ return value; -+} -+ - void xml_validate(const xmlNode * root); - - gboolean xml_has_children(const xmlNode * root); --- -1.8.3.1 - - -From 20a74b9d377c812abca651cb7ed7b4625ead76b1 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 12 Jan 2017 12:48:40 -0600 -Subject: [PATCH 2/2] Fix: tools: properly ignore version with crm_diff - --no-version - -Previously, crm_diff --no-version would remove the information from -the generated patch, but it would still generate a change to update the -version. Now, it doesn't generate that change. - -Based on patch originally provided by Andrew Beekhof ---- - tools/xml_diff.c | 30 ++++++++++++++++++++++-------- - 1 file changed, 22 insertions(+), 8 deletions(-) - -diff --git a/tools/xml_diff.c b/tools/xml_diff.c -index cd3cb29..b27bd13 100644 ---- a/tools/xml_diff.c -+++ b/tools/xml_diff.c -@@ -158,6 +158,13 @@ main(int argc, char **argv) - crm_help('?', EX_USAGE); - } - -+ if (apply && no_version) { -+ fprintf(stderr, "warning: -u/--no-version ignored with -p/--patch\n"); -+ } else if (as_cib && no_version) { -+ fprintf(stderr, "error: -u/--no-version incompatible with -c/--cib\n"); -+ return 1; -+ } -+ - if (raw_1) { - object_1 = string2xml(xml_file_1); - -@@ -199,6 +206,21 @@ main(int argc, char **argv) - return rc; - } - } else { -+ int lpc = 0; -+ const char *vfields[] = { -+ XML_ATTR_GENERATION_ADMIN, -+ XML_ATTR_GENERATION, -+ XML_ATTR_NUMUPDATES, -+ }; -+ -+ /* If we're ignoring the version, make the version information -+ * identical, so it isn't detected as a change. */ -+ if (no_version) { -+ for (lpc = 0; lpc < DIMOF(vfields); lpc++) { -+ crm_copy_xml_element(object_1, object_2, vfields[lpc]); -+ } -+ } -+ - xml_track_changes(object_2, NULL, object_2, FALSE); - xml_calculate_changes(object_1, object_2); - crm_log_xml_debug(object_2, xml_file_2?xml_file_2:"target"); -@@ -247,19 +269,11 @@ main(int argc, char **argv) - XML_TAG_DIFF_ADDED, - }; - -- const char *vfields[] = { -- XML_ATTR_GENERATION_ADMIN, -- XML_ATTR_GENERATION, -- XML_ATTR_NUMUPDATES, -- }; -- - for (i = 0; i < DIMOF(tags); i++) { - xmlNode *tmp = NULL; - - tmp = find_xml_node(output, tags[i], FALSE); - if (tmp) { -- int lpc = 0; -- - for (lpc = 0; lpc < DIMOF(vfields); lpc++) { - xml_remove_prop(tmp, vfields[lpc]); - } --- -1.8.3.1 - diff --git a/SOURCES/002-fixes.patch b/SOURCES/002-fixes.patch new file mode 100644 index 0000000..02d563d --- /dev/null +++ b/SOURCES/002-fixes.patch @@ -0,0 +1,7624 @@ +From 87856f05a85e2d20b7265b78373657e97dbf18e4 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Wed, 29 Nov 2017 17:21:29 -0600 +Subject: [PATCH 01/16] Fix: attrd: ensure node name is broadcast at start-up + (CLBZ#5330) + +This fixes a regression introduced in 1.1.18. + +Since c9d1c3cd, the crmd no longer explicitly clears the terminate and shutdown +node attributes at first join. An unwanted side effect of this was that the +attrd writer no longer reliably learned a joining node's name. If a node is +known only by its ID, the writer can not write its attributes to the CIB. + +The worst outcome is that the joining node would be unable to shut down, +since the shutdown attribute would never trigger the policy engine. The window +was limited because the writer learns the node's name if a new attrd +election was required, or a node attribute was set locally on the joining node. + +The fix is to set a new private attribute, #attrd-protocol, at attrd start-up, +with the supported attrd protocol version. This has the additional benefit of +allowing any node to determine the minimum supported protocol version across +all active cluster nodes. +--- + attrd/commands.c | 30 ++++++++++++++++++++++++------ + attrd/internal.h | 1 + + attrd/main.c | 7 +++++++ + include/crm/crm.h | 1 + + 4 files changed, 33 insertions(+), 6 deletions(-) + +diff --git a/attrd/commands.c b/attrd/commands.c +index 967703f..0a20b26 100644 +--- a/attrd/commands.c ++++ b/attrd/commands.c +@@ -35,8 +35,9 @@ + * heartbeat, CMAN, or corosync-plugin stacks) is unversioned. + * + * With atomic attrd, each attrd will send ATTRD_PROTOCOL_VERSION with every +- * peer request and reply. Currently, there is no way to know the minimum +- * version supported by all peers, which limits its usefulness. ++ * peer request and reply. As of Pacemaker 2.0.0, at start-up each attrd will ++ * also set a private attribute for itself with its version, so any attrd can ++ * determine the minimum version supported by all peers. + * + * Protocol Pacemaker Significant changes + * -------- --------- ------------------- +@@ -289,11 +290,10 @@ void + attrd_client_clear_failure(xmlNode *xml) + { + #if 0 +- /* @TODO This would be most efficient, but there is currently no way to +- * verify that all peers support the op. If that ever changes, we could +- * enable this code. ++ /* @TODO Track the minimum supported protocol version across all nodes, ++ * then enable this more-efficient code. + */ +- if (all_peers_support_clear_failure) { ++ if (compare_version("2", minimum_protocol_version) <= 0) { + /* Propagate to all peers (including ourselves). + * This ends up at attrd_peer_message(). + */ +@@ -523,6 +523,24 @@ attrd_peer_clear_failure(crm_node_t *peer, xmlNode *xml) + regfree(®ex); + } + ++/*! ++ \internal ++ \brief Broadcast private attribute for local node with protocol version ++*/ ++void ++attrd_broadcast_protocol() ++{ ++ xmlNode *attrd_op = create_xml_node(NULL, __FUNCTION__); ++ ++ crm_xml_add(attrd_op, F_TYPE, T_ATTRD); ++ crm_xml_add(attrd_op, F_ORIG, crm_system_name); ++ crm_xml_add(attrd_op, F_ATTRD_TASK, ATTRD_OP_UPDATE); ++ crm_xml_add(attrd_op, F_ATTRD_ATTRIBUTE, CRM_ATTR_PROTOCOL); ++ crm_xml_add(attrd_op, F_ATTRD_VALUE, ATTRD_PROTOCOL_VERSION); ++ crm_xml_add_int(attrd_op, F_ATTRD_IS_PRIVATE, 1); ++ attrd_client_update(attrd_op); ++} ++ + void + attrd_peer_message(crm_node_t *peer, xmlNode *xml) + { +diff --git a/attrd/internal.h b/attrd/internal.h +index 99fc3fd..23bcbda 100644 +--- a/attrd/internal.h ++++ b/attrd/internal.h +@@ -53,6 +53,7 @@ election_t *writer; + crm_ipcs_send_ack((client), (id), (flags), "ack", __FUNCTION__, __LINE__) + + void write_attributes(bool all); ++void attrd_broadcast_protocol(void); + void attrd_peer_message(crm_node_t *client, xmlNode *msg); + void attrd_client_peer_remove(const char *client_name, xmlNode *xml); + void attrd_client_clear_failure(xmlNode *xml); +diff --git a/attrd/main.c b/attrd/main.c +index 2670dc5..7721439 100644 +--- a/attrd/main.c ++++ b/attrd/main.c +@@ -220,6 +220,13 @@ attrd_cib_connect(int max_retry) + // Always read the CIB at start-up + mainloop_set_trigger(attrd_config_read); + ++ /* Set a private attribute for ourselves with the protocol version we ++ * support. This lets all nodes determine the minimum supported version ++ * across all nodes. It also ensures that the writer learns our node name, ++ * so it can send our attributes to the CIB. ++ */ ++ attrd_broadcast_protocol(); ++ + return pcmk_ok; + + cleanup: +diff --git a/include/crm/crm.h b/include/crm/crm.h +index 05ec555..6e2bcfa 100644 +--- a/include/crm/crm.h ++++ b/include/crm/crm.h +@@ -106,6 +106,7 @@ extern char *crm_system_name; + # define CRM_ATTR_DIGESTS_ALL "#digests-all" + # define CRM_ATTR_DIGESTS_SECURE "#digests-secure" + # define CRM_ATTR_RA_VERSION "#ra-version" ++# define CRM_ATTR_PROTOCOL "#attrd-protocol" + + /* Valid operations */ + # define CRM_OP_NOOP "noop" +-- +1.8.3.1 + + +From a87421042f5030e6dd7823cd80d7632b91296519 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 1 Dec 2017 11:02:54 -0600 +Subject: [PATCH 02/16] Refactor: pengine: functionize checking whether node + was unfenced + +reduces code duplication and enhances readability +--- + pengine/native.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/pengine/native.c b/pengine/native.c +index e72dec4..c998e4b 100644 +--- a/pengine/native.c ++++ b/pengine/native.c +@@ -429,6 +429,14 @@ rsc_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes, const c + return work; + } + ++static inline bool ++node_has_been_unfenced(node_t *node) ++{ ++ const char *unfenced = pe_node_attribute_raw(node, CRM_ATTR_UNFENCED); ++ ++ return unfenced && strcmp("0", unfenced); ++} ++ + node_t * + native_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) + { +@@ -2524,10 +2532,9 @@ StopRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * d + + if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { + action_t *unfence = pe_fence_op(current, "on", TRUE, NULL, data_set); +- const char *unfenced = pe_node_attribute_raw(current, CRM_ATTR_UNFENCED); + + order_actions(stop, unfence, pe_order_implies_first); +- if (unfenced == NULL || safe_str_eq("0", unfenced)) { ++ if (!node_has_been_unfenced(current)) { + pe_proc_err("Stopping %s until %s can be unfenced", rsc->id, current->details->uname); + } + } +@@ -2547,11 +2554,9 @@ StartRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * + + if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { + action_t *unfence = pe_fence_op(next, "on", TRUE, NULL, data_set); +- const char *unfenced = pe_node_attribute_raw(next, CRM_ATTR_UNFENCED); + + order_actions(unfence, start, pe_order_implies_then); +- +- if (unfenced == NULL || safe_str_eq("0", unfenced)) { ++ if (!node_has_been_unfenced(next)) { + char *reason = crm_strdup_printf("Required by %s", rsc->id); + trigger_unfencing(NULL, next, reason, NULL, data_set); + free(reason); +-- +1.8.3.1 + + +From b6b3fb9e8c6c6b34fb39c9d7f0b89ef41e9486fa Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 1 Dec 2017 11:45:31 -0600 +Subject: [PATCH 03/16] Refactor: pengine: functionize checking for unfence + device + +Reduces code duplication and enhances readability. This also comments out some +dead code from when probe_complete was still used. +--- + pengine/native.c | 24 ++++++++++++++---------- + 1 file changed, 14 insertions(+), 10 deletions(-) + +diff --git a/pengine/native.c b/pengine/native.c +index c998e4b..e57fbc7 100644 +--- a/pengine/native.c ++++ b/pengine/native.c +@@ -437,6 +437,13 @@ node_has_been_unfenced(node_t *node) + return unfenced && strcmp("0", unfenced); + } + ++static inline bool ++is_unfence_device(resource_t *rsc, pe_working_set_t *data_set) ++{ ++ return is_set(rsc->flags, pe_rsc_fence_device) ++ && is_set(data_set->flags, pe_flag_enable_unfencing); ++} ++ + node_t * + native_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) + { +@@ -3015,12 +3022,8 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, + crm_debug("Probing %s on %s (%s) %d %p", rsc->id, node->details->uname, role2text(rsc->role), + is_set(probe->flags, pe_action_runnable), rsc->running_on); + +- if(is_set(rsc->flags, pe_rsc_fence_device) && is_set(data_set->flags, pe_flag_enable_unfencing)) { ++ if (is_unfence_device(rsc, data_set) || !pe_rsc_is_clone(top)) { + top = rsc; +- +- } else if (pe_rsc_is_clone(top) == FALSE) { +- top = rsc; +- + } else { + crm_trace("Probing %s on %s (%s) as %s", rsc->id, node->details->uname, role2text(rsc->role), top->id); + } +@@ -3041,17 +3044,18 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, + top, reload_key(rsc), NULL, + pe_order_optional, data_set); + +- if(is_set(rsc->flags, pe_rsc_fence_device) && is_set(data_set->flags, pe_flag_enable_unfencing)) { ++#if 0 ++ // complete is always null currently ++ if (!is_unfence_device(rsc, data_set)) { + /* Normally rsc.start depends on probe complete which depends +- * on rsc.probe. But this can't be the case in this scenario as +- * it would create graph loops. ++ * on rsc.probe. But this can't be the case for fence devices ++ * with unfencing, as it would create graph loops. + * + * So instead we explicitly order 'rsc.probe then rsc.start' + */ +- +- } else { + order_actions(probe, complete, pe_order_implies_then); + } ++#endif + return TRUE; + } + +-- +1.8.3.1 + + +From 63431baae2e544dc3b21d51b035942dfeeca5561 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 1 Dec 2017 12:06:16 -0600 +Subject: [PATCH 04/16] Fix: pengine: unfence before probing or starting fence + devices + +Regression since 7f8ba307 +--- + pengine/native.c | 62 ++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 35 insertions(+), 27 deletions(-) + +diff --git a/pengine/native.c b/pengine/native.c +index e57fbc7..0013e33 100644 +--- a/pengine/native.c ++++ b/pengine/native.c +@@ -2550,6 +2550,39 @@ StopRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * d + return TRUE; + } + ++static void ++order_after_unfencing(resource_t *rsc, pe_node_t *node, action_t *action, ++ enum pe_ordering order, pe_working_set_t *data_set) ++{ ++ /* When unfencing is in use, we order unfence actions before any probe or ++ * start of resources that require unfencing, and also of fence devices. ++ * ++ * This might seem to violate the principle that fence devices require ++ * only quorum. However, fence agents that unfence often don't have enough ++ * information to even probe or start unless the node is first unfenced. ++ */ ++ if (is_unfence_device(rsc, data_set) ++ || is_set(rsc->flags, pe_rsc_needs_unfencing)) { ++ ++ /* Start with an optional ordering. Requiring unfencing would result in ++ * the node being unfenced, and all its resources being stopped, ++ * whenever a new resource is added -- which would be highly suboptimal. ++ */ ++ action_t *unfence = pe_fence_op(node, "on", TRUE, NULL, data_set); ++ ++ order_actions(unfence, action, order); ++ ++ if (!node_has_been_unfenced(node)) { ++ // But unfencing is required if it has never been done ++ char *reason = crm_strdup_printf("required by %s %s", ++ rsc->id, action->task); ++ ++ trigger_unfencing(NULL, node, reason, NULL, data_set); ++ free(reason); ++ } ++ } ++} ++ + gboolean + StartRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * data_set) + { +@@ -2559,16 +2592,7 @@ StartRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * + pe_rsc_trace(rsc, "%s on %s %d %d", rsc->id, next ? next->details->uname : "N/A", optional, next ? next->weight : 0); + start = start_action(rsc, next, TRUE); + +- if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { +- action_t *unfence = pe_fence_op(next, "on", TRUE, NULL, data_set); +- +- order_actions(unfence, start, pe_order_implies_then); +- if (!node_has_been_unfenced(next)) { +- char *reason = crm_strdup_printf("Required by %s", rsc->id); +- trigger_unfencing(NULL, next, reason, NULL, data_set); +- free(reason); +- } +- } ++ order_after_unfencing(rsc, next, start, pe_order_implies_then, data_set); + + if (is_set(start->flags, pe_action_runnable) && optional == FALSE) { + update_action_flags(start, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); +@@ -2989,23 +3013,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, + probe = custom_action(rsc, key, RSC_STATUS, node, FALSE, TRUE, data_set); + update_action_flags(probe, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); + +- /* If enabled, require unfencing before probing any fence devices +- * but ensure it happens after any resources that require +- * unfencing have been probed. +- * +- * Doing it the other way (requiring unfencing after probing +- * resources that need it) would result in the node being +- * unfenced, and all its resources being stopped, whenever a new +- * resource is added. Which would be highly suboptimal. +- * +- * So essentially, at the point the fencing device(s) have been +- * probed, we know the state of all resources that require +- * unfencing and that unfencing occurred. +- */ +- if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { +- action_t *unfence = pe_fence_op(node, "on", TRUE, NULL, data_set); +- order_actions(unfence, probe, pe_order_optional); +- } ++ order_after_unfencing(rsc, node, probe, pe_order_optional, data_set); + + /* + * We need to know if it's running_on (not just known_on) this node +-- +1.8.3.1 + + +From 9d3840f374122f6258ddfe44bf85ff43d394d209 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 1 Dec 2017 12:24:55 -0600 +Subject: [PATCH 05/16] Test: PE: update regression tests for unfencing change + +--- + pengine/test10/start-then-stop-with-unfence.dot | 3 +++ + pengine/test10/start-then-stop-with-unfence.exp | 15 +++++++++++++-- + pengine/test10/start-then-stop-with-unfence.summary | 10 +++++----- + pengine/test10/unfence-definition.dot | 2 ++ + pengine/test10/unfence-definition.exp | 9 ++++++++- + pengine/test10/unfence-definition.summary | 4 ++-- + pengine/test10/unfence-parameters.dot | 2 ++ + pengine/test10/unfence-parameters.exp | 9 ++++++++- + pengine/test10/unfence-parameters.summary | 4 ++-- + pengine/test10/unfence-startup.dot | 1 + + pengine/test10/unfence-startup.exp | 6 +++++- + pengine/test10/unfence-startup.summary | 4 ++-- + 12 files changed, 53 insertions(+), 16 deletions(-) + +diff --git a/pengine/test10/start-then-stop-with-unfence.dot b/pengine/test10/start-then-stop-with-unfence.dot +index 6e9569b..b324339 100644 +--- a/pengine/test10/start-then-stop-with-unfence.dot ++++ b/pengine/test10/start-then-stop-with-unfence.dot +@@ -23,5 +23,8 @@ digraph "g" { + "mpath-node2_monitor_0 rhel7-node1.example.com" [ style=bold color="green" fontcolor="black"] + "stonith 'on' rhel7-node1.example.com" -> "ip1_start_0 rhel7-node1.example.com" [ style = bold] + "stonith 'on' rhel7-node1.example.com" -> "jrummy_start_0 rhel7-node1.example.com" [ style = bold] ++"stonith 'on' rhel7-node1.example.com" -> "mpath-node1_monitor_0 rhel7-node1.example.com" [ style = bold] ++"stonith 'on' rhel7-node1.example.com" -> "mpath-node1_start_0 rhel7-node1.example.com" [ style = bold] ++"stonith 'on' rhel7-node1.example.com" -> "mpath-node2_monitor_0 rhel7-node1.example.com" [ style = bold] + "stonith 'on' rhel7-node1.example.com" [ style=bold color="green" fontcolor="black"] + } +diff --git a/pengine/test10/start-then-stop-with-unfence.exp b/pengine/test10/start-then-stop-with-unfence.exp +index 75cb356..715ba40 100644 +--- a/pengine/test10/start-then-stop-with-unfence.exp ++++ b/pengine/test10/start-then-stop-with-unfence.exp +@@ -6,7 +6,11 @@ + + + +- ++ ++ ++ ++ ++ + + + +@@ -30,6 +34,9 @@ + + + ++ ++ ++ + + + +@@ -41,7 +48,11 @@ + + + +- ++ ++ ++ ++ ++ + + + +diff --git a/pengine/test10/start-then-stop-with-unfence.summary b/pengine/test10/start-then-stop-with-unfence.summary +index 2e02a21..b2114d7 100644 +--- a/pengine/test10/start-then-stop-with-unfence.summary ++++ b/pengine/test10/start-then-stop-with-unfence.summary +@@ -11,23 +11,23 @@ Online: [ rhel7-node1.example.com rhel7-node2.example.com ] + Stopped: [ rhel7-node1.example.com ] + + Transition Summary: +- * Fence (on) rhel7-node1.example.com 'Required by ip1' ++ * Fence (on) rhel7-node1.example.com 'required by mpath-node2 monitor' + * Start mpath-node1 (rhel7-node1.example.com) + * Move ip1 ( rhel7-node2.example.com -> rhel7-node1.example.com ) + * Start jrummy:1 (rhel7-node1.example.com) + + Executing cluster transition: +- * Resource action: mpath-node2 monitor on rhel7-node1.example.com +- * Resource action: mpath-node1 monitor on rhel7-node1.example.com + * Pseudo action: jrummy-clone_start_0 + * Fencing rhel7-node1.example.com (on) +- * Resource action: mpath-node1 start on rhel7-node1.example.com ++ * Resource action: mpath-node2 monitor on rhel7-node1.example.com ++ * Resource action: mpath-node1 monitor on rhel7-node1.example.com + * Resource action: jrummy start on rhel7-node1.example.com + * Pseudo action: jrummy-clone_running_0 +- * Resource action: mpath-node1 monitor=60000 on rhel7-node1.example.com ++ * Resource action: mpath-node1 start on rhel7-node1.example.com + * Resource action: ip1 stop on rhel7-node2.example.com + * Resource action: jrummy monitor=10000 on rhel7-node1.example.com + * Pseudo action: all_stopped ++ * Resource action: mpath-node1 monitor=60000 on rhel7-node1.example.com + * Resource action: ip1 start on rhel7-node1.example.com + * Resource action: ip1 monitor=10000 on rhel7-node1.example.com + +diff --git a/pengine/test10/unfence-definition.dot b/pengine/test10/unfence-definition.dot +index 3bc29d3..c42391a 100644 +--- a/pengine/test10/unfence-definition.dot ++++ b/pengine/test10/unfence-definition.dot +@@ -66,11 +66,13 @@ digraph "g" { + "fencing_stop_0 virt-1" [ style=bold color="green" fontcolor="black"] + "stonith 'on' virt-1" -> "clvmd_start_0 virt-1" [ style = bold] + "stonith 'on' virt-1" -> "dlm_start_0 virt-1" [ style = bold] ++"stonith 'on' virt-1" -> "fencing_start_0 virt-1" [ style = bold] + "stonith 'on' virt-1" [ style=bold color="green" fontcolor="black"] + "stonith 'on' virt-3" -> "clvmd:2_monitor_0 virt-3" [ style = bold] + "stonith 'on' virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] + "stonith 'on' virt-3" -> "dlm:2_monitor_0 virt-3" [ style = bold] + "stonith 'on' virt-3" -> "dlm:2_start_0 virt-3" [ style = bold] ++"stonith 'on' virt-3" -> "fencing_monitor_0 virt-3" [ style = bold] + "stonith 'on' virt-3" [ style=bold color="green" fontcolor="black"] + "stonith 'reboot' virt-4" -> "stonith_complete" [ style = bold] + "stonith 'reboot' virt-4" [ style=bold color="green" fontcolor="black"] +diff --git a/pengine/test10/unfence-definition.exp b/pengine/test10/unfence-definition.exp +index b1e241a..25c5674 100644 +--- a/pengine/test10/unfence-definition.exp ++++ b/pengine/test10/unfence-definition.exp +@@ -11,6 +11,9 @@ + + + ++ ++ ++ + + + +@@ -28,7 +31,11 @@ + + + +- ++ ++ ++ ++ ++ + + + +diff --git a/pengine/test10/unfence-definition.summary b/pengine/test10/unfence-definition.summary +index 4ca9344..2051c51 100644 +--- a/pengine/test10/unfence-definition.summary ++++ b/pengine/test10/unfence-definition.summary +@@ -13,7 +13,7 @@ Online: [ virt-1 virt-2 virt-3 ] + + Transition Summary: + * Fence (reboot) virt-4 'node is unclean' +- * Fence (on) virt-3 'Required by dlm:2' ++ * Fence (on) virt-3 'required by fencing monitor' + * Fence (on) virt-1 'Device definition changed' + * Restart fencing ( virt-1 ) + * Restart dlm:0 ( virt-1 ) due to required stonith +@@ -23,13 +23,13 @@ Transition Summary: + * Start clvmd:2 (virt-3) + + Executing cluster transition: +- * Resource action: fencing monitor on virt-3 + * Resource action: fencing stop on virt-1 + * Resource action: clvmd monitor on virt-2 + * Pseudo action: clvmd-clone_stop_0 + * Fencing virt-4 (reboot) + * Pseudo action: stonith_complete + * Fencing virt-3 (on) ++ * Resource action: fencing monitor on virt-3 + * Resource action: fencing delete on virt-1 + * Resource action: dlm monitor on virt-3 + * Resource action: clvmd stop on virt-1 +diff --git a/pengine/test10/unfence-parameters.dot b/pengine/test10/unfence-parameters.dot +index ce006c4..3c27b22 100644 +--- a/pengine/test10/unfence-parameters.dot ++++ b/pengine/test10/unfence-parameters.dot +@@ -63,11 +63,13 @@ digraph "g" { + "fencing_stop_0 virt-1" [ style=bold color="green" fontcolor="black"] + "stonith 'on' virt-1" -> "clvmd_start_0 virt-1" [ style = bold] + "stonith 'on' virt-1" -> "dlm_start_0 virt-1" [ style = bold] ++"stonith 'on' virt-1" -> "fencing_start_0 virt-1" [ style = bold] + "stonith 'on' virt-1" [ style=bold color="green" fontcolor="black"] + "stonith 'on' virt-3" -> "clvmd:2_monitor_0 virt-3" [ style = bold] + "stonith 'on' virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] + "stonith 'on' virt-3" -> "dlm:2_monitor_0 virt-3" [ style = bold] + "stonith 'on' virt-3" -> "dlm:2_start_0 virt-3" [ style = bold] ++"stonith 'on' virt-3" -> "fencing_monitor_0 virt-3" [ style = bold] + "stonith 'on' virt-3" [ style=bold color="green" fontcolor="black"] + "stonith 'reboot' virt-4" -> "stonith_complete" [ style = bold] + "stonith 'reboot' virt-4" [ style=bold color="green" fontcolor="black"] +diff --git a/pengine/test10/unfence-parameters.exp b/pengine/test10/unfence-parameters.exp +index b8053c7..3b73fc7 100644 +--- a/pengine/test10/unfence-parameters.exp ++++ b/pengine/test10/unfence-parameters.exp +@@ -15,7 +15,11 @@ + + + +- ++ ++ ++ ++ ++ + + + +@@ -29,6 +33,9 @@ + + + ++ ++ ++ + + + +diff --git a/pengine/test10/unfence-parameters.summary b/pengine/test10/unfence-parameters.summary +index 5b582d9..2cc9e27 100644 +--- a/pengine/test10/unfence-parameters.summary ++++ b/pengine/test10/unfence-parameters.summary +@@ -13,7 +13,7 @@ Online: [ virt-1 virt-2 virt-3 ] + + Transition Summary: + * Fence (reboot) virt-4 'node is unclean' +- * Fence (on) virt-3 'Required by dlm:2' ++ * Fence (on) virt-3 'required by fencing monitor' + * Fence (on) virt-1 'Device parameters changed (reload)' + * Restart fencing ( virt-1 ) due to resource definition change + * Restart dlm:0 ( virt-1 ) due to required stonith +@@ -24,12 +24,12 @@ Transition Summary: + + Executing cluster transition: + * Resource action: fencing stop on virt-1 +- * Resource action: fencing monitor on virt-3 + * Resource action: clvmd monitor on virt-2 + * Pseudo action: clvmd-clone_stop_0 + * Fencing virt-4 (reboot) + * Pseudo action: stonith_complete + * Fencing virt-3 (on) ++ * Resource action: fencing monitor on virt-3 + * Resource action: dlm monitor on virt-3 + * Resource action: clvmd stop on virt-1 + * Resource action: clvmd monitor on virt-3 +diff --git a/pengine/test10/unfence-startup.dot b/pengine/test10/unfence-startup.dot +index d496956..642f795 100644 +--- a/pengine/test10/unfence-startup.dot ++++ b/pengine/test10/unfence-startup.dot +@@ -29,6 +29,7 @@ digraph "g" { + "stonith 'on' virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] + "stonith 'on' virt-3" -> "dlm:2_monitor_0 virt-3" [ style = bold] + "stonith 'on' virt-3" -> "dlm:2_start_0 virt-3" [ style = bold] ++"stonith 'on' virt-3" -> "fencing_monitor_0 virt-3" [ style = bold] + "stonith 'on' virt-3" [ style=bold color="green" fontcolor="black"] + "stonith 'reboot' virt-4" -> "stonith_complete" [ style = bold] + "stonith 'reboot' virt-4" [ style=bold color="green" fontcolor="black"] +diff --git a/pengine/test10/unfence-startup.exp b/pengine/test10/unfence-startup.exp +index 70c1686..bfd24c8 100644 +--- a/pengine/test10/unfence-startup.exp ++++ b/pengine/test10/unfence-startup.exp +@@ -6,7 +6,11 @@ + + + +- ++ ++ ++ ++ ++ + + + +diff --git a/pengine/test10/unfence-startup.summary b/pengine/test10/unfence-startup.summary +index 276358c..4601f31 100644 +--- a/pengine/test10/unfence-startup.summary ++++ b/pengine/test10/unfence-startup.summary +@@ -13,18 +13,18 @@ Online: [ virt-1 virt-2 virt-3 ] + + Transition Summary: + * Fence (reboot) virt-4 'node is unclean' +- * Fence (on) virt-3 'Required by dlm:2' ++ * Fence (on) virt-3 'required by fencing monitor' + * Start dlm:2 (virt-3) + * Start clvmd:1 (virt-2) + * Start clvmd:2 (virt-3) + + Executing cluster transition: +- * Resource action: fencing monitor on virt-3 + * Resource action: clvmd monitor on virt-2 + * Fencing virt-4 (reboot) + * Pseudo action: stonith_complete + * Fencing virt-3 (on) + * Pseudo action: all_stopped ++ * Resource action: fencing monitor on virt-3 + * Resource action: dlm monitor on virt-3 + * Pseudo action: dlm-clone_start_0 + * Resource action: clvmd monitor on virt-3 +-- +1.8.3.1 + + +From c11d10ef4f04bbdb2e6b7e6251b88e50faccaaca Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 1 Dec 2017 14:36:03 -0600 +Subject: [PATCH 06/16] Test: PE: add regression test for unfencing with only + fence devices + +--- + pengine/regression.sh | 1 + + pengine/test10/unfence-device.dot | 18 ++++++ + pengine/test10/unfence-device.exp | 100 ++++++++++++++++++++++++++++++++++ + pengine/test10/unfence-device.scores | 5 ++ + pengine/test10/unfence-device.summary | 29 ++++++++++ + pengine/test10/unfence-device.xml | 66 ++++++++++++++++++++++ + 6 files changed, 219 insertions(+) + create mode 100644 pengine/test10/unfence-device.dot + create mode 100644 pengine/test10/unfence-device.exp + create mode 100644 pengine/test10/unfence-device.scores + create mode 100644 pengine/test10/unfence-device.summary + create mode 100644 pengine/test10/unfence-device.xml + +diff --git a/pengine/regression.sh b/pengine/regression.sh +index db101e7..47cf0ba 100755 +--- a/pengine/regression.sh ++++ b/pengine/regression.sh +@@ -393,6 +393,7 @@ echo "" + do_test unfence-startup "Clean unfencing" + do_test unfence-definition "Unfencing when the agent changes" + do_test unfence-parameters "Unfencing when the agent parameters changes" ++do_test unfence-device "Unfencing when a cluster has only fence devices" + + echo "" + do_test master-0 "Stopped -> Slave" +diff --git a/pengine/test10/unfence-device.dot b/pengine/test10/unfence-device.dot +new file mode 100644 +index 0000000..e383fd2 +--- /dev/null ++++ b/pengine/test10/unfence-device.dot +@@ -0,0 +1,18 @@ ++digraph "g" { ++"fence_scsi_monitor_0 virt-008" -> "fence_scsi_start_0 virt-008" [ style = bold] ++"fence_scsi_monitor_0 virt-008" [ style=bold color="green" fontcolor="black"] ++"fence_scsi_monitor_0 virt-009" -> "fence_scsi_start_0 virt-008" [ style = bold] ++"fence_scsi_monitor_0 virt-009" [ style=bold color="green" fontcolor="black"] ++"fence_scsi_monitor_0 virt-013" -> "fence_scsi_start_0 virt-008" [ style = bold] ++"fence_scsi_monitor_0 virt-013" [ style=bold color="green" fontcolor="black"] ++"fence_scsi_monitor_60000 virt-008" [ style=bold color="green" fontcolor="black"] ++"fence_scsi_start_0 virt-008" -> "fence_scsi_monitor_60000 virt-008" [ style = bold] ++"fence_scsi_start_0 virt-008" [ style=bold color="green" fontcolor="black"] ++"stonith 'on' virt-008" -> "fence_scsi_monitor_0 virt-008" [ style = bold] ++"stonith 'on' virt-008" -> "fence_scsi_start_0 virt-008" [ style = bold] ++"stonith 'on' virt-008" [ style=bold color="green" fontcolor="black"] ++"stonith 'on' virt-009" -> "fence_scsi_monitor_0 virt-009" [ style = bold] ++"stonith 'on' virt-009" [ style=bold color="green" fontcolor="black"] ++"stonith 'on' virt-013" -> "fence_scsi_monitor_0 virt-013" [ style = bold] ++"stonith 'on' virt-013" [ style=bold color="green" fontcolor="black"] ++} +diff --git a/pengine/test10/unfence-device.exp b/pengine/test10/unfence-device.exp +new file mode 100644 +index 0000000..98cb548 +--- /dev/null ++++ b/pengine/test10/unfence-device.exp +@@ -0,0 +1,100 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/pengine/test10/unfence-device.scores b/pengine/test10/unfence-device.scores +new file mode 100644 +index 0000000..8ea5036 +--- /dev/null ++++ b/pengine/test10/unfence-device.scores +@@ -0,0 +1,5 @@ ++Allocation scores: ++Using the original execution date of: 2017-11-30 10:44:29Z ++native_color: fence_scsi allocation score on virt-008: 0 ++native_color: fence_scsi allocation score on virt-009: 0 ++native_color: fence_scsi allocation score on virt-013: 0 +diff --git a/pengine/test10/unfence-device.summary b/pengine/test10/unfence-device.summary +new file mode 100644 +index 0000000..181724b +--- /dev/null ++++ b/pengine/test10/unfence-device.summary +@@ -0,0 +1,29 @@ ++Using the original execution date of: 2017-11-30 10:44:29Z ++ ++Current cluster status: ++Online: [ virt-008 virt-009 virt-013 ] ++ ++ fence_scsi (stonith:fence_scsi): Stopped ++ ++Transition Summary: ++ * Fence (on) virt-013 'required by fence_scsi monitor' ++ * Fence (on) virt-009 'required by fence_scsi monitor' ++ * Fence (on) virt-008 'required by fence_scsi monitor' ++ * Start fence_scsi ( virt-008 ) ++ ++Executing cluster transition: ++ * Fencing virt-013 (on) ++ * Fencing virt-009 (on) ++ * Fencing virt-008 (on) ++ * Resource action: fence_scsi monitor on virt-013 ++ * Resource action: fence_scsi monitor on virt-009 ++ * Resource action: fence_scsi monitor on virt-008 ++ * Resource action: fence_scsi start on virt-008 ++ * Resource action: fence_scsi monitor=60000 on virt-008 ++Using the original execution date of: 2017-11-30 10:44:29Z ++ ++Revised cluster status: ++Online: [ virt-008 virt-009 virt-013 ] ++ ++ fence_scsi (stonith:fence_scsi): Started virt-008 ++ +diff --git a/pengine/test10/unfence-device.xml b/pengine/test10/unfence-device.xml +new file mode 100644 +index 0000000..e977d9b +--- /dev/null ++++ b/pengine/test10/unfence-device.xml +@@ -0,0 +1,66 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +-- +1.8.3.1 + + +From 2948a8e329cda42e5e7e106c0374d49d93b65481 Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Wed, 6 Dec 2017 14:05:05 +1100 +Subject: [PATCH 07/16] Fix: PE: Passing boolean instead of a pointer + +--- + lib/pengine/container.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/pengine/container.c b/lib/pengine/container.c +index 52b60a4..4d2d876 100644 +--- a/lib/pengine/container.c ++++ b/lib/pengine/container.c +@@ -557,7 +557,7 @@ create_remote_resource( + * remote should be ordered relative to docker. + */ + xml_remote = pe_create_remote_xml(NULL, id, tuple->docker->id, +- XML_BOOLEAN_FALSE, NULL, "60s", NULL, ++ NULL, NULL, "60s", NULL, + NULL, connect_name, + (data->control_port? + data->control_port : port_s)); +-- +1.8.3.1 + + +From f3593e410643dcafa81e28da27c3a623e306fa61 Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Wed, 6 Dec 2017 14:48:57 +1100 +Subject: [PATCH 08/16] Fix: PE: Ordering bundle child stops/demotes after + container fencing causes graph loops + +--- + include/crm/pengine/status.h | 6 ++++++ + lib/pengine/utils.c | 2 +- + pengine/allocate.c | 4 +++- + pengine/native.c | 9 +++++++-- + pengine/test10/bundle-order-fencing.dot | 5 ----- + pengine/test10/bundle-order-fencing.exp | 15 --------------- + 6 files changed, 17 insertions(+), 24 deletions(-) + +diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h +index f2a8910..fca7f12 100644 +--- a/include/crm/pengine/status.h ++++ b/include/crm/pengine/status.h +@@ -517,4 +517,10 @@ pe_rsc_is_anon_clone(resource_t *rsc) + return pe_rsc_is_clone(rsc) && is_not_set(rsc->flags, pe_rsc_unique); + } + ++static inline bool ++pe_rsc_is_bundled(resource_t *rsc) ++{ ++ return uber_parent(rsc)->parent != NULL; ++} ++ + #endif +diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c +index 0ce0e30..a875226 100644 +--- a/lib/pengine/utils.c ++++ b/lib/pengine/utils.c +@@ -1015,7 +1015,7 @@ unpack_operation(action_t * action, xmlNode * xml_obj, resource_t * container, + value = "nothing (resource)"; + } + +- pe_rsc_trace(action->rsc, "\tAction %s requires: %s", action->task, value); ++ pe_rsc_trace(action->rsc, "\tAction %s requires: %s", action->uuid, value); + + value = unpack_operation_on_fail(action); + +diff --git a/pengine/allocate.c b/pengine/allocate.c +index 98464a9..2ae491c 100644 +--- a/pengine/allocate.c ++++ b/pengine/allocate.c +@@ -1470,7 +1470,9 @@ fence_guest(pe_node_t *node, pe_action_t *done, pe_working_set_t *data_set) + + /* Order/imply other actions relative to pseudo-fence as with real fence */ + stonith_constraints(node, stonith_op, data_set); +- order_actions(stonith_op, done, pe_order_implies_then); ++ if(done) { ++ order_actions(stonith_op, done, pe_order_implies_then); ++ } + } + + /* +diff --git a/pengine/native.c b/pengine/native.c +index 0013e33..96c9a26 100644 +--- a/pengine/native.c ++++ b/pengine/native.c +@@ -3164,7 +3164,9 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ + */ + flags |= pe_order_preserve; + } +- order_actions(stonith_op, action, flags); ++ if (pe_rsc_is_bundled(rsc) == FALSE) { ++ order_actions(stonith_op, action, flags); ++ } + order_actions(stonith_op, parent_stop, flags); + } + +@@ -3252,7 +3254,10 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ + update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__); + update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); + +- if (start == NULL || start->needs > rsc_req_quorum) { ++ if (pe_rsc_is_bundled(rsc)) { ++ /* Do nothing, let the recovery be ordered after the parent's implied stop */ ++ ++ } else if (start == NULL || start->needs > rsc_req_quorum) { + order_actions(stonith_op, action, pe_order_preserve|pe_order_optional); + } + } +diff --git a/pengine/test10/bundle-order-fencing.dot b/pengine/test10/bundle-order-fencing.dot +index a7e5805..64b6326 100644 +--- a/pengine/test10/bundle-order-fencing.dot ++++ b/pengine/test10/bundle-order-fencing.dot +@@ -403,19 +403,14 @@ digraph "g" { + "redis_stop_0 redis-bundle-0" -> "redis_start_0 redis-bundle-0" [ style = dashed] + "redis_stop_0 redis-bundle-0" [ style=bold color="green" fontcolor="orange"] + "stonith 'off' galera-bundle-0" -> "galera-bundle-master_stop_0" [ style = bold] +-"stonith 'off' galera-bundle-0" -> "galera_demote_0 galera-bundle-0" [ style = bold] +-"stonith 'off' galera-bundle-0" -> "galera_stop_0 galera-bundle-0" [ style = bold] + "stonith 'off' galera-bundle-0" -> "stonith_complete" [ style = bold] + "stonith 'off' galera-bundle-0" [ style=bold color="green" fontcolor="orange"] + "stonith 'off' rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] + "stonith 'off' rabbitmq-bundle-0" -> "rabbitmq_post_notify_stonith_0" [ style = bold] +-"stonith 'off' rabbitmq-bundle-0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] + "stonith 'off' rabbitmq-bundle-0" -> "stonith_complete" [ style = bold] + "stonith 'off' rabbitmq-bundle-0" [ style=bold color="green" fontcolor="orange"] + "stonith 'off' redis-bundle-0" -> "redis-bundle-master_stop_0" [ style = bold] +-"stonith 'off' redis-bundle-0" -> "redis_demote_0 redis-bundle-0" [ style = bold] + "stonith 'off' redis-bundle-0" -> "redis_post_notify_stonith_0" [ style = bold] +-"stonith 'off' redis-bundle-0" -> "redis_stop_0 redis-bundle-0" [ style = bold] + "stonith 'off' redis-bundle-0" -> "stonith_complete" [ style = bold] + "stonith 'off' redis-bundle-0" [ style=bold color="green" fontcolor="orange"] + "stonith 'reboot' controller-0" -> "galera-bundle-0_stop_0 controller-0" [ style = bold] +diff --git a/pengine/test10/bundle-order-fencing.exp b/pengine/test10/bundle-order-fencing.exp +index 8e35f32..78ce675 100644 +--- a/pengine/test10/bundle-order-fencing.exp ++++ b/pengine/test10/bundle-order-fencing.exp +@@ -55,9 +55,6 @@ + + + +- +- +- + + + +@@ -440,9 +437,6 @@ + + + +- +- +- + + + +@@ -455,9 +449,6 @@ + + + +- +- +- + + + +@@ -701,9 +692,6 @@ + + + +- +- +- + + + +@@ -716,9 +704,6 @@ + + + +- +- +- + + + +-- +1.8.3.1 + + +From 906cd4a9e6b871eefb6d113354f9045c1826711a Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Wed, 6 Dec 2017 15:04:21 +1100 +Subject: [PATCH 09/16] Fix: PE: Only allowed nodes need to be considered when + ordering resource startup after _all_ recovery + +--- + pengine/native.c | 1 + + pengine/test10/bundle-order-fencing.dot | 2 -- + pengine/test10/bundle-order-fencing.exp | 6 ------ + pengine/test10/bundle-order-fencing.summary | 8 ++++---- + 4 files changed, 5 insertions(+), 12 deletions(-) + +diff --git a/pengine/native.c b/pengine/native.c +index 96c9a26..d4f1ff7 100644 +--- a/pengine/native.c ++++ b/pengine/native.c +@@ -3088,6 +3088,7 @@ native_start_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set + order_actions(stonith_done, action, pe_order_optional); + + } else if (safe_str_eq(action->task, RSC_START) ++ && NULL != pe_hash_table_lookup(rsc->allowed_nodes, target->details->id) + && NULL == pe_hash_table_lookup(rsc->known_on, target->details->id)) { + /* if known == NULL, then we don't know if + * the resource is active on the node +diff --git a/pengine/test10/bundle-order-fencing.dot b/pengine/test10/bundle-order-fencing.dot +index 64b6326..d653250 100644 +--- a/pengine/test10/bundle-order-fencing.dot ++++ b/pengine/test10/bundle-order-fencing.dot +@@ -3,8 +3,6 @@ digraph "g" { + "Cancel redis_monitor_45000 redis-bundle-1" [ style=bold color="green" fontcolor="black"] + "Cancel redis_monitor_60000 redis-bundle-1" -> "redis_promote_0 redis-bundle-1" [ style = bold] + "Cancel redis_monitor_60000 redis-bundle-1" [ style=bold color="green" fontcolor="black"] +-"all_stopped" -> "stonith-fence_ipmilan-5254000dcb3f_start_0 controller-2" [ style = bold] +-"all_stopped" -> "stonith-fence_ipmilan-5254003e8e97_start_0 controller-1" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "galera-bundle-0_monitor_0 controller-1" -> "galera-bundle-0_start_0 controller-2" [ style = dashed] + "galera-bundle-0_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] +diff --git a/pengine/test10/bundle-order-fencing.exp b/pengine/test10/bundle-order-fencing.exp +index 78ce675..708815f 100644 +--- a/pengine/test10/bundle-order-fencing.exp ++++ b/pengine/test10/bundle-order-fencing.exp +@@ -1624,9 +1624,6 @@ + + + +- +- +- + + + +@@ -1661,9 +1658,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/bundle-order-fencing.summary b/pengine/test10/bundle-order-fencing.summary +index e78c531..ee2c361 100644 +--- a/pengine/test10/bundle-order-fencing.summary ++++ b/pengine/test10/bundle-order-fencing.summary +@@ -91,6 +91,8 @@ Executing cluster transition: + * Pseudo action: redis-bundle-master_demote_0 + * Pseudo action: redis-bundle-0_stop_0 + * Pseudo action: haproxy-bundle-docker-0_stop_0 ++ * Resource action: stonith-fence_ipmilan-5254003e8e97 start on controller-1 ++ * Resource action: stonith-fence_ipmilan-5254000dcb3f start on controller-2 + * Pseudo action: stonith-redis-bundle-0-off on redis-bundle-0 + * Pseudo action: stonith-rabbitmq-bundle-0-off on rabbitmq-bundle-0 + * Pseudo action: stonith-galera-bundle-0-off on galera-bundle-0 +@@ -107,6 +109,8 @@ Executing cluster transition: + * Pseudo action: ip-192.168.24.7_stop_0 + * Pseudo action: ip-10.0.0.109_stop_0 + * Pseudo action: ip-172.17.4.11_stop_0 ++ * Resource action: stonith-fence_ipmilan-5254003e8e97 monitor=60000 on controller-1 ++ * Resource action: stonith-fence_ipmilan-5254000dcb3f monitor=60000 on controller-2 + * Pseudo action: galera-bundle_demoted_0 + * Pseudo action: galera-bundle_stop_0 + * Pseudo action: rabbitmq_stop_0 +@@ -172,11 +176,7 @@ Executing cluster transition: + * Pseudo action: rabbitmq-bundle_running_0 + * Pseudo action: all_stopped + * Pseudo action: redis-bundle-master_running_0 +- * Resource action: stonith-fence_ipmilan-5254003e8e97 start on controller-1 +- * Resource action: stonith-fence_ipmilan-5254000dcb3f start on controller-2 + * Pseudo action: redis-bundle-master_post_notify_running_0 +- * Resource action: stonith-fence_ipmilan-5254003e8e97 monitor=60000 on controller-1 +- * Resource action: stonith-fence_ipmilan-5254000dcb3f monitor=60000 on controller-2 + * Resource action: redis notify on redis-bundle-0 + * Resource action: redis notify on redis-bundle-1 + * Resource action: redis notify on redis-bundle-2 +-- +1.8.3.1 + + +From c6d208dfbda95d8610519de50075087e56a4f8c0 Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Wed, 6 Dec 2017 23:50:12 +1100 +Subject: [PATCH 10/16] Fix: PE: Remote connection resources are safe to to + require only quorum + +--- + lib/pengine/complex.c | 6 ++++ + pengine/test10/bug-rh-1097457.dot | 2 +- + pengine/test10/bug-rh-1097457.exp | 6 ++-- + pengine/test10/bug-rh-1097457.summary | 14 ++++---- + pengine/test10/bundle-order-fencing.dot | 6 ---- + pengine/test10/bundle-order-fencing.exp | 18 ++-------- + pengine/test10/bundle-order-fencing.summary | 8 ++--- + pengine/test10/guest-node-host-dies.dot | 6 ++-- + pengine/test10/guest-node-host-dies.exp | 24 +++++--------- + pengine/test10/guest-node-host-dies.summary | 12 +++---- + pengine/test10/remote-fence-unclean.dot | 2 +- + pengine/test10/remote-fence-unclean.exp | 2 +- + pengine/test10/remote-partial-migrate2.dot | 6 +--- + pengine/test10/remote-partial-migrate2.exp | 27 ++++----------- + pengine/test10/remote-partial-migrate2.summary | 38 +++++++++++----------- + pengine/test10/remote-recover-all.dot | 3 +- + pengine/test10/remote-recover-all.exp | 10 ++---- + pengine/test10/remote-recover-all.summary | 8 ++--- + pengine/test10/remote-recover-connection.dot | 6 ---- + pengine/test10/remote-recover-connection.exp | 27 ++------------- + pengine/test10/remote-recover-connection.summary | 24 +++++++------- + pengine/test10/remote-recover-fail.dot | 2 +- + pengine/test10/remote-recover-fail.exp | 2 +- + pengine/test10/remote-recover-no-resources.dot | 3 +- + pengine/test10/remote-recover-no-resources.exp | 10 ++---- + pengine/test10/remote-recover-no-resources.summary | 8 ++--- + pengine/test10/remote-recover-unknown.dot | 3 +- + pengine/test10/remote-recover-unknown.exp | 10 ++---- + pengine/test10/remote-recover-unknown.summary | 8 ++--- + pengine/test10/remote-recovery.dot | 6 ---- + pengine/test10/remote-recovery.exp | 27 ++------------- + pengine/test10/remote-recovery.summary | 24 +++++++------- + pengine/test10/remote-unclean2.dot | 2 +- + pengine/test10/remote-unclean2.exp | 2 +- + pengine/test10/whitebox-fail1.dot | 2 +- + pengine/test10/whitebox-fail1.exp | 6 ++-- + pengine/test10/whitebox-fail1.summary | 8 ++--- + pengine/test10/whitebox-fail2.dot | 2 +- + pengine/test10/whitebox-fail2.exp | 6 ++-- + pengine/test10/whitebox-fail2.summary | 8 ++--- + pengine/test10/whitebox-imply-stop-on-fence.dot | 6 ++-- + pengine/test10/whitebox-imply-stop-on-fence.exp | 24 +++++--------- + .../test10/whitebox-imply-stop-on-fence.summary | 20 ++++++------ + pengine/test10/whitebox-ms-ordering.dot | 4 +-- + pengine/test10/whitebox-ms-ordering.exp | 12 +++---- + pengine/test10/whitebox-ms-ordering.summary | 8 ++--- + pengine/test10/whitebox-unexpectedly-running.dot | 2 ++ + pengine/test10/whitebox-unexpectedly-running.exp | 6 ++++ + 48 files changed, 182 insertions(+), 294 deletions(-) + +diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c +index 3e0abed..d58d6be 100644 +--- a/lib/pengine/complex.c ++++ b/lib/pengine/complex.c +@@ -784,6 +784,12 @@ common_unpack(xmlNode * xml_obj, resource_t ** rsc, + if(is_set((*rsc)->flags, pe_rsc_fence_device)) { + value = "quorum"; + ++ } else if (safe_str_eq(crm_element_value((*rsc)->xml, XML_AGENT_ATTR_CLASS), "ocf") ++ && safe_str_eq(crm_element_value((*rsc)->xml, XML_AGENT_ATTR_PROVIDER), "pacemaker") ++ && safe_str_eq(crm_element_value((*rsc)->xml, XML_ATTR_TYPE), "remote") ++ ) { ++ value = "quorum"; ++ + } else if (is_set(data_set->flags, pe_flag_enable_unfencing)) { + value = "unfencing"; + +diff --git a/pengine/test10/bug-rh-1097457.dot b/pengine/test10/bug-rh-1097457.dot +index 5984811..94ffe13 100644 +--- a/pengine/test10/bug-rh-1097457.dot ++++ b/pengine/test10/bug-rh-1097457.dot +@@ -80,6 +80,7 @@ digraph "g" { + "VM2_stop_0 lama3" -> "all_stopped" [ style = bold] + "VM2_stop_0 lama3" -> "stonith 'reboot' lamaVM2" [ style = bold] + "VM2_stop_0 lama3" [ style=bold color="green" fontcolor="black"] ++"all_stopped" -> "lamaVM2_start_0 lama3" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "lamaVM2-G4_running_0" [ style=bold color="green" fontcolor="orange"] + "lamaVM2-G4_start_0" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] +@@ -121,6 +122,5 @@ digraph "g" { + "stonith_complete" -> "FSlun3_start_0 lama2" [ style = bold] + "stonith_complete" -> "VM2_start_0 lama3" [ style = bold] + "stonith_complete" -> "all_stopped" [ style = bold] +-"stonith_complete" -> "lamaVM2_start_0 lama3" [ style = bold] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] + } +diff --git a/pengine/test10/bug-rh-1097457.exp b/pengine/test10/bug-rh-1097457.exp +index 4eedd91..f1451b5 100644 +--- a/pengine/test10/bug-rh-1097457.exp ++++ b/pengine/test10/bug-rh-1097457.exp +@@ -599,13 +599,13 @@ + + + +- ++ + + +- ++ + + +- ++ + + + +diff --git a/pengine/test10/bug-rh-1097457.summary b/pengine/test10/bug-rh-1097457.summary +index e23c6ad..0e7d2e0 100644 +--- a/pengine/test10/bug-rh-1097457.summary ++++ b/pengine/test10/bug-rh-1097457.summary +@@ -70,26 +70,26 @@ Executing cluster transition: + * Pseudo action: lamaVM2-G4_stop_0 + * Pseudo action: FAKE4-IP_stop_0 + * Pseudo action: FAKE6-clone_stop_0 +- * Resource action: lamaVM2 start on lama3 +- * Resource action: lamaVM2 monitor=30000 on lama3 +- * Resource action: FSlun3 monitor=10000 on lamaVM2 + * Pseudo action: FAKE4_stop_0 + * Pseudo action: FAKE6_stop_0 + * Pseudo action: FAKE6-clone_stopped_0 + * Pseudo action: FAKE6-clone_start_0 + * Pseudo action: lamaVM2-G4_stopped_0 +- * Resource action: FAKE6 start on lamaVM2 +- * Resource action: FAKE6 monitor=30000 on lamaVM2 +- * Pseudo action: FAKE6-clone_running_0 + * Pseudo action: FSlun3_stop_0 + * Pseudo action: all_stopped + * Resource action: FSlun3 start on lama2 + * Pseudo action: lamaVM2-G4_start_0 ++ * Resource action: lamaVM2 start on lama3 ++ * Resource action: lamaVM2 monitor=30000 on lama3 ++ * Resource action: FSlun3 monitor=10000 on lama2 ++ * Resource action: FSlun3 monitor=10000 on lamaVM2 + * Resource action: FAKE4 start on lamaVM2 + * Resource action: FAKE4 monitor=30000 on lamaVM2 + * Resource action: FAKE4-IP start on lamaVM2 + * Resource action: FAKE4-IP monitor=30000 on lamaVM2 +- * Resource action: FSlun3 monitor=10000 on lama2 ++ * Resource action: FAKE6 start on lamaVM2 ++ * Resource action: FAKE6 monitor=30000 on lamaVM2 ++ * Pseudo action: FAKE6-clone_running_0 + * Pseudo action: lamaVM2-G4_running_0 + + Revised cluster status: +diff --git a/pengine/test10/bundle-order-fencing.dot b/pengine/test10/bundle-order-fencing.dot +index d653250..980bab4 100644 +--- a/pengine/test10/bundle-order-fencing.dot ++++ b/pengine/test10/bundle-order-fencing.dot +@@ -411,15 +411,12 @@ digraph "g" { + "stonith 'off' redis-bundle-0" -> "redis_post_notify_stonith_0" [ style = bold] + "stonith 'off' redis-bundle-0" -> "stonith_complete" [ style = bold] + "stonith 'off' redis-bundle-0" [ style=bold color="green" fontcolor="orange"] +-"stonith 'reboot' controller-0" -> "galera-bundle-0_stop_0 controller-0" [ style = bold] + "stonith 'reboot' controller-0" -> "galera-bundle-docker-0_stop_0 controller-0" [ style = bold] + "stonith 'reboot' controller-0" -> "haproxy-bundle-docker-0_stop_0 controller-0" [ style = bold] + "stonith 'reboot' controller-0" -> "ip-10.0.0.109_stop_0 controller-0" [ style = bold] + "stonith 'reboot' controller-0" -> "ip-172.17.4.11_stop_0 controller-0" [ style = bold] + "stonith 'reboot' controller-0" -> "ip-192.168.24.7_stop_0 controller-0" [ style = bold] +-"stonith 'reboot' controller-0" -> "rabbitmq-bundle-0_stop_0 controller-0" [ style = bold] + "stonith 'reboot' controller-0" -> "rabbitmq-bundle-docker-0_stop_0 controller-0" [ style = bold] +-"stonith 'reboot' controller-0" -> "redis-bundle-0_stop_0 controller-0" [ style = bold] + "stonith 'reboot' controller-0" -> "redis-bundle-docker-0_stop_0 controller-0" [ style = bold] + "stonith 'reboot' controller-0" -> "stonith 'off' galera-bundle-0" [ style = bold] + "stonith 'reboot' controller-0" -> "stonith 'off' rabbitmq-bundle-0" [ style = bold] +@@ -439,14 +436,11 @@ digraph "g" { + "stonith-fence_ipmilan-5254003e8e97_stop_0 controller-0" -> "stonith-fence_ipmilan-5254003e8e97_start_0 controller-1" [ style = bold] + "stonith-fence_ipmilan-5254003e8e97_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] + "stonith_complete" -> "all_stopped" [ style = bold] +-"stonith_complete" -> "galera-bundle-0_start_0 controller-2" [ style = dashed] + "stonith_complete" -> "galera_start_0 galera-bundle-0" [ style = dashed] + "stonith_complete" -> "ip-10.0.0.109_start_0 controller-1" [ style = bold] + "stonith_complete" -> "ip-172.17.4.11_start_0 controller-1" [ style = bold] + "stonith_complete" -> "ip-192.168.24.7_start_0 controller-2" [ style = bold] +-"stonith_complete" -> "rabbitmq-bundle-0_start_0 controller-1" [ style = dashed] + "stonith_complete" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] +-"stonith_complete" -> "redis-bundle-0_start_0 controller-1" [ style = dashed] + "stonith_complete" -> "redis_promote_0 redis-bundle-1" [ style = bold] + "stonith_complete" -> "redis_start_0 redis-bundle-0" [ style = dashed] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] +diff --git a/pengine/test10/bundle-order-fencing.exp b/pengine/test10/bundle-order-fencing.exp +index 708815f..dc4c5c9 100644 +--- a/pengine/test10/bundle-order-fencing.exp ++++ b/pengine/test10/bundle-order-fencing.exp +@@ -379,11 +379,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -565,11 +561,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -1413,11 +1405,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/bundle-order-fencing.summary b/pengine/test10/bundle-order-fencing.summary +index ee2c361..0457f83 100644 +--- a/pengine/test10/bundle-order-fencing.summary ++++ b/pengine/test10/bundle-order-fencing.summary +@@ -56,10 +56,12 @@ Transition Summary: + + Executing cluster transition: + * Pseudo action: rabbitmq-bundle-clone_pre_notify_stop_0 ++ * Pseudo action: rabbitmq-bundle-0_stop_0 + * Resource action: rabbitmq-bundle-0 monitor on controller-2 + * Resource action: rabbitmq-bundle-0 monitor on controller-1 + * Resource action: rabbitmq-bundle-1 monitor on controller-2 + * Resource action: rabbitmq-bundle-2 monitor on controller-1 ++ * Pseudo action: galera-bundle-0_stop_0 + * Resource action: galera-bundle-0 monitor on controller-2 + * Resource action: galera-bundle-0 monitor on controller-1 + * Resource action: galera-bundle-1 monitor on controller-2 +@@ -67,6 +69,7 @@ Executing cluster transition: + * Resource action: redis cancel=45000 on redis-bundle-1 + * Resource action: redis cancel=60000 on redis-bundle-1 + * Pseudo action: redis-bundle-master_pre_notify_demote_0 ++ * Pseudo action: redis-bundle-0_stop_0 + * Resource action: redis-bundle-0 monitor on controller-2 + * Resource action: redis-bundle-0 monitor on controller-1 + * Resource action: redis-bundle-1 monitor on controller-2 +@@ -82,14 +85,12 @@ Executing cluster transition: + * Resource action: rabbitmq notify on rabbitmq-bundle-1 + * Resource action: rabbitmq notify on rabbitmq-bundle-2 + * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_stop_0 +- * Pseudo action: rabbitmq-bundle-0_stop_0 ++ * Pseudo action: rabbitmq-bundle-docker-0_stop_0 + * Pseudo action: galera-bundle-master_demote_0 +- * Pseudo action: galera-bundle-0_stop_0 + * Resource action: redis notify on redis-bundle-1 + * Resource action: redis notify on redis-bundle-2 + * Pseudo action: redis-bundle-master_confirmed-pre_notify_demote_0 + * Pseudo action: redis-bundle-master_demote_0 +- * Pseudo action: redis-bundle-0_stop_0 + * Pseudo action: haproxy-bundle-docker-0_stop_0 + * Resource action: stonith-fence_ipmilan-5254003e8e97 start on controller-1 + * Resource action: stonith-fence_ipmilan-5254000dcb3f start on controller-2 +@@ -100,7 +101,6 @@ Executing cluster transition: + * Pseudo action: haproxy-bundle_stopped_0 + * Pseudo action: rabbitmq_post_notify_stop_0 + * Pseudo action: rabbitmq-bundle-clone_stop_0 +- * Pseudo action: rabbitmq-bundle-docker-0_stop_0 + * Pseudo action: galera_demote_0 + * Pseudo action: galera-bundle-master_demoted_0 + * Pseudo action: redis_post_notify_stop_0 +diff --git a/pengine/test10/guest-node-host-dies.dot b/pengine/test10/guest-node-host-dies.dot +index a85250d..c50e071 100644 +--- a/pengine/test10/guest-node-host-dies.dot ++++ b/pengine/test10/guest-node-host-dies.dot +@@ -6,6 +6,8 @@ digraph "g" { + "Fencing_stop_0 rhel7-4" -> "all_stopped" [ style = bold] + "Fencing_stop_0 rhel7-4" [ style=bold color="green" fontcolor="black"] + "all_stopped" -> "Fencing_start_0 rhel7-4" [ style = bold] ++"all_stopped" -> "lxc1_start_0 rhel7-2" [ style = bold] ++"all_stopped" -> "lxc2_start_0 rhel7-3" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "container1_start_0 rhel7-2" -> "lxc-ms_promote_0 lxc1" [ style = bold] + "container1_start_0 rhel7-2" -> "lxc-ms_start_0 lxc1" [ style = bold] +@@ -115,8 +117,6 @@ digraph "g" { + "stonith 'reboot' lxc2" [ style=bold color="green" fontcolor="orange"] + "stonith 'reboot' rhel7-1" -> "container1_stop_0 rhel7-1" [ style = bold] + "stonith 'reboot' rhel7-1" -> "container2_stop_0 rhel7-1" [ style = bold] +-"stonith 'reboot' rhel7-1" -> "lxc1_stop_0 rhel7-1" [ style = bold] +-"stonith 'reboot' rhel7-1" -> "lxc2_stop_0 rhel7-1" [ style = bold] + "stonith 'reboot' rhel7-1" -> "rsc_rhel7-1_stop_0 rhel7-1" [ style = bold] + "stonith 'reboot' rhel7-1" -> "stonith_complete" [ style = bold] + "stonith 'reboot' rhel7-1" [ style=bold color="green" fontcolor="black"] +@@ -126,8 +126,6 @@ digraph "g" { + "stonith_complete" -> "lxc-ms_promote_0 lxc1" [ style = bold] + "stonith_complete" -> "lxc-ms_start_0 lxc1" [ style = bold] + "stonith_complete" -> "lxc-ms_start_0 lxc2" [ style = bold] +-"stonith_complete" -> "lxc1_start_0 rhel7-2" [ style = bold] +-"stonith_complete" -> "lxc2_start_0 rhel7-3" [ style = bold] + "stonith_complete" -> "rsc_rhel7-1_start_0 rhel7-5" [ style = bold] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] + } +diff --git a/pengine/test10/guest-node-host-dies.exp b/pengine/test10/guest-node-host-dies.exp +index 8dbadde..b5a34ea 100644 +--- a/pengine/test10/guest-node-host-dies.exp ++++ b/pengine/test10/guest-node-host-dies.exp +@@ -432,6 +432,9 @@ + + + ++ ++ ++ + + + +@@ -446,9 +449,6 @@ + + + +- +- +- + + + +@@ -457,11 +457,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -512,6 +508,9 @@ + + + ++ ++ ++ + + + +@@ -526,9 +525,6 @@ + + + +- +- +- + + + +@@ -537,11 +533,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/guest-node-host-dies.summary b/pengine/test10/guest-node-host-dies.summary +index 4feee88..9813d2b 100644 +--- a/pengine/test10/guest-node-host-dies.summary ++++ b/pengine/test10/guest-node-host-dies.summary +@@ -26,16 +26,16 @@ Transition Summary: + Executing cluster transition: + * Resource action: Fencing stop on rhel7-4 + * Pseudo action: lxc-ms-master_demote_0 ++ * Pseudo action: lxc1_stop_0 + * Resource action: lxc1 monitor on rhel7-5 + * Resource action: lxc1 monitor on rhel7-4 + * Resource action: lxc1 monitor on rhel7-3 ++ * Pseudo action: lxc2_stop_0 + * Resource action: lxc2 monitor on rhel7-5 + * Resource action: lxc2 monitor on rhel7-4 + * Resource action: lxc2 monitor on rhel7-2 + * Fencing rhel7-1 (reboot) + * Pseudo action: rsc_rhel7-1_stop_0 +- * Pseudo action: lxc1_stop_0 +- * Pseudo action: lxc2_stop_0 + * Pseudo action: container1_stop_0 + * Pseudo action: container2_stop_0 + * Pseudo action: stonith-lxc2-reboot on lxc2 +@@ -47,21 +47,21 @@ Executing cluster transition: + * Pseudo action: lxc-ms_demote_0 + * Pseudo action: lxc-ms-master_demoted_0 + * Pseudo action: lxc-ms-master_stop_0 +- * Resource action: lxc1 start on rhel7-2 +- * Resource action: lxc2 start on rhel7-3 + * Resource action: rsc_rhel7-1 monitor=5000 on rhel7-5 + * Pseudo action: lxc-ms_stop_0 + * Pseudo action: lxc-ms_stop_0 + * Pseudo action: lxc-ms-master_stopped_0 + * Pseudo action: lxc-ms-master_start_0 +- * Resource action: lxc1 monitor=30000 on rhel7-2 +- * Resource action: lxc2 monitor=30000 on rhel7-3 + * Pseudo action: all_stopped + * Resource action: Fencing start on rhel7-4 + * Resource action: Fencing monitor=120000 on rhel7-4 ++ * Resource action: lxc1 start on rhel7-2 ++ * Resource action: lxc2 start on rhel7-3 + * Resource action: lxc-ms start on lxc1 + * Resource action: lxc-ms start on lxc2 + * Pseudo action: lxc-ms-master_running_0 ++ * Resource action: lxc1 monitor=30000 on rhel7-2 ++ * Resource action: lxc2 monitor=30000 on rhel7-3 + * Resource action: lxc-ms monitor=10000 on lxc2 + * Pseudo action: lxc-ms-master_promote_0 + * Resource action: lxc-ms promote on lxc1 +diff --git a/pengine/test10/remote-fence-unclean.dot b/pengine/test10/remote-fence-unclean.dot +index b2829a7..76a676d 100644 +--- a/pengine/test10/remote-fence-unclean.dot ++++ b/pengine/test10/remote-fence-unclean.dot +@@ -18,6 +18,7 @@ + "FAKE4_stop_0 18node1" -> "FAKE4_start_0 18node2" [ style = bold] + "FAKE4_stop_0 18node1" -> "all_stopped" [ style = bold] + "FAKE4_stop_0 18node1" [ style=bold color="green" fontcolor="black"] ++"all_stopped" -> "remote1_start_0 18node1" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "remote1_monitor_60000 18node1" [ style=bold color="green" fontcolor="black"] + "remote1_start_0 18node1" -> "remote1_monitor_60000 18node1" [ style = bold] +@@ -32,6 +33,5 @@ + "stonith_complete" -> "FAKE3_start_0 18node1" [ style = bold] + "stonith_complete" -> "FAKE4_start_0 18node2" [ style = bold] + "stonith_complete" -> "all_stopped" [ style = bold] +-"stonith_complete" -> "remote1_start_0 18node1" [ style = bold] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] + } +diff --git a/pengine/test10/remote-fence-unclean.exp b/pengine/test10/remote-fence-unclean.exp +index 3a07384..f77d7f6 100644 +--- a/pengine/test10/remote-fence-unclean.exp ++++ b/pengine/test10/remote-fence-unclean.exp +@@ -11,7 +11,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/remote-partial-migrate2.dot b/pengine/test10/remote-partial-migrate2.dot +index a8bf29b..17c8bf3 100644 +--- a/pengine/test10/remote-partial-migrate2.dot ++++ b/pengine/test10/remote-partial-migrate2.dot +@@ -89,6 +89,7 @@ + "FAKE9_stop_0 pcmk2" -> "FAKE9_start_0 pcmk_remote4" [ style = bold] + "FAKE9_stop_0 pcmk2" -> "all_stopped" [ style = bold] + "FAKE9_stop_0 pcmk2" [ style=bold color="green" fontcolor="black"] ++"all_stopped" -> "pcmk_remote5_start_0 pcmk2" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "pcmk_remote2_migrate_from_0 pcmk1" -> "pcmk_remote2_start_0 pcmk1" [ style = bold] + "pcmk_remote2_migrate_from_0 pcmk1" -> "pcmk_remote2_stop_0 pcmk3" [ style = bold] +@@ -150,10 +151,5 @@ + "stonith_complete" -> "FAKE5_start_0 pcmk_remote4" [ style = bold] + "stonith_complete" -> "FAKE9_start_0 pcmk_remote4" [ style = bold] + "stonith_complete" -> "all_stopped" [ style = bold] +-"stonith_complete" -> "pcmk_remote2_migrate_from_0 pcmk1" [ style = bold] +-"stonith_complete" -> "pcmk_remote2_start_0 pcmk1" [ style = bold] +-"stonith_complete" -> "pcmk_remote4_start_0 pcmk2" [ style = bold] +-"stonith_complete" -> "pcmk_remote5_migrate_to_0 pcmk1" [ style = bold] +-"stonith_complete" -> "pcmk_remote5_start_0 pcmk2" [ style = bold] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] + } +diff --git a/pengine/test10/remote-partial-migrate2.exp b/pengine/test10/remote-partial-migrate2.exp +index abf281f..bae190c 100644 +--- a/pengine/test10/remote-partial-migrate2.exp ++++ b/pengine/test10/remote-partial-migrate2.exp +@@ -6,11 +6,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -38,9 +34,6 @@ + + + +- +- +- + + + +@@ -76,11 +69,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -102,11 +91,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -129,13 +114,13 @@ + + + +- ++ + + +- ++ + + +- ++ + + + +diff --git a/pengine/test10/remote-partial-migrate2.summary b/pengine/test10/remote-partial-migrate2.summary +index 2a242bd..6b6428d 100644 +--- a/pengine/test10/remote-partial-migrate2.summary ++++ b/pengine/test10/remote-partial-migrate2.summary +@@ -84,6 +84,10 @@ Transition Summary: + * Move FAKE49 ( pcmk_remote3 -> pcmk_remote4 ) + + Executing cluster transition: ++ * Resource action: pcmk_remote2 migrate_from on pcmk1 ++ * Resource action: pcmk_remote2 stop on pcmk3 ++ * Resource action: pcmk_remote4 start on pcmk2 ++ * Resource action: pcmk_remote5 migrate_to on pcmk1 + * Resource action: FAKE5 stop on pcmk1 + * Resource action: FAKE9 stop on pcmk2 + * Resource action: FAKE12 stop on pcmk1 +@@ -99,11 +103,15 @@ Executing cluster transition: + * Resource action: FAKE48 stop on pcmk1 + * Resource action: FAKE49 stop on pcmk_remote3 + * Fencing pcmk4 (reboot) ++ * Pseudo action: pcmk_remote2_start_0 ++ * Resource action: pcmk_remote4 monitor=60000 on pcmk2 ++ * Resource action: pcmk_remote5 migrate_from on pcmk2 ++ * Resource action: pcmk_remote5 stop on pcmk1 ++ * Resource action: FAKE41 stop on pcmk_remote2 + * Pseudo action: stonith_complete +- * Resource action: pcmk_remote2 migrate_from on pcmk1 +- * Resource action: pcmk_remote2 stop on pcmk3 +- * Resource action: pcmk_remote4 start on pcmk2 +- * Resource action: pcmk_remote5 migrate_to on pcmk1 ++ * Pseudo action: all_stopped ++ * Resource action: pcmk_remote2 monitor=60000 on pcmk1 ++ * Pseudo action: pcmk_remote5_start_0 + * Resource action: FAKE5 start on pcmk_remote4 + * Resource action: FAKE9 start on pcmk_remote4 + * Resource action: FAKE12 start on pcmk2 +@@ -114,12 +122,12 @@ Executing cluster transition: + * Resource action: FAKE30 start on pcmk_remote1 + * Resource action: FAKE33 start on pcmk_remote4 + * Resource action: FAKE38 start on pcmk_remote1 ++ * Resource action: FAKE39 start on pcmk_remote2 ++ * Resource action: FAKE41 start on pcmk_remote4 ++ * Resource action: FAKE47 start on pcmk_remote2 + * Resource action: FAKE48 start on pcmk_remote3 + * Resource action: FAKE49 start on pcmk_remote4 +- * Pseudo action: pcmk_remote2_start_0 +- * Resource action: pcmk_remote4 monitor=60000 on pcmk2 +- * Resource action: pcmk_remote5 migrate_from on pcmk2 +- * Resource action: pcmk_remote5 stop on pcmk1 ++ * Resource action: pcmk_remote5 monitor=60000 on pcmk2 + * Resource action: FAKE5 monitor=10000 on pcmk_remote4 + * Resource action: FAKE9 monitor=10000 on pcmk_remote4 + * Resource action: FAKE12 monitor=10000 on pcmk2 +@@ -130,19 +138,11 @@ Executing cluster transition: + * Resource action: FAKE30 monitor=10000 on pcmk_remote1 + * Resource action: FAKE33 monitor=10000 on pcmk_remote4 + * Resource action: FAKE38 monitor=10000 on pcmk_remote1 +- * Resource action: FAKE39 start on pcmk_remote2 +- * Resource action: FAKE41 stop on pcmk_remote2 +- * Resource action: FAKE47 start on pcmk_remote2 +- * Resource action: FAKE48 monitor=10000 on pcmk_remote3 +- * Resource action: FAKE49 monitor=10000 on pcmk_remote4 +- * Pseudo action: all_stopped +- * Resource action: pcmk_remote2 monitor=60000 on pcmk1 +- * Pseudo action: pcmk_remote5_start_0 + * Resource action: FAKE39 monitor=10000 on pcmk_remote2 +- * Resource action: FAKE41 start on pcmk_remote4 +- * Resource action: FAKE47 monitor=10000 on pcmk_remote2 +- * Resource action: pcmk_remote5 monitor=60000 on pcmk2 + * Resource action: FAKE41 monitor=10000 on pcmk_remote4 ++ * Resource action: FAKE47 monitor=10000 on pcmk_remote2 ++ * Resource action: FAKE48 monitor=10000 on pcmk_remote3 ++ * Resource action: FAKE49 monitor=10000 on pcmk_remote4 + + Revised cluster status: + Online: [ pcmk1 pcmk2 pcmk3 ] +diff --git a/pengine/test10/remote-recover-all.dot b/pengine/test10/remote-recover-all.dot +index ad421e6..5b79602 100644 +--- a/pengine/test10/remote-recover-all.dot ++++ b/pengine/test10/remote-recover-all.dot +@@ -1,4 +1,5 @@ + digraph "g" { ++"all_stopped" -> "galera-0_start_0 controller-2" [ style = bold] + "all_stopped" -> "stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style = bold] + "all_stopped" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold] + "all_stopped" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] +@@ -114,7 +115,6 @@ digraph "g" { + "redis_stop_0 controller-1" -> "all_stopped" [ style = bold] + "redis_stop_0 controller-1" -> "redis-master_stopped_0" [ style = bold] + "redis_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] +-"stonith 'reboot' controller-1" -> "galera-0_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "galera-2_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "haproxy-clone_stop_0" [ style = bold] + "stonith 'reboot' controller-1" -> "haproxy_stop_0 controller-1" [ style = bold] +@@ -156,7 +156,6 @@ digraph "g" { + "stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] + "stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] + "stonith_complete" -> "all_stopped" [ style = bold] +-"stonith_complete" -> "galera-0_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold] +diff --git a/pengine/test10/remote-recover-all.exp b/pengine/test10/remote-recover-all.exp +index b0af5c4..556ccfd 100644 +--- a/pengine/test10/remote-recover-all.exp ++++ b/pengine/test10/remote-recover-all.exp +@@ -36,10 +36,10 @@ + + + +- ++ + + +- ++ + + + +@@ -49,11 +49,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/remote-recover-all.summary b/pengine/test10/remote-recover-all.summary +index 6c9f058..ba074e5 100644 +--- a/pengine/test10/remote-recover-all.summary ++++ b/pengine/test10/remote-recover-all.summary +@@ -56,13 +56,13 @@ Transition Summary: + * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) + + Executing cluster transition: ++ * Pseudo action: galera-0_stop_0 + * Pseudo action: galera-master_demote_0 + * Pseudo action: redis-master_pre_notify_stop_0 + * Resource action: stonith-fence_ipmilan-525400bbf613 stop on controller-0 + * Resource action: stonith-fence_ipmilan-525400b4f6bd stop on controller-0 + * Pseudo action: stonith-fence_ipmilan-5254005bdbb5_stop_0 + * Fencing controller-1 (reboot) +- * Pseudo action: galera-0_stop_0 + * Pseudo action: redis_post_notify_stop_0 + * Resource action: redis notify on controller-0 + * Resource action: redis notify on controller-2 +@@ -79,17 +79,14 @@ Executing cluster transition: + * Pseudo action: haproxy-clone_stopped_0 + * Fencing messaging-1 (reboot) + * Pseudo action: stonith_complete +- * Resource action: galera-0 start on controller-2 + * Pseudo action: rabbitmq_post_notify_stop_0 + * Pseudo action: rabbitmq-clone_stop_0 + * Pseudo action: galera_stop_0 +- * Resource action: galera monitor=10000 on galera-0 + * Pseudo action: galera-master_stopped_0 + * Pseudo action: redis-master_post_notify_stopped_0 + * Pseudo action: ip-172.17.1.14_stop_0 + * Pseudo action: ip-172.17.1.17_stop_0 + * Pseudo action: ip-172.17.4.11_stop_0 +- * Resource action: galera-0 monitor=20000 on controller-2 + * Pseudo action: galera-2_stop_0 + * Resource action: rabbitmq notify on messaging-2 + * Resource action: rabbitmq notify on messaging-0 +@@ -108,11 +105,14 @@ Executing cluster transition: + * Resource action: ip-172.17.1.17 monitor=10000 on controller-2 + * Resource action: ip-172.17.4.11 monitor=10000 on controller-2 + * Pseudo action: all_stopped ++ * Resource action: galera-0 start on controller-2 ++ * Resource action: galera monitor=10000 on galera-0 + * Resource action: stonith-fence_ipmilan-525400bbf613 start on controller-0 + * Resource action: stonith-fence_ipmilan-525400bbf613 monitor=60000 on controller-0 + * Resource action: stonith-fence_ipmilan-525400b4f6bd start on controller-0 + * Resource action: stonith-fence_ipmilan-525400b4f6bd monitor=60000 on controller-0 + * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2 ++ * Resource action: galera-0 monitor=20000 on controller-2 + * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2 + Using the original execution date of: 2017-05-03 13:33:24Z + +diff --git a/pengine/test10/remote-recover-connection.dot b/pengine/test10/remote-recover-connection.dot +index d6fdefe..6cd342f 100644 +--- a/pengine/test10/remote-recover-connection.dot ++++ b/pengine/test10/remote-recover-connection.dot +@@ -89,14 +89,11 @@ digraph "g" { + "redis_stop_0 controller-1" -> "all_stopped" [ style = bold] + "redis_stop_0 controller-1" -> "redis-master_stopped_0" [ style = bold] + "redis_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] +-"stonith 'reboot' controller-1" -> "galera-0_stop_0 controller-1" [ style = bold] +-"stonith 'reboot' controller-1" -> "galera-2_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "haproxy-clone_stop_0" [ style = bold] + "stonith 'reboot' controller-1" -> "haproxy_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold] +-"stonith 'reboot' controller-1" -> "messaging-1_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "redis-master_stop_0" [ style = bold] + "stonith 'reboot' controller-1" -> "redis_post_notify_stonith_0" [ style = bold] + "stonith 'reboot' controller-1" -> "redis_stop_0 controller-1" [ style = bold] +@@ -121,11 +118,8 @@ digraph "g" { + "stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] + "stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] + "stonith_complete" -> "all_stopped" [ style = bold] +-"stonith_complete" -> "galera-0_start_0 controller-2" [ style = bold] +-"stonith_complete" -> "galera-2_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold] +-"stonith_complete" -> "messaging-1_start_0 controller-2" [ style = bold] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] + } +diff --git a/pengine/test10/remote-recover-connection.exp b/pengine/test10/remote-recover-connection.exp +index cf74efb..40338b4 100644 +--- a/pengine/test10/remote-recover-connection.exp ++++ b/pengine/test10/remote-recover-connection.exp +@@ -23,9 +23,6 @@ + + + +- +- +- + + + +@@ -34,11 +31,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -64,9 +57,6 @@ + + + +- +- +- + + + +@@ -75,11 +65,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -105,9 +91,6 @@ + + + +- +- +- + + + +@@ -116,11 +99,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/remote-recover-connection.summary b/pengine/test10/remote-recover-connection.summary +index b0433fe..8246cd9 100644 +--- a/pengine/test10/remote-recover-connection.summary ++++ b/pengine/test10/remote-recover-connection.summary +@@ -52,6 +52,9 @@ Transition Summary: + * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) + + Executing cluster transition: ++ * Pseudo action: messaging-1_stop_0 ++ * Pseudo action: galera-0_stop_0 ++ * Pseudo action: galera-2_stop_0 + * Pseudo action: redis-master_pre_notify_stop_0 + * Resource action: stonith-fence_ipmilan-525400bbf613 stop on controller-0 + * Resource action: stonith-fence_ipmilan-525400bbf613 start on controller-0 +@@ -61,9 +64,12 @@ Executing cluster transition: + * Resource action: stonith-fence_ipmilan-525400b4f6bd monitor=60000 on controller-0 + * Pseudo action: stonith-fence_ipmilan-5254005bdbb5_stop_0 + * Fencing controller-1 (reboot) +- * Pseudo action: messaging-1_stop_0 +- * Pseudo action: galera-0_stop_0 +- * Pseudo action: galera-2_stop_0 ++ * Resource action: messaging-1 start on controller-2 ++ * Resource action: galera-0 start on controller-2 ++ * Resource action: galera-2 start on controller-2 ++ * Resource action: rabbitmq monitor=10000 on messaging-1 ++ * Resource action: galera monitor=10000 on galera-2 ++ * Resource action: galera monitor=10000 on galera-0 + * Pseudo action: redis_post_notify_stop_0 + * Resource action: redis notify on controller-0 + * Resource action: redis notify on controller-2 +@@ -72,20 +78,14 @@ Executing cluster transition: + * Pseudo action: haproxy-clone_stop_0 + * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2 + * Pseudo action: stonith_complete +- * Resource action: messaging-1 start on controller-2 +- * Resource action: galera-0 start on controller-2 +- * Resource action: galera-2 start on controller-2 +- * Resource action: rabbitmq monitor=10000 on messaging-1 +- * Resource action: galera monitor=10000 on galera-2 +- * Resource action: galera monitor=10000 on galera-0 ++ * Resource action: messaging-1 monitor=20000 on controller-2 ++ * Resource action: galera-0 monitor=20000 on controller-2 ++ * Resource action: galera-2 monitor=20000 on controller-2 + * Pseudo action: redis_stop_0 + * Pseudo action: redis-master_stopped_0 + * Pseudo action: haproxy_stop_0 + * Pseudo action: haproxy-clone_stopped_0 + * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2 +- * Resource action: messaging-1 monitor=20000 on controller-2 +- * Resource action: galera-0 monitor=20000 on controller-2 +- * Resource action: galera-2 monitor=20000 on controller-2 + * Pseudo action: redis-master_post_notify_stopped_0 + * Pseudo action: ip-172.17.1.14_stop_0 + * Pseudo action: ip-172.17.1.17_stop_0 +diff --git a/pengine/test10/remote-recover-fail.dot b/pengine/test10/remote-recover-fail.dot +index 7b6edaa..3375687 100644 +--- a/pengine/test10/remote-recover-fail.dot ++++ b/pengine/test10/remote-recover-fail.dot +@@ -18,6 +18,7 @@ + "FAKE6_stop_0 rhel7-auto4" -> "all_stopped" [ style = bold] + "FAKE6_stop_0 rhel7-auto4" -> "rhel7-auto4_stop_0 rhel7-auto2" [ style = bold] + "FAKE6_stop_0 rhel7-auto4" [ style=bold color="green" fontcolor="orange"] ++"all_stopped" -> "rhel7-auto4_start_0 rhel7-auto2" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "rhel7-auto4_monitor_60000 rhel7-auto2" [ style=bold color="green" fontcolor="black"] + "rhel7-auto4_start_0 rhel7-auto2" -> "rhel7-auto4_monitor_60000 rhel7-auto2" [ style = bold] +@@ -33,6 +34,5 @@ + "stonith_complete" -> "FAKE2_start_0 rhel7-auto3" [ style = bold] + "stonith_complete" -> "FAKE6_start_0 rhel7-auto2" [ style = bold] + "stonith_complete" -> "all_stopped" [ style = bold] +-"stonith_complete" -> "rhel7-auto4_start_0 rhel7-auto2" [ style = bold] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] + } +diff --git a/pengine/test10/remote-recover-fail.exp b/pengine/test10/remote-recover-fail.exp +index bd014ae..f908566 100644 +--- a/pengine/test10/remote-recover-fail.exp ++++ b/pengine/test10/remote-recover-fail.exp +@@ -24,7 +24,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/remote-recover-no-resources.dot b/pengine/test10/remote-recover-no-resources.dot +index 1e16221..8c2f783 100644 +--- a/pengine/test10/remote-recover-no-resources.dot ++++ b/pengine/test10/remote-recover-no-resources.dot +@@ -1,4 +1,5 @@ + digraph "g" { ++"all_stopped" -> "galera-0_start_0 controller-2" [ style = bold] + "all_stopped" -> "stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style = bold] + "all_stopped" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold] + "all_stopped" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] +@@ -98,7 +99,6 @@ digraph "g" { + "redis_stop_0 controller-1" -> "all_stopped" [ style = bold] + "redis_stop_0 controller-1" -> "redis-master_stopped_0" [ style = bold] + "redis_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] +-"stonith 'reboot' controller-1" -> "galera-0_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "galera-2_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "haproxy-clone_stop_0" [ style = bold] + "stonith 'reboot' controller-1" -> "haproxy_stop_0 controller-1" [ style = bold] +@@ -135,7 +135,6 @@ digraph "g" { + "stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] + "stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] + "stonith_complete" -> "all_stopped" [ style = bold] +-"stonith_complete" -> "galera-0_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold] +diff --git a/pengine/test10/remote-recover-no-resources.exp b/pengine/test10/remote-recover-no-resources.exp +index 987acfd..0a57e27 100644 +--- a/pengine/test10/remote-recover-no-resources.exp ++++ b/pengine/test10/remote-recover-no-resources.exp +@@ -36,10 +36,10 @@ + + + +- ++ + + +- ++ + + + +@@ -49,11 +49,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/remote-recover-no-resources.summary b/pengine/test10/remote-recover-no-resources.summary +index b682e5f..bed02d0 100644 +--- a/pengine/test10/remote-recover-no-resources.summary ++++ b/pengine/test10/remote-recover-no-resources.summary +@@ -54,12 +54,12 @@ Transition Summary: + * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) + + Executing cluster transition: ++ * Pseudo action: galera-0_stop_0 + * Pseudo action: redis-master_pre_notify_stop_0 + * Resource action: stonith-fence_ipmilan-525400bbf613 stop on controller-0 + * Resource action: stonith-fence_ipmilan-525400b4f6bd stop on controller-0 + * Pseudo action: stonith-fence_ipmilan-5254005bdbb5_stop_0 + * Fencing controller-1 (reboot) +- * Pseudo action: galera-0_stop_0 + * Pseudo action: galera-2_stop_0 + * Pseudo action: redis_post_notify_stop_0 + * Resource action: redis notify on controller-0 +@@ -69,15 +69,12 @@ Executing cluster transition: + * Pseudo action: haproxy-clone_stop_0 + * Fencing messaging-1 (reboot) + * Pseudo action: stonith_complete +- * Resource action: galera-0 start on controller-2 + * Pseudo action: rabbitmq_post_notify_stop_0 + * Pseudo action: rabbitmq-clone_stop_0 +- * Resource action: galera monitor=10000 on galera-0 + * Pseudo action: redis_stop_0 + * Pseudo action: redis-master_stopped_0 + * Pseudo action: haproxy_stop_0 + * Pseudo action: haproxy-clone_stopped_0 +- * Resource action: galera-0 monitor=20000 on controller-2 + * Resource action: rabbitmq notify on messaging-2 + * Resource action: rabbitmq notify on messaging-0 + * Pseudo action: rabbitmq_notified_0 +@@ -99,11 +96,14 @@ Executing cluster transition: + * Resource action: ip-172.17.1.17 monitor=10000 on controller-2 + * Resource action: ip-172.17.4.11 monitor=10000 on controller-2 + * Pseudo action: all_stopped ++ * Resource action: galera-0 start on controller-2 ++ * Resource action: galera monitor=10000 on galera-0 + * Resource action: stonith-fence_ipmilan-525400bbf613 start on controller-0 + * Resource action: stonith-fence_ipmilan-525400bbf613 monitor=60000 on controller-0 + * Resource action: stonith-fence_ipmilan-525400b4f6bd start on controller-0 + * Resource action: stonith-fence_ipmilan-525400b4f6bd monitor=60000 on controller-0 + * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2 ++ * Resource action: galera-0 monitor=20000 on controller-2 + * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2 + Using the original execution date of: 2017-05-03 13:33:24Z + +diff --git a/pengine/test10/remote-recover-unknown.dot b/pengine/test10/remote-recover-unknown.dot +index a8b4e18..8ce59b4 100644 +--- a/pengine/test10/remote-recover-unknown.dot ++++ b/pengine/test10/remote-recover-unknown.dot +@@ -1,4 +1,5 @@ + digraph "g" { ++"all_stopped" -> "galera-0_start_0 controller-2" [ style = bold] + "all_stopped" -> "stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style = bold] + "all_stopped" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold] + "all_stopped" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] +@@ -99,7 +100,6 @@ digraph "g" { + "redis_stop_0 controller-1" -> "all_stopped" [ style = bold] + "redis_stop_0 controller-1" -> "redis-master_stopped_0" [ style = bold] + "redis_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] +-"stonith 'reboot' controller-1" -> "galera-0_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "galera-2_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "haproxy-clone_stop_0" [ style = bold] + "stonith 'reboot' controller-1" -> "haproxy_stop_0 controller-1" [ style = bold] +@@ -138,7 +138,6 @@ digraph "g" { + "stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] + "stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] + "stonith_complete" -> "all_stopped" [ style = bold] +-"stonith_complete" -> "galera-0_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold] +diff --git a/pengine/test10/remote-recover-unknown.exp b/pengine/test10/remote-recover-unknown.exp +index b8d51be..0d7b318 100644 +--- a/pengine/test10/remote-recover-unknown.exp ++++ b/pengine/test10/remote-recover-unknown.exp +@@ -36,10 +36,10 @@ + + + +- ++ + + +- ++ + + + +@@ -49,11 +49,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/remote-recover-unknown.summary b/pengine/test10/remote-recover-unknown.summary +index 09f10d8..d47f174 100644 +--- a/pengine/test10/remote-recover-unknown.summary ++++ b/pengine/test10/remote-recover-unknown.summary +@@ -55,12 +55,12 @@ Transition Summary: + * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) + + Executing cluster transition: ++ * Pseudo action: galera-0_stop_0 + * Pseudo action: redis-master_pre_notify_stop_0 + * Resource action: stonith-fence_ipmilan-525400bbf613 stop on controller-0 + * Resource action: stonith-fence_ipmilan-525400b4f6bd stop on controller-0 + * Pseudo action: stonith-fence_ipmilan-5254005bdbb5_stop_0 + * Fencing controller-1 (reboot) +- * Pseudo action: galera-0_stop_0 + * Pseudo action: galera-2_stop_0 + * Pseudo action: redis_post_notify_stop_0 + * Resource action: redis notify on controller-0 +@@ -71,15 +71,12 @@ Executing cluster transition: + * Fencing galera-2 (reboot) + * Fencing messaging-1 (reboot) + * Pseudo action: stonith_complete +- * Resource action: galera-0 start on controller-2 + * Pseudo action: rabbitmq_post_notify_stop_0 + * Pseudo action: rabbitmq-clone_stop_0 +- * Resource action: galera monitor=10000 on galera-0 + * Pseudo action: redis_stop_0 + * Pseudo action: redis-master_stopped_0 + * Pseudo action: haproxy_stop_0 + * Pseudo action: haproxy-clone_stopped_0 +- * Resource action: galera-0 monitor=20000 on controller-2 + * Resource action: rabbitmq notify on messaging-2 + * Resource action: rabbitmq notify on messaging-0 + * Pseudo action: rabbitmq_notified_0 +@@ -101,11 +98,14 @@ Executing cluster transition: + * Resource action: ip-172.17.1.17 monitor=10000 on controller-2 + * Resource action: ip-172.17.4.11 monitor=10000 on controller-2 + * Pseudo action: all_stopped ++ * Resource action: galera-0 start on controller-2 ++ * Resource action: galera monitor=10000 on galera-0 + * Resource action: stonith-fence_ipmilan-525400bbf613 start on controller-0 + * Resource action: stonith-fence_ipmilan-525400bbf613 monitor=60000 on controller-0 + * Resource action: stonith-fence_ipmilan-525400b4f6bd start on controller-0 + * Resource action: stonith-fence_ipmilan-525400b4f6bd monitor=60000 on controller-0 + * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2 ++ * Resource action: galera-0 monitor=20000 on controller-2 + * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2 + Using the original execution date of: 2017-05-03 13:33:24Z + +diff --git a/pengine/test10/remote-recovery.dot b/pengine/test10/remote-recovery.dot +index d6fdefe..6cd342f 100644 +--- a/pengine/test10/remote-recovery.dot ++++ b/pengine/test10/remote-recovery.dot +@@ -89,14 +89,11 @@ digraph "g" { + "redis_stop_0 controller-1" -> "all_stopped" [ style = bold] + "redis_stop_0 controller-1" -> "redis-master_stopped_0" [ style = bold] + "redis_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] +-"stonith 'reboot' controller-1" -> "galera-0_stop_0 controller-1" [ style = bold] +-"stonith 'reboot' controller-1" -> "galera-2_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "haproxy-clone_stop_0" [ style = bold] + "stonith 'reboot' controller-1" -> "haproxy_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold] +-"stonith 'reboot' controller-1" -> "messaging-1_stop_0 controller-1" [ style = bold] + "stonith 'reboot' controller-1" -> "redis-master_stop_0" [ style = bold] + "stonith 'reboot' controller-1" -> "redis_post_notify_stonith_0" [ style = bold] + "stonith 'reboot' controller-1" -> "redis_stop_0 controller-1" [ style = bold] +@@ -121,11 +118,8 @@ digraph "g" { + "stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] + "stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] + "stonith_complete" -> "all_stopped" [ style = bold] +-"stonith_complete" -> "galera-0_start_0 controller-2" [ style = bold] +-"stonith_complete" -> "galera-2_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold] + "stonith_complete" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold] +-"stonith_complete" -> "messaging-1_start_0 controller-2" [ style = bold] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] + } +diff --git a/pengine/test10/remote-recovery.exp b/pengine/test10/remote-recovery.exp +index cf74efb..40338b4 100644 +--- a/pengine/test10/remote-recovery.exp ++++ b/pengine/test10/remote-recovery.exp +@@ -23,9 +23,6 @@ + + + +- +- +- + + + +@@ -34,11 +31,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -64,9 +57,6 @@ + + + +- +- +- + + + +@@ -75,11 +65,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -105,9 +91,6 @@ + + + +- +- +- + + + +@@ -116,11 +99,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/remote-recovery.summary b/pengine/test10/remote-recovery.summary +index b0433fe..8246cd9 100644 +--- a/pengine/test10/remote-recovery.summary ++++ b/pengine/test10/remote-recovery.summary +@@ -52,6 +52,9 @@ Transition Summary: + * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) + + Executing cluster transition: ++ * Pseudo action: messaging-1_stop_0 ++ * Pseudo action: galera-0_stop_0 ++ * Pseudo action: galera-2_stop_0 + * Pseudo action: redis-master_pre_notify_stop_0 + * Resource action: stonith-fence_ipmilan-525400bbf613 stop on controller-0 + * Resource action: stonith-fence_ipmilan-525400bbf613 start on controller-0 +@@ -61,9 +64,12 @@ Executing cluster transition: + * Resource action: stonith-fence_ipmilan-525400b4f6bd monitor=60000 on controller-0 + * Pseudo action: stonith-fence_ipmilan-5254005bdbb5_stop_0 + * Fencing controller-1 (reboot) +- * Pseudo action: messaging-1_stop_0 +- * Pseudo action: galera-0_stop_0 +- * Pseudo action: galera-2_stop_0 ++ * Resource action: messaging-1 start on controller-2 ++ * Resource action: galera-0 start on controller-2 ++ * Resource action: galera-2 start on controller-2 ++ * Resource action: rabbitmq monitor=10000 on messaging-1 ++ * Resource action: galera monitor=10000 on galera-2 ++ * Resource action: galera monitor=10000 on galera-0 + * Pseudo action: redis_post_notify_stop_0 + * Resource action: redis notify on controller-0 + * Resource action: redis notify on controller-2 +@@ -72,20 +78,14 @@ Executing cluster transition: + * Pseudo action: haproxy-clone_stop_0 + * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2 + * Pseudo action: stonith_complete +- * Resource action: messaging-1 start on controller-2 +- * Resource action: galera-0 start on controller-2 +- * Resource action: galera-2 start on controller-2 +- * Resource action: rabbitmq monitor=10000 on messaging-1 +- * Resource action: galera monitor=10000 on galera-2 +- * Resource action: galera monitor=10000 on galera-0 ++ * Resource action: messaging-1 monitor=20000 on controller-2 ++ * Resource action: galera-0 monitor=20000 on controller-2 ++ * Resource action: galera-2 monitor=20000 on controller-2 + * Pseudo action: redis_stop_0 + * Pseudo action: redis-master_stopped_0 + * Pseudo action: haproxy_stop_0 + * Pseudo action: haproxy-clone_stopped_0 + * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2 +- * Resource action: messaging-1 monitor=20000 on controller-2 +- * Resource action: galera-0 monitor=20000 on controller-2 +- * Resource action: galera-2 monitor=20000 on controller-2 + * Pseudo action: redis-master_post_notify_stopped_0 + * Pseudo action: ip-172.17.1.14_stop_0 + * Pseudo action: ip-172.17.1.17_stop_0 +diff --git a/pengine/test10/remote-unclean2.dot b/pengine/test10/remote-unclean2.dot +index 3f8981b..2311a72 100644 +--- a/pengine/test10/remote-unclean2.dot ++++ b/pengine/test10/remote-unclean2.dot +@@ -1,4 +1,5 @@ + digraph "g" { ++"all_stopped" -> "rhel7-auto4_start_0 rhel7-auto1" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "rhel7-auto4_monitor_60000 rhel7-auto1" [ style=bold color="green" fontcolor="black"] + "rhel7-auto4_start_0 rhel7-auto1" -> "rhel7-auto4_monitor_60000 rhel7-auto1" [ style = bold] +@@ -9,6 +10,5 @@ + "stonith 'reboot' rhel7-auto4" -> "stonith_complete" [ style = bold] + "stonith 'reboot' rhel7-auto4" [ style=bold color="green" fontcolor="black"] + "stonith_complete" -> "all_stopped" [ style = bold] +-"stonith_complete" -> "rhel7-auto4_start_0 rhel7-auto1" [ style = bold] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] + } +diff --git a/pengine/test10/remote-unclean2.exp b/pengine/test10/remote-unclean2.exp +index ca0b3ba..2c73d82 100644 +--- a/pengine/test10/remote-unclean2.exp ++++ b/pengine/test10/remote-unclean2.exp +@@ -11,7 +11,7 @@ + + + +- ++ + + + +diff --git a/pengine/test10/whitebox-fail1.dot b/pengine/test10/whitebox-fail1.dot +index bfff4bf..9b755f9 100644 +--- a/pengine/test10/whitebox-fail1.dot ++++ b/pengine/test10/whitebox-fail1.dot +@@ -26,6 +26,7 @@ digraph "g" { + "M_stop_0 lxc1" -> "M_start_0 lxc1" [ style = bold] + "M_stop_0 lxc1" -> "all_stopped" [ style = bold] + "M_stop_0 lxc1" [ style=bold color="green" fontcolor="orange"] ++"all_stopped" -> "lxc1_start_0 18node2" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "container1_start_0 18node2" -> "B_start_0 lxc1" [ style = bold] + "container1_start_0 18node2" -> "M_start_0 lxc1" [ style = bold] +@@ -55,6 +56,5 @@ digraph "g" { + "stonith_complete" -> "M_start_0 lxc1" [ style = bold] + "stonith_complete" -> "all_stopped" [ style = bold] + "stonith_complete" -> "container1_start_0 18node2" [ style = bold] +-"stonith_complete" -> "lxc1_start_0 18node2" [ style = bold] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] + } +diff --git a/pengine/test10/whitebox-fail1.exp b/pengine/test10/whitebox-fail1.exp +index 901a1e3..1532c6e 100644 +--- a/pengine/test10/whitebox-fail1.exp ++++ b/pengine/test10/whitebox-fail1.exp +@@ -227,13 +227,13 @@ + + + +- ++ + + +- ++ + + +- ++ + + + +diff --git a/pengine/test10/whitebox-fail1.summary b/pengine/test10/whitebox-fail1.summary +index d1f3480..a5b85dd 100644 +--- a/pengine/test10/whitebox-fail1.summary ++++ b/pengine/test10/whitebox-fail1.summary +@@ -31,17 +31,17 @@ Executing cluster transition: + * Resource action: container1 start on 18node2 + * Pseudo action: M-clone_stop_0 + * Pseudo action: B_stop_0 +- * Resource action: lxc1 start on 18node2 +- * Resource action: lxc1 monitor=30000 on 18node2 + * Pseudo action: M_stop_0 + * Pseudo action: M-clone_stopped_0 + * Pseudo action: M-clone_start_0 +- * Resource action: B start on lxc1 + * Pseudo action: all_stopped ++ * Resource action: lxc1 start on 18node2 ++ * Resource action: lxc1 monitor=30000 on 18node2 + * Resource action: M start on lxc1 + * Pseudo action: M-clone_running_0 +- * Resource action: B monitor=10000 on lxc1 ++ * Resource action: B start on lxc1 + * Resource action: M monitor=10000 on lxc1 ++ * Resource action: B monitor=10000 on lxc1 + + Revised cluster status: + Online: [ 18node1 18node2 18node3 ] +diff --git a/pengine/test10/whitebox-fail2.dot b/pengine/test10/whitebox-fail2.dot +index bfff4bf..9b755f9 100644 +--- a/pengine/test10/whitebox-fail2.dot ++++ b/pengine/test10/whitebox-fail2.dot +@@ -26,6 +26,7 @@ digraph "g" { + "M_stop_0 lxc1" -> "M_start_0 lxc1" [ style = bold] + "M_stop_0 lxc1" -> "all_stopped" [ style = bold] + "M_stop_0 lxc1" [ style=bold color="green" fontcolor="orange"] ++"all_stopped" -> "lxc1_start_0 18node2" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "container1_start_0 18node2" -> "B_start_0 lxc1" [ style = bold] + "container1_start_0 18node2" -> "M_start_0 lxc1" [ style = bold] +@@ -55,6 +56,5 @@ digraph "g" { + "stonith_complete" -> "M_start_0 lxc1" [ style = bold] + "stonith_complete" -> "all_stopped" [ style = bold] + "stonith_complete" -> "container1_start_0 18node2" [ style = bold] +-"stonith_complete" -> "lxc1_start_0 18node2" [ style = bold] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] + } +diff --git a/pengine/test10/whitebox-fail2.exp b/pengine/test10/whitebox-fail2.exp +index 901a1e3..1532c6e 100644 +--- a/pengine/test10/whitebox-fail2.exp ++++ b/pengine/test10/whitebox-fail2.exp +@@ -227,13 +227,13 @@ + + + +- ++ + + +- ++ + + +- ++ + + + +diff --git a/pengine/test10/whitebox-fail2.summary b/pengine/test10/whitebox-fail2.summary +index ebf6c51..afee261 100644 +--- a/pengine/test10/whitebox-fail2.summary ++++ b/pengine/test10/whitebox-fail2.summary +@@ -31,17 +31,17 @@ Executing cluster transition: + * Resource action: container1 start on 18node2 + * Pseudo action: M-clone_stop_0 + * Pseudo action: B_stop_0 +- * Resource action: lxc1 start on 18node2 +- * Resource action: lxc1 monitor=30000 on 18node2 + * Pseudo action: M_stop_0 + * Pseudo action: M-clone_stopped_0 + * Pseudo action: M-clone_start_0 +- * Resource action: B start on lxc1 + * Pseudo action: all_stopped ++ * Resource action: lxc1 start on 18node2 ++ * Resource action: lxc1 monitor=30000 on 18node2 + * Resource action: M start on lxc1 + * Pseudo action: M-clone_running_0 +- * Resource action: B monitor=10000 on lxc1 ++ * Resource action: B start on lxc1 + * Resource action: M monitor=10000 on lxc1 ++ * Resource action: B monitor=10000 on lxc1 + + Revised cluster status: + Online: [ 18node1 18node2 18node3 ] +diff --git a/pengine/test10/whitebox-imply-stop-on-fence.dot b/pengine/test10/whitebox-imply-stop-on-fence.dot +index 7b536ea..1ef3cba 100644 +--- a/pengine/test10/whitebox-imply-stop-on-fence.dot ++++ b/pengine/test10/whitebox-imply-stop-on-fence.dot +@@ -18,6 +18,8 @@ + "R-lxc-02_kiff-01_stop_0 kiff-01" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] + "R-lxc-02_kiff-01_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] + "all_stopped" -> "fence-kiff-02_start_0 kiff-02" [ style = bold] ++"all_stopped" -> "lxc-01_kiff-01_start_0 kiff-02" [ style = bold] ++"all_stopped" -> "lxc-02_kiff-01_start_0 kiff-02" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "clvmd-clone_stop_0" -> "clvmd-clone_stopped_0" [ style = bold] + "clvmd-clone_stop_0" -> "clvmd_stop_0 kiff-01" [ style = bold] +@@ -78,8 +80,6 @@ + "stonith 'reboot' kiff-01" -> "clvmd_stop_0 kiff-01" [ style = bold] + "stonith 'reboot' kiff-01" -> "dlm-clone_stop_0" [ style = bold] + "stonith 'reboot' kiff-01" -> "dlm_stop_0 kiff-01" [ style = bold] +-"stonith 'reboot' kiff-01" -> "lxc-01_kiff-01_stop_0 kiff-01" [ style = bold] +-"stonith 'reboot' kiff-01" -> "lxc-02_kiff-01_stop_0 kiff-01" [ style = bold] + "stonith 'reboot' kiff-01" -> "shared0-clone_stop_0" [ style = bold] + "stonith 'reboot' kiff-01" -> "shared0_stop_0 kiff-01" [ style = bold] + "stonith 'reboot' kiff-01" -> "stonith 'reboot' lxc-01_kiff-01" [ style = bold] +@@ -94,8 +94,6 @@ + "stonith_complete" -> "R-lxc-01_kiff-01_start_0 kiff-02" [ style = bold] + "stonith_complete" -> "R-lxc-02_kiff-01_start_0 kiff-02" [ style = bold] + "stonith_complete" -> "all_stopped" [ style = bold] +-"stonith_complete" -> "lxc-01_kiff-01_start_0 kiff-02" [ style = bold] +-"stonith_complete" -> "lxc-02_kiff-01_start_0 kiff-02" [ style = bold] + "stonith_complete" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] + "vm-fs_monitor_0 lxc-01_kiff-02" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] +diff --git a/pengine/test10/whitebox-imply-stop-on-fence.exp b/pengine/test10/whitebox-imply-stop-on-fence.exp +index f80dde1..c73d1d2 100644 +--- a/pengine/test10/whitebox-imply-stop-on-fence.exp ++++ b/pengine/test10/whitebox-imply-stop-on-fence.exp +@@ -421,13 +421,13 @@ + + + +- ++ + + +- ++ + + +- ++ + + + +@@ -437,11 +437,7 @@ + + + +- +- +- +- +- ++ + + + +@@ -465,13 +461,13 @@ + + + +- ++ + + +- ++ + + +- ++ + + + +@@ -481,11 +477,7 @@ + + + +- +- +- +- +- ++ + + + +diff --git a/pengine/test10/whitebox-imply-stop-on-fence.summary b/pengine/test10/whitebox-imply-stop-on-fence.summary +index d272b25..5ce580e 100644 +--- a/pengine/test10/whitebox-imply-stop-on-fence.summary ++++ b/pengine/test10/whitebox-imply-stop-on-fence.summary +@@ -48,29 +48,23 @@ Executing cluster transition: + * Resource action: shared0 monitor on lxc-01_kiff-02 + * Resource action: vm-fs monitor on lxc-02_kiff-02 + * Resource action: vm-fs monitor on lxc-01_kiff-02 +- * Fencing kiff-01 (reboot) + * Pseudo action: lxc-01_kiff-01_stop_0 + * Pseudo action: lxc-02_kiff-01_stop_0 ++ * Fencing kiff-01 (reboot) ++ * Pseudo action: R-lxc-01_kiff-01_stop_0 ++ * Pseudo action: R-lxc-02_kiff-01_stop_0 + * Pseudo action: stonith-lxc-02_kiff-01-reboot on lxc-02_kiff-01 + * Pseudo action: stonith-lxc-01_kiff-01-reboot on lxc-01_kiff-01 + * Pseudo action: stonith_complete +- * Pseudo action: R-lxc-01_kiff-01_stop_0 +- * Pseudo action: R-lxc-02_kiff-01_stop_0 +- * Pseudo action: vm-fs_stop_0 + * Pseudo action: shared0-clone_stop_0 + * Resource action: R-lxc-01_kiff-01 start on kiff-02 + * Resource action: R-lxc-02_kiff-01 start on kiff-02 +- * Resource action: lxc-01_kiff-01 start on kiff-02 +- * Resource action: lxc-02_kiff-01 start on kiff-02 ++ * Pseudo action: vm-fs_stop_0 + * Pseudo action: shared0_stop_0 + * Pseudo action: shared0-clone_stopped_0 + * Resource action: R-lxc-01_kiff-01 monitor=10000 on kiff-02 + * Resource action: R-lxc-02_kiff-01 monitor=10000 on kiff-02 +- * Resource action: vm-fs start on lxc-01_kiff-01 +- * Resource action: lxc-01_kiff-01 monitor=30000 on kiff-02 +- * Resource action: lxc-02_kiff-01 monitor=30000 on kiff-02 + * Pseudo action: clvmd-clone_stop_0 +- * Resource action: vm-fs monitor=20000 on lxc-01_kiff-01 + * Pseudo action: clvmd_stop_0 + * Pseudo action: clvmd-clone_stopped_0 + * Pseudo action: dlm-clone_stop_0 +@@ -78,7 +72,13 @@ Executing cluster transition: + * Pseudo action: dlm-clone_stopped_0 + * Pseudo action: all_stopped + * Resource action: fence-kiff-02 start on kiff-02 ++ * Resource action: lxc-01_kiff-01 start on kiff-02 ++ * Resource action: lxc-02_kiff-01 start on kiff-02 + * Resource action: fence-kiff-02 monitor=60000 on kiff-02 ++ * Resource action: vm-fs start on lxc-01_kiff-01 ++ * Resource action: lxc-01_kiff-01 monitor=30000 on kiff-02 ++ * Resource action: lxc-02_kiff-01 monitor=30000 on kiff-02 ++ * Resource action: vm-fs monitor=20000 on lxc-01_kiff-01 + + Revised cluster status: + Online: [ kiff-02 ] +diff --git a/pengine/test10/whitebox-ms-ordering.dot b/pengine/test10/whitebox-ms-ordering.dot +index 1f4d95b..d5112b9 100644 +--- a/pengine/test10/whitebox-ms-ordering.dot ++++ b/pengine/test10/whitebox-ms-ordering.dot +@@ -1,4 +1,6 @@ + digraph "g" { ++"all_stopped" -> "lxc1_start_0 18node1" [ style = bold] ++"all_stopped" -> "lxc2_start_0 18node1" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "container1_monitor_0 18node1" -> "container1_start_0 18node1" [ style = bold] + "container1_monitor_0 18node1" [ style=bold color="green" fontcolor="black"] +@@ -106,7 +108,5 @@ + "stonith_complete" -> "lxc-ms_promote_0 lxc1" [ style = bold] + "stonith_complete" -> "lxc-ms_start_0 lxc1" [ style = bold] + "stonith_complete" -> "lxc-ms_start_0 lxc2" [ style = bold] +-"stonith_complete" -> "lxc1_start_0 18node1" [ style = bold] +-"stonith_complete" -> "lxc2_start_0 18node1" [ style = bold] + "stonith_complete" [ style=bold color="green" fontcolor="orange"] + } +diff --git a/pengine/test10/whitebox-ms-ordering.exp b/pengine/test10/whitebox-ms-ordering.exp +index c8fee5e..d5608e4 100644 +--- a/pengine/test10/whitebox-ms-ordering.exp ++++ b/pengine/test10/whitebox-ms-ordering.exp +@@ -419,6 +419,9 @@ + + + ++ ++ ++ + + + +@@ -430,9 +433,6 @@ + + + +- +- +- + + + +@@ -484,6 +484,9 @@ + + + ++ ++ ++ + + + +@@ -495,9 +498,6 @@ + + + +- +- +- + + + +diff --git a/pengine/test10/whitebox-ms-ordering.summary b/pengine/test10/whitebox-ms-ordering.summary +index d8ff62c..46fe9d1 100644 +--- a/pengine/test10/whitebox-ms-ordering.summary ++++ b/pengine/test10/whitebox-ms-ordering.summary +@@ -43,18 +43,18 @@ Executing cluster transition: + * Pseudo action: lxc-ms_demote_0 + * Pseudo action: lxc-ms-master_demoted_0 + * Pseudo action: lxc-ms-master_stop_0 +- * Resource action: lxc1 start on 18node1 +- * Resource action: lxc2 start on 18node1 + * Pseudo action: lxc-ms_stop_0 + * Pseudo action: lxc-ms_stop_0 + * Pseudo action: lxc-ms-master_stopped_0 + * Pseudo action: lxc-ms-master_start_0 +- * Resource action: lxc1 monitor=30000 on 18node1 +- * Resource action: lxc2 monitor=30000 on 18node1 + * Pseudo action: all_stopped ++ * Resource action: lxc1 start on 18node1 ++ * Resource action: lxc2 start on 18node1 + * Resource action: lxc-ms start on lxc1 + * Resource action: lxc-ms start on lxc2 + * Pseudo action: lxc-ms-master_running_0 ++ * Resource action: lxc1 monitor=30000 on 18node1 ++ * Resource action: lxc2 monitor=30000 on 18node1 + * Resource action: lxc-ms monitor=10000 on lxc2 + * Pseudo action: lxc-ms-master_promote_0 + * Resource action: lxc-ms promote on lxc1 +diff --git a/pengine/test10/whitebox-unexpectedly-running.dot b/pengine/test10/whitebox-unexpectedly-running.dot +index fa1171e..f16e705 100644 +--- a/pengine/test10/whitebox-unexpectedly-running.dot ++++ b/pengine/test10/whitebox-unexpectedly-running.dot +@@ -8,6 +8,8 @@ + "FAKE-crashed_stop_0 18builder" -> "stonith 'reboot' remote2" [ style = bold] + "FAKE-crashed_stop_0 18builder" [ style=bold color="green" fontcolor="black"] + "FAKE_monitor_60000 18builder" [ style=bold color="green" fontcolor="black"] ++"all_stopped" -> "remote1_start_0 18builder" [ style = bold] ++"all_stopped" -> "remote2_start_0 18builder" [ style = bold] + "all_stopped" [ style=bold color="green" fontcolor="orange"] + "remote1_monitor_0 18builder" -> "remote1_start_0 18builder" [ style = bold] + "remote1_monitor_0 18builder" [ style=bold color="green" fontcolor="black"] +diff --git a/pengine/test10/whitebox-unexpectedly-running.exp b/pengine/test10/whitebox-unexpectedly-running.exp +index c4e13b9..46376a5 100644 +--- a/pengine/test10/whitebox-unexpectedly-running.exp ++++ b/pengine/test10/whitebox-unexpectedly-running.exp +@@ -65,6 +65,9 @@ + + + ++ ++ ++ + + + +@@ -100,6 +103,9 @@ + + + ++ ++ ++ + + + +-- +1.8.3.1 + + +From b04b392925daa70af17f2abdef9a6198127c5608 Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Fri, 8 Dec 2017 13:53:36 +1100 +Subject: [PATCH 11/16] Fix: PE: Ensure stop operations occur after stopped + remote connections have been brought up + +--- + pengine/allocate.c | 55 +++++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 40 insertions(+), 15 deletions(-) + +diff --git a/pengine/allocate.c b/pengine/allocate.c +index 2ae491c..1c95e97 100644 +--- a/pengine/allocate.c ++++ b/pengine/allocate.c +@@ -48,6 +48,25 @@ enum remote_connection_state { + remote_state_stopped = 4 + }; + ++static const char * ++state2text(enum remote_connection_state state) ++{ ++ switch (state) { ++ case remote_state_unknown: ++ return "unknown"; ++ case remote_state_alive: ++ return "alive"; ++ case remote_state_resting: ++ return "resting"; ++ case remote_state_failed: ++ return "failed"; ++ case remote_state_stopped: ++ return "stopped"; ++ } ++ ++ return "impossible"; ++} ++ + resource_alloc_functions_t resource_class_alloc_functions[] = { + { + native_merge_weights, +@@ -2011,10 +2030,10 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) + cluster_node = remote_rsc->running_on->data; + } + +- crm_trace("Order %s action %s relative to %s%s (state %d)", ++ crm_trace("Order %s action %s relative to %s%s (state: %s)", + action->task, action->uuid, + is_set(remote_rsc->flags, pe_rsc_failed)? "failed " : "", +- remote_rsc->id, state); ++ remote_rsc->id, state2text(state)); + + if (safe_str_eq(action->task, CRMD_ACTION_MIGRATE) + || safe_str_eq(action->task, CRMD_ACTION_MIGRATE)) { +@@ -2042,23 +2061,29 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) + /* Handle special case with remote node where stop actions need to be + * ordered after the connection resource starts somewhere else. + */ +- if(state == remote_state_resting) { +- /* Wait for the connection resource to be up and assume everything is as we left it */ +- order_start_then_action(remote_rsc, action, pe_order_none, +- data_set); ++ if(state == remote_state_alive) { ++ order_action_then_stop(action, remote_rsc, ++ pe_order_implies_first, data_set); + +- } else { +- if(state == remote_state_failed) { +- /* We would only be here if the resource is +- * running on the remote node. Since we have no +- * way to stop it, it is necessary to fence the +- * node. +- */ +- pe_fence_node(data_set, action->node, "resources are active and the connection is unrecoverable"); +- } ++ } else if(state == remote_state_failed) { ++ /* We would only be here if the resource is ++ * running on the remote node. Since we have no ++ * way to stop it, it is necessary to fence the ++ * node. ++ */ ++ pe_fence_node(data_set, action->node, "resources are active and the connection is unrecoverable"); ++ order_action_then_stop(action, remote_rsc, ++ pe_order_implies_first, data_set); + ++ } else if(remote_rsc->next_role == RSC_ROLE_STOPPED) { ++ /* If its not coming back up, better do what we need first */ + order_action_then_stop(action, remote_rsc, + pe_order_implies_first, data_set); ++ ++ } else { ++ /* Wait for the connection resource to be up and assume everything is as we left it */ ++ order_start_then_action(remote_rsc, action, pe_order_none, data_set); ++ + } + break; + +-- +1.8.3.1 + + +From 502770c763807bc7ac19bf2b2fd50d4a0e195df0 Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Fri, 8 Dec 2017 13:56:03 +1100 +Subject: [PATCH 12/16] Test: PE: Ensure stop operations occur after stopped + remote connections have been brought up + +--- + pengine/regression.sh | 1 + + pengine/test10/bundle-order-stop-on-remote.dot | 307 ++++ + pengine/test10/bundle-order-stop-on-remote.exp | 1607 ++++++++++++++++++++ + pengine/test10/bundle-order-stop-on-remote.scores | 934 ++++++++++++ + pengine/test10/bundle-order-stop-on-remote.summary | 224 +++ + pengine/test10/bundle-order-stop-on-remote.xml | 1165 ++++++++++++++ + 6 files changed, 4238 insertions(+) + create mode 100644 pengine/test10/bundle-order-stop-on-remote.dot + create mode 100644 pengine/test10/bundle-order-stop-on-remote.exp + create mode 100644 pengine/test10/bundle-order-stop-on-remote.scores + create mode 100644 pengine/test10/bundle-order-stop-on-remote.summary + create mode 100644 pengine/test10/bundle-order-stop-on-remote.xml + +diff --git a/pengine/regression.sh b/pengine/regression.sh +index 47cf0ba..cf1824a 100755 +--- a/pengine/regression.sh ++++ b/pengine/regression.sh +@@ -819,6 +819,7 @@ do_test bundle-order-partial-start "Bundle startup ordering when some dependanci + do_test bundle-order-partial-start-2 "Bundle startup ordering when some dependancies and the container are already running" + do_test bundle-order-stop "Bundle stop ordering" + do_test bundle-order-partial-stop "Bundle startup ordering when some dependancies are already stopped" ++do_test bundle-order-stop-on-remote "Stop nested resource after bringing up the connection" + + do_test bundle-order-startup-clone "Prevent startup because bundle isn't promoted" + do_test bundle-order-startup-clone-2 "Bundle startup with clones" +diff --git a/pengine/test10/bundle-order-stop-on-remote.dot b/pengine/test10/bundle-order-stop-on-remote.dot +new file mode 100644 +index 0000000..f0b6336 +--- /dev/null ++++ b/pengine/test10/bundle-order-stop-on-remote.dot +@@ -0,0 +1,307 @@ ++digraph "g" { ++"all_stopped" [ style=bold color="green" fontcolor="orange"] ++"database-0_monitor_20000 controller-0" [ style=bold color="green" fontcolor="black"] ++"database-0_start_0 controller-0" -> "database-0_monitor_20000 controller-0" [ style = bold] ++"database-0_start_0 controller-0" -> "galera-bundle-docker-0_monitor_60000 database-0" [ style = bold] ++"database-0_start_0 controller-0" -> "galera-bundle-docker-0_start_0 database-0" [ style = bold] ++"database-0_start_0 controller-0" -> "galera-bundle-docker-0_stop_0 database-0" [ style = bold] ++"database-0_start_0 controller-0" [ style=bold color="green" fontcolor="black"] ++"database-2_monitor_20000 controller-1" [ style=bold color="green" fontcolor="black"] ++"database-2_start_0 controller-1" -> "database-2_monitor_20000 controller-1" [ style = bold] ++"database-2_start_0 controller-1" -> "galera-bundle-docker-2_monitor_60000 database-2" [ style = bold] ++"database-2_start_0 controller-1" -> "galera-bundle-docker-2_start_0 database-2" [ style = bold] ++"database-2_start_0 controller-1" -> "galera-bundle-docker-2_stop_0 database-2" [ style = bold] ++"database-2_start_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-0_monitor_0 controller-1" -> "galera-bundle-0_start_0 controller-0" [ style = bold] ++"galera-bundle-0_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-0_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-0_start_0 controller-0" -> "galera-bundle-0_monitor_60000 controller-0" [ style = bold] ++"galera-bundle-0_start_0 controller-0" -> "galera_monitor_10000 galera-bundle-0" [ style = bold] ++"galera-bundle-0_start_0 controller-0" -> "galera_promote_0 galera-bundle-0" [ style = bold] ++"galera-bundle-0_start_0 controller-0" -> "galera_start_0 galera-bundle-0" [ style = bold] ++"galera-bundle-0_start_0 controller-0" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-2_monitor_0 controller-1" -> "galera-bundle-2_start_0 controller-1" [ style = bold] ++"galera-bundle-2_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-2_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-2_start_0 controller-1" -> "galera-bundle-2_monitor_60000 controller-1" [ style = bold] ++"galera-bundle-2_start_0 controller-1" -> "galera_monitor_10000 galera-bundle-2" [ style = bold] ++"galera-bundle-2_start_0 controller-1" -> "galera_promote_0 galera-bundle-2" [ style = bold] ++"galera-bundle-2_start_0 controller-1" -> "galera_start_0 galera-bundle-2" [ style = bold] ++"galera-bundle-2_start_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-docker-0_monitor_60000 database-0" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-docker-0_start_0 database-0" -> "galera-bundle-0_monitor_0 controller-1" [ style = bold] ++"galera-bundle-docker-0_start_0 database-0" -> "galera-bundle-0_start_0 controller-0" [ style = bold] ++"galera-bundle-docker-0_start_0 database-0" -> "galera-bundle-docker-0_monitor_60000 database-0" [ style = bold] ++"galera-bundle-docker-0_start_0 database-0" -> "galera-bundle_running_0" [ style = bold] ++"galera-bundle-docker-0_start_0 database-0" -> "galera_promote_0 galera-bundle-0" [ style = bold] ++"galera-bundle-docker-0_start_0 database-0" -> "galera_start_0 galera-bundle-0" [ style = bold] ++"galera-bundle-docker-0_start_0 database-0" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-docker-0_stop_0 database-0" -> "all_stopped" [ style = bold] ++"galera-bundle-docker-0_stop_0 database-0" -> "galera-bundle-docker-0_start_0 database-0" [ style = bold] ++"galera-bundle-docker-0_stop_0 database-0" -> "galera-bundle_stopped_0" [ style = bold] ++"galera-bundle-docker-0_stop_0 database-0" -> "stonith 'reboot' galera-bundle-0" [ style = bold] ++"galera-bundle-docker-0_stop_0 database-0" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-docker-2_monitor_60000 database-2" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-docker-2_start_0 database-2" -> "galera-bundle-2_monitor_0 controller-1" [ style = bold] ++"galera-bundle-docker-2_start_0 database-2" -> "galera-bundle-2_start_0 controller-1" [ style = bold] ++"galera-bundle-docker-2_start_0 database-2" -> "galera-bundle-docker-2_monitor_60000 database-2" [ style = bold] ++"galera-bundle-docker-2_start_0 database-2" -> "galera-bundle_running_0" [ style = bold] ++"galera-bundle-docker-2_start_0 database-2" -> "galera_promote_0 galera-bundle-2" [ style = bold] ++"galera-bundle-docker-2_start_0 database-2" -> "galera_start_0 galera-bundle-2" [ style = bold] ++"galera-bundle-docker-2_start_0 database-2" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-docker-2_stop_0 database-2" -> "all_stopped" [ style = bold] ++"galera-bundle-docker-2_stop_0 database-2" -> "galera-bundle-docker-2_start_0 database-2" [ style = bold] ++"galera-bundle-docker-2_stop_0 database-2" -> "galera-bundle_stopped_0" [ style = bold] ++"galera-bundle-docker-2_stop_0 database-2" -> "stonith 'reboot' galera-bundle-2" [ style = bold] ++"galera-bundle-docker-2_stop_0 database-2" [ style=bold color="green" fontcolor="black"] ++"galera-bundle-master_demote_0" -> "galera-bundle-master_demoted_0" [ style = bold] ++"galera-bundle-master_demote_0" -> "galera_demote_0 galera-bundle-0" [ style = bold] ++"galera-bundle-master_demote_0" -> "galera_demote_0 galera-bundle-2" [ style = bold] ++"galera-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle-master_demoted_0" -> "galera-bundle-master_promote_0" [ style = bold] ++"galera-bundle-master_demoted_0" -> "galera-bundle-master_start_0" [ style = bold] ++"galera-bundle-master_demoted_0" -> "galera-bundle-master_stop_0" [ style = bold] ++"galera-bundle-master_demoted_0" -> "galera-bundle_demoted_0" [ style = bold] ++"galera-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle-master_promote_0" -> "galera_promote_0 galera-bundle-0" [ style = bold] ++"galera-bundle-master_promote_0" -> "galera_promote_0 galera-bundle-2" [ style = bold] ++"galera-bundle-master_promote_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle-master_promoted_0" -> "galera-bundle_promoted_0" [ style = bold] ++"galera-bundle-master_promoted_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle-master_running_0" -> "galera-bundle-master_promote_0" [ style = bold] ++"galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] ++"galera-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = bold] ++"galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-0" [ style = bold] ++"galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-2" [ style = bold] ++"galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle-master_stop_0" -> "galera-bundle-master_stopped_0" [ style = bold] ++"galera-bundle-master_stop_0" -> "galera_stop_0 galera-bundle-0" [ style = bold] ++"galera-bundle-master_stop_0" -> "galera_stop_0 galera-bundle-2" [ style = bold] ++"galera-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle-master_stopped_0" -> "galera-bundle-master_promote_0" [ style = bold] ++"galera-bundle-master_stopped_0" -> "galera-bundle-master_start_0" [ style = bold] ++"galera-bundle-master_stopped_0" -> "galera-bundle_stopped_0" [ style = bold] ++"galera-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle_demote_0" -> "galera-bundle-master_demote_0" [ style = bold] ++"galera-bundle_demote_0" -> "galera-bundle_demoted_0" [ style = bold] ++"galera-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle_demoted_0" -> "galera-bundle_promote_0" [ style = bold] ++"galera-bundle_demoted_0" -> "galera-bundle_start_0" [ style = bold] ++"galera-bundle_demoted_0" -> "galera-bundle_stop_0" [ style = bold] ++"galera-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle_promote_0" -> "galera-bundle-master_promote_0" [ style = bold] ++"galera-bundle_promote_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle_running_0" -> "galera-bundle_promote_0" [ style = bold] ++"galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 database-0" [ style = bold] ++"galera-bundle_start_0" -> "galera-bundle-docker-2_start_0 database-2" [ style = bold] ++"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] ++"galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle_stop_0" -> "galera-bundle-docker-0_stop_0 database-0" [ style = bold] ++"galera-bundle_stop_0" -> "galera-bundle-docker-2_stop_0 database-2" [ style = bold] ++"galera-bundle_stop_0" -> "galera-bundle-master_stop_0" [ style = bold] ++"galera-bundle_stop_0" -> "galera_stop_0 galera-bundle-0" [ style = bold] ++"galera-bundle_stop_0" -> "galera_stop_0 galera-bundle-2" [ style = bold] ++"galera-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] ++"galera-bundle_stopped_0" -> "galera-bundle_promote_0" [ style = bold] ++"galera-bundle_stopped_0" -> "galera-bundle_start_0" [ style = bold] ++"galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] ++"galera_demote_0 galera-bundle-0" -> "galera-bundle-master_demoted_0" [ style = bold] ++"galera_demote_0 galera-bundle-0" -> "galera_promote_0 galera-bundle-0" [ style = bold] ++"galera_demote_0 galera-bundle-0" -> "galera_stop_0 galera-bundle-0" [ style = bold] ++"galera_demote_0 galera-bundle-0" [ style=bold color="green" fontcolor="orange"] ++"galera_demote_0 galera-bundle-2" -> "galera-bundle-master_demoted_0" [ style = bold] ++"galera_demote_0 galera-bundle-2" -> "galera_promote_0 galera-bundle-2" [ style = bold] ++"galera_demote_0 galera-bundle-2" -> "galera_stop_0 galera-bundle-2" [ style = bold] ++"galera_demote_0 galera-bundle-2" [ style=bold color="green" fontcolor="orange"] ++"galera_monitor_10000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] ++"galera_monitor_10000 galera-bundle-2" [ style=bold color="green" fontcolor="black"] ++"galera_promote_0 galera-bundle-0" -> "galera-bundle-master_promoted_0" [ style = bold] ++"galera_promote_0 galera-bundle-0" -> "galera_monitor_10000 galera-bundle-0" [ style = bold] ++"galera_promote_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] ++"galera_promote_0 galera-bundle-2" -> "galera-bundle-master_promoted_0" [ style = bold] ++"galera_promote_0 galera-bundle-2" -> "galera_monitor_10000 galera-bundle-2" [ style = bold] ++"galera_promote_0 galera-bundle-2" [ style=bold color="green" fontcolor="black"] ++"galera_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = bold] ++"galera_start_0 galera-bundle-0" -> "galera_monitor_10000 galera-bundle-0" [ style = bold] ++"galera_start_0 galera-bundle-0" -> "galera_promote_0 galera-bundle-0" [ style = bold] ++"galera_start_0 galera-bundle-0" -> "galera_start_0 galera-bundle-2" [ style = bold] ++"galera_start_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] ++"galera_start_0 galera-bundle-2" -> "galera-bundle-master_running_0" [ style = bold] ++"galera_start_0 galera-bundle-2" -> "galera_monitor_10000 galera-bundle-2" [ style = bold] ++"galera_start_0 galera-bundle-2" -> "galera_promote_0 galera-bundle-2" [ style = bold] ++"galera_start_0 galera-bundle-2" [ style=bold color="green" fontcolor="black"] ++"galera_stop_0 galera-bundle-0" -> "all_stopped" [ style = bold] ++"galera_stop_0 galera-bundle-0" -> "galera-bundle-master_stopped_0" [ style = bold] ++"galera_stop_0 galera-bundle-0" -> "galera_start_0 galera-bundle-0" [ style = bold] ++"galera_stop_0 galera-bundle-0" [ style=bold color="green" fontcolor="orange"] ++"galera_stop_0 galera-bundle-2" -> "all_stopped" [ style = bold] ++"galera_stop_0 galera-bundle-2" -> "galera-bundle-master_stopped_0" [ style = bold] ++"galera_stop_0 galera-bundle-2" -> "galera_start_0 galera-bundle-2" [ style = bold] ++"galera_stop_0 galera-bundle-2" -> "galera_stop_0 galera-bundle-0" [ style = bold] ++"galera_stop_0 galera-bundle-2" [ style=bold color="green" fontcolor="orange"] ++"haproxy-bundle-docker-1_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] ++"haproxy-bundle-docker-1_start_0 controller-1" -> "haproxy-bundle-docker-1_monitor_60000 controller-1" [ style = bold] ++"haproxy-bundle-docker-1_start_0 controller-1" -> "haproxy-bundle_running_0" [ style = bold] ++"haproxy-bundle-docker-1_start_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] ++"haproxy-bundle_start_0" -> "haproxy-bundle-docker-1_start_0 controller-1" [ style = bold] ++"haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] ++"ip-10.0.0.104_monitor_10000 controller-1" [ style=bold color="green" fontcolor="black"] ++"ip-10.0.0.104_start_0 controller-1" -> "haproxy-bundle_start_0" [ style = bold] ++"ip-10.0.0.104_start_0 controller-1" -> "ip-10.0.0.104_monitor_10000 controller-1" [ style = bold] ++"ip-10.0.0.104_start_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"ip-172.17.1.11_monitor_10000 controller-0" [ style=bold color="green" fontcolor="black"] ++"ip-172.17.1.11_start_0 controller-0" -> "haproxy-bundle_start_0" [ style = bold] ++"ip-172.17.1.11_start_0 controller-0" -> "ip-172.17.1.11_monitor_10000 controller-0" [ style = bold] ++"ip-172.17.1.11_start_0 controller-0" [ style=bold color="green" fontcolor="black"] ++"ip-172.17.3.13_monitor_10000 controller-1" [ style=bold color="green" fontcolor="black"] ++"ip-172.17.3.13_start_0 controller-1" -> "haproxy-bundle_start_0" [ style = bold] ++"ip-172.17.3.13_start_0 controller-1" -> "ip-172.17.3.13_monitor_10000 controller-1" [ style = bold] ++"ip-172.17.3.13_start_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"ip-192.168.24.11_monitor_10000 controller-0" [ style=bold color="green" fontcolor="black"] ++"ip-192.168.24.11_start_0 controller-0" -> "haproxy-bundle_start_0" [ style = bold] ++"ip-192.168.24.11_start_0 controller-0" -> "ip-192.168.24.11_monitor_10000 controller-0" [ style = bold] ++"ip-192.168.24.11_start_0 controller-0" [ style=bold color="green" fontcolor="black"] ++"openstack-cinder-volume_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] ++"openstack-cinder-volume_start_0 controller-0" -> "openstack-cinder-volume_monitor_60000 controller-0" [ style = bold] ++"openstack-cinder-volume_start_0 controller-0" [ style=bold color="green" fontcolor="black"] ++"redis-bundle-1_monitor_0 controller-1" -> "redis-bundle-1_start_0 controller-1" [ style = bold] ++"redis-bundle-1_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"redis-bundle-1_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] ++"redis-bundle-1_start_0 controller-1" -> "redis-bundle-1_monitor_60000 controller-1" [ style = bold] ++"redis-bundle-1_start_0 controller-1" -> "redis:1_monitor_45000 redis-bundle-1" [ style = bold] ++"redis-bundle-1_start_0 controller-1" -> "redis:1_monitor_60000 redis-bundle-1" [ style = bold] ++"redis-bundle-1_start_0 controller-1" -> "redis:1_start_0 redis-bundle-1" [ style = bold] ++"redis-bundle-1_start_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"redis-bundle-docker-1_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] ++"redis-bundle-docker-1_start_0 controller-1" -> "redis-bundle-1_monitor_0 controller-1" [ style = bold] ++"redis-bundle-docker-1_start_0 controller-1" -> "redis-bundle-1_start_0 controller-1" [ style = bold] ++"redis-bundle-docker-1_start_0 controller-1" -> "redis-bundle-docker-1_monitor_60000 controller-1" [ style = bold] ++"redis-bundle-docker-1_start_0 controller-1" -> "redis-bundle_running_0" [ style = bold] ++"redis-bundle-docker-1_start_0 controller-1" -> "redis:1_start_0 redis-bundle-1" [ style = bold] ++"redis-bundle-docker-1_start_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis-bundle_promoted_0" [ style = bold] ++"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis:1_monitor_45000 redis-bundle-1" [ style = bold] ++"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis:1_monitor_60000 redis-bundle-1" [ style = bold] ++"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis_monitor_20000 redis-bundle-0" [ style = bold] ++"redis-bundle-master_confirmed-post_notify_promoted_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle-master_confirmed-post_notify_running_0" -> "redis-bundle-master_pre_notify_promote_0" [ style = bold] ++"redis-bundle-master_confirmed-post_notify_running_0" -> "redis-bundle_running_0" [ style = bold] ++"redis-bundle-master_confirmed-post_notify_running_0" -> "redis:1_monitor_45000 redis-bundle-1" [ style = bold] ++"redis-bundle-master_confirmed-post_notify_running_0" -> "redis:1_monitor_60000 redis-bundle-1" [ style = bold] ++"redis-bundle-master_confirmed-post_notify_running_0" -> "redis_monitor_20000 redis-bundle-0" [ style = bold] ++"redis-bundle-master_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle-master_confirmed-pre_notify_promote_0" -> "redis-bundle-master_post_notify_promoted_0" [ style = bold] ++"redis-bundle-master_confirmed-pre_notify_promote_0" -> "redis-bundle-master_promote_0" [ style = bold] ++"redis-bundle-master_confirmed-pre_notify_promote_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle-master_confirmed-pre_notify_start_0" -> "redis-bundle-master_post_notify_running_0" [ style = bold] ++"redis-bundle-master_confirmed-pre_notify_start_0" -> "redis-bundle-master_start_0" [ style = bold] ++"redis-bundle-master_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle-master_post_notify_promoted_0" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ style = bold] ++"redis-bundle-master_post_notify_promoted_0" -> "redis:1_post_notify_promote_0 redis-bundle-1" [ style = bold] ++"redis-bundle-master_post_notify_promoted_0" -> "redis_post_notify_promoted_0 redis-bundle-0" [ style = bold] ++"redis-bundle-master_post_notify_promoted_0" -> "redis_post_notify_promoted_0 redis-bundle-2" [ style = bold] ++"redis-bundle-master_post_notify_promoted_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle-master_post_notify_running_0" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] ++"redis-bundle-master_post_notify_running_0" -> "redis:1_post_notify_start_0 redis-bundle-1" [ style = bold] ++"redis-bundle-master_post_notify_running_0" -> "redis_post_notify_running_0 redis-bundle-0" [ style = bold] ++"redis-bundle-master_post_notify_running_0" -> "redis_post_notify_running_0 redis-bundle-2" [ style = bold] ++"redis-bundle-master_post_notify_running_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle-master_pre_notify_promote_0" -> "redis-bundle-master_confirmed-pre_notify_promote_0" [ style = bold] ++"redis-bundle-master_pre_notify_promote_0" -> "redis:1_pre_notify_promote_0 redis-bundle-1" [ style = bold] ++"redis-bundle-master_pre_notify_promote_0" -> "redis_pre_notify_promote_0 redis-bundle-0" [ style = bold] ++"redis-bundle-master_pre_notify_promote_0" -> "redis_pre_notify_promote_0 redis-bundle-2" [ style = bold] ++"redis-bundle-master_pre_notify_promote_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle-master_pre_notify_start_0" -> "redis-bundle-master_confirmed-pre_notify_start_0" [ style = bold] ++"redis-bundle-master_pre_notify_start_0" -> "redis_pre_notify_start_0 redis-bundle-0" [ style = bold] ++"redis-bundle-master_pre_notify_start_0" -> "redis_pre_notify_start_0 redis-bundle-2" [ style = bold] ++"redis-bundle-master_pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle-master_promote_0" -> "redis_promote_0 redis-bundle-0" [ style = bold] ++"redis-bundle-master_promote_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle-master_promoted_0" -> "redis-bundle-master_post_notify_promoted_0" [ style = bold] ++"redis-bundle-master_promoted_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle-master_running_0" -> "redis-bundle-master_post_notify_running_0" [ style = bold] ++"redis-bundle-master_running_0" -> "redis-bundle-master_promote_0" [ style = bold] ++"redis-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = bold] ++"redis-bundle-master_start_0" -> "redis:1_start_0 redis-bundle-1" [ style = bold] ++"redis-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle_promote_0" -> "redis-bundle-master_promote_0" [ style = bold] ++"redis-bundle_promote_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle_running_0" -> "redis-bundle_promote_0" [ style = bold] ++"redis-bundle_running_0" [ style=bold color="green" fontcolor="orange"] ++"redis-bundle_start_0" -> "redis-bundle-docker-1_start_0 controller-1" [ style = bold] ++"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = bold] ++"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] ++"redis:1_monitor_45000 redis-bundle-1" [ style=bold color="green" fontcolor="black"] ++"redis:1_monitor_60000 redis-bundle-1" [ style=bold color="green" fontcolor="black"] ++"redis:1_post_notify_promote_0 redis-bundle-1" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ style = bold] ++"redis:1_post_notify_promote_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] ++"redis:1_post_notify_start_0 redis-bundle-1" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] ++"redis:1_post_notify_start_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] ++"redis:1_pre_notify_promote_0 redis-bundle-1" -> "redis-bundle-master_confirmed-pre_notify_promote_0" [ style = bold] ++"redis:1_pre_notify_promote_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] ++"redis:1_start_0 redis-bundle-1" -> "redis-bundle-master_running_0" [ style = bold] ++"redis:1_start_0 redis-bundle-1" -> "redis:1_monitor_45000 redis-bundle-1" [ style = bold] ++"redis:1_start_0 redis-bundle-1" -> "redis:1_monitor_60000 redis-bundle-1" [ style = bold] ++"redis:1_start_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] ++"redis_monitor_20000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] ++"redis_post_notify_promoted_0 redis-bundle-0" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ style = bold] ++"redis_post_notify_promoted_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] ++"redis_post_notify_promoted_0 redis-bundle-2" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ style = bold] ++"redis_post_notify_promoted_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] ++"redis_post_notify_running_0 redis-bundle-0" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] ++"redis_post_notify_running_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] ++"redis_post_notify_running_0 redis-bundle-2" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] ++"redis_post_notify_running_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] ++"redis_pre_notify_promote_0 redis-bundle-0" -> "redis-bundle-master_confirmed-pre_notify_promote_0" [ style = bold] ++"redis_pre_notify_promote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] ++"redis_pre_notify_promote_0 redis-bundle-2" -> "redis-bundle-master_confirmed-pre_notify_promote_0" [ style = bold] ++"redis_pre_notify_promote_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] ++"redis_pre_notify_start_0 redis-bundle-0" -> "redis-bundle-master_confirmed-pre_notify_start_0" [ style = bold] ++"redis_pre_notify_start_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] ++"redis_pre_notify_start_0 redis-bundle-2" -> "redis-bundle-master_confirmed-pre_notify_start_0" [ style = bold] ++"redis_pre_notify_start_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] ++"redis_promote_0 redis-bundle-0" -> "redis-bundle-master_promoted_0" [ style = bold] ++"redis_promote_0 redis-bundle-0" -> "redis_monitor_20000 redis-bundle-0" [ style = bold] ++"redis_promote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] ++"stonith 'reboot' galera-bundle-0" -> "galera-bundle-master_stop_0" [ style = bold] ++"stonith 'reboot' galera-bundle-0" -> "stonith_complete" [ style = bold] ++"stonith 'reboot' galera-bundle-0" [ style=bold color="green" fontcolor="orange"] ++"stonith 'reboot' galera-bundle-2" -> "galera-bundle-master_stop_0" [ style = bold] ++"stonith 'reboot' galera-bundle-2" -> "stonith_complete" [ style = bold] ++"stonith 'reboot' galera-bundle-2" [ style=bold color="green" fontcolor="orange"] ++"stonith-fence_ipmilan-525400498d34_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] ++"stonith-fence_ipmilan-525400498d34_start_0 controller-1" -> "stonith-fence_ipmilan-525400498d34_monitor_60000 controller-1" [ style = bold] ++"stonith-fence_ipmilan-525400498d34_start_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"stonith-fence_ipmilan-525400542c06_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] ++"stonith-fence_ipmilan-525400542c06_start_0 controller-0" -> "stonith-fence_ipmilan-525400542c06_monitor_60000 controller-0" [ style = bold] ++"stonith-fence_ipmilan-525400542c06_start_0 controller-0" [ style=bold color="green" fontcolor="black"] ++"stonith-fence_ipmilan-5254005ea387_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] ++"stonith-fence_ipmilan-5254005ea387_start_0 controller-1" -> "stonith-fence_ipmilan-5254005ea387_monitor_60000 controller-1" [ style = bold] ++"stonith-fence_ipmilan-5254005ea387_start_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"stonith-fence_ipmilan-525400c709f7_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] ++"stonith-fence_ipmilan-525400c709f7_start_0 controller-1" -> "stonith-fence_ipmilan-525400c709f7_monitor_60000 controller-1" [ style = bold] ++"stonith-fence_ipmilan-525400c709f7_start_0 controller-1" [ style=bold color="green" fontcolor="black"] ++"stonith_complete" -> "all_stopped" [ style = bold] ++"stonith_complete" -> "galera-bundle-docker-0_start_0 database-0" [ style = bold] ++"stonith_complete" -> "galera-bundle-docker-2_start_0 database-2" [ style = bold] ++"stonith_complete" -> "galera_promote_0 galera-bundle-0" [ style = bold] ++"stonith_complete" -> "galera_promote_0 galera-bundle-2" [ style = bold] ++"stonith_complete" -> "galera_start_0 galera-bundle-0" [ style = bold] ++"stonith_complete" -> "galera_start_0 galera-bundle-2" [ style = bold] ++"stonith_complete" -> "haproxy-bundle-docker-1_start_0 controller-1" [ style = bold] ++"stonith_complete" -> "ip-10.0.0.104_start_0 controller-1" [ style = bold] ++"stonith_complete" -> "ip-172.17.1.11_start_0 controller-0" [ style = bold] ++"stonith_complete" -> "ip-172.17.3.13_start_0 controller-1" [ style = bold] ++"stonith_complete" -> "ip-192.168.24.11_start_0 controller-0" [ style = bold] ++"stonith_complete" -> "openstack-cinder-volume_start_0 controller-0" [ style = bold] ++"stonith_complete" -> "redis-bundle-docker-1_start_0 controller-1" [ style = bold] ++"stonith_complete" -> "redis:1_start_0 redis-bundle-1" [ style = bold] ++"stonith_complete" -> "redis_promote_0 redis-bundle-0" [ style = bold] ++"stonith_complete" [ style=bold color="green" fontcolor="orange"] ++} +diff --git a/pengine/test10/bundle-order-stop-on-remote.exp b/pengine/test10/bundle-order-stop-on-remote.exp +new file mode 100644 +index 0000000..db5386b +--- /dev/null ++++ b/pengine/test10/bundle-order-stop-on-remote.exp +@@ -0,0 +1,1607 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/pengine/test10/bundle-order-stop-on-remote.scores b/pengine/test10/bundle-order-stop-on-remote.scores +new file mode 100644 +index 0000000..e26f511 +--- /dev/null ++++ b/pengine/test10/bundle-order-stop-on-remote.scores +@@ -0,0 +1,934 @@ ++Allocation scores: ++clone_color: galera-bundle-master allocation score on controller-0: -INFINITY ++clone_color: galera-bundle-master allocation score on controller-1: -INFINITY ++clone_color: galera-bundle-master allocation score on controller-2: -INFINITY ++clone_color: galera-bundle-master allocation score on database-0: -INFINITY ++clone_color: galera-bundle-master allocation score on database-1: -INFINITY ++clone_color: galera-bundle-master allocation score on database-2: -INFINITY ++clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 ++clone_color: galera-bundle-master allocation score on galera-bundle-1: 0 ++clone_color: galera-bundle-master allocation score on galera-bundle-2: 0 ++clone_color: galera-bundle-master allocation score on messaging-0: -INFINITY ++clone_color: galera-bundle-master allocation score on messaging-1: -INFINITY ++clone_color: galera-bundle-master allocation score on messaging-2: -INFINITY ++clone_color: galera:0 allocation score on galera-bundle-0: INFINITY ++clone_color: galera:1 allocation score on galera-bundle-1: INFINITY ++clone_color: galera:2 allocation score on galera-bundle-2: INFINITY ++clone_color: rabbitmq-bundle-clone allocation score on controller-0: -INFINITY ++clone_color: rabbitmq-bundle-clone allocation score on controller-1: -INFINITY ++clone_color: rabbitmq-bundle-clone allocation score on controller-2: -INFINITY ++clone_color: rabbitmq-bundle-clone allocation score on database-0: -INFINITY ++clone_color: rabbitmq-bundle-clone allocation score on database-1: -INFINITY ++clone_color: rabbitmq-bundle-clone allocation score on database-2: -INFINITY ++clone_color: rabbitmq-bundle-clone allocation score on messaging-0: -INFINITY ++clone_color: rabbitmq-bundle-clone allocation score on messaging-1: -INFINITY ++clone_color: rabbitmq-bundle-clone allocation score on messaging-2: -INFINITY ++clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 ++clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-1: 0 ++clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-2: 0 ++clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY ++clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY ++clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY ++clone_color: redis-bundle-master allocation score on controller-0: -INFINITY ++clone_color: redis-bundle-master allocation score on controller-1: -INFINITY ++clone_color: redis-bundle-master allocation score on controller-2: -INFINITY ++clone_color: redis-bundle-master allocation score on database-0: -INFINITY ++clone_color: redis-bundle-master allocation score on database-1: -INFINITY ++clone_color: redis-bundle-master allocation score on database-2: -INFINITY ++clone_color: redis-bundle-master allocation score on messaging-0: -INFINITY ++clone_color: redis-bundle-master allocation score on messaging-1: -INFINITY ++clone_color: redis-bundle-master allocation score on messaging-2: -INFINITY ++clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 ++clone_color: redis-bundle-master allocation score on redis-bundle-1: 0 ++clone_color: redis-bundle-master allocation score on redis-bundle-2: 0 ++clone_color: redis:0 allocation score on redis-bundle-0: INFINITY ++clone_color: redis:1 allocation score on redis-bundle-1: INFINITY ++clone_color: redis:2 allocation score on redis-bundle-2: INFINITY ++container_color: galera-bundle allocation score on controller-0: -INFINITY ++container_color: galera-bundle allocation score on controller-1: -INFINITY ++container_color: galera-bundle allocation score on controller-2: -INFINITY ++container_color: galera-bundle allocation score on database-0: 0 ++container_color: galera-bundle allocation score on database-1: 0 ++container_color: galera-bundle allocation score on database-2: 0 ++container_color: galera-bundle allocation score on messaging-0: -INFINITY ++container_color: galera-bundle allocation score on messaging-1: -INFINITY ++container_color: galera-bundle allocation score on messaging-2: -INFINITY ++container_color: galera-bundle-0 allocation score on controller-0: 0 ++container_color: galera-bundle-0 allocation score on controller-1: 0 ++container_color: galera-bundle-0 allocation score on controller-2: 0 ++container_color: galera-bundle-0 allocation score on database-0: -INFINITY ++container_color: galera-bundle-0 allocation score on database-1: -INFINITY ++container_color: galera-bundle-0 allocation score on database-2: -INFINITY ++container_color: galera-bundle-0 allocation score on messaging-0: -INFINITY ++container_color: galera-bundle-0 allocation score on messaging-1: -INFINITY ++container_color: galera-bundle-0 allocation score on messaging-2: -INFINITY ++container_color: galera-bundle-1 allocation score on controller-0: 0 ++container_color: galera-bundle-1 allocation score on controller-1: 0 ++container_color: galera-bundle-1 allocation score on controller-2: INFINITY ++container_color: galera-bundle-1 allocation score on database-0: -INFINITY ++container_color: galera-bundle-1 allocation score on database-1: -INFINITY ++container_color: galera-bundle-1 allocation score on database-2: -INFINITY ++container_color: galera-bundle-1 allocation score on messaging-0: -INFINITY ++container_color: galera-bundle-1 allocation score on messaging-1: -INFINITY ++container_color: galera-bundle-1 allocation score on messaging-2: -INFINITY ++container_color: galera-bundle-2 allocation score on controller-0: 0 ++container_color: galera-bundle-2 allocation score on controller-1: 0 ++container_color: galera-bundle-2 allocation score on controller-2: 0 ++container_color: galera-bundle-2 allocation score on database-0: -INFINITY ++container_color: galera-bundle-2 allocation score on database-1: -INFINITY ++container_color: galera-bundle-2 allocation score on database-2: -INFINITY ++container_color: galera-bundle-2 allocation score on messaging-0: -INFINITY ++container_color: galera-bundle-2 allocation score on messaging-1: -INFINITY ++container_color: galera-bundle-2 allocation score on messaging-2: -INFINITY ++container_color: galera-bundle-docker-0 allocation score on controller-0: -INFINITY ++container_color: galera-bundle-docker-0 allocation score on controller-1: -INFINITY ++container_color: galera-bundle-docker-0 allocation score on controller-2: -INFINITY ++container_color: galera-bundle-docker-0 allocation score on database-0: INFINITY ++container_color: galera-bundle-docker-0 allocation score on database-1: 0 ++container_color: galera-bundle-docker-0 allocation score on database-2: 0 ++container_color: galera-bundle-docker-0 allocation score on messaging-0: -INFINITY ++container_color: galera-bundle-docker-0 allocation score on messaging-1: -INFINITY ++container_color: galera-bundle-docker-0 allocation score on messaging-2: -INFINITY ++container_color: galera-bundle-docker-1 allocation score on controller-0: -INFINITY ++container_color: galera-bundle-docker-1 allocation score on controller-1: -INFINITY ++container_color: galera-bundle-docker-1 allocation score on controller-2: -INFINITY ++container_color: galera-bundle-docker-1 allocation score on database-0: 0 ++container_color: galera-bundle-docker-1 allocation score on database-1: INFINITY ++container_color: galera-bundle-docker-1 allocation score on database-2: 0 ++container_color: galera-bundle-docker-1 allocation score on messaging-0: -INFINITY ++container_color: galera-bundle-docker-1 allocation score on messaging-1: -INFINITY ++container_color: galera-bundle-docker-1 allocation score on messaging-2: -INFINITY ++container_color: galera-bundle-docker-2 allocation score on controller-0: -INFINITY ++container_color: galera-bundle-docker-2 allocation score on controller-1: -INFINITY ++container_color: galera-bundle-docker-2 allocation score on controller-2: -INFINITY ++container_color: galera-bundle-docker-2 allocation score on database-0: 0 ++container_color: galera-bundle-docker-2 allocation score on database-1: 0 ++container_color: galera-bundle-docker-2 allocation score on database-2: INFINITY ++container_color: galera-bundle-docker-2 allocation score on messaging-0: -INFINITY ++container_color: galera-bundle-docker-2 allocation score on messaging-1: -INFINITY ++container_color: galera-bundle-docker-2 allocation score on messaging-2: -INFINITY ++container_color: galera-bundle-master allocation score on controller-0: 0 ++container_color: galera-bundle-master allocation score on controller-1: 0 ++container_color: galera-bundle-master allocation score on controller-2: 0 ++container_color: galera-bundle-master allocation score on database-0: 0 ++container_color: galera-bundle-master allocation score on database-1: 0 ++container_color: galera-bundle-master allocation score on database-2: 0 ++container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY ++container_color: galera-bundle-master allocation score on galera-bundle-1: -INFINITY ++container_color: galera-bundle-master allocation score on galera-bundle-2: -INFINITY ++container_color: galera-bundle-master allocation score on messaging-0: 0 ++container_color: galera-bundle-master allocation score on messaging-1: 0 ++container_color: galera-bundle-master allocation score on messaging-2: 0 ++container_color: galera:0 allocation score on galera-bundle-0: INFINITY ++container_color: galera:1 allocation score on galera-bundle-1: INFINITY ++container_color: galera:2 allocation score on galera-bundle-2: INFINITY ++container_color: haproxy-bundle allocation score on controller-0: 0 ++container_color: haproxy-bundle allocation score on controller-0: 0 ++container_color: haproxy-bundle allocation score on controller-0: 0 ++container_color: haproxy-bundle allocation score on controller-0: 0 ++container_color: haproxy-bundle allocation score on controller-0: 0 ++container_color: haproxy-bundle allocation score on controller-0: 0 ++container_color: haproxy-bundle allocation score on controller-0: 0 ++container_color: haproxy-bundle allocation score on controller-1: 0 ++container_color: haproxy-bundle allocation score on controller-1: 0 ++container_color: haproxy-bundle allocation score on controller-1: 0 ++container_color: haproxy-bundle allocation score on controller-1: 0 ++container_color: haproxy-bundle allocation score on controller-1: 0 ++container_color: haproxy-bundle allocation score on controller-1: 0 ++container_color: haproxy-bundle allocation score on controller-1: 0 ++container_color: haproxy-bundle allocation score on controller-2: 0 ++container_color: haproxy-bundle allocation score on controller-2: 0 ++container_color: haproxy-bundle allocation score on controller-2: 0 ++container_color: haproxy-bundle allocation score on controller-2: 0 ++container_color: haproxy-bundle allocation score on controller-2: 0 ++container_color: haproxy-bundle allocation score on controller-2: 0 ++container_color: haproxy-bundle allocation score on controller-2: 0 ++container_color: haproxy-bundle allocation score on database-0: -INFINITY ++container_color: haproxy-bundle allocation score on database-0: -INFINITY ++container_color: haproxy-bundle allocation score on database-0: -INFINITY ++container_color: haproxy-bundle allocation score on database-0: -INFINITY ++container_color: haproxy-bundle allocation score on database-0: -INFINITY ++container_color: haproxy-bundle allocation score on database-0: -INFINITY ++container_color: haproxy-bundle allocation score on database-0: -INFINITY ++container_color: haproxy-bundle allocation score on database-1: -INFINITY ++container_color: haproxy-bundle allocation score on database-1: -INFINITY ++container_color: haproxy-bundle allocation score on database-1: -INFINITY ++container_color: haproxy-bundle allocation score on database-1: -INFINITY ++container_color: haproxy-bundle allocation score on database-1: -INFINITY ++container_color: haproxy-bundle allocation score on database-1: -INFINITY ++container_color: haproxy-bundle allocation score on database-1: -INFINITY ++container_color: haproxy-bundle allocation score on database-2: -INFINITY ++container_color: haproxy-bundle allocation score on database-2: -INFINITY ++container_color: haproxy-bundle allocation score on database-2: -INFINITY ++container_color: haproxy-bundle allocation score on database-2: -INFINITY ++container_color: haproxy-bundle allocation score on database-2: -INFINITY ++container_color: haproxy-bundle allocation score on database-2: -INFINITY ++container_color: haproxy-bundle allocation score on database-2: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on controller-2: 0 ++container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-0: 0 ++container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on controller-2: 0 ++container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 ++container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY ++container_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY ++container_color: rabbitmq-bundle allocation score on controller-0: -INFINITY ++container_color: rabbitmq-bundle allocation score on controller-1: -INFINITY ++container_color: rabbitmq-bundle allocation score on controller-2: -INFINITY ++container_color: rabbitmq-bundle allocation score on database-0: -INFINITY ++container_color: rabbitmq-bundle allocation score on database-1: -INFINITY ++container_color: rabbitmq-bundle allocation score on database-2: -INFINITY ++container_color: rabbitmq-bundle allocation score on messaging-0: 0 ++container_color: rabbitmq-bundle allocation score on messaging-1: 0 ++container_color: rabbitmq-bundle allocation score on messaging-2: 0 ++container_color: rabbitmq-bundle-0 allocation score on controller-0: 0 ++container_color: rabbitmq-bundle-0 allocation score on controller-1: 0 ++container_color: rabbitmq-bundle-0 allocation score on controller-2: INFINITY ++container_color: rabbitmq-bundle-0 allocation score on database-0: -INFINITY ++container_color: rabbitmq-bundle-0 allocation score on database-1: -INFINITY ++container_color: rabbitmq-bundle-0 allocation score on database-2: -INFINITY ++container_color: rabbitmq-bundle-0 allocation score on messaging-0: -INFINITY ++container_color: rabbitmq-bundle-0 allocation score on messaging-1: -INFINITY ++container_color: rabbitmq-bundle-0 allocation score on messaging-2: -INFINITY ++container_color: rabbitmq-bundle-1 allocation score on controller-0: 0 ++container_color: rabbitmq-bundle-1 allocation score on controller-1: 0 ++container_color: rabbitmq-bundle-1 allocation score on controller-2: INFINITY ++container_color: rabbitmq-bundle-1 allocation score on database-0: -INFINITY ++container_color: rabbitmq-bundle-1 allocation score on database-1: -INFINITY ++container_color: rabbitmq-bundle-1 allocation score on database-2: -INFINITY ++container_color: rabbitmq-bundle-1 allocation score on messaging-0: -INFINITY ++container_color: rabbitmq-bundle-1 allocation score on messaging-1: -INFINITY ++container_color: rabbitmq-bundle-1 allocation score on messaging-2: -INFINITY ++container_color: rabbitmq-bundle-2 allocation score on controller-0: 0 ++container_color: rabbitmq-bundle-2 allocation score on controller-1: 0 ++container_color: rabbitmq-bundle-2 allocation score on controller-2: INFINITY ++container_color: rabbitmq-bundle-2 allocation score on database-0: -INFINITY ++container_color: rabbitmq-bundle-2 allocation score on database-1: -INFINITY ++container_color: rabbitmq-bundle-2 allocation score on database-2: -INFINITY ++container_color: rabbitmq-bundle-2 allocation score on messaging-0: -INFINITY ++container_color: rabbitmq-bundle-2 allocation score on messaging-1: -INFINITY ++container_color: rabbitmq-bundle-2 allocation score on messaging-2: -INFINITY ++container_color: rabbitmq-bundle-clone allocation score on controller-0: 0 ++container_color: rabbitmq-bundle-clone allocation score on controller-1: 0 ++container_color: rabbitmq-bundle-clone allocation score on controller-2: 0 ++container_color: rabbitmq-bundle-clone allocation score on database-0: 0 ++container_color: rabbitmq-bundle-clone allocation score on database-1: 0 ++container_color: rabbitmq-bundle-clone allocation score on database-2: 0 ++container_color: rabbitmq-bundle-clone allocation score on messaging-0: 0 ++container_color: rabbitmq-bundle-clone allocation score on messaging-1: 0 ++container_color: rabbitmq-bundle-clone allocation score on messaging-2: 0 ++container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: -INFINITY ++container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-1: -INFINITY ++container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-2: -INFINITY ++container_color: rabbitmq-bundle-docker-0 allocation score on controller-0: -INFINITY ++container_color: rabbitmq-bundle-docker-0 allocation score on controller-1: -INFINITY ++container_color: rabbitmq-bundle-docker-0 allocation score on controller-2: -INFINITY ++container_color: rabbitmq-bundle-docker-0 allocation score on database-0: -INFINITY ++container_color: rabbitmq-bundle-docker-0 allocation score on database-1: -INFINITY ++container_color: rabbitmq-bundle-docker-0 allocation score on database-2: -INFINITY ++container_color: rabbitmq-bundle-docker-0 allocation score on messaging-0: INFINITY ++container_color: rabbitmq-bundle-docker-0 allocation score on messaging-1: 0 ++container_color: rabbitmq-bundle-docker-0 allocation score on messaging-2: 0 ++container_color: rabbitmq-bundle-docker-1 allocation score on controller-0: -INFINITY ++container_color: rabbitmq-bundle-docker-1 allocation score on controller-1: -INFINITY ++container_color: rabbitmq-bundle-docker-1 allocation score on controller-2: -INFINITY ++container_color: rabbitmq-bundle-docker-1 allocation score on database-0: -INFINITY ++container_color: rabbitmq-bundle-docker-1 allocation score on database-1: -INFINITY ++container_color: rabbitmq-bundle-docker-1 allocation score on database-2: -INFINITY ++container_color: rabbitmq-bundle-docker-1 allocation score on messaging-0: 0 ++container_color: rabbitmq-bundle-docker-1 allocation score on messaging-1: INFINITY ++container_color: rabbitmq-bundle-docker-1 allocation score on messaging-2: 0 ++container_color: rabbitmq-bundle-docker-2 allocation score on controller-0: -INFINITY ++container_color: rabbitmq-bundle-docker-2 allocation score on controller-1: -INFINITY ++container_color: rabbitmq-bundle-docker-2 allocation score on controller-2: -INFINITY ++container_color: rabbitmq-bundle-docker-2 allocation score on database-0: -INFINITY ++container_color: rabbitmq-bundle-docker-2 allocation score on database-1: -INFINITY ++container_color: rabbitmq-bundle-docker-2 allocation score on database-2: -INFINITY ++container_color: rabbitmq-bundle-docker-2 allocation score on messaging-0: 0 ++container_color: rabbitmq-bundle-docker-2 allocation score on messaging-1: 0 ++container_color: rabbitmq-bundle-docker-2 allocation score on messaging-2: INFINITY ++container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY ++container_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY ++container_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY ++container_color: redis-bundle allocation score on controller-0: 0 ++container_color: redis-bundle allocation score on controller-1: 0 ++container_color: redis-bundle allocation score on controller-2: 0 ++container_color: redis-bundle allocation score on database-0: -INFINITY ++container_color: redis-bundle allocation score on database-1: -INFINITY ++container_color: redis-bundle allocation score on database-2: -INFINITY ++container_color: redis-bundle allocation score on messaging-0: -INFINITY ++container_color: redis-bundle allocation score on messaging-1: -INFINITY ++container_color: redis-bundle allocation score on messaging-2: -INFINITY ++container_color: redis-bundle-0 allocation score on controller-0: INFINITY ++container_color: redis-bundle-0 allocation score on controller-1: 0 ++container_color: redis-bundle-0 allocation score on controller-2: 0 ++container_color: redis-bundle-0 allocation score on database-0: -INFINITY ++container_color: redis-bundle-0 allocation score on database-1: -INFINITY ++container_color: redis-bundle-0 allocation score on database-2: -INFINITY ++container_color: redis-bundle-0 allocation score on messaging-0: -INFINITY ++container_color: redis-bundle-0 allocation score on messaging-1: -INFINITY ++container_color: redis-bundle-0 allocation score on messaging-2: -INFINITY ++container_color: redis-bundle-1 allocation score on controller-0: 0 ++container_color: redis-bundle-1 allocation score on controller-1: 0 ++container_color: redis-bundle-1 allocation score on controller-2: 0 ++container_color: redis-bundle-1 allocation score on database-0: -INFINITY ++container_color: redis-bundle-1 allocation score on database-1: -INFINITY ++container_color: redis-bundle-1 allocation score on database-2: -INFINITY ++container_color: redis-bundle-1 allocation score on messaging-0: -INFINITY ++container_color: redis-bundle-1 allocation score on messaging-1: -INFINITY ++container_color: redis-bundle-1 allocation score on messaging-2: -INFINITY ++container_color: redis-bundle-2 allocation score on controller-0: 0 ++container_color: redis-bundle-2 allocation score on controller-1: 0 ++container_color: redis-bundle-2 allocation score on controller-2: INFINITY ++container_color: redis-bundle-2 allocation score on database-0: -INFINITY ++container_color: redis-bundle-2 allocation score on database-1: -INFINITY ++container_color: redis-bundle-2 allocation score on database-2: -INFINITY ++container_color: redis-bundle-2 allocation score on messaging-0: -INFINITY ++container_color: redis-bundle-2 allocation score on messaging-1: -INFINITY ++container_color: redis-bundle-2 allocation score on messaging-2: -INFINITY ++container_color: redis-bundle-docker-0 allocation score on controller-0: INFINITY ++container_color: redis-bundle-docker-0 allocation score on controller-1: 0 ++container_color: redis-bundle-docker-0 allocation score on controller-2: 0 ++container_color: redis-bundle-docker-0 allocation score on database-0: -INFINITY ++container_color: redis-bundle-docker-0 allocation score on database-1: -INFINITY ++container_color: redis-bundle-docker-0 allocation score on database-2: -INFINITY ++container_color: redis-bundle-docker-0 allocation score on messaging-0: -INFINITY ++container_color: redis-bundle-docker-0 allocation score on messaging-1: -INFINITY ++container_color: redis-bundle-docker-0 allocation score on messaging-2: -INFINITY ++container_color: redis-bundle-docker-1 allocation score on controller-0: 0 ++container_color: redis-bundle-docker-1 allocation score on controller-1: 0 ++container_color: redis-bundle-docker-1 allocation score on controller-2: 0 ++container_color: redis-bundle-docker-1 allocation score on database-0: -INFINITY ++container_color: redis-bundle-docker-1 allocation score on database-1: -INFINITY ++container_color: redis-bundle-docker-1 allocation score on database-2: -INFINITY ++container_color: redis-bundle-docker-1 allocation score on messaging-0: -INFINITY ++container_color: redis-bundle-docker-1 allocation score on messaging-1: -INFINITY ++container_color: redis-bundle-docker-1 allocation score on messaging-2: -INFINITY ++container_color: redis-bundle-docker-2 allocation score on controller-0: 0 ++container_color: redis-bundle-docker-2 allocation score on controller-1: 0 ++container_color: redis-bundle-docker-2 allocation score on controller-2: INFINITY ++container_color: redis-bundle-docker-2 allocation score on database-0: -INFINITY ++container_color: redis-bundle-docker-2 allocation score on database-1: -INFINITY ++container_color: redis-bundle-docker-2 allocation score on database-2: -INFINITY ++container_color: redis-bundle-docker-2 allocation score on messaging-0: -INFINITY ++container_color: redis-bundle-docker-2 allocation score on messaging-1: -INFINITY ++container_color: redis-bundle-docker-2 allocation score on messaging-2: -INFINITY ++container_color: redis-bundle-master allocation score on controller-0: 0 ++container_color: redis-bundle-master allocation score on controller-1: 0 ++container_color: redis-bundle-master allocation score on controller-2: 0 ++container_color: redis-bundle-master allocation score on database-0: 0 ++container_color: redis-bundle-master allocation score on database-1: 0 ++container_color: redis-bundle-master allocation score on database-2: 0 ++container_color: redis-bundle-master allocation score on messaging-0: 0 ++container_color: redis-bundle-master allocation score on messaging-1: 0 ++container_color: redis-bundle-master allocation score on messaging-2: 0 ++container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY ++container_color: redis-bundle-master allocation score on redis-bundle-1: -INFINITY ++container_color: redis-bundle-master allocation score on redis-bundle-2: -INFINITY ++container_color: redis:0 allocation score on redis-bundle-0: INFINITY ++container_color: redis:1 allocation score on redis-bundle-1: 500 ++container_color: redis:2 allocation score on redis-bundle-2: INFINITY ++galera:0 promotion score on galera-bundle-0: 100 ++galera:1 promotion score on galera-bundle-1: 100 ++galera:2 promotion score on galera-bundle-2: 100 ++native_color: database-0 allocation score on controller-0: 0 ++native_color: database-0 allocation score on controller-1: 0 ++native_color: database-0 allocation score on controller-2: 0 ++native_color: database-0 allocation score on database-0: -INFINITY ++native_color: database-0 allocation score on database-1: -INFINITY ++native_color: database-0 allocation score on database-2: -INFINITY ++native_color: database-0 allocation score on messaging-0: -INFINITY ++native_color: database-0 allocation score on messaging-1: -INFINITY ++native_color: database-0 allocation score on messaging-2: -INFINITY ++native_color: database-1 allocation score on controller-0: 0 ++native_color: database-1 allocation score on controller-1: 0 ++native_color: database-1 allocation score on controller-2: INFINITY ++native_color: database-1 allocation score on database-0: -INFINITY ++native_color: database-1 allocation score on database-1: -INFINITY ++native_color: database-1 allocation score on database-2: -INFINITY ++native_color: database-1 allocation score on messaging-0: -INFINITY ++native_color: database-1 allocation score on messaging-1: -INFINITY ++native_color: database-1 allocation score on messaging-2: -INFINITY ++native_color: database-2 allocation score on controller-0: 0 ++native_color: database-2 allocation score on controller-1: 0 ++native_color: database-2 allocation score on controller-2: 0 ++native_color: database-2 allocation score on database-0: -INFINITY ++native_color: database-2 allocation score on database-1: -INFINITY ++native_color: database-2 allocation score on database-2: -INFINITY ++native_color: database-2 allocation score on messaging-0: -INFINITY ++native_color: database-2 allocation score on messaging-1: -INFINITY ++native_color: database-2 allocation score on messaging-2: -INFINITY ++native_color: galera-bundle-0 allocation score on controller-0: 0 ++native_color: galera-bundle-0 allocation score on controller-1: -INFINITY ++native_color: galera-bundle-0 allocation score on controller-2: -INFINITY ++native_color: galera-bundle-0 allocation score on database-0: -INFINITY ++native_color: galera-bundle-0 allocation score on database-1: -INFINITY ++native_color: galera-bundle-0 allocation score on database-2: -INFINITY ++native_color: galera-bundle-0 allocation score on messaging-0: -INFINITY ++native_color: galera-bundle-0 allocation score on messaging-1: -INFINITY ++native_color: galera-bundle-0 allocation score on messaging-2: -INFINITY ++native_color: galera-bundle-1 allocation score on controller-0: -INFINITY ++native_color: galera-bundle-1 allocation score on controller-1: -INFINITY ++native_color: galera-bundle-1 allocation score on controller-2: INFINITY ++native_color: galera-bundle-1 allocation score on database-0: -INFINITY ++native_color: galera-bundle-1 allocation score on database-1: -INFINITY ++native_color: galera-bundle-1 allocation score on database-2: -INFINITY ++native_color: galera-bundle-1 allocation score on messaging-0: -INFINITY ++native_color: galera-bundle-1 allocation score on messaging-1: -INFINITY ++native_color: galera-bundle-1 allocation score on messaging-2: -INFINITY ++native_color: galera-bundle-2 allocation score on controller-0: -INFINITY ++native_color: galera-bundle-2 allocation score on controller-1: 0 ++native_color: galera-bundle-2 allocation score on controller-2: -INFINITY ++native_color: galera-bundle-2 allocation score on database-0: -INFINITY ++native_color: galera-bundle-2 allocation score on database-1: -INFINITY ++native_color: galera-bundle-2 allocation score on database-2: -INFINITY ++native_color: galera-bundle-2 allocation score on messaging-0: -INFINITY ++native_color: galera-bundle-2 allocation score on messaging-1: -INFINITY ++native_color: galera-bundle-2 allocation score on messaging-2: -INFINITY ++native_color: galera-bundle-docker-0 allocation score on controller-0: -INFINITY ++native_color: galera-bundle-docker-0 allocation score on controller-1: -INFINITY ++native_color: galera-bundle-docker-0 allocation score on controller-2: -INFINITY ++native_color: galera-bundle-docker-0 allocation score on database-0: INFINITY ++native_color: galera-bundle-docker-0 allocation score on database-1: -INFINITY ++native_color: galera-bundle-docker-0 allocation score on database-2: -10000 ++native_color: galera-bundle-docker-0 allocation score on messaging-0: -INFINITY ++native_color: galera-bundle-docker-0 allocation score on messaging-1: -INFINITY ++native_color: galera-bundle-docker-0 allocation score on messaging-2: -INFINITY ++native_color: galera-bundle-docker-1 allocation score on controller-0: -INFINITY ++native_color: galera-bundle-docker-1 allocation score on controller-1: -INFINITY ++native_color: galera-bundle-docker-1 allocation score on controller-2: -INFINITY ++native_color: galera-bundle-docker-1 allocation score on database-0: -10000 ++native_color: galera-bundle-docker-1 allocation score on database-1: INFINITY ++native_color: galera-bundle-docker-1 allocation score on database-2: -10000 ++native_color: galera-bundle-docker-1 allocation score on messaging-0: -INFINITY ++native_color: galera-bundle-docker-1 allocation score on messaging-1: -INFINITY ++native_color: galera-bundle-docker-1 allocation score on messaging-2: -INFINITY ++native_color: galera-bundle-docker-2 allocation score on controller-0: -INFINITY ++native_color: galera-bundle-docker-2 allocation score on controller-1: -INFINITY ++native_color: galera-bundle-docker-2 allocation score on controller-2: -INFINITY ++native_color: galera-bundle-docker-2 allocation score on database-0: -INFINITY ++native_color: galera-bundle-docker-2 allocation score on database-1: -INFINITY ++native_color: galera-bundle-docker-2 allocation score on database-2: INFINITY ++native_color: galera-bundle-docker-2 allocation score on messaging-0: -INFINITY ++native_color: galera-bundle-docker-2 allocation score on messaging-1: -INFINITY ++native_color: galera-bundle-docker-2 allocation score on messaging-2: -INFINITY ++native_color: galera:0 allocation score on galera-bundle-0: INFINITY ++native_color: galera:1 allocation score on galera-bundle-1: INFINITY ++native_color: galera:2 allocation score on galera-bundle-2: INFINITY ++native_color: haproxy-bundle-docker-0 allocation score on controller-0: INFINITY ++native_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 ++native_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY ++native_color: haproxy-bundle-docker-0 allocation score on database-0: -INFINITY ++native_color: haproxy-bundle-docker-0 allocation score on database-1: -INFINITY ++native_color: haproxy-bundle-docker-0 allocation score on database-2: -INFINITY ++native_color: haproxy-bundle-docker-0 allocation score on messaging-0: -INFINITY ++native_color: haproxy-bundle-docker-0 allocation score on messaging-1: -INFINITY ++native_color: haproxy-bundle-docker-0 allocation score on messaging-2: -INFINITY ++native_color: haproxy-bundle-docker-1 allocation score on controller-0: -INFINITY ++native_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 ++native_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY ++native_color: haproxy-bundle-docker-1 allocation score on database-0: -INFINITY ++native_color: haproxy-bundle-docker-1 allocation score on database-1: -INFINITY ++native_color: haproxy-bundle-docker-1 allocation score on database-2: -INFINITY ++native_color: haproxy-bundle-docker-1 allocation score on messaging-0: -INFINITY ++native_color: haproxy-bundle-docker-1 allocation score on messaging-1: -INFINITY ++native_color: haproxy-bundle-docker-1 allocation score on messaging-2: -INFINITY ++native_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 ++native_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 ++native_color: haproxy-bundle-docker-2 allocation score on controller-2: INFINITY ++native_color: haproxy-bundle-docker-2 allocation score on database-0: -INFINITY ++native_color: haproxy-bundle-docker-2 allocation score on database-1: -INFINITY ++native_color: haproxy-bundle-docker-2 allocation score on database-2: -INFINITY ++native_color: haproxy-bundle-docker-2 allocation score on messaging-0: -INFINITY ++native_color: haproxy-bundle-docker-2 allocation score on messaging-1: -INFINITY ++native_color: haproxy-bundle-docker-2 allocation score on messaging-2: -INFINITY ++native_color: ip-10.0.0.104 allocation score on controller-0: 0 ++native_color: ip-10.0.0.104 allocation score on controller-1: 0 ++native_color: ip-10.0.0.104 allocation score on controller-2: 0 ++native_color: ip-10.0.0.104 allocation score on database-0: -INFINITY ++native_color: ip-10.0.0.104 allocation score on database-1: -INFINITY ++native_color: ip-10.0.0.104 allocation score on database-2: -INFINITY ++native_color: ip-10.0.0.104 allocation score on messaging-0: -INFINITY ++native_color: ip-10.0.0.104 allocation score on messaging-1: -INFINITY ++native_color: ip-10.0.0.104 allocation score on messaging-2: -INFINITY ++native_color: ip-172.17.1.11 allocation score on controller-0: 0 ++native_color: ip-172.17.1.11 allocation score on controller-1: 0 ++native_color: ip-172.17.1.11 allocation score on controller-2: 0 ++native_color: ip-172.17.1.11 allocation score on database-0: -INFINITY ++native_color: ip-172.17.1.11 allocation score on database-1: -INFINITY ++native_color: ip-172.17.1.11 allocation score on database-2: -INFINITY ++native_color: ip-172.17.1.11 allocation score on messaging-0: -INFINITY ++native_color: ip-172.17.1.11 allocation score on messaging-1: -INFINITY ++native_color: ip-172.17.1.11 allocation score on messaging-2: -INFINITY ++native_color: ip-172.17.1.19 allocation score on controller-0: 0 ++native_color: ip-172.17.1.19 allocation score on controller-1: 0 ++native_color: ip-172.17.1.19 allocation score on controller-2: INFINITY ++native_color: ip-172.17.1.19 allocation score on database-0: -INFINITY ++native_color: ip-172.17.1.19 allocation score on database-1: -INFINITY ++native_color: ip-172.17.1.19 allocation score on database-2: -INFINITY ++native_color: ip-172.17.1.19 allocation score on messaging-0: -INFINITY ++native_color: ip-172.17.1.19 allocation score on messaging-1: -INFINITY ++native_color: ip-172.17.1.19 allocation score on messaging-2: -INFINITY ++native_color: ip-172.17.3.13 allocation score on controller-0: 0 ++native_color: ip-172.17.3.13 allocation score on controller-1: 0 ++native_color: ip-172.17.3.13 allocation score on controller-2: 0 ++native_color: ip-172.17.3.13 allocation score on database-0: -INFINITY ++native_color: ip-172.17.3.13 allocation score on database-1: -INFINITY ++native_color: ip-172.17.3.13 allocation score on database-2: -INFINITY ++native_color: ip-172.17.3.13 allocation score on messaging-0: -INFINITY ++native_color: ip-172.17.3.13 allocation score on messaging-1: -INFINITY ++native_color: ip-172.17.3.13 allocation score on messaging-2: -INFINITY ++native_color: ip-172.17.4.19 allocation score on controller-0: 0 ++native_color: ip-172.17.4.19 allocation score on controller-1: 0 ++native_color: ip-172.17.4.19 allocation score on controller-2: INFINITY ++native_color: ip-172.17.4.19 allocation score on database-0: -INFINITY ++native_color: ip-172.17.4.19 allocation score on database-1: -INFINITY ++native_color: ip-172.17.4.19 allocation score on database-2: -INFINITY ++native_color: ip-172.17.4.19 allocation score on messaging-0: -INFINITY ++native_color: ip-172.17.4.19 allocation score on messaging-1: -INFINITY ++native_color: ip-172.17.4.19 allocation score on messaging-2: -INFINITY ++native_color: ip-192.168.24.11 allocation score on controller-0: 0 ++native_color: ip-192.168.24.11 allocation score on controller-1: 0 ++native_color: ip-192.168.24.11 allocation score on controller-2: 0 ++native_color: ip-192.168.24.11 allocation score on database-0: -INFINITY ++native_color: ip-192.168.24.11 allocation score on database-1: -INFINITY ++native_color: ip-192.168.24.11 allocation score on database-2: -INFINITY ++native_color: ip-192.168.24.11 allocation score on messaging-0: -INFINITY ++native_color: ip-192.168.24.11 allocation score on messaging-1: -INFINITY ++native_color: ip-192.168.24.11 allocation score on messaging-2: -INFINITY ++native_color: messaging-0 allocation score on controller-0: 0 ++native_color: messaging-0 allocation score on controller-1: 0 ++native_color: messaging-0 allocation score on controller-2: INFINITY ++native_color: messaging-0 allocation score on database-0: -INFINITY ++native_color: messaging-0 allocation score on database-1: -INFINITY ++native_color: messaging-0 allocation score on database-2: -INFINITY ++native_color: messaging-0 allocation score on messaging-0: -INFINITY ++native_color: messaging-0 allocation score on messaging-1: -INFINITY ++native_color: messaging-0 allocation score on messaging-2: -INFINITY ++native_color: messaging-1 allocation score on controller-0: 0 ++native_color: messaging-1 allocation score on controller-1: 0 ++native_color: messaging-1 allocation score on controller-2: INFINITY ++native_color: messaging-1 allocation score on database-0: -INFINITY ++native_color: messaging-1 allocation score on database-1: -INFINITY ++native_color: messaging-1 allocation score on database-2: -INFINITY ++native_color: messaging-1 allocation score on messaging-0: -INFINITY ++native_color: messaging-1 allocation score on messaging-1: -INFINITY ++native_color: messaging-1 allocation score on messaging-2: -INFINITY ++native_color: messaging-2 allocation score on controller-0: 0 ++native_color: messaging-2 allocation score on controller-1: 0 ++native_color: messaging-2 allocation score on controller-2: INFINITY ++native_color: messaging-2 allocation score on database-0: -INFINITY ++native_color: messaging-2 allocation score on database-1: -INFINITY ++native_color: messaging-2 allocation score on database-2: -INFINITY ++native_color: messaging-2 allocation score on messaging-0: -INFINITY ++native_color: messaging-2 allocation score on messaging-1: -INFINITY ++native_color: messaging-2 allocation score on messaging-2: -INFINITY ++native_color: openstack-cinder-volume allocation score on controller-0: 0 ++native_color: openstack-cinder-volume allocation score on controller-1: 0 ++native_color: openstack-cinder-volume allocation score on controller-2: 0 ++native_color: openstack-cinder-volume allocation score on database-0: -INFINITY ++native_color: openstack-cinder-volume allocation score on database-1: -INFINITY ++native_color: openstack-cinder-volume allocation score on database-2: -INFINITY ++native_color: openstack-cinder-volume allocation score on messaging-0: -INFINITY ++native_color: openstack-cinder-volume allocation score on messaging-1: -INFINITY ++native_color: openstack-cinder-volume allocation score on messaging-2: -INFINITY ++native_color: rabbitmq-bundle-0 allocation score on controller-0: -INFINITY ++native_color: rabbitmq-bundle-0 allocation score on controller-1: -INFINITY ++native_color: rabbitmq-bundle-0 allocation score on controller-2: INFINITY ++native_color: rabbitmq-bundle-0 allocation score on database-0: -INFINITY ++native_color: rabbitmq-bundle-0 allocation score on database-1: -INFINITY ++native_color: rabbitmq-bundle-0 allocation score on database-2: -INFINITY ++native_color: rabbitmq-bundle-0 allocation score on messaging-0: -INFINITY ++native_color: rabbitmq-bundle-0 allocation score on messaging-1: -INFINITY ++native_color: rabbitmq-bundle-0 allocation score on messaging-2: -INFINITY ++native_color: rabbitmq-bundle-1 allocation score on controller-0: -INFINITY ++native_color: rabbitmq-bundle-1 allocation score on controller-1: -INFINITY ++native_color: rabbitmq-bundle-1 allocation score on controller-2: INFINITY ++native_color: rabbitmq-bundle-1 allocation score on database-0: -INFINITY ++native_color: rabbitmq-bundle-1 allocation score on database-1: -INFINITY ++native_color: rabbitmq-bundle-1 allocation score on database-2: -INFINITY ++native_color: rabbitmq-bundle-1 allocation score on messaging-0: -INFINITY ++native_color: rabbitmq-bundle-1 allocation score on messaging-1: -INFINITY ++native_color: rabbitmq-bundle-1 allocation score on messaging-2: -INFINITY ++native_color: rabbitmq-bundle-2 allocation score on controller-0: -INFINITY ++native_color: rabbitmq-bundle-2 allocation score on controller-1: -INFINITY ++native_color: rabbitmq-bundle-2 allocation score on controller-2: INFINITY ++native_color: rabbitmq-bundle-2 allocation score on database-0: -INFINITY ++native_color: rabbitmq-bundle-2 allocation score on database-1: -INFINITY ++native_color: rabbitmq-bundle-2 allocation score on database-2: -INFINITY ++native_color: rabbitmq-bundle-2 allocation score on messaging-0: -INFINITY ++native_color: rabbitmq-bundle-2 allocation score on messaging-1: -INFINITY ++native_color: rabbitmq-bundle-2 allocation score on messaging-2: -INFINITY ++native_color: rabbitmq-bundle-docker-0 allocation score on controller-0: -INFINITY ++native_color: rabbitmq-bundle-docker-0 allocation score on controller-1: -INFINITY ++native_color: rabbitmq-bundle-docker-0 allocation score on controller-2: -INFINITY ++native_color: rabbitmq-bundle-docker-0 allocation score on database-0: -INFINITY ++native_color: rabbitmq-bundle-docker-0 allocation score on database-1: -INFINITY ++native_color: rabbitmq-bundle-docker-0 allocation score on database-2: -INFINITY ++native_color: rabbitmq-bundle-docker-0 allocation score on messaging-0: INFINITY ++native_color: rabbitmq-bundle-docker-0 allocation score on messaging-1: -10000 ++native_color: rabbitmq-bundle-docker-0 allocation score on messaging-2: -10000 ++native_color: rabbitmq-bundle-docker-1 allocation score on controller-0: -INFINITY ++native_color: rabbitmq-bundle-docker-1 allocation score on controller-1: -INFINITY ++native_color: rabbitmq-bundle-docker-1 allocation score on controller-2: -INFINITY ++native_color: rabbitmq-bundle-docker-1 allocation score on database-0: -INFINITY ++native_color: rabbitmq-bundle-docker-1 allocation score on database-1: -INFINITY ++native_color: rabbitmq-bundle-docker-1 allocation score on database-2: -INFINITY ++native_color: rabbitmq-bundle-docker-1 allocation score on messaging-0: -INFINITY ++native_color: rabbitmq-bundle-docker-1 allocation score on messaging-1: INFINITY ++native_color: rabbitmq-bundle-docker-1 allocation score on messaging-2: -10000 ++native_color: rabbitmq-bundle-docker-2 allocation score on controller-0: -INFINITY ++native_color: rabbitmq-bundle-docker-2 allocation score on controller-1: -INFINITY ++native_color: rabbitmq-bundle-docker-2 allocation score on controller-2: -INFINITY ++native_color: rabbitmq-bundle-docker-2 allocation score on database-0: -INFINITY ++native_color: rabbitmq-bundle-docker-2 allocation score on database-1: -INFINITY ++native_color: rabbitmq-bundle-docker-2 allocation score on database-2: -INFINITY ++native_color: rabbitmq-bundle-docker-2 allocation score on messaging-0: -INFINITY ++native_color: rabbitmq-bundle-docker-2 allocation score on messaging-1: -INFINITY ++native_color: rabbitmq-bundle-docker-2 allocation score on messaging-2: INFINITY ++native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY ++native_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY ++native_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY ++native_color: redis-bundle-0 allocation score on controller-0: INFINITY ++native_color: redis-bundle-0 allocation score on controller-1: 0 ++native_color: redis-bundle-0 allocation score on controller-2: 0 ++native_color: redis-bundle-0 allocation score on database-0: -INFINITY ++native_color: redis-bundle-0 allocation score on database-1: -INFINITY ++native_color: redis-bundle-0 allocation score on database-2: -INFINITY ++native_color: redis-bundle-0 allocation score on messaging-0: -INFINITY ++native_color: redis-bundle-0 allocation score on messaging-1: -INFINITY ++native_color: redis-bundle-0 allocation score on messaging-2: -INFINITY ++native_color: redis-bundle-1 allocation score on controller-0: 0 ++native_color: redis-bundle-1 allocation score on controller-1: 10000 ++native_color: redis-bundle-1 allocation score on controller-2: 0 ++native_color: redis-bundle-1 allocation score on database-0: -INFINITY ++native_color: redis-bundle-1 allocation score on database-1: -INFINITY ++native_color: redis-bundle-1 allocation score on database-2: -INFINITY ++native_color: redis-bundle-1 allocation score on messaging-0: -INFINITY ++native_color: redis-bundle-1 allocation score on messaging-1: -INFINITY ++native_color: redis-bundle-1 allocation score on messaging-2: -INFINITY ++native_color: redis-bundle-2 allocation score on controller-0: 0 ++native_color: redis-bundle-2 allocation score on controller-1: 0 ++native_color: redis-bundle-2 allocation score on controller-2: INFINITY ++native_color: redis-bundle-2 allocation score on database-0: -INFINITY ++native_color: redis-bundle-2 allocation score on database-1: -INFINITY ++native_color: redis-bundle-2 allocation score on database-2: -INFINITY ++native_color: redis-bundle-2 allocation score on messaging-0: -INFINITY ++native_color: redis-bundle-2 allocation score on messaging-1: -INFINITY ++native_color: redis-bundle-2 allocation score on messaging-2: -INFINITY ++native_color: redis-bundle-docker-0 allocation score on controller-0: INFINITY ++native_color: redis-bundle-docker-0 allocation score on controller-1: 0 ++native_color: redis-bundle-docker-0 allocation score on controller-2: 0 ++native_color: redis-bundle-docker-0 allocation score on database-0: -INFINITY ++native_color: redis-bundle-docker-0 allocation score on database-1: -INFINITY ++native_color: redis-bundle-docker-0 allocation score on database-2: -INFINITY ++native_color: redis-bundle-docker-0 allocation score on messaging-0: -INFINITY ++native_color: redis-bundle-docker-0 allocation score on messaging-1: -INFINITY ++native_color: redis-bundle-docker-0 allocation score on messaging-2: -INFINITY ++native_color: redis-bundle-docker-1 allocation score on controller-0: -INFINITY ++native_color: redis-bundle-docker-1 allocation score on controller-1: 0 ++native_color: redis-bundle-docker-1 allocation score on controller-2: -INFINITY ++native_color: redis-bundle-docker-1 allocation score on database-0: -INFINITY ++native_color: redis-bundle-docker-1 allocation score on database-1: -INFINITY ++native_color: redis-bundle-docker-1 allocation score on database-2: -INFINITY ++native_color: redis-bundle-docker-1 allocation score on messaging-0: -INFINITY ++native_color: redis-bundle-docker-1 allocation score on messaging-1: -INFINITY ++native_color: redis-bundle-docker-1 allocation score on messaging-2: -INFINITY ++native_color: redis-bundle-docker-2 allocation score on controller-0: -INFINITY ++native_color: redis-bundle-docker-2 allocation score on controller-1: 0 ++native_color: redis-bundle-docker-2 allocation score on controller-2: INFINITY ++native_color: redis-bundle-docker-2 allocation score on database-0: -INFINITY ++native_color: redis-bundle-docker-2 allocation score on database-1: -INFINITY ++native_color: redis-bundle-docker-2 allocation score on database-2: -INFINITY ++native_color: redis-bundle-docker-2 allocation score on messaging-0: -INFINITY ++native_color: redis-bundle-docker-2 allocation score on messaging-1: -INFINITY ++native_color: redis-bundle-docker-2 allocation score on messaging-2: -INFINITY ++native_color: redis:0 allocation score on redis-bundle-0: INFINITY ++native_color: redis:1 allocation score on redis-bundle-1: INFINITY ++native_color: redis:2 allocation score on redis-bundle-2: INFINITY ++native_color: stonith-fence_ipmilan-525400244e09 allocation score on controller-0: 0 ++native_color: stonith-fence_ipmilan-525400244e09 allocation score on controller-1: 0 ++native_color: stonith-fence_ipmilan-525400244e09 allocation score on controller-2: INFINITY ++native_color: stonith-fence_ipmilan-525400244e09 allocation score on database-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400244e09 allocation score on database-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400244e09 allocation score on database-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400244e09 allocation score on messaging-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400244e09 allocation score on messaging-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400244e09 allocation score on messaging-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400498d34 allocation score on controller-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400498d34 allocation score on controller-1: 0 ++native_color: stonith-fence_ipmilan-525400498d34 allocation score on controller-2: 0 ++native_color: stonith-fence_ipmilan-525400498d34 allocation score on database-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400498d34 allocation score on database-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400498d34 allocation score on database-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400498d34 allocation score on messaging-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400498d34 allocation score on messaging-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400498d34 allocation score on messaging-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400542c06 allocation score on controller-0: 0 ++native_color: stonith-fence_ipmilan-525400542c06 allocation score on controller-1: 0 ++native_color: stonith-fence_ipmilan-525400542c06 allocation score on controller-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400542c06 allocation score on database-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400542c06 allocation score on database-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400542c06 allocation score on database-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400542c06 allocation score on messaging-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400542c06 allocation score on messaging-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400542c06 allocation score on messaging-2: -INFINITY ++native_color: stonith-fence_ipmilan-5254005ea387 allocation score on controller-0: 0 ++native_color: stonith-fence_ipmilan-5254005ea387 allocation score on controller-1: 0 ++native_color: stonith-fence_ipmilan-5254005ea387 allocation score on controller-2: 0 ++native_color: stonith-fence_ipmilan-5254005ea387 allocation score on database-0: -INFINITY ++native_color: stonith-fence_ipmilan-5254005ea387 allocation score on database-1: -INFINITY ++native_color: stonith-fence_ipmilan-5254005ea387 allocation score on database-2: -INFINITY ++native_color: stonith-fence_ipmilan-5254005ea387 allocation score on messaging-0: -INFINITY ++native_color: stonith-fence_ipmilan-5254005ea387 allocation score on messaging-1: -INFINITY ++native_color: stonith-fence_ipmilan-5254005ea387 allocation score on messaging-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400a25787 allocation score on controller-0: 0 ++native_color: stonith-fence_ipmilan-525400a25787 allocation score on controller-1: 0 ++native_color: stonith-fence_ipmilan-525400a25787 allocation score on controller-2: INFINITY ++native_color: stonith-fence_ipmilan-525400a25787 allocation score on database-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400a25787 allocation score on database-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400a25787 allocation score on database-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400a25787 allocation score on messaging-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400a25787 allocation score on messaging-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400a25787 allocation score on messaging-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on controller-0: INFINITY ++native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on controller-1: 0 ++native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on controller-2: 0 ++native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on database-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on database-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on database-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on messaging-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on messaging-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400a7f9e0 allocation score on messaging-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400aac413 allocation score on controller-0: 0 ++native_color: stonith-fence_ipmilan-525400aac413 allocation score on controller-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400aac413 allocation score on controller-2: INFINITY ++native_color: stonith-fence_ipmilan-525400aac413 allocation score on database-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400aac413 allocation score on database-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400aac413 allocation score on database-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400aac413 allocation score on messaging-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400aac413 allocation score on messaging-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400aac413 allocation score on messaging-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400c709f7 allocation score on controller-0: 0 ++native_color: stonith-fence_ipmilan-525400c709f7 allocation score on controller-1: 0 ++native_color: stonith-fence_ipmilan-525400c709f7 allocation score on controller-2: 0 ++native_color: stonith-fence_ipmilan-525400c709f7 allocation score on database-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400c709f7 allocation score on database-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400c709f7 allocation score on database-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400c709f7 allocation score on messaging-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400c709f7 allocation score on messaging-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400c709f7 allocation score on messaging-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400cdec10 allocation score on controller-0: 0 ++native_color: stonith-fence_ipmilan-525400cdec10 allocation score on controller-1: 0 ++native_color: stonith-fence_ipmilan-525400cdec10 allocation score on controller-2: INFINITY ++native_color: stonith-fence_ipmilan-525400cdec10 allocation score on database-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400cdec10 allocation score on database-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400cdec10 allocation score on database-2: -INFINITY ++native_color: stonith-fence_ipmilan-525400cdec10 allocation score on messaging-0: -INFINITY ++native_color: stonith-fence_ipmilan-525400cdec10 allocation score on messaging-1: -INFINITY ++native_color: stonith-fence_ipmilan-525400cdec10 allocation score on messaging-2: -INFINITY ++redis:0 promotion score on redis-bundle-0: 1 ++redis:1 promotion score on redis-bundle-1: -1 ++redis:2 promotion score on redis-bundle-2: 1 +diff --git a/pengine/test10/bundle-order-stop-on-remote.summary b/pengine/test10/bundle-order-stop-on-remote.summary +new file mode 100644 +index 0000000..8a04599 +--- /dev/null ++++ b/pengine/test10/bundle-order-stop-on-remote.summary +@@ -0,0 +1,224 @@ ++ ++Current cluster status: ++RemoteNode database-0: UNCLEAN (offline) ++RemoteNode database-2: UNCLEAN (offline) ++Online: [ controller-0 controller-1 controller-2 ] ++RemoteOnline: [ database-1 messaging-0 messaging-1 messaging-2 ] ++Containers: [ galera-bundle-1:galera-bundle-docker-1 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 rabbitmq-bundle-1:rabbitmq-bundle-docker-1 rabbitmq-bundle-2:rabbitmq-bundle-docker-2 redis-bundle-0:redis-bundle-docker-0 redis-bundle-2:redis-bundle-docker-2 ] ++ ++ database-0 (ocf::pacemaker:remote): Stopped ++ database-1 (ocf::pacemaker:remote): Started controller-2 ++ database-2 (ocf::pacemaker:remote): Stopped ++ messaging-0 (ocf::pacemaker:remote): Started controller-2 ++ messaging-1 (ocf::pacemaker:remote): Started controller-2 ++ messaging-2 (ocf::pacemaker:remote): Started controller-2 ++ Docker container set: rabbitmq-bundle [192.168.24.1:8787/rhosp12/openstack-rabbitmq-docker:pcmklatest] ++ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started messaging-0 ++ rabbitmq-bundle-1 (ocf::heartbeat:rabbitmq-cluster): Started messaging-1 ++ rabbitmq-bundle-2 (ocf::heartbeat:rabbitmq-cluster): Started messaging-2 ++ Docker container set: galera-bundle [192.168.24.1:8787/rhosp12/openstack-mariadb-docker:pcmklatest] ++ galera-bundle-0 (ocf::heartbeat:galera): FAILED Master database-0 (UNCLEAN) ++ galera-bundle-1 (ocf::heartbeat:galera): Master database-1 ++ galera-bundle-2 (ocf::heartbeat:galera): FAILED Master database-2 (UNCLEAN) ++ Docker container set: redis-bundle [192.168.24.1:8787/rhosp12/openstack-redis-docker:pcmklatest] ++ redis-bundle-0 (ocf::heartbeat:redis): Slave controller-0 ++ redis-bundle-1 (ocf::heartbeat:redis): Stopped ++ redis-bundle-2 (ocf::heartbeat:redis): Slave controller-2 ++ ip-192.168.24.11 (ocf::heartbeat:IPaddr2): Stopped ++ ip-10.0.0.104 (ocf::heartbeat:IPaddr2): Stopped ++ ip-172.17.1.19 (ocf::heartbeat:IPaddr2): Started controller-2 ++ ip-172.17.1.11 (ocf::heartbeat:IPaddr2): Stopped ++ ip-172.17.3.13 (ocf::heartbeat:IPaddr2): Stopped ++ ip-172.17.4.19 (ocf::heartbeat:IPaddr2): Started controller-2 ++ Docker container set: haproxy-bundle [192.168.24.1:8787/rhosp12/openstack-haproxy-docker:pcmklatest] ++ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started controller-0 ++ haproxy-bundle-docker-1 (ocf::heartbeat:docker): Stopped ++ haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started controller-2 ++ openstack-cinder-volume (systemd:openstack-cinder-volume): Stopped ++ stonith-fence_ipmilan-525400244e09 (stonith:fence_ipmilan): Started controller-2 ++ stonith-fence_ipmilan-525400cdec10 (stonith:fence_ipmilan): Started controller-2 ++ stonith-fence_ipmilan-525400c709f7 (stonith:fence_ipmilan): Stopped ++ stonith-fence_ipmilan-525400a7f9e0 (stonith:fence_ipmilan): Started controller-0 ++ stonith-fence_ipmilan-525400a25787 (stonith:fence_ipmilan): Started controller-2 ++ stonith-fence_ipmilan-5254005ea387 (stonith:fence_ipmilan): Stopped ++ stonith-fence_ipmilan-525400542c06 (stonith:fence_ipmilan): Stopped ++ stonith-fence_ipmilan-525400aac413 (stonith:fence_ipmilan): Started controller-2 ++ stonith-fence_ipmilan-525400498d34 (stonith:fence_ipmilan): Stopped ++ ++Transition Summary: ++ * Fence (reboot) galera-bundle-2 (resource: galera-bundle-docker-2) 'guest is unclean' ++ * Fence (reboot) galera-bundle-0 (resource: galera-bundle-docker-0) 'guest is unclean' ++ * Start database-0 ( controller-0 ) ++ * Start database-2 ( controller-1 ) ++ * Recover galera-bundle-docker-0 ( database-0 ) ++ * Start galera-bundle-0 ( controller-0 ) ++ * Recover galera:0 ( Master galera-bundle-0 ) ++ * Recover galera-bundle-docker-2 ( database-2 ) ++ * Start galera-bundle-2 ( controller-1 ) ++ * Recover galera:2 ( Master galera-bundle-2 ) ++ * Promote redis:0 ( Slave -> Master redis-bundle-0 ) ++ * Start redis-bundle-docker-1 ( controller-1 ) ++ * Start redis-bundle-1 ( controller-1 ) ++ * Start redis:1 ( redis-bundle-1 ) ++ * Start ip-192.168.24.11 ( controller-0 ) ++ * Start ip-10.0.0.104 ( controller-1 ) ++ * Start ip-172.17.1.11 ( controller-0 ) ++ * Start ip-172.17.3.13 ( controller-1 ) ++ * Start haproxy-bundle-docker-1 ( controller-1 ) ++ * Start openstack-cinder-volume ( controller-0 ) ++ * Start stonith-fence_ipmilan-525400c709f7 ( controller-1 ) ++ * Start stonith-fence_ipmilan-5254005ea387 ( controller-1 ) ++ * Start stonith-fence_ipmilan-525400542c06 ( controller-0 ) ++ * Start stonith-fence_ipmilan-525400498d34 ( controller-1 ) ++ ++Executing cluster transition: ++ * Resource action: database-0 start on controller-0 ++ * Resource action: database-2 start on controller-1 ++ * Pseudo action: redis-bundle-master_pre_notify_start_0 ++ * Resource action: stonith-fence_ipmilan-525400c709f7 start on controller-1 ++ * Resource action: stonith-fence_ipmilan-5254005ea387 start on controller-1 ++ * Resource action: stonith-fence_ipmilan-525400542c06 start on controller-0 ++ * Resource action: stonith-fence_ipmilan-525400498d34 start on controller-1 ++ * Pseudo action: redis-bundle_start_0 ++ * Pseudo action: galera-bundle_demote_0 ++ * Resource action: database-0 monitor=20000 on controller-0 ++ * Resource action: database-2 monitor=20000 on controller-1 ++ * Pseudo action: galera-bundle-master_demote_0 ++ * Resource action: redis notify on redis-bundle-0 ++ * Resource action: redis notify on redis-bundle-2 ++ * Pseudo action: redis-bundle-master_confirmed-pre_notify_start_0 ++ * Pseudo action: redis-bundle-master_start_0 ++ * Resource action: stonith-fence_ipmilan-525400c709f7 monitor=60000 on controller-1 ++ * Resource action: stonith-fence_ipmilan-5254005ea387 monitor=60000 on controller-1 ++ * Resource action: stonith-fence_ipmilan-525400542c06 monitor=60000 on controller-0 ++ * Resource action: stonith-fence_ipmilan-525400498d34 monitor=60000 on controller-1 ++ * Pseudo action: galera_demote_0 ++ * Pseudo action: galera_demote_0 ++ * Pseudo action: galera-bundle-master_demoted_0 ++ * Pseudo action: galera-bundle_demoted_0 ++ * Pseudo action: galera-bundle_stop_0 ++ * Resource action: galera-bundle-docker-0 stop on database-0 ++ * Resource action: galera-bundle-docker-2 stop on database-2 ++ * Pseudo action: stonith-galera-bundle-2-reboot on galera-bundle-2 ++ * Pseudo action: stonith-galera-bundle-0-reboot on galera-bundle-0 ++ * Pseudo action: stonith_complete ++ * Pseudo action: galera-bundle-master_stop_0 ++ * Resource action: redis-bundle-docker-1 start on controller-1 ++ * Resource action: redis-bundle-1 monitor on controller-1 ++ * Resource action: ip-192.168.24.11 start on controller-0 ++ * Resource action: ip-10.0.0.104 start on controller-1 ++ * Resource action: ip-172.17.1.11 start on controller-0 ++ * Resource action: ip-172.17.3.13 start on controller-1 ++ * Resource action: openstack-cinder-volume start on controller-0 ++ * Pseudo action: haproxy-bundle_start_0 ++ * Pseudo action: galera_stop_0 ++ * Resource action: redis-bundle-docker-1 monitor=60000 on controller-1 ++ * Resource action: redis-bundle-1 start on controller-1 ++ * Resource action: ip-192.168.24.11 monitor=10000 on controller-0 ++ * Resource action: ip-10.0.0.104 monitor=10000 on controller-1 ++ * Resource action: ip-172.17.1.11 monitor=10000 on controller-0 ++ * Resource action: ip-172.17.3.13 monitor=10000 on controller-1 ++ * Resource action: haproxy-bundle-docker-1 start on controller-1 ++ * Resource action: openstack-cinder-volume monitor=60000 on controller-0 ++ * Pseudo action: haproxy-bundle_running_0 ++ * Pseudo action: galera_stop_0 ++ * Pseudo action: galera-bundle-master_stopped_0 ++ * Resource action: redis start on redis-bundle-1 ++ * Pseudo action: redis-bundle-master_running_0 ++ * Resource action: redis-bundle-1 monitor=60000 on controller-1 ++ * Resource action: haproxy-bundle-docker-1 monitor=60000 on controller-1 ++ * Pseudo action: galera-bundle_stopped_0 ++ * Pseudo action: galera-bundle_start_0 ++ * Pseudo action: all_stopped ++ * Pseudo action: galera-bundle-master_start_0 ++ * Resource action: galera-bundle-docker-0 start on database-0 ++ * Resource action: galera-bundle-0 monitor on controller-1 ++ * Resource action: galera-bundle-docker-2 start on database-2 ++ * Resource action: galera-bundle-2 monitor on controller-1 ++ * Pseudo action: redis-bundle-master_post_notify_running_0 ++ * Resource action: galera-bundle-docker-0 monitor=60000 on database-0 ++ * Resource action: galera-bundle-0 start on controller-0 ++ * Resource action: galera-bundle-docker-2 monitor=60000 on database-2 ++ * Resource action: galera-bundle-2 start on controller-1 ++ * Resource action: redis notify on redis-bundle-0 ++ * Resource action: redis notify on redis-bundle-1 ++ * Resource action: redis notify on redis-bundle-2 ++ * Pseudo action: redis-bundle-master_confirmed-post_notify_running_0 ++ * Pseudo action: redis-bundle_running_0 ++ * Resource action: galera start on galera-bundle-0 ++ * Resource action: galera start on galera-bundle-2 ++ * Pseudo action: galera-bundle-master_running_0 ++ * Resource action: galera-bundle-0 monitor=60000 on controller-0 ++ * Resource action: galera-bundle-2 monitor=60000 on controller-1 ++ * Pseudo action: redis-bundle-master_pre_notify_promote_0 ++ * Pseudo action: redis-bundle_promote_0 ++ * Pseudo action: galera-bundle_running_0 ++ * Resource action: redis notify on redis-bundle-0 ++ * Resource action: redis notify on redis-bundle-1 ++ * Resource action: redis notify on redis-bundle-2 ++ * Pseudo action: redis-bundle-master_confirmed-pre_notify_promote_0 ++ * Pseudo action: redis-bundle-master_promote_0 ++ * Pseudo action: galera-bundle_promote_0 ++ * Pseudo action: galera-bundle-master_promote_0 ++ * Resource action: redis promote on redis-bundle-0 ++ * Pseudo action: redis-bundle-master_promoted_0 ++ * Resource action: galera promote on galera-bundle-0 ++ * Resource action: galera promote on galera-bundle-2 ++ * Pseudo action: galera-bundle-master_promoted_0 ++ * Pseudo action: redis-bundle-master_post_notify_promoted_0 ++ * Pseudo action: galera-bundle_promoted_0 ++ * Resource action: galera monitor=10000 on galera-bundle-0 ++ * Resource action: galera monitor=10000 on galera-bundle-2 ++ * Resource action: redis notify on redis-bundle-0 ++ * Resource action: redis notify on redis-bundle-1 ++ * Resource action: redis notify on redis-bundle-2 ++ * Pseudo action: redis-bundle-master_confirmed-post_notify_promoted_0 ++ * Pseudo action: redis-bundle_promoted_0 ++ * Resource action: redis monitor=20000 on redis-bundle-0 ++ * Resource action: redis monitor=60000 on redis-bundle-1 ++ * Resource action: redis monitor=45000 on redis-bundle-1 ++ ++Revised cluster status: ++Online: [ controller-0 controller-1 controller-2 ] ++RemoteOnline: [ database-0 database-1 database-2 messaging-0 messaging-1 messaging-2 ] ++Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bundle-docker-1 galera-bundle-2:galera-bundle-docker-2 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 rabbitmq-bundle-1:rabbitmq-bundle-docker-1 rabbitmq-bundle-2:rabbitmq-bundle-docker-2 redis-bundle-0:redis-bundle-docker-0 redis-bundle-1:redis-bundle-docker-1 redis-bundle-2:redis-bundle-docker-2 ] ++ ++ database-0 (ocf::pacemaker:remote): Started controller-0 ++ database-1 (ocf::pacemaker:remote): Started controller-2 ++ database-2 (ocf::pacemaker:remote): Started controller-1 ++ messaging-0 (ocf::pacemaker:remote): Started controller-2 ++ messaging-1 (ocf::pacemaker:remote): Started controller-2 ++ messaging-2 (ocf::pacemaker:remote): Started controller-2 ++ Docker container set: rabbitmq-bundle [192.168.24.1:8787/rhosp12/openstack-rabbitmq-docker:pcmklatest] ++ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started messaging-0 ++ rabbitmq-bundle-1 (ocf::heartbeat:rabbitmq-cluster): Started messaging-1 ++ rabbitmq-bundle-2 (ocf::heartbeat:rabbitmq-cluster): Started messaging-2 ++ Docker container set: galera-bundle [192.168.24.1:8787/rhosp12/openstack-mariadb-docker:pcmklatest] ++ galera-bundle-0 (ocf::heartbeat:galera): Master database-0 ++ galera-bundle-1 (ocf::heartbeat:galera): Master database-1 ++ galera-bundle-2 (ocf::heartbeat:galera): Master database-2 ++ Docker container set: redis-bundle [192.168.24.1:8787/rhosp12/openstack-redis-docker:pcmklatest] ++ redis-bundle-0 (ocf::heartbeat:redis): Master controller-0 ++ redis-bundle-1 (ocf::heartbeat:redis): Slave controller-1 ++ redis-bundle-2 (ocf::heartbeat:redis): Slave controller-2 ++ ip-192.168.24.11 (ocf::heartbeat:IPaddr2): Started controller-0 ++ ip-10.0.0.104 (ocf::heartbeat:IPaddr2): Started controller-1 ++ ip-172.17.1.19 (ocf::heartbeat:IPaddr2): Started controller-2 ++ ip-172.17.1.11 (ocf::heartbeat:IPaddr2): Started controller-0 ++ ip-172.17.3.13 (ocf::heartbeat:IPaddr2): Started controller-1 ++ ip-172.17.4.19 (ocf::heartbeat:IPaddr2): Started controller-2 ++ Docker container set: haproxy-bundle [192.168.24.1:8787/rhosp12/openstack-haproxy-docker:pcmklatest] ++ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started controller-0 ++ haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started controller-1 ++ haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started controller-2 ++ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-0 ++ stonith-fence_ipmilan-525400244e09 (stonith:fence_ipmilan): Started controller-2 ++ stonith-fence_ipmilan-525400cdec10 (stonith:fence_ipmilan): Started controller-2 ++ stonith-fence_ipmilan-525400c709f7 (stonith:fence_ipmilan): Started controller-1 ++ stonith-fence_ipmilan-525400a7f9e0 (stonith:fence_ipmilan): Started controller-0 ++ stonith-fence_ipmilan-525400a25787 (stonith:fence_ipmilan): Started controller-2 ++ stonith-fence_ipmilan-5254005ea387 (stonith:fence_ipmilan): Started controller-1 ++ stonith-fence_ipmilan-525400542c06 (stonith:fence_ipmilan): Started controller-0 ++ stonith-fence_ipmilan-525400aac413 (stonith:fence_ipmilan): Started controller-2 ++ stonith-fence_ipmilan-525400498d34 (stonith:fence_ipmilan): Started controller-1 ++ +diff --git a/pengine/test10/bundle-order-stop-on-remote.xml b/pengine/test10/bundle-order-stop-on-remote.xml +new file mode 100644 +index 0000000..d3b87c8 +--- /dev/null ++++ b/pengine/test10/bundle-order-stop-on-remote.xml +@@ -0,0 +1,1165 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +-- +1.8.3.1 + + +From 47a5f6f5cd1fba2c6bac140329e563abd34b2ef4 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 8 Dec 2017 16:54:07 -0600 +Subject: [PATCH 13/16] Low: PE: correct mispelled constant + +original intention of 2b1aae07 +--- + pengine/allocate.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pengine/allocate.c b/pengine/allocate.c +index 1c95e97..481a0ec 100644 +--- a/pengine/allocate.c ++++ b/pengine/allocate.c +@@ -1870,7 +1870,7 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) + container->id); + + if (safe_str_eq(action->task, CRMD_ACTION_MIGRATE) +- || safe_str_eq(action->task, CRMD_ACTION_MIGRATE)) { ++ || safe_str_eq(action->task, CRMD_ACTION_MIGRATED)) { + /* Migration ops map to "no_action", but we need to apply the same + * ordering as for stop or demote (see get_router_node()). + */ +@@ -2036,7 +2036,7 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) + remote_rsc->id, state2text(state)); + + if (safe_str_eq(action->task, CRMD_ACTION_MIGRATE) +- || safe_str_eq(action->task, CRMD_ACTION_MIGRATE)) { ++ || safe_str_eq(action->task, CRMD_ACTION_MIGRATED)) { + /* Migration ops map to "no_action", but we need to apply the same + * ordering as for stop or demote (see get_router_node()). + */ +-- +1.8.3.1 + + +From 55c9b5ef9c6f531ea808926abaaea5c7c8890dad Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 8 Dec 2017 17:31:23 -0600 +Subject: [PATCH 14/16] Doc: PE: update remote stop ordering comments for + recent changes + +--- + pengine/allocate.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/pengine/allocate.c b/pengine/allocate.c +index 481a0ec..7ae4e02 100644 +--- a/pengine/allocate.c ++++ b/pengine/allocate.c +@@ -2058,9 +2058,6 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) + break; + + case stop_rsc: +- /* Handle special case with remote node where stop actions need to be +- * ordered after the connection resource starts somewhere else. +- */ + if(state == remote_state_alive) { + order_action_then_stop(action, remote_rsc, + pe_order_implies_first, data_set); +@@ -2076,14 +2073,18 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) + pe_order_implies_first, data_set); + + } else if(remote_rsc->next_role == RSC_ROLE_STOPPED) { +- /* If its not coming back up, better do what we need first */ ++ /* State must be remote_state_unknown or remote_state_stopped. ++ * Since the connection is not coming back up in this ++ * transition, stop this resource first. ++ */ + order_action_then_stop(action, remote_rsc, + pe_order_implies_first, data_set); + + } else { +- /* Wait for the connection resource to be up and assume everything is as we left it */ ++ /* The connection is going to be started somewhere else, so ++ * stop this resource after that completes. ++ */ + order_start_then_action(remote_rsc, action, pe_order_none, data_set); +- + } + break; + +-- +1.8.3.1 + + +From 39441fa1dfe625cf00af463269052d4c2dafaa16 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 8 Dec 2017 17:16:55 -0600 +Subject: [PATCH 15/16] Low: libpe_status: limit resource type check to + primitives + +--- + lib/pengine/complex.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c +index d58d6be..86f290c 100644 +--- a/lib/pengine/complex.c ++++ b/lib/pengine/complex.c +@@ -784,7 +784,9 @@ common_unpack(xmlNode * xml_obj, resource_t ** rsc, + if(is_set((*rsc)->flags, pe_rsc_fence_device)) { + value = "quorum"; + +- } else if (safe_str_eq(crm_element_value((*rsc)->xml, XML_AGENT_ATTR_CLASS), "ocf") ++ } else if (((*rsc)->variant == pe_native) ++ && safe_str_eq(crm_element_value((*rsc)->xml, XML_AGENT_ATTR_CLASS), ++ PCMK_RESOURCE_CLASS_OCF) + && safe_str_eq(crm_element_value((*rsc)->xml, XML_AGENT_ATTR_PROVIDER), "pacemaker") + && safe_str_eq(crm_element_value((*rsc)->xml, XML_ATTR_TYPE), "remote") + ) { +-- +1.8.3.1 + + +From 68438917c3b1ed305af6da2acd23454cd777e1d1 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 8 Dec 2017 18:00:12 -0600 +Subject: [PATCH 16/16] Fix: lrmd: always use most recent remote proxy + +Any working proxy is sufficient, but the newest connection is the most likely +to be working. We want to avoid using an old proxy that has failed but whose +TCP connection has not yet timed out. +--- + lrmd/ipc_proxy.c | 41 +++++++++++++---------------------------- + 1 file changed, 13 insertions(+), 28 deletions(-) + +diff --git a/lrmd/ipc_proxy.c b/lrmd/ipc_proxy.c +index 5d6ab34..4d1ee01 100644 +--- a/lrmd/ipc_proxy.c ++++ b/lrmd/ipc_proxy.c +@@ -42,7 +42,7 @@ static qb_ipcs_service_t *crmd_ipcs = NULL; + static qb_ipcs_service_t *stonith_ipcs = NULL; + + /* ipc providers == crmd clients connecting from cluster nodes */ +-static GHashTable *ipc_providers = NULL; ++static GList *ipc_providers = NULL; + /* ipc clients == things like cibadmin, crm_resource, connecting locally */ + static GHashTable *ipc_clients = NULL; + +@@ -52,24 +52,14 @@ static GHashTable *ipc_clients = NULL; + * + * \return Pointer to a provider if one exists, NULL otherwise + * +- * \note Grab the first provider available; any provider will work, and usually +- * there will be only one. These are client connections originating from a +- * cluster node's crmd. ++ * \note Grab the first provider, which is the most recent connection. That way, ++ * if we haven't yet timed out an old, failed connection, we don't try to ++ * use it. + */ + crm_client_t * + ipc_proxy_get_provider() + { +- if (ipc_providers) { +- GHashTableIter iter; +- gpointer key = NULL; +- gpointer value = NULL; +- +- g_hash_table_iter_init(&iter, ipc_providers); +- if (g_hash_table_iter_next(&iter, &key, &value)) { +- return (crm_client_t*)value; +- } +- } +- return NULL; ++ return ipc_providers? (crm_client_t*) (ipc_providers->data) : NULL; + } + + static int32_t +@@ -378,10 +368,8 @@ static struct qb_ipcs_service_handlers cib_proxy_callbacks_rw = { + void + ipc_proxy_add_provider(crm_client_t *ipc_proxy) + { +- if (ipc_providers == NULL) { +- return; +- } +- g_hash_table_insert(ipc_providers, ipc_proxy->id, ipc_proxy); ++ // Prepending ensures the most recent connection is always first ++ ipc_providers = g_list_prepend(ipc_providers, ipc_proxy); + } + + void +@@ -393,11 +381,7 @@ ipc_proxy_remove_provider(crm_client_t *ipc_proxy) + GList *remove_these = NULL; + GListPtr gIter = NULL; + +- if (ipc_providers == NULL) { +- return; +- } +- +- g_hash_table_remove(ipc_providers, ipc_proxy->id); ++ ipc_providers = g_list_remove(ipc_providers, ipc_proxy); + + g_hash_table_iter_init(&iter, ipc_clients); + while (g_hash_table_iter_next(&iter, (gpointer *) & key, (gpointer *) & ipc_client)) { +@@ -413,6 +397,8 @@ ipc_proxy_remove_provider(crm_client_t *ipc_proxy) + + for (gIter = remove_these; gIter != NULL; gIter = gIter->next) { + ipc_client = gIter->data; ++ ++ // Disconnection callback will free the client here + qb_ipcs_disconnect(ipc_client->ipcs); + } + +@@ -424,7 +410,6 @@ void + ipc_proxy_init(void) + { + ipc_clients = g_hash_table_new_full(crm_str_hash, g_str_equal, NULL, NULL); +- ipc_providers = g_hash_table_new_full(crm_str_hash, g_str_equal, NULL, NULL); + + cib_ipc_servers_init(&cib_ro, + &cib_rw, +@@ -446,10 +431,12 @@ void + ipc_proxy_cleanup(void) + { + if (ipc_providers) { +- g_hash_table_destroy(ipc_providers); ++ g_list_free(ipc_providers); ++ ipc_providers = NULL; + } + if (ipc_clients) { + g_hash_table_destroy(ipc_clients); ++ ipc_clients = NULL; + } + cib_ipc_servers_destroy(cib_ro, cib_rw, cib_shm); + qb_ipcs_destroy(attrd_ipcs); +@@ -458,6 +445,4 @@ ipc_proxy_cleanup(void) + cib_ro = NULL; + cib_rw = NULL; + cib_shm = NULL; +- ipc_providers = NULL; +- ipc_clients = NULL; + } +-- +1.8.3.1 + diff --git a/SOURCES/003-cleanup.patch b/SOURCES/003-cleanup.patch new file mode 100644 index 0000000..6ce9476 --- /dev/null +++ b/SOURCES/003-cleanup.patch @@ -0,0 +1,157 @@ +From c2d5c19a863f407a034a63f2877eb5faf7036d59 Mon Sep 17 00:00:00 2001 +From: "Gao,Yan" +Date: Fri, 8 Dec 2017 14:47:40 +0100 +Subject: [PATCH 1/2] Refactor: tools: crm_resource - Functionize cleaning up + resource failures + +--- + tools/crm_resource.c | 26 ++------------------------ + tools/crm_resource.h | 3 +++ + tools/crm_resource_runtime.c | 36 ++++++++++++++++++++++++++++++++++++ + 3 files changed, 41 insertions(+), 24 deletions(-) + +diff --git a/tools/crm_resource.c b/tools/crm_resource.c +index f93f688..4ddcef4 100644 +--- a/tools/crm_resource.c ++++ b/tools/crm_resource.c +@@ -1094,31 +1094,9 @@ main(int argc, char **argv) + + } else if (rsc_cmd == 'C' && just_errors) { + crmd_replies_needed = 0; +- for (xmlNode *xml_op = __xml_first_child(data_set.failed); xml_op != NULL; +- xml_op = __xml_next(xml_op)) { +- +- const char *node = crm_element_value(xml_op, XML_ATTR_UNAME); +- const char *task = crm_element_value(xml_op, XML_LRM_ATTR_TASK); +- const char *task_interval = crm_element_value(xml_op, XML_LRM_ATTR_INTERVAL); +- const char *resource_name = crm_element_value(xml_op, XML_LRM_ATTR_RSCID); +- +- if(resource_name == NULL) { +- continue; +- } else if(host_uname && safe_str_neq(host_uname, node)) { +- continue; +- } else if(rsc_id && safe_str_neq(rsc_id, resource_name)) { +- continue; +- } else if(operation && safe_str_neq(operation, task)) { +- continue; +- } else if(interval && safe_str_neq(interval, task_interval)) { +- continue; +- } + +- crm_debug("Erasing %s failure for %s (%s detected) on %s", +- task, rsc->id, resource_name, node); +- rc = cli_resource_delete(crmd_channel, node, rsc, task, +- task_interval, &data_set); +- } ++ rc = cli_resource_delete_failures(crmd_channel, host_uname, rsc, operation, ++ interval, &data_set); + + if(rsc && (rc == pcmk_ok) && (BE_QUIET == FALSE)) { + /* Now check XML_RSC_ATTR_TARGET_ROLE and XML_RSC_ATTR_MANAGED */ +diff --git a/tools/crm_resource.h b/tools/crm_resource.h +index 0b8dd2a..e28c9ef 100644 +--- a/tools/crm_resource.h ++++ b/tools/crm_resource.h +@@ -76,6 +76,9 @@ int cli_resource_search(resource_t *rsc, const char *requested_name, + int cli_resource_delete(crm_ipc_t *crmd_channel, const char *host_uname, + resource_t *rsc, const char *operation, + const char *interval, pe_working_set_t *data_set); ++int cli_resource_delete_failures(crm_ipc_t *crmd_channel, const char *host_uname, ++ resource_t *rsc, const char *operation, ++ const char *interval, pe_working_set_t *data_set); + int cli_resource_restart(resource_t * rsc, const char *host, int timeout_ms, cib_t * cib); + int cli_resource_move(resource_t *rsc, const char *rsc_id, + const char *host_name, cib_t *cib, +diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c +index ffe4e5d..d250a07 100644 +--- a/tools/crm_resource_runtime.c ++++ b/tools/crm_resource_runtime.c +@@ -655,6 +655,42 @@ cli_resource_delete(crm_ipc_t *crmd_channel, const char *host_uname, + return rc; + } + ++int ++cli_resource_delete_failures(crm_ipc_t *crmd_channel, const char *host_uname, ++ resource_t *rsc, const char *operation, ++ const char *interval, pe_working_set_t *data_set) ++{ ++ int rc = pcmk_ok; ++ ++ for (xmlNode *xml_op = __xml_first_child(data_set->failed); xml_op != NULL; ++ xml_op = __xml_next(xml_op)) { ++ ++ const char *node = crm_element_value(xml_op, XML_ATTR_UNAME); ++ const char *task = crm_element_value(xml_op, XML_LRM_ATTR_TASK); ++ const char *task_interval = crm_element_value(xml_op, XML_LRM_ATTR_INTERVAL); ++ const char *resource_name = crm_element_value(xml_op, XML_LRM_ATTR_RSCID); ++ ++ if(resource_name == NULL) { ++ continue; ++ } else if(host_uname && safe_str_neq(host_uname, node)) { ++ continue; ++ } else if(rsc->id && safe_str_neq(rsc->id, resource_name)) { ++ continue; ++ } else if(operation && safe_str_neq(operation, task)) { ++ continue; ++ } else if(interval && safe_str_neq(interval, task_interval)) { ++ continue; ++ } ++ ++ crm_debug("Erasing %s failure for %s (%s detected) on %s", ++ task, rsc->id, resource_name, node); ++ rc = cli_resource_delete(crmd_channel, node, rsc, task, ++ task_interval, data_set); ++ } ++ ++ return rc; ++} ++ + void + cli_resource_check(cib_t * cib_conn, resource_t *rsc) + { +-- +1.8.3.1 + + +From 170ec0afcddb01fcfb8c2e8c86bc0e53594a42f9 Mon Sep 17 00:00:00 2001 +From: "Gao,Yan" +Date: Fri, 8 Dec 2017 16:22:54 +0100 +Subject: [PATCH 2/2] Fix: tools: crm_resource --cleanup for non-primitive + resources + +--- + tools/crm_resource_runtime.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c +index d250a07..1048636 100644 +--- a/tools/crm_resource_runtime.c ++++ b/tools/crm_resource_runtime.c +@@ -662,6 +662,24 @@ cli_resource_delete_failures(crm_ipc_t *crmd_channel, const char *host_uname, + { + int rc = pcmk_ok; + ++ if (rsc == NULL) { ++ return -ENXIO; ++ ++ } else if (rsc->children) { ++ GListPtr lpc = NULL; ++ ++ for (lpc = rsc->children; lpc != NULL; lpc = lpc->next) { ++ resource_t *child = (resource_t *) lpc->data; ++ ++ rc = cli_resource_delete_failures(crmd_channel, host_uname, child, operation, ++ interval, data_set); ++ if(rc != pcmk_ok) { ++ return rc; ++ } ++ } ++ return pcmk_ok; ++ } ++ + for (xmlNode *xml_op = __xml_first_child(data_set->failed); xml_op != NULL; + xml_op = __xml_next(xml_op)) { + +-- +1.8.3.1 + diff --git a/SOURCES/003-guest-pseudo-fence.patch b/SOURCES/003-guest-pseudo-fence.patch deleted file mode 100644 index d4b4ae0..0000000 --- a/SOURCES/003-guest-pseudo-fence.patch +++ /dev/null @@ -1,4449 +0,0 @@ -From 73da74305b69b086f8bc7cae697063e2534a79f4 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 22 Nov 2016 16:37:07 -0600 -Subject: [PATCH 1/8] Low: pengine: remove unnecessary assert - -it was made obsolete with 1420ff88 ---- - lib/pengine/unpack.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index a9fbcc0..2ef9343 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -1402,6 +1402,10 @@ determine_remote_online_status(pe_working_set_t * data_set, node_t * this_node) - resource_t *rsc = this_node->details->remote_rsc; - resource_t *container = NULL; - -+ /* If there is a node state entry for a (former) Pacemaker Remote node -+ * but no resource creating that node, the node's connection resource will -+ * be NULL. Consider it an offline remote node in that case. -+ */ - if (rsc == NULL) { - this_node->details->online = FALSE; - goto remote_online_done; -@@ -1409,8 +1413,6 @@ determine_remote_online_status(pe_working_set_t * data_set, node_t * this_node) - - container = rsc->container; - -- CRM_ASSERT(rsc != NULL); -- - /* If the resource is currently started, mark it online. */ - if (rsc->role == RSC_ROLE_STARTED) { - crm_trace("Remote node %s is set to ONLINE. role == started", this_node->details->id); --- -1.8.3.1 - - -From 5156074d560d85ee84de31b9d1e0bd893999fa4e Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 23 Nov 2016 13:40:47 -0600 -Subject: [PATCH 2/8] Log: pengine: improve trace messages for Pacemaker Remote - nodes - ---- - lib/pengine/unpack.c | 22 ++++++++++++++++------ - 1 file changed, 16 insertions(+), 6 deletions(-) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 2ef9343..a49e108 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -70,10 +70,15 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - /* A guest node is fenced by marking its container as failed */ - if (is_container_remote_node(node)) { - resource_t *rsc = node->details->remote_rsc->container; -+ - if (is_set(rsc->flags, pe_rsc_failed) == FALSE) { - crm_warn("Guest node %s will be fenced (by recovering %s) %s", - node->details->uname, rsc->id, reason); -- /* node->details->unclean = TRUE; */ -+ -+ /* We don't mark the node as unclean, because that would prevent the -+ * node from running resources. We want to allow it to run resources -+ * in this transition if the recovery succeeds. -+ */ - node->details->remote_requires_reset = TRUE; - set_bit(rsc->flags, pe_rsc_failed); - } -@@ -1415,30 +1420,35 @@ determine_remote_online_status(pe_working_set_t * data_set, node_t * this_node) - - /* If the resource is currently started, mark it online. */ - if (rsc->role == RSC_ROLE_STARTED) { -- crm_trace("Remote node %s is set to ONLINE. role == started", this_node->details->id); -+ crm_trace("%s node %s presumed ONLINE because connection resource is started", -+ (container? "Guest" : "Remote"), this_node->details->id); - this_node->details->online = TRUE; - } - - /* consider this node shutting down if transitioning start->stop */ - if (rsc->role == RSC_ROLE_STARTED && rsc->next_role == RSC_ROLE_STOPPED) { -- crm_trace("Remote node %s shutdown. transition from start to stop role", this_node->details->id); -+ crm_trace("%s node %s shutting down because connection resource is stopping", -+ (container? "Guest" : "Remote"), this_node->details->id); - this_node->details->shutdown = TRUE; - } - - /* Now check all the failure conditions. */ - if(container && is_set(container->flags, pe_rsc_failed)) { -- crm_trace("Remote node %s is set to UNCLEAN. rsc failed.", this_node->details->id); -+ crm_trace("Guest node %s UNCLEAN because guest resource failed", -+ this_node->details->id); - this_node->details->online = FALSE; - this_node->details->remote_requires_reset = TRUE; - - } else if(is_set(rsc->flags, pe_rsc_failed)) { -- crm_trace("Remote node %s is set to OFFLINE. rsc failed.", this_node->details->id); -+ crm_trace("%s node %s OFFLINE because connection resource failed", -+ (container? "Guest" : "Remote"), this_node->details->id); - this_node->details->online = FALSE; - - } else if (rsc->role == RSC_ROLE_STOPPED - || (container && container->role == RSC_ROLE_STOPPED)) { - -- crm_trace("Remote node %s is set to OFFLINE. node is stopped.", this_node->details->id); -+ crm_trace("%s node %s OFFLINE because its resource is stopped", -+ (container? "Guest" : "Remote"), this_node->details->id); - this_node->details->online = FALSE; - this_node->details->remote_requires_reset = FALSE; - } --- -1.8.3.1 - - -From 225d20cacc5643e113d42159fc713071172d88da Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 22 Nov 2016 16:40:52 -0600 -Subject: [PATCH 3/8] Fix: pengine: guest node fencing doesn't require stonith - enabled - -Comments elsewhere say as much, but stage6() didn't get the memo ---- - lib/pengine/utils.c | 13 +++++++++++++ - pengine/allocate.c | 5 +---- - 2 files changed, 14 insertions(+), 4 deletions(-) - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index cc97db1..6be9bb1 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -36,6 +36,19 @@ void unpack_operation(action_t * action, xmlNode * xml_obj, resource_t * contain - static xmlNode *find_rsc_op_entry_helper(resource_t * rsc, const char *key, - gboolean include_disabled); - -+/*! -+ * \internal -+ * \brief Check whether we can fence a particular node -+ * -+ * \param[in] data_set Working set for cluster -+ * \param[in] node Name of node to check -+ * -+ * \return TRUE if node can be fenced, FALSE otherwise -+ * -+ * \note This function should only be called for cluster nodes and baremetal -+ * remote nodes; guest nodes are fenced by stopping their container -+ * resource, so fence execution requirements do not apply to them. -+ */ - bool pe_can_fence(pe_working_set_t * data_set, node_t *node) - { - if(is_not_set(data_set->flags, pe_flag_stonith_enabled)) { -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 82abd36..bdf03e5 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -1374,10 +1374,7 @@ stage6(pe_working_set_t * data_set) - * guest's host. - */ - if (is_container_remote_node(node)) { -- /* Guest */ -- if (need_stonith -- && node->details->remote_requires_reset -- && pe_can_fence(data_set, node)) { -+ if (node->details->remote_requires_reset && need_stonith) { - resource_t *container = node->details->remote_rsc->container; - char *key = stop_key(container); - GListPtr stop_list = find_actions(container->actions, key, NULL); --- -1.8.3.1 - - -From b11887869723f23a330af8b1b0e9ffd935b68ae0 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 23 Mar 2016 17:57:50 -0500 -Subject: [PATCH 4/8] Test: pengine: add regression test for when a guest - node's host goes away - -As of this commit, the PE handles this situation badly. Adding the test before -the fix allows the changes in behavior to be highlighted. ---- - pengine/regression.sh | 1 + - pengine/test10/guest-node-host-dies.dot | 107 ++++++ - pengine/test10/guest-node-host-dies.exp | 539 ++++++++++++++++++++++++++++ - pengine/test10/guest-node-host-dies.scores | 80 +++++ - pengine/test10/guest-node-host-dies.summary | 73 ++++ - pengine/test10/guest-node-host-dies.xml | 294 +++++++++++++++ - 6 files changed, 1094 insertions(+) - create mode 100644 pengine/test10/guest-node-host-dies.dot - create mode 100644 pengine/test10/guest-node-host-dies.exp - create mode 100644 pengine/test10/guest-node-host-dies.scores - create mode 100644 pengine/test10/guest-node-host-dies.summary - create mode 100644 pengine/test10/guest-node-host-dies.xml - -diff --git a/pengine/regression.sh b/pengine/regression.sh -index be1734b..1bc8e1e 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -817,6 +817,7 @@ do_test whitebox-unexpectedly-running "Recover container nodes the cluster did n - do_test whitebox-migrate1 "Migrate both container and connection resource" - do_test whitebox-imply-stop-on-fence "imply stop action on container node rsc when host node is fenced" - do_test whitebox-nested-group "Verify guest remote-node works nested in a group" -+do_test guest-node-host-dies "Verify guest node is recovered if host goes away" - - echo "" - do_test remote-startup-probes "Baremetal remote-node startup probes" -diff --git a/pengine/test10/guest-node-host-dies.dot b/pengine/test10/guest-node-host-dies.dot -new file mode 100644 -index 0000000..01858b3 ---- /dev/null -+++ b/pengine/test10/guest-node-host-dies.dot -@@ -0,0 +1,107 @@ -+digraph "g" { -+"Fencing_monitor_120000 rhel7-4" [ style=bold color="green" fontcolor="black"] -+"Fencing_start_0 rhel7-4" -> "Fencing_monitor_120000 rhel7-4" [ style = bold] -+"Fencing_start_0 rhel7-4" [ style=bold color="green" fontcolor="black"] -+"Fencing_stop_0 rhel7-4" -> "Fencing_start_0 rhel7-4" [ style = bold] -+"Fencing_stop_0 rhel7-4" -> "all_stopped" [ style = bold] -+"Fencing_stop_0 rhel7-4" [ style=bold color="green" fontcolor="black"] -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"container1_start_0 rhel7-2" -> "lxc1_start_0 rhel7-2" [ style = bold] -+"container1_start_0 rhel7-2" [ style=bold color="green" fontcolor="black"] -+"container1_stop_0 rhel7-1" -> "all_stopped" [ style = bold] -+"container1_stop_0 rhel7-1" -> "container1_start_0 rhel7-2" [ style = bold] -+"container1_stop_0 rhel7-1" [ style=bold color="green" fontcolor="orange"] -+"container2_start_0 rhel7-3" -> "lxc2_start_0 rhel7-3" [ style = bold] -+"container2_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] -+"container2_stop_0 rhel7-1" -> "all_stopped" [ style = bold] -+"container2_stop_0 rhel7-1" -> "container2_start_0 rhel7-3" [ style = bold] -+"container2_stop_0 rhel7-1" [ style=bold color="green" fontcolor="orange"] -+"lxc-ms-master_demote_0" -> "lxc-ms-master_demoted_0" [ style = bold] -+"lxc-ms-master_demote_0" -> "lxc-ms_demote_0 lxc1" [ style = bold] -+"lxc-ms-master_demote_0" [ style=bold color="green" fontcolor="orange"] -+"lxc-ms-master_demoted_0" -> "lxc-ms-master_promote_0" [ style = bold] -+"lxc-ms-master_demoted_0" -> "lxc-ms-master_start_0" [ style = bold] -+"lxc-ms-master_demoted_0" -> "lxc-ms-master_stop_0" [ style = bold] -+"lxc-ms-master_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"lxc-ms-master_promote_0" -> "lxc-ms_promote_0 lxc1" [ style = bold] -+"lxc-ms-master_promote_0" [ style=bold color="green" fontcolor="orange"] -+"lxc-ms-master_promoted_0" [ style=bold color="green" fontcolor="orange"] -+"lxc-ms-master_running_0" -> "lxc-ms-master_promote_0" [ style = bold] -+"lxc-ms-master_running_0" [ style=bold color="green" fontcolor="orange"] -+"lxc-ms-master_start_0" -> "lxc-ms-master_running_0" [ style = bold] -+"lxc-ms-master_start_0" -> "lxc-ms_start_0 lxc1" [ style = bold] -+"lxc-ms-master_start_0" -> "lxc-ms_start_0 lxc2" [ style = bold] -+"lxc-ms-master_start_0" [ style=bold color="green" fontcolor="orange"] -+"lxc-ms-master_stop_0" -> "lxc-ms-master_stopped_0" [ style = bold] -+"lxc-ms-master_stop_0" -> "lxc-ms_stop_0 lxc1" [ style = bold] -+"lxc-ms-master_stop_0" -> "lxc-ms_stop_0 lxc2" [ style = bold] -+"lxc-ms-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"lxc-ms-master_stopped_0" -> "lxc-ms-master_promote_0" [ style = bold] -+"lxc-ms-master_stopped_0" -> "lxc-ms-master_start_0" [ style = bold] -+"lxc-ms-master_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"lxc-ms_demote_0 lxc1" -> "lxc-ms-master_demoted_0" [ style = bold] -+"lxc-ms_demote_0 lxc1" -> "lxc-ms_promote_0 lxc1" [ style = bold] -+"lxc-ms_demote_0 lxc1" -> "lxc-ms_stop_0 lxc1" [ style = bold] -+"lxc-ms_demote_0 lxc1" [ style=bold color="green" fontcolor="black"] -+"lxc-ms_monitor_10000 lxc2" [ style=bold color="green" fontcolor="black"] -+"lxc-ms_promote_0 lxc1" -> "lxc-ms-master_promoted_0" [ style = bold] -+"lxc-ms_promote_0 lxc1" [ style=bold color="green" fontcolor="black"] -+"lxc-ms_start_0 lxc1" -> "lxc-ms-master_running_0" [ style = bold] -+"lxc-ms_start_0 lxc1" -> "lxc-ms_promote_0 lxc1" [ style = bold] -+"lxc-ms_start_0 lxc1" [ style=bold color="green" fontcolor="black"] -+"lxc-ms_start_0 lxc2" -> "lxc-ms-master_running_0" [ style = bold] -+"lxc-ms_start_0 lxc2" -> "lxc-ms_monitor_10000 lxc2" [ style = bold] -+"lxc-ms_start_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"lxc-ms_stop_0 lxc1" -> "all_stopped" [ style = bold] -+"lxc-ms_stop_0 lxc1" -> "lxc-ms-master_stopped_0" [ style = bold] -+"lxc-ms_stop_0 lxc1" -> "lxc-ms_start_0 lxc1" [ style = bold] -+"lxc-ms_stop_0 lxc1" [ style=bold color="green" fontcolor="orange"] -+"lxc-ms_stop_0 lxc2" -> "all_stopped" [ style = bold] -+"lxc-ms_stop_0 lxc2" -> "lxc-ms-master_stopped_0" [ style = bold] -+"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_30000 rhel7-2" [ style=bold color="green" fontcolor="black"] -+"lxc1_start_0 rhel7-2" -> "lxc-ms_promote_0 lxc1" [ style = bold] -+"lxc1_start_0 rhel7-2" -> "lxc-ms_start_0 lxc1" [ style = bold] -+"lxc1_start_0 rhel7-2" -> "lxc1_monitor_30000 rhel7-2" [ style = bold] -+"lxc1_start_0 rhel7-2" [ style=bold color="green" fontcolor="black"] -+"lxc1_stop_0 rhel7-1" -> "all_stopped" [ style = bold] -+"lxc1_stop_0 rhel7-1" -> "container1_stop_0 rhel7-1" [ style = bold] -+"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_30000 rhel7-3" [ style=bold color="green" fontcolor="black"] -+"lxc2_start_0 rhel7-3" -> "lxc-ms_monitor_10000 lxc2" [ style = bold] -+"lxc2_start_0 rhel7-3" -> "lxc-ms_start_0 lxc2" [ style = bold] -+"lxc2_start_0 rhel7-3" -> "lxc2_monitor_30000 rhel7-3" [ style = bold] -+"lxc2_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] -+"lxc2_stop_0 rhel7-1" -> "all_stopped" [ style = bold] -+"lxc2_stop_0 rhel7-1" -> "container2_stop_0 rhel7-1" [ style = bold] -+"lxc2_stop_0 rhel7-1" -> "lxc2_start_0 rhel7-3" [ style = bold] -+"lxc2_stop_0 rhel7-1" [ style=bold color="green" fontcolor="orange"] -+"rsc_rhel7-1_monitor_5000 rhel7-5" [ style=bold color="green" fontcolor="black"] -+"rsc_rhel7-1_start_0 rhel7-5" -> "rsc_rhel7-1_monitor_5000 rhel7-5" [ style = bold] -+"rsc_rhel7-1_start_0 rhel7-5" [ style=bold color="green" fontcolor="black"] -+"rsc_rhel7-1_stop_0 rhel7-1" -> "all_stopped" [ style = bold] -+"rsc_rhel7-1_stop_0 rhel7-1" -> "rsc_rhel7-1_start_0 rhel7-5" [ style = bold] -+"rsc_rhel7-1_stop_0 rhel7-1" [ 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" -> "lxc-ms-master_stop_0" [ style = bold] -+"stonith 'reboot' rhel7-1" -> "lxc-ms_stop_0 lxc1" [ style = bold] -+"stonith 'reboot' rhel7-1" -> "lxc-ms_stop_0 lxc2" [ 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"] -+"stonith_complete" -> "all_stopped" [ style = bold] -+"stonith_complete" -> "container1_start_0 rhel7-2" [ style = bold] -+"stonith_complete" -> "container2_start_0 rhel7-3" [ style = bold] -+"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 -new file mode 100644 -index 0000000..b3c24be ---- /dev/null -+++ b/pengine/test10/guest-node-host-dies.exp -@@ -0,0 +1,539 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/guest-node-host-dies.scores b/pengine/test10/guest-node-host-dies.scores -new file mode 100644 -index 0000000..0d7ad3f ---- /dev/null -+++ b/pengine/test10/guest-node-host-dies.scores -@@ -0,0 +1,80 @@ -+Allocation scores: -+clone_color: lxc-ms-master allocation score on lxc1: INFINITY -+clone_color: lxc-ms-master allocation score on lxc2: INFINITY -+clone_color: lxc-ms-master allocation score on rhel7-1: 0 -+clone_color: lxc-ms-master allocation score on rhel7-2: 0 -+clone_color: lxc-ms-master allocation score on rhel7-3: 0 -+clone_color: lxc-ms-master allocation score on rhel7-4: 0 -+clone_color: lxc-ms-master allocation score on rhel7-5: 0 -+clone_color: lxc-ms:0 allocation score on lxc1: INFINITY -+clone_color: lxc-ms:0 allocation score on lxc2: INFINITY -+clone_color: lxc-ms:0 allocation score on rhel7-1: 0 -+clone_color: lxc-ms:0 allocation score on rhel7-2: 0 -+clone_color: lxc-ms:0 allocation score on rhel7-3: 0 -+clone_color: lxc-ms:0 allocation score on rhel7-4: 0 -+clone_color: lxc-ms:0 allocation score on rhel7-5: 0 -+clone_color: lxc-ms:1 allocation score on lxc1: INFINITY -+clone_color: lxc-ms:1 allocation score on lxc2: INFINITY -+clone_color: lxc-ms:1 allocation score on rhel7-1: 0 -+clone_color: lxc-ms:1 allocation score on rhel7-2: 0 -+clone_color: lxc-ms:1 allocation score on rhel7-3: 0 -+clone_color: lxc-ms:1 allocation score on rhel7-4: 0 -+clone_color: lxc-ms:1 allocation score on rhel7-5: 0 -+lxc-ms:0 promotion score on lxc1: INFINITY -+lxc-ms:1 promotion score on lxc2: INFINITY -+native_color: Fencing allocation score on lxc1: -INFINITY -+native_color: Fencing allocation score on lxc2: -INFINITY -+native_color: Fencing allocation score on rhel7-1: 0 -+native_color: Fencing allocation score on rhel7-2: 0 -+native_color: Fencing allocation score on rhel7-3: 0 -+native_color: Fencing allocation score on rhel7-4: 0 -+native_color: Fencing allocation score on rhel7-5: 0 -+native_color: container1 allocation score on lxc1: -INFINITY -+native_color: container1 allocation score on lxc2: -INFINITY -+native_color: container1 allocation score on rhel7-1: -INFINITY -+native_color: container1 allocation score on rhel7-2: 0 -+native_color: container1 allocation score on rhel7-3: 0 -+native_color: container1 allocation score on rhel7-4: 0 -+native_color: container1 allocation score on rhel7-5: 0 -+native_color: container2 allocation score on lxc1: -INFINITY -+native_color: container2 allocation score on lxc2: -INFINITY -+native_color: container2 allocation score on rhel7-1: -INFINITY -+native_color: container2 allocation score on rhel7-2: 0 -+native_color: container2 allocation score on rhel7-3: 0 -+native_color: container2 allocation score on rhel7-4: 0 -+native_color: container2 allocation score on rhel7-5: 0 -+native_color: lxc-ms:0 allocation score on lxc1: INFINITY -+native_color: lxc-ms:0 allocation score on lxc2: INFINITY -+native_color: lxc-ms:0 allocation score on rhel7-1: -INFINITY -+native_color: lxc-ms:0 allocation score on rhel7-2: 0 -+native_color: lxc-ms:0 allocation score on rhel7-3: 0 -+native_color: lxc-ms:0 allocation score on rhel7-4: 0 -+native_color: lxc-ms:0 allocation score on rhel7-5: 0 -+native_color: lxc-ms:1 allocation score on lxc1: -INFINITY -+native_color: lxc-ms:1 allocation score on lxc2: INFINITY -+native_color: lxc-ms:1 allocation score on rhel7-1: -INFINITY -+native_color: lxc-ms:1 allocation score on rhel7-2: 0 -+native_color: lxc-ms:1 allocation score on rhel7-3: 0 -+native_color: lxc-ms:1 allocation score on rhel7-4: 0 -+native_color: lxc-ms:1 allocation score on rhel7-5: 0 -+native_color: lxc1 allocation score on lxc1: -INFINITY -+native_color: lxc1 allocation score on lxc2: -INFINITY -+native_color: lxc1 allocation score on rhel7-1: -INFINITY -+native_color: lxc1 allocation score on rhel7-2: 0 -+native_color: lxc1 allocation score on rhel7-3: -INFINITY -+native_color: lxc1 allocation score on rhel7-4: -INFINITY -+native_color: lxc1 allocation score on rhel7-5: -INFINITY -+native_color: lxc2 allocation score on lxc1: -INFINITY -+native_color: lxc2 allocation score on lxc2: -INFINITY -+native_color: lxc2 allocation score on rhel7-1: -INFINITY -+native_color: lxc2 allocation score on rhel7-2: -INFINITY -+native_color: lxc2 allocation score on rhel7-3: 0 -+native_color: lxc2 allocation score on rhel7-4: -INFINITY -+native_color: lxc2 allocation score on rhel7-5: -INFINITY -+native_color: rsc_rhel7-1 allocation score on lxc1: -INFINITY -+native_color: rsc_rhel7-1 allocation score on lxc2: -INFINITY -+native_color: rsc_rhel7-1 allocation score on rhel7-1: 100 -+native_color: rsc_rhel7-1 allocation score on rhel7-2: 0 -+native_color: rsc_rhel7-1 allocation score on rhel7-3: 0 -+native_color: rsc_rhel7-1 allocation score on rhel7-4: 0 -+native_color: rsc_rhel7-1 allocation score on rhel7-5: 0 -diff --git a/pengine/test10/guest-node-host-dies.summary b/pengine/test10/guest-node-host-dies.summary -new file mode 100644 -index 0000000..8a1bfd4 ---- /dev/null -+++ b/pengine/test10/guest-node-host-dies.summary -@@ -0,0 +1,73 @@ -+ -+Current cluster status: -+Node rhel7-1 (1): UNCLEAN (offline) -+Online: [ rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] -+Containers: [ lxc1:container1 lxc2:container2 ] -+ -+ Fencing (stonith:fence_xvm): Started rhel7-4 -+ rsc_rhel7-1 (ocf::heartbeat:IPaddr2): Started rhel7-1 ( UNCLEAN ) -+ container1 (ocf::heartbeat:VirtualDomain): Started rhel7-1 ( UNCLEAN ) -+ container2 (ocf::heartbeat:VirtualDomain): Started rhel7-1 ( UNCLEAN ) -+ Master/Slave Set: lxc-ms-master [lxc-ms] -+ Masters: [ lxc1 ] -+ Slaves: [ lxc2 ] -+ -+Transition Summary: -+ * Restart Fencing (Started rhel7-4) -+ * Move rsc_rhel7-1 (Started rhel7-1 -> rhel7-5) -+ * Move container1 (Started rhel7-1 -> rhel7-2) -+ * Move container2 (Started rhel7-1 -> rhel7-3) -+ * Restart lxc-ms:0 (Master lxc1) -+ * Restart lxc-ms:1 (Slave lxc2) -+ * Move lxc1 (Started rhel7-1 -> rhel7-2) -+ * Move lxc2 (Started rhel7-1 -> rhel7-3) -+ -+Executing cluster transition: -+ * Resource action: Fencing stop on rhel7-4 -+ * Resource action: Fencing start on rhel7-4 -+ * Resource action: Fencing monitor=120000 on rhel7-4 -+ * Pseudo action: lxc-ms-master_demote_0 -+ * Fencing rhel7-1 (reboot) -+ * Pseudo action: stonith_complete -+ * Pseudo action: rsc_rhel7-1_stop_0 -+ * Resource action: lxc-ms demote on lxc1 -+ * Pseudo action: lxc-ms-master_demoted_0 -+ * Pseudo action: lxc-ms-master_stop_0 -+ * Pseudo action: lxc1_stop_0 -+ * Pseudo action: lxc2_stop_0 -+ * Resource action: rsc_rhel7-1 start on rhel7-5 -+ * Pseudo action: container1_stop_0 -+ * Pseudo action: container2_stop_0 -+ * 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 -+ * Pseudo action: all_stopped -+ * Resource action: rsc_rhel7-1 monitor=5000 on rhel7-5 -+ * Resource action: container1 start on rhel7-2 -+ * Resource action: container2 start on rhel7-3 -+ * 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 -+ * Resource action: lxc-ms monitor=10000 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 -+ * Pseudo action: lxc-ms-master_promote_0 -+ * Resource action: lxc-ms promote on lxc1 -+ * Pseudo action: lxc-ms-master_promoted_0 -+ -+Revised cluster status: -+Online: [ rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] -+OFFLINE: [ rhel7-1 ] -+Containers: [ lxc1:container1 lxc2:container2 ] -+ -+ Fencing (stonith:fence_xvm): Started rhel7-4 -+ rsc_rhel7-1 (ocf::heartbeat:IPaddr2): Started rhel7-5 -+ container1 (ocf::heartbeat:VirtualDomain): Started rhel7-2 -+ container2 (ocf::heartbeat:VirtualDomain): Started rhel7-3 -+ Master/Slave Set: lxc-ms-master [lxc-ms] -+ Masters: [ lxc1 ] -+ Slaves: [ lxc2 ] -+ -diff --git a/pengine/test10/guest-node-host-dies.xml b/pengine/test10/guest-node-host-dies.xml -new file mode 100644 -index 0000000..a840da1 ---- /dev/null -+++ b/pengine/test10/guest-node-host-dies.xml -@@ -0,0 +1,294 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.8.3.1 - - -From beab7718e14a54f1b50d7c5ff4b0086e09332da3 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 15 Apr 2016 13:10:17 -0500 -Subject: [PATCH 5/8] Fix: pengine: create a pseudo-fence for guest node - recovery - -If a guest node needs to be recovered, the PE would previously order actions -in relation to the stop action for the guest's container resource, if one -was scheduled. - -This had problems: for implied stops due to fencing the guest's host, there -would be no stop action, so no ordering could be done; ordering in relation to -the stop action made stonith_constraints() mistakenly assume that the host node -(the node for the stop action) was the fence target, and thus mistakenly mark -the wrong stops/demotes as implied; and, clone notifications for fence events -would not get called for guest node recoveries, whether explicit or implied. - -Now, a fence pseudo-event is created for guest node recovery, regardless of -whether there is an explicit stop action scheduled for the container. This -addresses all those issues, and will allow the crmd to be able to detect -implied stops. - -This also allows us to simplify the implied stop/demote detection, since we -will check the pseudo-op for implied actions -- we don't need to check the -real fence op for implied actions on guest nodes. ---- - crmd/te_utils.c | 8 ++++++ - pengine/allocate.c | 82 ++++++++++++++++++++++++++++++++++++++++++++---------- - pengine/graph.c | 14 ++++------ - pengine/native.c | 48 ++------------------------------ - 4 files changed, 83 insertions(+), 69 deletions(-) - -diff --git a/crmd/te_utils.c b/crmd/te_utils.c -index 4c708a1..e7bf7ff 100644 ---- a/crmd/te_utils.c -+++ b/crmd/te_utils.c -@@ -331,6 +331,14 @@ tengine_stonith_notify(stonith_t * st, stonith_event_t * st_event) - /* The DC always sends updates */ - send_stonith_update(NULL, st_event->target, uuid); - -+ /* @TODO Ideally, at this point, we'd check whether the fenced node -+ * hosted any guest nodes, and call remote_node_down() for them. -+ * Unfortunately, the crmd doesn't have a simple, reliable way to -+ * map hosts to guests. It might be possible to track this in the -+ * peer cache via crm_remote_peer_cache_refresh(). For now, we rely -+ * on the PE creating fence pseudo-events for the guests. -+ */ -+ - if (st_event->client_origin && safe_str_neq(st_event->client_origin, te_client_id)) { - - /* Abort the current transition graph if it wasn't us -diff --git a/pengine/allocate.c b/pengine/allocate.c -index bdf03e5..74b57fb 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -1341,6 +1341,70 @@ any_managed_resources(pe_working_set_t * data_set) - return FALSE; - } - -+/*! -+ * \internal -+ * \brief Create pseudo-op for guest node fence, and order relative to it -+ * -+ * \param[in] node Guest node to fence -+ * \param[in] done STONITH_DONE operation -+ * \param[in] data_set Working set of CIB state -+ */ -+static void -+fence_guest(pe_node_t *node, pe_action_t *done, pe_working_set_t *data_set) -+{ -+ resource_t *container = node->details->remote_rsc->container; -+ pe_action_t *stop = NULL; -+ pe_action_t *stonith_op = NULL; -+ -+ /* The fence action is just a label; we don't do anything differently for -+ * off vs. reboot. We specify it explicitly, rather than let it default to -+ * cluster's default action, because we are not _initiating_ fencing -- we -+ * are creating a pseudo-event to describe fencing that is already occurring -+ * by other means (container recovery). -+ */ -+ const char *fence_action = "off"; -+ -+ /* Check whether guest's container resource is has any explicit stop or -+ * start (the stop may be implied by fencing of the guest's host). -+ */ -+ if (container) { -+ stop = find_first_action(container->actions, NULL, CRMD_ACTION_STOP, NULL); -+ -+ if (find_first_action(container->actions, NULL, CRMD_ACTION_START, NULL)) { -+ fence_action = "reboot"; -+ } -+ } -+ -+ /* Create a fence pseudo-event, so we have an event to order actions -+ * against, and crmd can always detect it. -+ */ -+ stonith_op = pe_fence_op(node, fence_action, FALSE, data_set); -+ update_action_flags(stonith_op, pe_action_pseudo | pe_action_runnable, -+ __FUNCTION__); -+ -+ /* We want to imply stops/demotes after the guest is stopped, not wait until -+ * it is restarted, so we always order pseudo-fencing after stop, not start -+ * (even though start might be closer to what is done for a real reboot). -+ */ -+ if (stop) { -+ order_actions(stop, stonith_op, -+ pe_order_runnable_left|pe_order_implies_then); -+ crm_info("Implying guest node %s is down (action %d) " -+ "after container %s is stopped (action %d)", -+ node->details->uname, stonith_op->id, -+ container->id, stop->id); -+ } else { -+ crm_info("Implying guest node %s is down (action %d) ", -+ node->details->uname, stonith_op->id); -+ } -+ -+ /* @TODO: Order pseudo-fence after any (optional) fence of guest's host */ -+ -+ /* 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); -+} -+ - /* - * Create dependencies for stonith and shutdown operations - */ -@@ -1369,24 +1433,12 @@ stage6(pe_working_set_t * data_set) - for (gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) { - node_t *node = (node_t *) gIter->data; - -- /* Guest nodes are "fenced" by recovering their container resource. -- * The container stop may be explicit, or implied by the fencing of the -- * guest's host. -+ /* Guest nodes are "fenced" by recovering their container resource, -+ * so handle them separately. - */ - if (is_container_remote_node(node)) { - if (node->details->remote_requires_reset && need_stonith) { -- resource_t *container = node->details->remote_rsc->container; -- char *key = stop_key(container); -- GListPtr stop_list = find_actions(container->actions, key, NULL); -- -- crm_info("Implying node %s is down when container %s is stopped (%p)", -- node->details->uname, container->id, stop_list); -- if(stop_list) { -- stonith_constraints(node, stop_list->data, data_set); -- } -- -- g_list_free(stop_list); -- free(key); -+ fence_guest(node, done, data_set); - } - continue; - } -diff --git a/pengine/graph.c b/pengine/graph.c -index ee7c7c8..569cf6e 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -715,13 +715,7 @@ stonith_constraints(node_t * node, action_t * stonith_op, pe_working_set_t * dat - - CRM_CHECK(stonith_op != NULL, return FALSE); - for (r = data_set->resources; r != NULL; r = r->next) { -- resource_t *rsc = (resource_t *) r->data; -- -- if ((stonith_op->rsc == NULL) -- || ((stonith_op->rsc != rsc) && (stonith_op->rsc != rsc->container))) { -- -- rsc_stonith_ordering(rsc, stonith_op, data_set); -- } -+ rsc_stonith_ordering((resource_t *) r->data, stonith_op, data_set); - } - return TRUE; - } -@@ -888,7 +882,11 @@ action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set) - } - - if (safe_str_eq(action->task, CRM_OP_FENCE)) { -- action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT); -+ /* All fences need node info; guest node fences are pseudo-events */ -+ action_xml = create_xml_node(NULL, -+ is_set(action->flags, pe_action_pseudo)? -+ XML_GRAPH_TAG_PSEUDO_EVENT : -+ XML_GRAPH_TAG_CRM_EVENT); - - } else if (safe_str_eq(action->task, CRM_OP_SHUTDOWN)) { - action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT); -diff --git a/pengine/native.c b/pengine/native.c -index 56a1434..ff4467b 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -2902,48 +2902,6 @@ native_start_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set - } - } - --/* User data to pass to guest node iterator */ --struct action_list_s { -- GListPtr search_list; /* list of actions to search */ -- GListPtr result_list; /* list of matching actions for this node */ -- const char *key; /* action key to match */ --}; -- --/*! -- * \internal -- * \brief Prepend a node's actions matching a key to a list -- * -- * \param[in] node Guest node -- * \param[in/out] data User data -- */ --static void prepend_node_actions(const node_t *node, void *data) --{ -- GListPtr actions; -- struct action_list_s *info = (struct action_list_s *) data; -- -- actions = find_actions(info->search_list, info->key, node); -- info->result_list = g_list_concat(actions, info->result_list); --} -- --static GListPtr --find_fence_target_node_actions(GListPtr search_list, const char *key, node_t *fence_target, pe_working_set_t *data_set) --{ -- struct action_list_s action_list; -- -- /* Actions on the target that match the key are implied by the fencing */ -- action_list.search_list = search_list; -- action_list.result_list = find_actions(search_list, key, fence_target); -- action_list.key = key; -- -- /* -- * If the target is a host for any guest nodes, actions on those nodes -- * that match the key are also implied by the fencing. -- */ -- pe_foreach_guest_node(data_set, fence_target, prepend_node_actions, &action_list); -- -- return action_list.result_list; --} -- - static void - native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_t * data_set) - { -@@ -2963,8 +2921,7 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ - - /* Get a list of stop actions potentially implied by the fencing */ - key = stop_key(rsc); -- action_list = find_fence_target_node_actions(rsc->actions, key, target, -- data_set); -+ action_list = find_actions(rsc->actions, key, target); - free(key); - - for (gIter = action_list; gIter != NULL; gIter = gIter->next) { -@@ -3061,8 +3018,7 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ - - /* Get a list of demote actions potentially implied by the fencing */ - key = demote_key(rsc); -- action_list = find_fence_target_node_actions(rsc->actions, key, target, -- data_set); -+ action_list = find_actions(rsc->actions, key, target); - free(key); - - for (gIter = action_list; gIter != NULL; gIter = gIter->next) { --- -1.8.3.1 - - -From b7ce740edf3d71fcccead2288bf0ab11037f9672 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 23 Nov 2016 14:56:29 -0600 -Subject: [PATCH 6/8] Fix: pengine: consider guest node unclean if its host is - unclean - ---- - lib/pengine/unpack.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index a49e108..6737273 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -1406,6 +1406,7 @@ determine_remote_online_status(pe_working_set_t * data_set, node_t * this_node) - { - resource_t *rsc = this_node->details->remote_rsc; - resource_t *container = NULL; -+ pe_node_t *host = NULL; - - /* If there is a node state entry for a (former) Pacemaker Remote node - * but no resource creating that node, the node's connection resource will -@@ -1418,6 +1419,10 @@ determine_remote_online_status(pe_working_set_t * data_set, node_t * this_node) - - container = rsc->container; - -+ if (container && (g_list_length(rsc->running_on) == 1)) { -+ host = rsc->running_on->data; -+ } -+ - /* If the resource is currently started, mark it online. */ - if (rsc->role == RSC_ROLE_STARTED) { - crm_trace("%s node %s presumed ONLINE because connection resource is started", -@@ -1451,6 +1456,13 @@ determine_remote_online_status(pe_working_set_t * data_set, node_t * this_node) - (container? "Guest" : "Remote"), this_node->details->id); - this_node->details->online = FALSE; - this_node->details->remote_requires_reset = FALSE; -+ -+ } else if (host && (host->details->online == FALSE) -+ && host->details->unclean) { -+ crm_trace("Guest node %s UNCLEAN because host is unclean", -+ this_node->details->id); -+ this_node->details->online = FALSE; -+ this_node->details->remote_requires_reset = TRUE; - } - - remote_online_done: --- -1.8.3.1 - - -From a9977a2dc1135d040088b90e1ea307b3ff71c0b5 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 22 Mar 2016 16:43:53 -0500 -Subject: [PATCH 7/8] Test: pengine: update regression tests for guest node - pseudo-fencing - ---- - pengine/test10/bug-cl-5247.dot | 45 +++-- - pengine/test10/bug-cl-5247.exp | 121 ++++++++----- - pengine/test10/bug-cl-5247.summary | 18 +- - pengine/test10/bug-rh-1097457.dot | 23 ++- - pengine/test10/bug-rh-1097457.exp | 70 ++++++-- - pengine/test10/bug-rh-1097457.summary | 12 +- - pengine/test10/guest-node-host-dies.dot | 17 +- - pengine/test10/guest-node-host-dies.exp | 190 +++++++++++++-------- - pengine/test10/guest-node-host-dies.summary | 48 +++--- - pengine/test10/whitebox-fail1.dot | 15 +- - pengine/test10/whitebox-fail1.exp | 50 +++++- - pengine/test10/whitebox-fail1.summary | 12 +- - pengine/test10/whitebox-fail2.dot | 15 +- - pengine/test10/whitebox-fail2.exp | 50 +++++- - pengine/test10/whitebox-fail2.summary | 12 +- - pengine/test10/whitebox-imply-stop-on-fence.dot | 9 +- - pengine/test10/whitebox-imply-stop-on-fence.exp | 177 +++++++++++-------- - .../test10/whitebox-imply-stop-on-fence.summary | 22 +-- - pengine/test10/whitebox-ms-ordering.dot | 18 ++ - pengine/test10/whitebox-ms-ordering.exp | 76 +++++++++ - pengine/test10/whitebox-ms-ordering.summary | 3 + - pengine/test10/whitebox-unexpectedly-running.dot | 5 + - pengine/test10/whitebox-unexpectedly-running.exp | 30 ++++ - .../test10/whitebox-unexpectedly-running.summary | 2 + - 24 files changed, 748 insertions(+), 292 deletions(-) - -diff --git a/pengine/test10/bug-cl-5247.dot b/pengine/test10/bug-cl-5247.dot -index ed728ac..0ab7893 100644 ---- a/pengine/test10/bug-cl-5247.dot -+++ b/pengine/test10/bug-cl-5247.dot -@@ -1,4 +1,6 @@ - digraph "g" { -+"all_stopped" -> "prmStonith1-2_start_0 bl460g8n4" [ style = bold] -+"all_stopped" -> "prmStonith2-2_start_0 bl460g8n3" [ style = bold] - "all_stopped" [ style=bold color="green" fontcolor="orange"] - "grpStonith1_running_0" [ style=bold color="green" fontcolor="orange"] - "grpStonith1_start_0" -> "grpStonith1_running_0" [ style = bold] -@@ -52,7 +54,7 @@ digraph "g" { - "msPostgresql_post_notify_demoted_0" -> "pgsql_post_notify_demoted_0 pgsr01" [ style = bold] - "msPostgresql_post_notify_demoted_0" [ style=bold color="green" fontcolor="orange"] - "msPostgresql_post_notify_stopped_0" -> "msPostgresql_confirmed-post_notify_stopped_0" [ style = bold] --"msPostgresql_post_notify_stopped_0" -> "pgsql_post_notify_stop_0 pgsr01" [ style = bold] -+"msPostgresql_post_notify_stopped_0" -> "pgsql_post_notify_stonith_0 pgsr01" [ style = bold] - "msPostgresql_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] - "msPostgresql_pre_notify_demote_0" -> "msPostgresql_confirmed-pre_notify_demote_0" [ style = bold] - "msPostgresql_pre_notify_demote_0" -> "pgsql_pre_notify_demote_0 pgsr01" [ style = bold] -@@ -65,21 +67,21 @@ digraph "g" { - "msPostgresql_stop_0" [ style=bold color="green" fontcolor="orange"] - "msPostgresql_stopped_0" -> "msPostgresql_post_notify_stopped_0" [ style = bold] - "msPostgresql_stopped_0" [ style=bold color="green" fontcolor="orange"] --"pgsql_confirmed-post_notify_stop_0" -> "all_stopped" [ style = bold] --"pgsql_confirmed-post_notify_stop_0" -> "pgsql_monitor_9000 pgsr01" [ style = bold] --"pgsql_confirmed-post_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"pgsql_confirmed-post_notify_stonith_0" -> "all_stopped" [ style = bold] -+"pgsql_confirmed-post_notify_stonith_0" -> "pgsql_monitor_9000 pgsr01" [ style = bold] -+"pgsql_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] - "pgsql_demote_0 pgsr02" -> "msPostgresql_demoted_0" [ style = bold] - "pgsql_demote_0 pgsr02" -> "pgsql_stop_0 pgsr02" [ style = bold] - "pgsql_demote_0 pgsr02" [ style=bold color="green" fontcolor="orange"] - "pgsql_monitor_9000 pgsr01" [ style=bold color="green" fontcolor="black"] - "pgsql_post_notify_demoted_0 pgsr01" -> "msPostgresql_confirmed-post_notify_demoted_0" [ style = bold] - "pgsql_post_notify_demoted_0 pgsr01" [ style=bold color="green" fontcolor="black"] --"pgsql_post_notify_stop_0 pgsr01" -> "msPostgresql_confirmed-post_notify_stopped_0" [ style = bold] --"pgsql_post_notify_stop_0 pgsr01" -> "pgsql_confirmed-post_notify_stop_0" [ style = bold] --"pgsql_post_notify_stop_0 pgsr01" [ style=bold color="green" fontcolor="black"] --"pgsql_post_notify_stop_0" -> "pgsql_confirmed-post_notify_stop_0" [ style = bold] --"pgsql_post_notify_stop_0" -> "pgsql_post_notify_stop_0 pgsr01" [ style = bold] --"pgsql_post_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"pgsql_post_notify_stonith_0 pgsr01" -> "msPostgresql_confirmed-post_notify_stopped_0" [ style = bold] -+"pgsql_post_notify_stonith_0 pgsr01" -> "pgsql_confirmed-post_notify_stonith_0" [ style = bold] -+"pgsql_post_notify_stonith_0 pgsr01" [ style=bold color="green" fontcolor="black"] -+"pgsql_post_notify_stonith_0" -> "pgsql_confirmed-post_notify_stonith_0" [ style = bold] -+"pgsql_post_notify_stonith_0" -> "pgsql_post_notify_stonith_0 pgsr01" [ style = bold] -+"pgsql_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] - "pgsql_pre_notify_demote_0 pgsr01" -> "msPostgresql_confirmed-pre_notify_demote_0" [ style = bold] - "pgsql_pre_notify_demote_0 pgsr01" [ style=bold color="green" fontcolor="black"] - "pgsql_pre_notify_stop_0 pgsr01" -> "msPostgresql_confirmed-pre_notify_stop_0" [ style = bold] -@@ -91,13 +93,7 @@ digraph "g" { - "pgsr02_stop_0 bl460g8n4" -> "prmDB2_stop_0 bl460g8n4" [ style = bold] - "pgsr02_stop_0 bl460g8n4" [ style=bold color="green" fontcolor="black"] - "prmDB2_stop_0 bl460g8n4" -> "all_stopped" [ style = bold] --"prmDB2_stop_0 bl460g8n4" -> "master-group_stop_0" [ style = bold] --"prmDB2_stop_0 bl460g8n4" -> "msPostgresql_stop_0" [ style = bold] --"prmDB2_stop_0 bl460g8n4" -> "pgsql_demote_0 pgsr02" [ style = bold] --"prmDB2_stop_0 bl460g8n4" -> "pgsql_post_notify_stop_0" [ style = bold] --"prmDB2_stop_0 bl460g8n4" -> "pgsql_stop_0 pgsr02" [ style = bold] --"prmDB2_stop_0 bl460g8n4" -> "vip-master_stop_0 pgsr02" [ style = bold] --"prmDB2_stop_0 bl460g8n4" -> "vip-rep_stop_0 pgsr02" [ style = bold] -+"prmDB2_stop_0 bl460g8n4" -> "stonith 'off' pgsr02" [ style = bold] - "prmDB2_stop_0 bl460g8n4" [ style=bold color="green" fontcolor="black"] - "prmStonith1-2_monitor_3600000 bl460g8n4" [ style=bold color="green" fontcolor="black"] - "prmStonith1-2_start_0 bl460g8n4" -> "grpStonith1_running_0" [ style = bold] -@@ -106,7 +102,7 @@ digraph "g" { - "prmStonith1-2_stop_0 bl460g8n4" -> "all_stopped" [ style = bold] - "prmStonith1-2_stop_0 bl460g8n4" -> "grpStonith1_stopped_0" [ style = bold] - "prmStonith1-2_stop_0 bl460g8n4" -> "prmStonith1-2_start_0 bl460g8n4" [ style = bold] --"prmStonith1-2_stop_0 bl460g8n4" [ style=bold color="green" fontcolor="orange"] -+"prmStonith1-2_stop_0 bl460g8n4" [ style=bold color="green" fontcolor="black"] - "prmStonith2-2_monitor_3600000 bl460g8n3" [ style=bold color="green" fontcolor="black"] - "prmStonith2-2_start_0 bl460g8n3" -> "grpStonith2_running_0" [ style = bold] - "prmStonith2-2_start_0 bl460g8n3" -> "prmStonith2-2_monitor_3600000 bl460g8n3" [ style = bold] -@@ -115,6 +111,19 @@ digraph "g" { - "prmStonith2-2_stop_0 bl460g8n3" -> "grpStonith2_stopped_0" [ style = bold] - "prmStonith2-2_stop_0 bl460g8n3" -> "prmStonith2-2_start_0 bl460g8n3" [ style = bold] - "prmStonith2-2_stop_0 bl460g8n3" [ style=bold color="green" fontcolor="black"] -+"stonith 'off' pgsr02" -> "master-group_stop_0" [ style = bold] -+"stonith 'off' pgsr02" -> "msPostgresql_stop_0" [ style = bold] -+"stonith 'off' pgsr02" -> "pgsql_demote_0 pgsr02" [ style = bold] -+"stonith 'off' pgsr02" -> "pgsql_post_notify_stonith_0" [ style = bold] -+"stonith 'off' pgsr02" -> "pgsql_stop_0 pgsr02" [ style = bold] -+"stonith 'off' pgsr02" -> "stonith_complete" [ style = bold] -+"stonith 'off' pgsr02" -> "vip-master_stop_0 pgsr02" [ style = bold] -+"stonith 'off' pgsr02" -> "vip-rep_stop_0 pgsr02" [ style = bold] -+"stonith 'off' pgsr02" [ style=bold color="green" fontcolor="orange"] -+"stonith_complete" -> "all_stopped" [ style = bold] -+"stonith_complete" -> "vip-master_start_0 pgsr01" [ style = bold] -+"stonith_complete" -> "vip-rep_start_0 pgsr01" [ style = bold] -+"stonith_complete" [ style=bold color="green" fontcolor="orange"] - "vip-master_monitor_10000 pgsr01" [ style=bold color="green" fontcolor="black"] - "vip-master_start_0 pgsr01" -> "master-group_running_0" [ style = bold] - "vip-master_start_0 pgsr01" -> "vip-master_monitor_10000 pgsr01" [ style = bold] -diff --git a/pengine/test10/bug-cl-5247.exp b/pengine/test10/bug-cl-5247.exp -index 24bccdd..59a62af 100644 ---- a/pengine/test10/bug-cl-5247.exp -+++ b/pengine/test10/bug-cl-5247.exp -@@ -20,7 +20,7 @@ - - - -- -+ - - - -@@ -64,9 +64,10 @@ - - - -- -+ -+ - -- -+ - - - -@@ -83,7 +84,10 @@ - - - -- -+ -+ -+ -+ - - - -@@ -175,6 +179,9 @@ - - - -+ -+ -+ - - - -@@ -221,10 +228,10 @@ - - - -- -+ - - -- -+ - - - -@@ -285,6 +292,9 @@ - - - -+ -+ -+ - - - -@@ -295,14 +305,14 @@ - - - -- -- -- - - - - - -+ -+ -+ - - - -@@ -335,6 +345,9 @@ - - - -+ -+ -+ - - - -@@ -345,37 +358,37 @@ - - - -- -+ - - -- -+ - - - - - -- -- -+ -+ - - - - -- -+ - - -- -+ - - - - - -- -- -+ -+ - - - - -- -+ - - - -@@ -387,14 +400,14 @@ - - - -- -- -- - - - - - -+ -+ -+ - - - -@@ -405,16 +418,16 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -427,7 +440,7 @@ - - - -- -+ - - - -@@ -440,7 +453,7 @@ - - - -- -+ - - - -@@ -453,9 +466,9 @@ - - - -- -+ - -- -+ - - - -@@ -463,7 +476,7 @@ - - - -- -+ - - - -@@ -482,7 +495,7 @@ - - - -- -+ - - - -@@ -497,7 +510,7 @@ - - - -- -+ - - - -@@ -527,7 +540,7 @@ - - - -- -+ - - - -@@ -577,7 +590,7 @@ - - - -- -+ - - - -@@ -607,7 +620,7 @@ - - - -- -+ - - - -@@ -646,14 +659,14 @@ - - - -- -- -- - - - - - -+ -+ -+ - - - -@@ -670,6 +683,33 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -679,7 +719,7 @@ - - - -- -+ - - - -@@ -700,7 +740,10 @@ - - - -- -+ -+ -+ -+ - - - -diff --git a/pengine/test10/bug-cl-5247.summary b/pengine/test10/bug-cl-5247.summary -index 5564286..09dc301 100644 ---- a/pengine/test10/bug-cl-5247.summary -+++ b/pengine/test10/bug-cl-5247.summary -@@ -28,7 +28,7 @@ Transition Summary: - - Executing cluster transition: - * Pseudo action: grpStonith1_stop_0 -- * Pseudo action: prmStonith1-2_stop_0 -+ * Resource action: prmStonith1-2 stop on bl460g8n4 - * Pseudo action: grpStonith2_stop_0 - * Resource action: prmStonith2-2 stop on bl460g8n3 - * Pseudo action: msPostgresql_pre_notify_demote_0 -@@ -36,18 +36,14 @@ Executing cluster transition: - * Resource action: prmDB2 stop on bl460g8n4 - * Pseudo action: grpStonith1_stopped_0 - * Pseudo action: grpStonith1_start_0 -- * Resource action: prmStonith1-2 start on bl460g8n4 -- * Resource action: prmStonith1-2 monitor=3600000 on bl460g8n4 - * Pseudo action: grpStonith2_stopped_0 - * Pseudo action: grpStonith2_start_0 -- * Resource action: prmStonith2-2 start on bl460g8n3 -- * Resource action: prmStonith2-2 monitor=3600000 on bl460g8n3 -- * Pseudo action: pgsql_post_notify_stop_0 - * Resource action: pgsql notify on pgsr01 - * Pseudo action: msPostgresql_confirmed-pre_notify_demote_0 - * Pseudo action: msPostgresql_demote_0 -- * Pseudo action: grpStonith1_running_0 -- * Pseudo action: grpStonith2_running_0 -+ * Pseudo action: stonith-pgsr02-off on pgsr02 -+ * Pseudo action: stonith_complete -+ * Pseudo action: pgsql_post_notify_stop_0 - * Pseudo action: pgsql_demote_0 - * Pseudo action: msPostgresql_demoted_0 - * Pseudo action: msPostgresql_post_notify_demoted_0 -@@ -75,6 +71,12 @@ Executing cluster transition: - * Pseudo action: pgsql_notified_0 - * Resource action: pgsql monitor=9000 on pgsr01 - * Pseudo action: all_stopped -+ * Resource action: prmStonith1-2 start on bl460g8n4 -+ * Resource action: prmStonith1-2 monitor=3600000 on bl460g8n4 -+ * Resource action: prmStonith2-2 start on bl460g8n3 -+ * Resource action: prmStonith2-2 monitor=3600000 on bl460g8n3 -+ * Pseudo action: grpStonith1_running_0 -+ * Pseudo action: grpStonith2_running_0 - Using the original execution date of: 2015-08-12 02:53:40Z - - Revised cluster status: -diff --git a/pengine/test10/bug-rh-1097457.dot b/pengine/test10/bug-rh-1097457.dot -index 078d177..ece2834 100644 ---- a/pengine/test10/bug-rh-1097457.dot -+++ b/pengine/test10/bug-rh-1097457.dot -@@ -47,14 +47,9 @@ digraph "g" { - "VM2_start_0 lama3" -> "VM2_monitor_10000 lama3" [ style = bold] - "VM2_start_0 lama3" -> "lamaVM2_start_0 lama3" [ style = bold] - "VM2_start_0 lama3" [ style=bold color="green" fontcolor="black"] --"VM2_stop_0 lama3" -> "FAKE4-IP_stop_0 lamaVM2" [ style = bold] --"VM2_stop_0 lama3" -> "FAKE4_stop_0 lamaVM2" [ style = bold] --"VM2_stop_0 lama3" -> "FAKE6-clone_stop_0" [ style = bold] --"VM2_stop_0 lama3" -> "FAKE6_stop_0 lamaVM2" [ style = bold] --"VM2_stop_0 lama3" -> "FSlun3_stop_0 lamaVM2" [ style = bold] - "VM2_stop_0 lama3" -> "VM2_start_0 lama3" [ style = bold] - "VM2_stop_0 lama3" -> "all_stopped" [ style = bold] --"VM2_stop_0 lama3" -> "lamaVM2-G4_stop_0" [ style = bold] -+"VM2_stop_0 lama3" -> "stonith 'reboot' lamaVM2" [ style = bold] - "VM2_stop_0 lama3" [ style=bold color="green" fontcolor="black"] - "all_stopped" [ style=bold color="green" fontcolor="orange"] - "lamaVM2-G4_running_0" [ style=bold color="green" fontcolor="orange"] -@@ -83,4 +78,20 @@ digraph "g" { - "lamaVM2_stop_0 lama3" -> "all_stopped" [ style = bold] - "lamaVM2_stop_0 lama3" -> "lamaVM2_start_0 lama3" [ style = bold] - "lamaVM2_stop_0 lama3" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' lamaVM2" -> "FAKE4-IP_stop_0 lamaVM2" [ style = bold] -+"stonith 'reboot' lamaVM2" -> "FAKE4_stop_0 lamaVM2" [ style = bold] -+"stonith 'reboot' lamaVM2" -> "FAKE6-clone_stop_0" [ style = bold] -+"stonith 'reboot' lamaVM2" -> "FAKE6_stop_0 lamaVM2" [ style = bold] -+"stonith 'reboot' lamaVM2" -> "FSlun3_stop_0 lamaVM2" [ style = bold] -+"stonith 'reboot' lamaVM2" -> "lamaVM2-G4_stop_0" [ style = bold] -+"stonith 'reboot' lamaVM2" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' lamaVM2" [ style=bold color="green" fontcolor="orange"] -+"stonith_complete" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] -+"stonith_complete" -> "FAKE4_start_0 lamaVM2" [ style = bold] -+"stonith_complete" -> "FAKE6_start_0 lamaVM2" [ style = bold] -+"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 94a4e8d..0c3430c 100644 ---- a/pengine/test10/bug-rh-1097457.exp -+++ b/pengine/test10/bug-rh-1097457.exp -@@ -10,6 +10,9 @@ - - - -+ -+ -+ - - - -@@ -65,6 +68,9 @@ - - - -+ -+ -+ - - - -@@ -75,10 +81,10 @@ - - - -- -+ - - -- -+ - - - -@@ -121,7 +127,7 @@ - - - -- -+ - - - -@@ -175,6 +181,9 @@ - - - -+ -+ -+ - - - -@@ -185,14 +194,14 @@ - - - -- -- -- - - - - - -+ -+ -+ - - - -@@ -231,6 +240,9 @@ - - - -+ -+ -+ - - - -@@ -241,10 +253,10 @@ - - - -- -+ - - -- -+ - - - -@@ -281,6 +293,9 @@ - - - -+ -+ -+ - - - -@@ -291,10 +306,10 @@ - - - -- -+ - - -- -+ - - - -@@ -337,7 +352,7 @@ - - - -- -+ - - - -@@ -382,6 +397,9 @@ - - - -+ -+ -+ - - - -@@ -411,6 +429,33 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -434,6 +479,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/bug-rh-1097457.summary b/pengine/test10/bug-rh-1097457.summary -index d78d951..f8d2c14 100644 ---- a/pengine/test10/bug-rh-1097457.summary -+++ b/pengine/test10/bug-rh-1097457.summary -@@ -42,18 +42,20 @@ Transition Summary: - Executing cluster transition: - * Resource action: lamaVM2 stop on lama3 - * Resource action: VM2 stop on lama3 -+ * Pseudo action: stonith-lamaVM2-reboot on lamaVM2 -+ * Pseudo action: stonith_complete -+ * Resource action: VM2 start on lama3 -+ * Resource action: VM2 monitor=10000 on lama3 - * Pseudo action: lamaVM2-G4_stop_0 - * Pseudo action: FAKE4-IP_stop_0 - * Pseudo action: FAKE6-clone_stop_0 -- * Resource action: VM2 start on lama3 -- * Resource action: VM2 monitor=10000 on lama3 -+ * 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 -- * Resource action: lamaVM2 start on lama3 -- * Resource action: lamaVM2 monitor=30000 on lama3 -- * Resource action: FSlun3 monitor=10000 on lamaVM2 - * Pseudo action: lamaVM2-G4_stopped_0 - * Resource action: FAKE6 start on lamaVM2 - * Resource action: FAKE6 monitor=30000 on lamaVM2 -diff --git a/pengine/test10/guest-node-host-dies.dot b/pengine/test10/guest-node-host-dies.dot -index 01858b3..c1ced94 100644 ---- a/pengine/test10/guest-node-host-dies.dot -+++ b/pengine/test10/guest-node-host-dies.dot -@@ -5,16 +5,19 @@ digraph "g" { - "Fencing_stop_0 rhel7-4" -> "Fencing_start_0 rhel7-4" [ style = bold] - "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" [ style=bold color="green" fontcolor="orange"] - "container1_start_0 rhel7-2" -> "lxc1_start_0 rhel7-2" [ style = bold] - "container1_start_0 rhel7-2" [ style=bold color="green" fontcolor="black"] - "container1_stop_0 rhel7-1" -> "all_stopped" [ style = bold] - "container1_stop_0 rhel7-1" -> "container1_start_0 rhel7-2" [ style = bold] -+"container1_stop_0 rhel7-1" -> "stonith 'reboot' lxc1" [ style = bold] - "container1_stop_0 rhel7-1" [ style=bold color="green" fontcolor="orange"] - "container2_start_0 rhel7-3" -> "lxc2_start_0 rhel7-3" [ style = bold] - "container2_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] - "container2_stop_0 rhel7-1" -> "all_stopped" [ style = bold] - "container2_stop_0 rhel7-1" -> "container2_start_0 rhel7-3" [ style = bold] -+"container2_stop_0 rhel7-1" -> "stonith 'reboot' lxc2" [ style = bold] - "container2_stop_0 rhel7-1" [ style=bold color="green" fontcolor="orange"] - "lxc-ms-master_demote_0" -> "lxc-ms-master_demoted_0" [ style = bold] - "lxc-ms-master_demote_0" -> "lxc-ms_demote_0 lxc1" [ style = bold] -@@ -42,7 +45,7 @@ digraph "g" { - "lxc-ms_demote_0 lxc1" -> "lxc-ms-master_demoted_0" [ style = bold] - "lxc-ms_demote_0 lxc1" -> "lxc-ms_promote_0 lxc1" [ style = bold] - "lxc-ms_demote_0 lxc1" -> "lxc-ms_stop_0 lxc1" [ style = bold] --"lxc-ms_demote_0 lxc1" [ style=bold color="green" fontcolor="black"] -+"lxc-ms_demote_0 lxc1" [ style=bold color="green" fontcolor="orange"] - "lxc-ms_monitor_10000 lxc2" [ style=bold color="green" fontcolor="black"] - "lxc-ms_promote_0 lxc1" -> "lxc-ms-master_promoted_0" [ style = bold] - "lxc-ms_promote_0 lxc1" [ style=bold color="green" fontcolor="black"] -@@ -84,11 +87,17 @@ digraph "g" { - "rsc_rhel7-1_stop_0 rhel7-1" -> "all_stopped" [ style = bold] - "rsc_rhel7-1_stop_0 rhel7-1" -> "rsc_rhel7-1_start_0 rhel7-5" [ style = bold] - "rsc_rhel7-1_stop_0 rhel7-1" [ style=bold color="green" fontcolor="orange"] -+"stonith 'reboot' lxc1" -> "lxc-ms-master_stop_0" [ style = bold] -+"stonith 'reboot' lxc1" -> "lxc-ms_demote_0 lxc1" [ style = bold] -+"stonith 'reboot' lxc1" -> "lxc-ms_stop_0 lxc1" [ style = bold] -+"stonith 'reboot' lxc1" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' lxc1" [ style=bold color="green" fontcolor="orange"] -+"stonith 'reboot' lxc2" -> "lxc-ms-master_stop_0" [ style = bold] -+"stonith 'reboot' lxc2" -> "lxc-ms_stop_0 lxc2" [ style = bold] -+"stonith 'reboot' lxc2" -> "stonith_complete" [ style = bold] -+"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" -> "lxc-ms-master_stop_0" [ style = bold] --"stonith 'reboot' rhel7-1" -> "lxc-ms_stop_0 lxc1" [ style = bold] --"stonith 'reboot' rhel7-1" -> "lxc-ms_stop_0 lxc2" [ 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] -diff --git a/pengine/test10/guest-node-host-dies.exp b/pengine/test10/guest-node-host-dies.exp -index b3c24be..6bd7a60 100644 ---- a/pengine/test10/guest-node-host-dies.exp -+++ b/pengine/test10/guest-node-host-dies.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -10,14 +10,17 @@ - - - -- -+ - - - - - - -- -+ -+ -+ -+ - - - -@@ -30,33 +33,33 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -65,26 +68,26 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -93,7 +96,7 @@ - - - -- -+ - - - -@@ -102,20 +105,20 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -124,7 +127,7 @@ - - - -- -+ - - - -@@ -133,23 +136,23 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - -@@ -164,69 +167,72 @@ - - - -- -+ -+ - -- -+ - - - -- -+ - - -- -+ -+ -+ -+ - - -- -+ - - - - - -- -- -+ - -- -+ - - - -- -+ -+ -+ -+ -+ -+ -+ - - - - - -- -- -+ - -- -+ - - - -- -- -- -- -+ - - -- -- -- -- -+ - - - - - -- -- -- -+ -+ -+ -+ - - - -- -+ - - -- -+ - - - -@@ -239,7 +245,7 @@ - - - -- -+ - - - -@@ -254,17 +260,16 @@ - - - -- -- -- -- -+ -+ -+ - - - -- -+ - - -- -+ - - - -@@ -276,7 +281,7 @@ - - - -- -+ - - - -@@ -299,7 +304,7 @@ - - - -- -+ - - - -@@ -329,10 +334,10 @@ - - - -- -+ - - -- -+ - - - -@@ -350,7 +355,10 @@ - - - -- -+ -+ -+ -+ - - - -@@ -362,7 +370,7 @@ - - - -- -+ - - - -@@ -409,7 +417,7 @@ - - - -- -+ - - - -@@ -427,7 +435,7 @@ - - - -- -+ - - - -@@ -453,7 +461,7 @@ - - - -- -+ - - - -@@ -471,13 +479,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -490,40 +498,76 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/guest-node-host-dies.summary b/pengine/test10/guest-node-host-dies.summary -index 8a1bfd4..83af5ce 100644 ---- a/pengine/test10/guest-node-host-dies.summary -+++ b/pengine/test10/guest-node-host-dies.summary -@@ -2,58 +2,58 @@ - Current cluster status: - Node rhel7-1 (1): UNCLEAN (offline) - Online: [ rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] --Containers: [ lxc1:container1 lxc2:container2 ] - - Fencing (stonith:fence_xvm): Started rhel7-4 - rsc_rhel7-1 (ocf::heartbeat:IPaddr2): Started rhel7-1 ( UNCLEAN ) -- container1 (ocf::heartbeat:VirtualDomain): Started rhel7-1 ( UNCLEAN ) -- container2 (ocf::heartbeat:VirtualDomain): Started rhel7-1 ( UNCLEAN ) -+ container1 (ocf::heartbeat:VirtualDomain): FAILED rhel7-1 (UNCLEAN) -+ container2 (ocf::heartbeat:VirtualDomain): FAILED rhel7-1 (UNCLEAN) - Master/Slave Set: lxc-ms-master [lxc-ms] -- Masters: [ lxc1 ] -- Slaves: [ lxc2 ] -+ Stopped: [ rhel7-1 rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] - - Transition Summary: - * Restart Fencing (Started rhel7-4) - * Move rsc_rhel7-1 (Started rhel7-1 -> rhel7-5) -- * Move container1 (Started rhel7-1 -> rhel7-2) -- * Move container2 (Started rhel7-1 -> rhel7-3) -- * Restart lxc-ms:0 (Master lxc1) -- * Restart lxc-ms:1 (Slave lxc2) -+ * Recover container1 (Started rhel7-1 -> rhel7-2) -+ * Recover container2 (Started rhel7-1 -> rhel7-3) -+ * Recover lxc-ms:0 (Master lxc1) -+ * Recover lxc-ms:1 (Slave lxc2) - * Move lxc1 (Started rhel7-1 -> rhel7-2) - * Move lxc2 (Started rhel7-1 -> rhel7-3) - - Executing cluster transition: - * Resource action: Fencing stop on rhel7-4 -- * Resource action: Fencing start on rhel7-4 -- * Resource action: Fencing monitor=120000 on rhel7-4 - * Pseudo action: lxc-ms-master_demote_0 - * Fencing rhel7-1 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: rsc_rhel7-1_stop_0 -- * Resource action: lxc-ms demote on lxc1 -- * Pseudo action: lxc-ms-master_demoted_0 -- * Pseudo action: lxc-ms-master_stop_0 - * Pseudo action: lxc1_stop_0 - * Pseudo action: lxc2_stop_0 -- * Resource action: rsc_rhel7-1 start on rhel7-5 - * Pseudo action: container1_stop_0 - * Pseudo action: container2_stop_0 -+ * Pseudo action: stonith-lxc2-reboot on lxc2 -+ * Pseudo action: stonith-lxc1-reboot on lxc1 -+ * Pseudo action: stonith_complete -+ * Resource action: rsc_rhel7-1 start on rhel7-5 -+ * Resource action: container1 start on rhel7-2 -+ * Resource action: container2 start on rhel7-3 -+ * 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: rsc_rhel7-1 monitor=5000 on rhel7-5 -- * Resource action: container1 start on rhel7-2 -- * Resource action: container2 start on rhel7-3 -- * Resource action: lxc1 start on rhel7-2 -- * Resource action: lxc2 start on rhel7-3 -+ * Resource action: Fencing start on rhel7-4 -+ * Resource action: Fencing monitor=120000 on rhel7-4 - * Resource action: lxc-ms start on lxc1 - * Resource action: lxc-ms start on lxc2 -- * Resource action: lxc-ms monitor=10000 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 - * Pseudo action: lxc-ms-master_promoted_0 -diff --git a/pengine/test10/whitebox-fail1.dot b/pengine/test10/whitebox-fail1.dot -index 0f0fe26..c6380ea 100644 ---- a/pengine/test10/whitebox-fail1.dot -+++ b/pengine/test10/whitebox-fail1.dot -@@ -25,11 +25,9 @@ digraph "g" { - "all_stopped" [ style=bold color="green" fontcolor="orange"] - "container1_start_0 18node2" -> "lxc1_start_0 18node2" [ style = bold] - "container1_start_0 18node2" [ style=bold color="green" fontcolor="black"] --"container1_stop_0 18node2" -> "B_stop_0 lxc1" [ style = bold] --"container1_stop_0 18node2" -> "M-clone_stop_0" [ style = bold] --"container1_stop_0 18node2" -> "M_stop_0 lxc1" [ style = bold] - "container1_stop_0 18node2" -> "all_stopped" [ style = bold] - "container1_stop_0 18node2" -> "container1_start_0 18node2" [ style = bold] -+"container1_stop_0 18node2" -> "stonith 'reboot' lxc1" [ style = bold] - "container1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] - "lxc1_monitor_30000 18node2" [ style=bold color="green" fontcolor="black"] - "lxc1_start_0 18node2" -> "B_monitor_10000 lxc1" [ style = bold] -@@ -42,4 +40,15 @@ digraph "g" { - "lxc1_stop_0 18node2" -> "container1_stop_0 18node2" [ style = bold] - "lxc1_stop_0 18node2" -> "lxc1_start_0 18node2" [ style = bold] - "lxc1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' lxc1" -> "B_stop_0 lxc1" [ style = bold] -+"stonith 'reboot' lxc1" -> "M-clone_stop_0" [ style = bold] -+"stonith 'reboot' lxc1" -> "M_stop_0 lxc1" [ style = bold] -+"stonith 'reboot' lxc1" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' lxc1" [ style=bold color="green" fontcolor="orange"] -+"stonith_complete" -> "B_start_0 lxc1" [ style = bold] -+"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 9629a76..03e83c3 100644 ---- a/pengine/test10/whitebox-fail1.exp -+++ b/pengine/test10/whitebox-fail1.exp -@@ -10,6 +10,9 @@ - - - -+ -+ -+ - - - -@@ -58,6 +61,9 @@ - - - -+ -+ -+ - - - -@@ -68,10 +74,10 @@ - - - -- -+ - - -- -+ - - - -@@ -98,7 +104,7 @@ - - - -- -+ - - - -@@ -159,6 +165,9 @@ - - - -+ -+ -+ - - - -@@ -169,7 +178,7 @@ - - - -- -+ - - - -@@ -187,6 +196,9 @@ - - - -+ -+ -+ - - - -@@ -216,6 +228,33 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -233,6 +272,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-fail1.summary b/pengine/test10/whitebox-fail1.summary -index 1586407..1872e9a 100644 ---- a/pengine/test10/whitebox-fail1.summary -+++ b/pengine/test10/whitebox-fail1.summary -@@ -22,20 +22,22 @@ Transition Summary: - Executing cluster transition: - * Resource action: lxc1 stop on 18node2 - * Resource action: container1 stop on 18node2 -+ * Pseudo action: stonith-lxc1-reboot on lxc1 -+ * Pseudo action: stonith_complete -+ * Resource action: container1 start on 18node2 - * Pseudo action: M-clone_stop_0 - * Pseudo action: B_stop_0 -- * Resource action: container1 start on 18node2 -+ * 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: lxc1 start on 18node2 -- * Resource action: lxc1 monitor=30000 on 18node2 -+ * Resource action: B start on lxc1 - * Pseudo action: all_stopped - * Resource action: M start on lxc1 - * Pseudo action: M-clone_running_0 -- * Resource action: B start on lxc1 -- * Resource action: M monitor=10000 on lxc1 - * Resource action: B monitor=10000 on lxc1 -+ * Resource action: M 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 0f0fe26..c6380ea 100644 ---- a/pengine/test10/whitebox-fail2.dot -+++ b/pengine/test10/whitebox-fail2.dot -@@ -25,11 +25,9 @@ digraph "g" { - "all_stopped" [ style=bold color="green" fontcolor="orange"] - "container1_start_0 18node2" -> "lxc1_start_0 18node2" [ style = bold] - "container1_start_0 18node2" [ style=bold color="green" fontcolor="black"] --"container1_stop_0 18node2" -> "B_stop_0 lxc1" [ style = bold] --"container1_stop_0 18node2" -> "M-clone_stop_0" [ style = bold] --"container1_stop_0 18node2" -> "M_stop_0 lxc1" [ style = bold] - "container1_stop_0 18node2" -> "all_stopped" [ style = bold] - "container1_stop_0 18node2" -> "container1_start_0 18node2" [ style = bold] -+"container1_stop_0 18node2" -> "stonith 'reboot' lxc1" [ style = bold] - "container1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] - "lxc1_monitor_30000 18node2" [ style=bold color="green" fontcolor="black"] - "lxc1_start_0 18node2" -> "B_monitor_10000 lxc1" [ style = bold] -@@ -42,4 +40,15 @@ digraph "g" { - "lxc1_stop_0 18node2" -> "container1_stop_0 18node2" [ style = bold] - "lxc1_stop_0 18node2" -> "lxc1_start_0 18node2" [ style = bold] - "lxc1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' lxc1" -> "B_stop_0 lxc1" [ style = bold] -+"stonith 'reboot' lxc1" -> "M-clone_stop_0" [ style = bold] -+"stonith 'reboot' lxc1" -> "M_stop_0 lxc1" [ style = bold] -+"stonith 'reboot' lxc1" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' lxc1" [ style=bold color="green" fontcolor="orange"] -+"stonith_complete" -> "B_start_0 lxc1" [ style = bold] -+"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 9629a76..03e83c3 100644 ---- a/pengine/test10/whitebox-fail2.exp -+++ b/pengine/test10/whitebox-fail2.exp -@@ -10,6 +10,9 @@ - - - -+ -+ -+ - - - -@@ -58,6 +61,9 @@ - - - -+ -+ -+ - - - -@@ -68,10 +74,10 @@ - - - -- -+ - - -- -+ - - - -@@ -98,7 +104,7 @@ - - - -- -+ - - - -@@ -159,6 +165,9 @@ - - - -+ -+ -+ - - - -@@ -169,7 +178,7 @@ - - - -- -+ - - - -@@ -187,6 +196,9 @@ - - - -+ -+ -+ - - - -@@ -216,6 +228,33 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -233,6 +272,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-fail2.summary b/pengine/test10/whitebox-fail2.summary -index ab40d99..5db6588 100644 ---- a/pengine/test10/whitebox-fail2.summary -+++ b/pengine/test10/whitebox-fail2.summary -@@ -22,20 +22,22 @@ Transition Summary: - Executing cluster transition: - * Resource action: lxc1 stop on 18node2 - * Resource action: container1 stop on 18node2 -+ * Pseudo action: stonith-lxc1-reboot on lxc1 -+ * Pseudo action: stonith_complete -+ * Resource action: container1 start on 18node2 - * Pseudo action: M-clone_stop_0 - * Pseudo action: B_stop_0 -- * Resource action: container1 start on 18node2 -+ * 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: lxc1 start on 18node2 -- * Resource action: lxc1 monitor=30000 on 18node2 -+ * Resource action: B start on lxc1 - * Pseudo action: all_stopped - * Resource action: M start on lxc1 - * Pseudo action: M-clone_running_0 -- * Resource action: B start on lxc1 -- * Resource action: M monitor=10000 on lxc1 - * Resource action: B monitor=10000 on lxc1 -+ * Resource action: M 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 b3fd40b..0e17a16 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.dot -+++ b/pengine/test10/whitebox-imply-stop-on-fence.dot -@@ -6,6 +6,7 @@ - "R-lxc-01_kiff-01_stop_0 kiff-01" -> "R-lxc-01_kiff-01_start_0 kiff-02" [ style = bold] - "R-lxc-01_kiff-01_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "R-lxc-01_kiff-01_stop_0 kiff-01" -> "shared0-clone_stop_0" [ style = bold] -+"R-lxc-01_kiff-01_stop_0 kiff-01" -> "stonith 'reboot' lxc-01_kiff-01" [ style = bold] - "R-lxc-01_kiff-01_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] - "R-lxc-02_kiff-01_monitor_10000 kiff-02" [ style=bold color="green" fontcolor="black"] - "R-lxc-02_kiff-01_start_0 kiff-02" -> "R-lxc-02_kiff-01_monitor_10000 kiff-02" [ style = bold] -@@ -14,7 +15,9 @@ - "R-lxc-02_kiff-01_stop_0 kiff-01" -> "R-lxc-02_kiff-01_start_0 kiff-02" [ style = bold] - "R-lxc-02_kiff-01_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "R-lxc-02_kiff-01_stop_0 kiff-01" -> "shared0-clone_stop_0" [ style = bold] -+"R-lxc-02_kiff-01_stop_0 kiff-01" -> "stonith 'reboot' lxc-02_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" [ 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] -@@ -74,8 +77,12 @@ - "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_complete" [ style = bold] --"stonith 'reboot' kiff-01" -> "vm-fs_stop_0 lxc-01_kiff-01" [ style = bold] - "stonith 'reboot' kiff-01" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' lxc-01_kiff-01" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' lxc-01_kiff-01" -> "vm-fs_stop_0 lxc-01_kiff-01" [ style = bold] -+"stonith 'reboot' lxc-01_kiff-01" [ style=bold color="green" fontcolor="orange"] -+"stonith 'reboot' lxc-02_kiff-01" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' lxc-02_kiff-01" [ style=bold color="green" fontcolor="orange"] - "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] -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.exp b/pengine/test10/whitebox-imply-stop-on-fence.exp -index 0bd42b7..e38f4ea 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.exp -+++ b/pengine/test10/whitebox-imply-stop-on-fence.exp -@@ -1,33 +1,36 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ -+ -+ -+ - - - - - -- -+ - - - -@@ -35,16 +38,16 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - -@@ -53,28 +56,28 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -83,16 +86,16 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - -@@ -101,28 +104,28 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -131,13 +134,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -146,31 +149,31 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - -@@ -179,27 +182,27 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -208,7 +211,7 @@ - - - -- -+ - - - -@@ -223,27 +226,27 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -252,7 +255,7 @@ - - - -- -+ - - - -@@ -267,48 +270,48 @@ - - - -- -+ - -- -+ - - - - -- -+ - - - - -- -- -- - - - - -- -- -- -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ - - - - - -- -- -- -- -+ -+ -+ - - - -- -- -- -- -+ - - - -@@ -334,7 +337,7 @@ - - - -- -+ - - - -@@ -378,7 +381,7 @@ - - - -- -+ - - - -@@ -402,6 +405,36 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -413,7 +446,7 @@ - - - -- -+ - - - -@@ -423,35 +456,41 @@ - - - -+ -+ -+ -+ -+ -+ - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.summary b/pengine/test10/whitebox-imply-stop-on-fence.summary -index 3ee9570..50a3446 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.summary -+++ b/pengine/test10/whitebox-imply-stop-on-fence.summary -@@ -2,7 +2,7 @@ - Current cluster status: - Node kiff-01 (1): UNCLEAN (offline) - Online: [ kiff-02 ] --Containers: [ lxc-01_kiff-01:R-lxc-01_kiff-01 lxc-01_kiff-02:R-lxc-01_kiff-02 lxc-02_kiff-01:R-lxc-02_kiff-01 lxc-02_kiff-02:R-lxc-02_kiff-02 ] -+Containers: [ lxc-01_kiff-02:R-lxc-01_kiff-02 lxc-02_kiff-02:R-lxc-02_kiff-02 ] - - fence-kiff-01 (stonith:fence_ipmilan): Started kiff-02 - fence-kiff-02 (stonith:fence_ipmilan): Started kiff-01 (UNCLEAN) -@@ -18,37 +18,37 @@ Containers: [ lxc-01_kiff-01:R-lxc-01_kiff-01 lxc-01_kiff-02:R-lxc-01_kiff-02 lx - shared0 (ocf::heartbeat:Filesystem): Started kiff-01 (UNCLEAN) - Started: [ kiff-02 ] - Stopped: [ lxc-01_kiff-01 lxc-01_kiff-02 lxc-02_kiff-01 lxc-02_kiff-02 ] -- R-lxc-01_kiff-01 (ocf::heartbeat:VirtualDomain): Started kiff-01 (UNCLEAN) -+ R-lxc-01_kiff-01 (ocf::heartbeat:VirtualDomain): FAILED kiff-01 (UNCLEAN) - R-lxc-02_kiff-01 (ocf::heartbeat:VirtualDomain): Started kiff-01 (UNCLEAN) - R-lxc-01_kiff-02 (ocf::heartbeat:VirtualDomain): Started kiff-02 - R-lxc-02_kiff-02 (ocf::heartbeat:VirtualDomain): Started kiff-02 -- vm-fs (ocf::heartbeat:Filesystem): Started lxc-01_kiff-01 -+ vm-fs (ocf::heartbeat:Filesystem): FAILED lxc-01_kiff-01 - - Transition Summary: - * Move fence-kiff-02 (Started kiff-01 -> kiff-02) - * Stop dlm:0 (kiff-01) - * Stop clvmd:0 (kiff-01) - * Stop shared0:0 (kiff-01) -- * Move R-lxc-01_kiff-01 (Started kiff-01 -> kiff-02) -+ * Recover R-lxc-01_kiff-01 (Started kiff-01 -> kiff-02) - * Move R-lxc-02_kiff-01 (Started kiff-01 -> kiff-02) -- * Restart vm-fs (Started lxc-01_kiff-01) -+ * Recover vm-fs (Started lxc-01_kiff-01) - * Move lxc-01_kiff-01 (Started kiff-01 -> kiff-02) - * Move lxc-02_kiff-01 (Started kiff-01 -> kiff-02) - - Executing cluster transition: - * Pseudo action: fence-kiff-02_stop_0 - * Fencing kiff-01 (reboot) -- * Pseudo action: stonith_complete -- * Resource action: fence-kiff-02 start on kiff-02 -- * Pseudo action: vm-fs_stop_0 - * Pseudo action: lxc-01_kiff-01_stop_0 - * Pseudo action: lxc-02_kiff-01_stop_0 -- * Resource action: fence-kiff-02 monitor=60000 on kiff-02 - * 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: 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 -+ * Pseudo action: vm-fs_stop_0 - * Resource action: lxc-01_kiff-01 start on kiff-02 - * Resource action: lxc-02_kiff-01 start on kiff-02 - * Pseudo action: shared0_stop_0 -@@ -56,16 +56,18 @@ Executing cluster transition: - * 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: vm-fs monitor=20000 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 - * Pseudo action: dlm_stop_0 - * Pseudo action: dlm-clone_stopped_0 - * Pseudo action: all_stopped -+ * Resource action: fence-kiff-02 start on kiff-02 -+ * Resource action: fence-kiff-02 monitor=60000 on kiff-02 - - Revised cluster status: - Online: [ kiff-02 ] -diff --git a/pengine/test10/whitebox-ms-ordering.dot b/pengine/test10/whitebox-ms-ordering.dot -index 7f03a65..bd77363 100644 ---- a/pengine/test10/whitebox-ms-ordering.dot -+++ b/pengine/test10/whitebox-ms-ordering.dot -@@ -79,4 +79,22 @@ - "lxc2_start_0 18node1" -> "lxc-ms_start_0 lxc2" [ style = bold] - "lxc2_start_0 18node1" -> "lxc2_monitor_30000 18node1" [ style = bold] - "lxc2_start_0 18node1" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' lxc1" -> "lxc-ms-master_stop_0" [ style = bold] -+"stonith 'reboot' lxc1" -> "lxc-ms_demote_0 lxc1" [ style = bold] -+"stonith 'reboot' lxc1" -> "lxc-ms_stop_0 lxc1" [ style = bold] -+"stonith 'reboot' lxc1" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' lxc1" [ style=bold color="green" fontcolor="orange"] -+"stonith 'reboot' lxc2" -> "lxc-ms-master_stop_0" [ style = bold] -+"stonith 'reboot' lxc2" -> "lxc-ms_stop_0 lxc2" [ style = bold] -+"stonith 'reboot' lxc2" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' lxc2" [ style=bold color="green" fontcolor="orange"] -+"stonith_complete" -> "all_stopped" [ style = bold] -+"stonith_complete" -> "container1_start_0 18node1" [ style = bold] -+"stonith_complete" -> "container2_start_0 18node1" [ style = bold] -+"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 0566f41..7aecfba 100644 ---- a/pengine/test10/whitebox-ms-ordering.exp -+++ b/pengine/test10/whitebox-ms-ordering.exp -@@ -16,6 +16,9 @@ - - - -+ -+ -+ - - - -@@ -62,6 +65,9 @@ - - - -+ -+ -+ - - - -@@ -111,6 +117,9 @@ - - - -+ -+ -+ - - - -@@ -130,6 +139,9 @@ - - - -+ -+ -+ - - - -@@ -154,6 +166,9 @@ - - - -+ -+ -+ - - - -@@ -166,6 +181,9 @@ - - - -+ -+ -+ - - - -@@ -228,6 +246,9 @@ - - - -+ -+ -+ - - - -@@ -240,6 +261,9 @@ - - - -+ -+ -+ - - - -@@ -323,6 +347,12 @@ - - - -+ -+ -+ -+ -+ -+ - - - -@@ -391,6 +421,9 @@ - - - -+ -+ -+ - - - -@@ -417,10 +450,50 @@ - - - -+ -+ -+ - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -432,6 +505,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-ms-ordering.summary b/pengine/test10/whitebox-ms-ordering.summary -index d6bbaaf..5d7c042 100644 ---- a/pengine/test10/whitebox-ms-ordering.summary -+++ b/pengine/test10/whitebox-ms-ordering.summary -@@ -27,6 +27,9 @@ Executing cluster transition: - * Resource action: lxc-ms monitor on 18node2 - * Resource action: lxc-ms monitor on 18node1 - * Pseudo action: lxc-ms-master_demote_0 -+ * Pseudo action: stonith-lxc2-reboot on lxc2 -+ * Pseudo action: stonith-lxc1-reboot on lxc1 -+ * Pseudo action: stonith_complete - * Resource action: container1 start on 18node1 - * Resource action: container2 start on 18node1 - * Pseudo action: lxc-ms_demote_0 -diff --git a/pengine/test10/whitebox-unexpectedly-running.dot b/pengine/test10/whitebox-unexpectedly-running.dot -index d87344a..2915d77 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.dot -+++ b/pengine/test10/whitebox-unexpectedly-running.dot -@@ -5,9 +5,14 @@ - "FAKE_start_0 18builder" [ style=bold color="green" fontcolor="black"] - "FAKE_stop_0 18builder" -> "FAKE_start_0 18builder" [ style = bold] - "FAKE_stop_0 18builder" -> "all_stopped" [ style = bold] -+"FAKE_stop_0 18builder" -> "stonith 'reboot' remote1" [ style = bold] - "FAKE_stop_0 18builder" [ style=bold color="green" fontcolor="black"] - "all_stopped" [ style=bold color="green" fontcolor="orange"] - "remote1_monitor_30000 18builder" [ style=bold color="green" fontcolor="black"] - "remote1_start_0 18builder" -> "remote1_monitor_30000 18builder" [ style = bold] - "remote1_start_0 18builder" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' remote1" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' remote1" [ style=bold color="green" fontcolor="orange"] -+"stonith_complete" -> "all_stopped" [ style = bold] -+"stonith_complete" [ style=bold color="green" fontcolor="orange"] - } -diff --git a/pengine/test10/whitebox-unexpectedly-running.exp b/pengine/test10/whitebox-unexpectedly-running.exp -index 29cd66b..c5272f2 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.exp -+++ b/pengine/test10/whitebox-unexpectedly-running.exp -@@ -62,6 +62,33 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -70,6 +97,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-unexpectedly-running.summary b/pengine/test10/whitebox-unexpectedly-running.summary -index f834e41..7d5b908 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.summary -+++ b/pengine/test10/whitebox-unexpectedly-running.summary -@@ -10,6 +10,8 @@ Transition Summary: - - Executing cluster transition: - * Resource action: FAKE stop on 18builder -+ * Pseudo action: stonith-remote1-reboot on remote1 -+ * Pseudo action: stonith_complete - * Pseudo action: all_stopped - * Resource action: FAKE start on 18builder - * Resource action: remote1 start on 18builder --- -1.8.3.1 - - -From 92dd7d7616dc16d345ef73d0685b12e06d09b36b Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 15 Apr 2016 15:04:03 -0500 -Subject: [PATCH 8/8] Fix: crmd: update cache status for guest node whose host - is fenced - -Normally, the remote RA's stop action handles setting the peer cache state -to down (along with other side effects of a stop). However, if a guest node's -host is fenced, the RA will not be called. Check for the fencing pseudo-action -created by the pengine in this case. ---- - crmd/crmd_lrm.h | 1 + - crmd/remote_lrmd_ra.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++-- - crmd/te_actions.c | 4 +++ - 3 files changed, 75 insertions(+), 2 deletions(-) - -diff --git a/crmd/crmd_lrm.h b/crmd/crmd_lrm.h -index 412ce5b..08ba947 100644 ---- a/crmd/crmd_lrm.h -+++ b/crmd/crmd_lrm.h -@@ -160,5 +160,6 @@ int remote_ra_exec(lrm_state_t * lrm_state, const char *rsc_id, const char *acti - lrmd_key_value_t * params); - void remote_ra_cleanup(lrm_state_t * lrm_state); - void remote_ra_fail(const char *node_name); -+void remote_ra_process_pseudo(xmlNode *xml); - - gboolean process_lrm_event(lrm_state_t * lrm_state, lrmd_event_data_t * op, struct recurring_op_s *pending); -diff --git a/crmd/remote_lrmd_ra.c b/crmd/remote_lrmd_ra.c -index b9c5068..eb995ea 100644 ---- a/crmd/remote_lrmd_ra.c -+++ b/crmd/remote_lrmd_ra.c -@@ -226,14 +226,20 @@ remote_node_up(const char *node_name) - free_xml(update); - } - -+enum down_opts { -+ DOWN_KEEP_LRM, -+ DOWN_ERASE_LRM -+}; -+ - /*! - * \internal - * \brief Handle cluster communication related to pacemaker_remote node leaving - * - * \param[in] node_name Name of lost node -+ * \param[in] opts Whether to keep or erase LRM history - */ - static void --remote_node_down(const char *node_name) -+remote_node_down(const char *node_name, const enum down_opts opts) - { - xmlNode *update; - int call_id = 0; -@@ -246,6 +252,14 @@ remote_node_down(const char *node_name) - /* Purge node's transient attributes */ - erase_status_tag(node_name, XML_TAG_TRANSIENT_NODEATTRS, call_opt); - -+ /* Normally, the LRM operation history should be kept until the node comes -+ * back up. However, after a successful fence, we want to clear it, so we -+ * don't think resources are still running on the node. -+ */ -+ if (opts == DOWN_ERASE_LRM) { -+ erase_status_tag(node_name, XML_CIB_TAG_LRM, call_opt); -+ } -+ - /* Ensure node is in the remote peer cache with lost state */ - node = crm_remote_peer_get(node_name); - CRM_CHECK(node != NULL, return); -@@ -301,7 +315,7 @@ check_remote_node_state(remote_ra_cmd_t *cmd) - if (ra_data) { - if (ra_data->migrate_status != takeover_complete) { - /* Stop means down if we didn't successfully migrate elsewhere */ -- remote_node_down(cmd->rsc_id); -+ remote_node_down(cmd->rsc_id, DOWN_KEEP_LRM); - } else if (AM_I_DC == FALSE) { - /* Only the connection host and DC track node state, - * so if the connection migrated elsewhere and we aren't DC, -@@ -1072,3 +1086,57 @@ remote_ra_fail(const char *node_name) - } - } - -+/* A guest node fencing implied by host fencing looks like: -+ * -+ * -+ * -+ * -+ * -+ * -+ * -+ */ -+#define XPATH_PSEUDO_FENCE "//" XML_GRAPH_TAG_PSEUDO_EVENT \ -+ "[@" XML_LRM_ATTR_TASK "='stonith']/" XML_GRAPH_TAG_DOWNED \ -+ "/" XML_CIB_TAG_NODE -+ -+/*! -+ * \internal -+ * \brief Check a pseudo-action for Pacemaker Remote node side effects -+ * -+ * \param[in] xml XML of pseudo-action to check -+ */ -+void -+remote_ra_process_pseudo(xmlNode *xml) -+{ -+ xmlXPathObjectPtr search = xpath_search(xml, XPATH_PSEUDO_FENCE); -+ -+ if (numXpathResults(search) == 1) { -+ xmlNode *result = getXpathResult(search, 0); -+ -+ /* Normally, we handle the necessary side effects of a guest node stop -+ * action when reporting the remote agent's result. However, if the stop -+ * is implied due to fencing, it will be a fencing pseudo-event, and -+ * there won't be a result to report. Handle that case here. -+ * -+ * This will result in a duplicate call to remote_node_down() if the -+ * guest stop was real instead of implied, but that shouldn't hurt. -+ * -+ * There is still one corner case that isn't handled: if a guest node -+ * isn't running any resources when its host is fenced, it will appear -+ * to be cleanly stopped, so there will be no pseudo-fence, and our -+ * peer cache state will be incorrect unless and until the guest is -+ * recovered. -+ */ -+ if (result) { -+ const char *remote = ID(result); -+ -+ if (remote) { -+ remote_node_down(remote, DOWN_ERASE_LRM); -+ } -+ } -+ } -+ freeXpathObject(search); -+} -diff --git a/crmd/te_actions.c b/crmd/te_actions.c -index c971273..01538af 100644 ---- a/crmd/te_actions.c -+++ b/crmd/te_actions.c -@@ -27,6 +27,7 @@ - #include - - #include -+#include - #include - #include - #include -@@ -52,6 +53,9 @@ te_start_action_timer(crm_graph_t * graph, crm_action_t * action) - static gboolean - te_pseudo_action(crm_graph_t * graph, crm_action_t * pseudo) - { -+ /* Check action for Pacemaker Remote node side effects */ -+ remote_ra_process_pseudo(pseudo->xml); -+ - crm_debug("Pseudo-action %d (%s) fired and confirmed", pseudo->id, - crm_element_value(pseudo->xml, XML_LRM_ATTR_TASK_KEY)); - te_action_confirmed(pseudo); --- -1.8.3.1 - diff --git a/SOURCES/004-cleanup.patch b/SOURCES/004-cleanup.patch new file mode 100644 index 0000000..3ec7535 --- /dev/null +++ b/SOURCES/004-cleanup.patch @@ -0,0 +1,419 @@ +From 7a813755269f00d7b815e819636841af991762c0 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Mon, 11 Dec 2017 12:23:06 -0600 +Subject: [PATCH] Fix: tools: crm_resource --cleanup + +The new "failures only" mode of crm_resource --cleanup had multiple issues, +including not working without --resource specified, comparing a +user-provided interval string against a milliseconds interval, and +considering no interval specified as all intervals rather than 0 +but only when clearing LRM history entries. +--- + tools/crm_resource.c | 35 +++--- + tools/crm_resource.h | 9 +- + tools/crm_resource_runtime.c | 258 ++++++++++++++++++++++++++++++------------- + 3 files changed, 202 insertions(+), 100 deletions(-) + +diff --git a/tools/crm_resource.c b/tools/crm_resource.c +index 4ddcef4..5152004 100644 +--- a/tools/crm_resource.c ++++ b/tools/crm_resource.c +@@ -1092,14 +1092,20 @@ main(int argc, char **argv) + rc = cli_resource_delete_attribute(rsc, rsc_id, prop_set, prop_id, + prop_name, cib_conn, &data_set); + +- } else if (rsc_cmd == 'C' && just_errors) { ++ } else if ((rsc_cmd == 'C') && rsc) { ++ if (do_force == FALSE) { ++ rsc = uber_parent(rsc); ++ } + crmd_replies_needed = 0; + +- rc = cli_resource_delete_failures(crmd_channel, host_uname, rsc, operation, +- interval, &data_set); ++ crm_debug("%s of %s (%s requested) on %s", ++ (just_errors? "Clearing failures" : "Re-checking the state"), ++ rsc->id, rsc_id, (host_uname? host_uname : "all hosts")); ++ rc = cli_resource_delete(crmd_channel, host_uname, rsc, operation, ++ interval, just_errors, &data_set); + +- if(rsc && (rc == pcmk_ok) && (BE_QUIET == FALSE)) { +- /* Now check XML_RSC_ATTR_TARGET_ROLE and XML_RSC_ATTR_MANAGED */ ++ if ((rc == pcmk_ok) && !BE_QUIET) { ++ // Show any reasons why resource might stay stopped + cli_resource_check(cib_conn, rsc); + } + +@@ -1107,22 +1113,9 @@ main(int argc, char **argv) + start_mainloop(); + } + +- } else if ((rsc_cmd == 'C') && rsc) { +- if(do_force == FALSE) { +- rsc = uber_parent(rsc); +- } +- +- crm_debug("Re-checking the state of %s (%s requested) on %s", +- rsc->id, rsc_id, host_uname); +- crmd_replies_needed = 0; +- rc = cli_resource_delete(crmd_channel, host_uname, rsc, operation, +- interval, &data_set); +- +- if(rc == pcmk_ok && BE_QUIET == FALSE) { +- /* Now check XML_RSC_ATTR_TARGET_ROLE and XML_RSC_ATTR_MANAGED */ +- cli_resource_check(cib_conn, rsc); +- } +- ++ } else if (rsc_cmd == 'C' && just_errors) { ++ rc = cli_cleanup_all(crmd_channel, host_uname, operation, interval, ++ &data_set); + if (rc == pcmk_ok) { + start_mainloop(); + } +diff --git a/tools/crm_resource.h b/tools/crm_resource.h +index e28c9ef..0ac51f2 100644 +--- a/tools/crm_resource.h ++++ b/tools/crm_resource.h +@@ -75,10 +75,11 @@ int cli_resource_search(resource_t *rsc, const char *requested_name, + pe_working_set_t *data_set); + int cli_resource_delete(crm_ipc_t *crmd_channel, const char *host_uname, + resource_t *rsc, const char *operation, +- const char *interval, pe_working_set_t *data_set); +-int cli_resource_delete_failures(crm_ipc_t *crmd_channel, const char *host_uname, +- resource_t *rsc, const char *operation, +- const char *interval, pe_working_set_t *data_set); ++ const char *interval, bool just_failures, ++ pe_working_set_t *data_set); ++int cli_cleanup_all(crm_ipc_t *crmd_channel, const char *node_name, ++ const char *operation, const char *interval, ++ pe_working_set_t *data_set); + int cli_resource_restart(resource_t * rsc, const char *host, int timeout_ms, cib_t * cib); + int cli_resource_move(resource_t *rsc, const char *rsc_id, + const char *host_name, cib_t *cib, +diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c +index 1048636..bdebb0b 100644 +--- a/tools/crm_resource_runtime.c ++++ b/tools/crm_resource_runtime.c +@@ -532,15 +532,129 @@ rsc_fail_name(resource_t *rsc) + return is_set(rsc->flags, pe_rsc_unique)? strdup(name) : clone_strip(name); + } + ++static int ++clear_rsc_history(crm_ipc_t *crmd_channel, const char *host_uname, ++ const char *rsc_id, pe_working_set_t *data_set) ++{ ++ int rc = pcmk_ok; ++ ++ /* Erase the resource's entire LRM history in the CIB, even if we're only ++ * clearing a single operation's fail count. If we erased only entries for a ++ * single operation, we might wind up with a wrong idea of the current ++ * resource state, and we might not re-probe the resource. ++ */ ++ rc = send_lrm_rsc_op(crmd_channel, CRM_OP_LRM_DELETE, host_uname, rsc_id, ++ TRUE, data_set); ++ if (rc != pcmk_ok) { ++ return rc; ++ } ++ crmd_replies_needed++; ++ ++ crm_trace("Processing %d mainloop inputs", crmd_replies_needed); ++ while (g_main_context_iteration(NULL, FALSE)) { ++ crm_trace("Processed mainloop input, %d still remaining", ++ crmd_replies_needed); ++ } ++ ++ if (crmd_replies_needed < 0) { ++ crmd_replies_needed = 0; ++ } ++ return rc; ++} ++ ++static int ++clear_rsc_failures(crm_ipc_t *crmd_channel, const char *node_name, ++ const char *rsc_id, const char *operation, ++ const char *interval, pe_working_set_t *data_set) ++{ ++ int rc = pcmk_ok; ++ const char *failed_value = NULL; ++ const char *interval_ms_str = NULL; ++ GHashTable *rscs = NULL; ++ GHashTableIter iter; ++ ++ /* Create a hash table to use as a set of resources to clean. This lets us ++ * clean each resource only once (per node) regardless of how many failed ++ * operations it has. ++ */ ++ rscs = g_hash_table_new_full(crm_str_hash, g_str_equal, NULL, NULL); ++ ++ // Normalize interval to milliseconds for comparison to history entry ++ if (operation) { ++ interval_ms_str = crm_strdup_printf("%llu", crm_get_interval(interval)); ++ } ++ ++ for (xmlNode *xml_op = __xml_first_child(data_set->failed); xml_op != NULL; ++ xml_op = __xml_next(xml_op)) { ++ ++ // No resource specified means all resources match ++ failed_value = crm_element_value(xml_op, XML_LRM_ATTR_RSCID); ++ if (rsc_id == NULL) { ++ rsc_id = failed_value; ++ } else if (safe_str_neq(rsc_id, failed_value)) { ++ continue; ++ } ++ ++ // Host name should always have been provided by this point ++ failed_value = crm_element_value(xml_op, XML_ATTR_UNAME); ++ if (safe_str_neq(node_name, failed_value)) { ++ continue; ++ } ++ ++ // No operation specified means all operations match ++ if (operation) { ++ failed_value = crm_element_value(xml_op, XML_LRM_ATTR_TASK); ++ if (safe_str_neq(operation, failed_value)) { ++ continue; ++ } ++ ++ // Interval (if operation was specified) defaults to 0 (not all) ++ failed_value = crm_element_value(xml_op, XML_LRM_ATTR_INTERVAL); ++ if (safe_str_neq(interval_ms_str, failed_value)) { ++ continue; ++ } ++ } ++ ++ g_hash_table_add(rscs, (gpointer) rsc_id); ++ } ++ ++ g_hash_table_iter_init(&iter, rscs); ++ while (g_hash_table_iter_next(&iter, (gpointer *) &rsc_id, NULL)) { ++ crm_debug("Erasing failures of %s on %s", rsc_id, node_name); ++ rc = clear_rsc_history(crmd_channel, node_name, rsc_id, data_set); ++ if (rc != pcmk_ok) { ++ return rc; ++ } ++ } ++ g_hash_table_destroy(rscs); ++ return rc; ++} ++ ++static int ++clear_rsc_fail_attrs(resource_t *rsc, const char *operation, ++ const char *interval, node_t *node) ++{ ++ int rc = pcmk_ok; ++ int attr_options = attrd_opt_none; ++ char *rsc_name = rsc_fail_name(rsc); ++ ++ if (is_remote_node(node)) { ++ attr_options |= attrd_opt_remote; ++ } ++ rc = attrd_clear_delegate(NULL, node->details->uname, rsc_name, operation, ++ interval, NULL, attr_options); ++ free(rsc_name); ++ return rc; ++} ++ + int + cli_resource_delete(crm_ipc_t *crmd_channel, const char *host_uname, + resource_t *rsc, const char *operation, +- const char *interval, pe_working_set_t *data_set) ++ const char *interval, bool just_failures, ++ pe_working_set_t *data_set) + { + int rc = pcmk_ok; + node_t *node = NULL; +- char *rsc_name = NULL; +- int attr_options = attrd_opt_none; + + if (rsc == NULL) { + return -ENXIO; +@@ -552,8 +666,8 @@ cli_resource_delete(crm_ipc_t *crmd_channel, const char *host_uname, + resource_t *child = (resource_t *) lpc->data; + + rc = cli_resource_delete(crmd_channel, host_uname, child, operation, +- interval, data_set); +- if(rc != pcmk_ok) { ++ interval, just_failures, data_set); ++ if (rc != pcmk_ok) { + return rc; + } + } +@@ -585,8 +699,13 @@ cli_resource_delete(crm_ipc_t *crmd_channel, const char *host_uname, + node = (node_t *) lpc->data; + + if (node->details->online) { +- cli_resource_delete(crmd_channel, node->details->uname, rsc, +- operation, interval, data_set); ++ rc = cli_resource_delete(crmd_channel, node->details->uname, ++ rsc, operation, interval, ++ just_failures, data_set); ++ } ++ if (rc != pcmk_ok) { ++ g_list_free(nodes); ++ return rc; + } + } + +@@ -611,102 +730,91 @@ cli_resource_delete(crm_ipc_t *crmd_channel, const char *host_uname, + if (crmd_channel == NULL) { + printf("Dry run: skipping clean-up of %s on %s due to CIB_file\n", + rsc->id, host_uname); +- return rc; +- } ++ return pcmk_ok; ++ } + +- /* Erase the resource's entire LRM history in the CIB, even if we're only +- * clearing a single operation's fail count. If we erased only entries for a +- * single operation, we might wind up with a wrong idea of the current +- * resource state, and we might not re-probe the resource. +- */ +- rc = send_lrm_rsc_op(crmd_channel, CRM_OP_LRM_DELETE, host_uname, rsc->id, +- TRUE, data_set); ++ rc = clear_rsc_fail_attrs(rsc, operation, interval, node); + if (rc != pcmk_ok) { +- printf("Unable to clean up %s history on %s: %s\n", +- rsc->id, host_uname, pcmk_strerror(rc)); ++ printf("Unable to clean up %s failures on %s: %s\n", ++ rsc->id, host_uname, pcmk_strerror(rc)); + return rc; + } +- crmd_replies_needed++; + +- crm_trace("Processing %d mainloop inputs", crmd_replies_needed); +- while(g_main_context_iteration(NULL, FALSE)) { +- crm_trace("Processed mainloop input, %d still remaining", +- crmd_replies_needed); +- } +- +- if(crmd_replies_needed < 0) { +- crmd_replies_needed = 0; +- } +- +- rsc_name = rsc_fail_name(rsc); +- if (is_remote_node(node)) { +- attr_options |= attrd_opt_remote; ++ if (just_failures) { ++ rc = clear_rsc_failures(crmd_channel, host_uname, rsc->id, operation, ++ interval, data_set); ++ } else { ++ rc = clear_rsc_history(crmd_channel, host_uname, rsc->id, data_set); + } +- rc = attrd_clear_delegate(NULL, host_uname, rsc_name, operation, interval, +- NULL, attr_options); + if (rc != pcmk_ok) { +- printf("Cleaned %s history on %s, but unable to clear failures: %s\n", ++ printf("Cleaned %s failures on %s, but unable to clean history: %s\n", + rsc->id, host_uname, pcmk_strerror(rc)); + } else { + printf("Cleaned up %s on %s\n", rsc->id, host_uname); + } +- free(rsc_name); +- + return rc; + } + + int +-cli_resource_delete_failures(crm_ipc_t *crmd_channel, const char *host_uname, +- resource_t *rsc, const char *operation, +- const char *interval, pe_working_set_t *data_set) ++cli_cleanup_all(crm_ipc_t *crmd_channel, const char *node_name, ++ const char *operation, const char *interval, ++ pe_working_set_t *data_set) + { ++ int attr_options = attrd_opt_none; + int rc = pcmk_ok; ++ const char *display_name = node_name? node_name : "all nodes"; + +- if (rsc == NULL) { +- return -ENXIO; +- +- } else if (rsc->children) { +- GListPtr lpc = NULL; ++ if (crmd_channel == NULL) { ++ printf("Dry run: skipping clean-up of %s due to CIB_file\n", ++ display_name); ++ return pcmk_ok; ++ } ++ crmd_replies_needed = 0; + +- for (lpc = rsc->children; lpc != NULL; lpc = lpc->next) { +- resource_t *child = (resource_t *) lpc->data; ++ if (node_name) { ++ node_t *node = pe_find_node(data_set->nodes, node_name); + +- rc = cli_resource_delete_failures(crmd_channel, host_uname, child, operation, +- interval, data_set); +- if(rc != pcmk_ok) { +- return rc; +- } ++ if (node == NULL) { ++ CMD_ERR("Unknown node: %s", node_name); ++ return -ENXIO; ++ } ++ if (is_remote_node(node)) { ++ attr_options |= attrd_opt_remote; + } +- return pcmk_ok; + } + +- for (xmlNode *xml_op = __xml_first_child(data_set->failed); xml_op != NULL; +- xml_op = __xml_next(xml_op)) { +- +- const char *node = crm_element_value(xml_op, XML_ATTR_UNAME); +- const char *task = crm_element_value(xml_op, XML_LRM_ATTR_TASK); +- const char *task_interval = crm_element_value(xml_op, XML_LRM_ATTR_INTERVAL); +- const char *resource_name = crm_element_value(xml_op, XML_LRM_ATTR_RSCID); ++ rc = attrd_clear_delegate(NULL, node_name, NULL, operation, interval, ++ NULL, attr_options); ++ if (rc != pcmk_ok) { ++ printf("Unable to clean up all failures on %s: %s\n", ++ display_name, pcmk_strerror(rc)); ++ return rc; ++ } + +- if(resource_name == NULL) { +- continue; +- } else if(host_uname && safe_str_neq(host_uname, node)) { +- continue; +- } else if(rsc->id && safe_str_neq(rsc->id, resource_name)) { +- continue; +- } else if(operation && safe_str_neq(operation, task)) { +- continue; +- } else if(interval && safe_str_neq(interval, task_interval)) { +- continue; ++ if (node_name) { ++ rc = clear_rsc_failures(crmd_channel, node_name, NULL, ++ operation, interval, data_set); ++ if (rc != pcmk_ok) { ++ printf("Cleaned all resource failures on %s, but unable to clean history: %s\n", ++ node_name, pcmk_strerror(rc)); ++ return rc; + } ++ } else { ++ for (GList *iter = data_set->nodes; iter; iter = iter->next) { ++ pe_node_t *node = (pe_node_t *) iter->data; + +- crm_debug("Erasing %s failure for %s (%s detected) on %s", +- task, rsc->id, resource_name, node); +- rc = cli_resource_delete(crmd_channel, node, rsc, task, +- task_interval, data_set); ++ rc = clear_rsc_failures(crmd_channel, node->details->uname, NULL, ++ operation, interval, data_set); ++ if (rc != pcmk_ok) { ++ printf("Cleaned all resource failures on all nodes, but unable to clean history on %s: %s\n", ++ node->details->uname, pcmk_strerror(rc)); ++ return rc; ++ } ++ } + } + +- return rc; ++ printf("Cleaned up all resources on %s\n", display_name); ++ return pcmk_ok; + } + + void +-- +1.8.3.1 + diff --git a/SOURCES/004-null-filename.patch b/SOURCES/004-null-filename.patch deleted file mode 100644 index f3c3a4d..0000000 --- a/SOURCES/004-null-filename.patch +++ /dev/null @@ -1,26 +0,0 @@ -From bf5abe5a3ecc3e0e10242328d6f3a141ce3a2682 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 19 Jan 2017 10:13:50 -0600 -Subject: [PATCH] Low: libcrmcommon: ensure filename is not NULL before opening - -unlikely, but makes coverity happy ---- - lib/common/schemas.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/lib/common/schemas.c b/lib/common/schemas.c -index b8280b2..f1a0238 100644 ---- a/lib/common/schemas.c -+++ b/lib/common/schemas.c -@@ -580,6 +580,8 @@ validate_xml_verbose(xmlNode *xml_blob) - gboolean rc = FALSE; - char *filename = strdup(CRM_STATE_DIR "/cib-invalid.XXXXXX"); - -+ CRM_CHECK(filename != NULL, return FALSE); -+ - umask(S_IWGRP | S_IWOTH | S_IROTH); - fd = mkstemp(filename); - write_xml_fd(xml_blob, filename, fd, FALSE); --- -1.8.3.1 - diff --git a/SOURCES/005-cleanup.patch b/SOURCES/005-cleanup.patch new file mode 100644 index 0000000..8e568b1 --- /dev/null +++ b/SOURCES/005-cleanup.patch @@ -0,0 +1,62 @@ +From a2305469012b5fe3713427412c12459085ed61a1 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Tue, 12 Dec 2017 10:02:22 -0600 +Subject: [PATCH] Fix: tools: crm_resource --cleanup with no resource specified + +7a813755 failed to completely fix --cleanup without --resource +--- + tools/crm_resource_runtime.c | 20 ++++++++++++-------- + 1 file changed, 12 insertions(+), 8 deletions(-) + +diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c +index bdebb0b..79f8b98 100644 +--- a/tools/crm_resource_runtime.c ++++ b/tools/crm_resource_runtime.c +@@ -569,6 +569,7 @@ clear_rsc_failures(crm_ipc_t *crmd_channel, const char *node_name, + { + int rc = pcmk_ok; + const char *failed_value = NULL; ++ const char *failed_id = NULL; + const char *interval_ms_str = NULL; + GHashTable *rscs = NULL; + GHashTableIter iter; +@@ -587,11 +588,14 @@ clear_rsc_failures(crm_ipc_t *crmd_channel, const char *node_name, + for (xmlNode *xml_op = __xml_first_child(data_set->failed); xml_op != NULL; + xml_op = __xml_next(xml_op)) { + ++ failed_id = crm_element_value(xml_op, XML_LRM_ATTR_RSCID); ++ if (failed_id == NULL) { ++ // Malformed history entry, should never happen ++ continue; ++ } ++ + // No resource specified means all resources match +- failed_value = crm_element_value(xml_op, XML_LRM_ATTR_RSCID); +- if (rsc_id == NULL) { +- rsc_id = failed_value; +- } else if (safe_str_neq(rsc_id, failed_value)) { ++ if (rsc_id && safe_str_neq(rsc_id, failed_id)) { + continue; + } + +@@ -615,13 +619,13 @@ clear_rsc_failures(crm_ipc_t *crmd_channel, const char *node_name, + } + } + +- g_hash_table_add(rscs, (gpointer) rsc_id); ++ g_hash_table_add(rscs, (gpointer) failed_id); + } + + g_hash_table_iter_init(&iter, rscs); +- while (g_hash_table_iter_next(&iter, (gpointer *) &rsc_id, NULL)) { +- crm_debug("Erasing failures of %s on %s", rsc_id, node_name); +- rc = clear_rsc_history(crmd_channel, node_name, rsc_id, data_set); ++ while (g_hash_table_iter_next(&iter, (gpointer *) &failed_id, NULL)) { ++ crm_debug("Erasing failures of %s on %s", failed_id, node_name); ++ rc = clear_rsc_history(crmd_channel, node_name, failed_id, data_set); + if (rc != pcmk_ok) { + return rc; + } +-- +1.8.3.1 + diff --git a/SOURCES/005-feature-set.patch b/SOURCES/005-feature-set.patch deleted file mode 100644 index 2eae798..0000000 --- a/SOURCES/005-feature-set.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 442450db913b3d470b71bd6864e00c2671ec0f5c Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 3 Nov 2016 10:43:22 -0500 -Subject: [PATCH] Med: crmd: bump feature set - -for versioned resource parameters ---- - include/crm/crm.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/crm/crm.h b/include/crm/crm.h -index 08853a3..9628c52 100644 ---- a/include/crm/crm.h -+++ b/include/crm/crm.h -@@ -33,7 +33,7 @@ - - # include - --# define CRM_FEATURE_SET "3.0.11" -+# define CRM_FEATURE_SET "3.0.12" - - # define EOS '\0' - # define DIMOF(a) ((int) (sizeof(a)/sizeof(a[0])) ) --- -1.8.3.1 - diff --git a/SOURCES/006-leaks.patch b/SOURCES/006-leaks.patch new file mode 100644 index 0000000..ab9fb37 --- /dev/null +++ b/SOURCES/006-leaks.patch @@ -0,0 +1,296 @@ +From 5042a3b19a2f2bfa3d09b4d1029f53e6b674918b Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Thu, 14 Dec 2017 09:16:47 -0600 +Subject: [PATCH 1/5] Test: CTS: remove dead code + +makes static analysis happy +--- + cts/CTSaudits.py | 1 - + cts/environment.py | 1 - + cts/remote.py | 5 +---- + cts/watcher.py | 6 +++--- + 4 files changed, 4 insertions(+), 9 deletions(-) + +diff --git a/cts/CTSaudits.py b/cts/CTSaudits.py +index aff897f..d9fbeb9 100755 +--- a/cts/CTSaudits.py ++++ b/cts/CTSaudits.py +@@ -190,7 +190,6 @@ class DiskAudit(ClusterAudit): + + if answer and answer == "n": + raise ValueError("Disk full on %s" % (node)) +- ret = 0 + + elif remaining_mb < 100 or used_percent > 90: + self.CM.log("WARN: Low on log disk space (%dMB) on %s" % (remaining_mb, node)) +diff --git a/cts/environment.py b/cts/environment.py +index 75a18c8..6c4831c 100644 +--- a/cts/environment.py ++++ b/cts/environment.py +@@ -182,7 +182,6 @@ class Environment: + + else: + raise ValueError("Unknown stack: "+name) +- sys.exit(1) + + def get_stack_short(self): + # Create the Cluster Manager object +diff --git a/cts/remote.py b/cts/remote.py +index 8c36918..7cef40e 100644 +--- a/cts/remote.py ++++ b/cts/remote.py +@@ -220,10 +220,7 @@ class RemoteExec: + + if not silent: + for err in errors: +- if stdout == 3: +- result.append("error: "+err) +- else: +- self.debug("cmd: stderr: %s" % err) ++ self.debug("cmd: stderr: %s" % err) + + if stdout == 0: + if not silent and result: +diff --git a/cts/watcher.py b/cts/watcher.py +index de032f7..42685ad 100644 +--- a/cts/watcher.py ++++ b/cts/watcher.py +@@ -337,19 +337,19 @@ class LogWatcher(RemoteExec): + self.kind = kind + else: + raise +- self.kind = self.Env["LogWatcher"] ++ #self.kind = self.Env["LogWatcher"] + + if log: + self.filename = log + else: + raise +- self.filename = self.Env["LogFileName"] ++ #self.filename = self.Env["LogFileName"] + + if hosts: + self.hosts = hosts + else: + raise +- self.hosts = self.Env["nodes"] ++ #self.hosts = self.Env["nodes"] + + if trace_lw: + self.debug_level = 3 +-- +1.8.3.1 + + +From 570929eba229558b1a6900ffc54e4d5ee4150f74 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Thu, 14 Dec 2017 09:23:03 -0600 +Subject: [PATCH 2/5] Refactor: pengine: validate more function arguments + +not an issue with current code, but makes static analysis happy +--- + pengine/clone.c | 3 ++- + pengine/utilization.c | 1 + + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/pengine/clone.c b/pengine/clone.c +index 99bac7e..e81dbc8 100644 +--- a/pengine/clone.c ++++ b/pengine/clone.c +@@ -955,6 +955,7 @@ is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e + node_t *node = NULL; + enum rsc_role_e next_role = child_rsc->fns->state(child_rsc, current); + ++ CRM_CHECK(child_rsc && local_node, return FALSE); + if (is_set_recursive(child_rsc, pe_rsc_block, TRUE) == FALSE) { + /* We only want instances that haven't failed */ + node = child_rsc->fns->location(child_rsc, NULL, current); +@@ -965,7 +966,7 @@ is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e + return FALSE; + } + +- if (node && local_node && node->details == local_node->details) { ++ if (node && (node->details == local_node->details)) { + return TRUE; + + } else if (node) { +diff --git a/pengine/utilization.c b/pengine/utilization.c +index f42c85d..05f8d78 100644 +--- a/pengine/utilization.c ++++ b/pengine/utilization.c +@@ -341,6 +341,7 @@ process_utilization(resource_t * rsc, node_t ** prefer, pe_working_set_t * data_ + { + int alloc_details = scores_log_level + 1; + ++ CRM_CHECK(rsc && prefer && data_set, return); + if (safe_str_neq(data_set->placement_strategy, "default")) { + GHashTableIter iter; + GListPtr colocated_rscs = NULL; +-- +1.8.3.1 + + +From db2fdc9a452fef11d397e25202fde8ba1bad4cd3 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Thu, 14 Dec 2017 10:36:20 -0600 +Subject: [PATCH 3/5] Low: libcrmservice: avoid memory leak on DBus error + +--- + lib/services/dbus.c | 47 +++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 37 insertions(+), 10 deletions(-) + +diff --git a/lib/services/dbus.c b/lib/services/dbus.c +index fb3e867..58df927 100644 +--- a/lib/services/dbus.c ++++ b/lib/services/dbus.c +@@ -23,6 +23,15 @@ struct db_getall_data { + void (*callback)(const char *name, const char *value, void *userdata); + }; + ++static void ++free_db_getall_data(struct db_getall_data *data) ++{ ++ free(data->target); ++ free(data->object); ++ free(data->name); ++ free(data); ++} ++ + DBusConnection * + pcmk_dbus_connect(void) + { +@@ -196,6 +205,20 @@ pcmk_dbus_send_recv(DBusMessage *msg, DBusConnection *connection, + return reply; + } + ++/*! ++ * \internal ++ * \brief Send a DBus message with a callback for the reply ++ * ++ * \param[in] msg DBus message to send ++ * \param[in,out] connection DBus connection to send on ++ * \param[in] done Function to call when pending call completes ++ * \param[in] user_data Data to pass to done callback ++ * ++ * \return Handle for reply on success, NULL on error ++ * \note The caller can assume that the done callback is called always and ++ * only when the return value is non-NULL. (This allows the caller to ++ * know where it should free dynamically allocated user_data.) ++ */ + DBusPendingCall * + pcmk_dbus_send(DBusMessage *msg, DBusConnection *connection, + void(*done)(DBusPendingCall *pending, void *user_data), +@@ -359,11 +382,7 @@ pcmk_dbus_lookup_result(DBusMessage *reply, struct db_getall_data *data) + } + + cleanup: +- free(data->target); +- free(data->object); +- free(data->name); +- free(data); +- ++ free_db_getall_data(data); + return output; + } + +@@ -424,11 +443,19 @@ pcmk_dbus_get_property(DBusConnection *connection, const char *target, + query_data->name = strdup(name); + } + +- if(query_data->callback) { +- DBusPendingCall* _pending; +- _pending = pcmk_dbus_send(msg, connection, pcmk_dbus_lookup_cb, query_data, timeout); +- if (pending != NULL) { +- *pending = _pending; ++ if (query_data->callback) { ++ DBusPendingCall *local_pending; ++ ++ local_pending = pcmk_dbus_send(msg, connection, pcmk_dbus_lookup_cb, ++ query_data, timeout); ++ if (local_pending == NULL) { ++ // pcmk_dbus_lookup_cb() was not called in this case ++ free_db_getall_data(query_data); ++ query_data = NULL; ++ } ++ ++ if (pending) { ++ *pending = local_pending; + } + + } else { +-- +1.8.3.1 + + +From 4a774710ec7269ec3a1427ae09fc6ca435c66e92 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Thu, 14 Dec 2017 12:44:04 -0600 +Subject: [PATCH 4/5] Build: systemd unit files: restore DBus dependency + +06e2e26 removed the unit files' DBus dependency on the advice of a +systemd developer, but it is necessary +--- + lrmd/pacemaker_remote.service.in | 3 +++ + mcp/pacemaker.service.in | 4 ++++ + 2 files changed, 7 insertions(+) + +diff --git a/lrmd/pacemaker_remote.service.in b/lrmd/pacemaker_remote.service.in +index d5717f6..1c596e1 100644 +--- a/lrmd/pacemaker_remote.service.in ++++ b/lrmd/pacemaker_remote.service.in +@@ -2,8 +2,11 @@ + Description=Pacemaker Remote Service + Documentation=man:pacemaker_remoted http://clusterlabs.org/doc/en-US/Pacemaker/1.1-pcs/html/Pacemaker_Remote/index.html + ++# See main pacemaker unit file for descriptions of why these are needed + After=network.target + After=time-sync.target ++After=dbus.service ++Wants=dbus.service + After=resource-agents-deps.target + Wants=resource-agents-deps.target + After=syslog.service +diff --git a/mcp/pacemaker.service.in b/mcp/pacemaker.service.in +index 516de0f..e532ea2 100644 +--- a/mcp/pacemaker.service.in ++++ b/mcp/pacemaker.service.in +@@ -14,6 +14,10 @@ After=network.target + # and failure timestamps, so wait until it's done. + After=time-sync.target + ++# Managing systemd resources requires DBus. ++After=dbus.service ++Wants=dbus.service ++ + # Some OCF resources may have dependencies that aren't managed by the cluster; + # these must be started before Pacemaker and stopped after it. The + # resource-agents package provides this target, which lets system adminstrators +-- +1.8.3.1 + + +From 69de188a7263ba66afa0e8a3a46a64f07a7facca Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Thu, 14 Dec 2017 16:05:12 -0600 +Subject: [PATCH 5/5] Low: attrd: avoid small memory leak at start-up + +introduced by 3518544 +--- + attrd/commands.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/attrd/commands.c b/attrd/commands.c +index 0a20b26..20bd82f 100644 +--- a/attrd/commands.c ++++ b/attrd/commands.c +@@ -539,6 +539,7 @@ attrd_broadcast_protocol() + crm_xml_add(attrd_op, F_ATTRD_VALUE, ATTRD_PROTOCOL_VERSION); + crm_xml_add_int(attrd_op, F_ATTRD_IS_PRIVATE, 1); + attrd_client_update(attrd_op); ++ free_xml(attrd_op); + } + + void +-- +1.8.3.1 + diff --git a/SOURCES/006-xml-stream.patch b/SOURCES/006-xml-stream.patch deleted file mode 100644 index 7f2d7d0..0000000 --- a/SOURCES/006-xml-stream.patch +++ /dev/null @@ -1,72 +0,0 @@ -From ffba43cf28cecf1860242dc7cce2e14ba4288a10 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ferenc=20W=C3=A1gner?= -Date: Mon, 21 Nov 2016 15:20:35 +0100 -Subject: [PATCH 1/2] crm_perror appends a colon to its fmt argument - ---- - lib/common/strings.c | 2 +- - lib/common/xml.c | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/lib/common/strings.c b/lib/common/strings.c -index 67cee12..298a237 100644 ---- a/lib/common/strings.c -+++ b/lib/common/strings.c -@@ -109,7 +109,7 @@ crm_int_helper(const char *text, char **end_text) - crm_err("Conversion of %s was clipped: %lld", text, result); - - } else if (errno != 0) { -- crm_perror(LOG_ERR, "Conversion of %s failed:", text); -+ crm_perror(LOG_ERR, "Conversion of %s failed", text); - } - - if (local_end_text != NULL && local_end_text[0] != '\0') { -diff --git a/lib/common/xml.c b/lib/common/xml.c -index a6a6d0a..3bdc519 100644 ---- a/lib/common/xml.c -+++ b/lib/common/xml.c -@@ -3022,12 +3022,12 @@ write_xml_stream(xmlNode * xml_node, const char *filename, FILE * stream, gboole - bail: - - if (fflush(stream) != 0) { -- crm_perror(LOG_ERR, "fflush for %s failed:", filename); -+ crm_perror(LOG_ERR, "fflush for %s failed", filename); - res = -1; - } - - if (fsync(fileno(stream)) < 0) { -- crm_perror(LOG_ERR, "fsync for %s failed:", filename); -+ crm_perror(LOG_ERR, "fsync for %s failed", filename); - res = -1; - } - --- -1.8.3.1 - - -From 8c4d81a2a8fb9fc7db9d73a0482e81c64368ad28 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ferenc=20W=C3=A1gner?= -Date: Mon, 21 Nov 2016 15:25:31 +0100 -Subject: [PATCH 2/2] Don't report error if the output file isn't syncable - ---- - lib/common/xml.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/lib/common/xml.c b/lib/common/xml.c -index 3bdc519..65237c8 100644 ---- a/lib/common/xml.c -+++ b/lib/common/xml.c -@@ -3026,7 +3026,8 @@ write_xml_stream(xmlNode * xml_node, const char *filename, FILE * stream, gboole - res = -1; - } - -- if (fsync(fileno(stream)) < 0) { -+ /* Don't report error if the file does not support synchronization */ -+ if (fsync(fileno(stream)) < 0 && errno != EROFS && errno != EINVAL) { - crm_perror(LOG_ERR, "fsync for %s failed", filename); - res = -1; - } --- -1.8.3.1 - diff --git a/SOURCES/007-bundles.patch b/SOURCES/007-bundles.patch new file mode 100644 index 0000000..28ea0ef --- /dev/null +++ b/SOURCES/007-bundles.patch @@ -0,0 +1,92 @@ +From 2ce5fc46463ff7b9a5a2c68602d8c5b35a7c37d7 Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Tue, 16 Jan 2018 19:05:31 +1100 +Subject: [PATCH 1/2] Bug rhbz#1519812 - Prevent notify actions from causing + --wait to hang + +--- + tools/crm_resource_runtime.c | 21 ++++++++++++++++----- + 1 file changed, 16 insertions(+), 5 deletions(-) + +diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c +index 22bdebf..189d1b3 100644 +--- a/tools/crm_resource_runtime.c ++++ b/tools/crm_resource_runtime.c +@@ -1343,10 +1343,19 @@ done: + return rc; + } + +-#define action_is_pending(action) \ +- ((is_set((action)->flags, pe_action_optional) == FALSE) \ +- && (is_set((action)->flags, pe_action_runnable) == TRUE) \ +- && (is_set((action)->flags, pe_action_pseudo) == FALSE)) ++static inline int action_is_pending(action_t *action) ++{ ++ if(is_set(action->flags, pe_action_optional)) { ++ return FALSE; ++ } else if(is_set(action->flags, pe_action_runnable) == FALSE) { ++ return FALSE; ++ } else if(is_set(action->flags, pe_action_pseudo)) { ++ return FALSE; ++ } else if(safe_str_eq("notify", action->task)) { ++ return FALSE; ++ } ++ return TRUE; ++} + + /*! + * \internal +@@ -1362,7 +1371,9 @@ actions_are_pending(GListPtr actions) + GListPtr action; + + for (action = actions; action != NULL; action = action->next) { +- if (action_is_pending((action_t *) action->data)) { ++ action_t *a = (action_t *)action->data; ++ if (action_is_pending(a)) { ++ crm_notice("Waiting for %s (flags=0x%.8x)", a->uuid, a->flags); + return TRUE; + } + } +-- +1.8.3.1 + + +From ef15ea4f687e7f9ba1f8a99548ee1e0bf9d4b50a Mon Sep 17 00:00:00 2001 +From: Andrew Beekhof +Date: Mon, 22 Jan 2018 21:18:46 +1100 +Subject: [PATCH 2/2] Fix: rhbz#1527072 - Correctly observe colocation + constraints with bundles in the Master role + +--- + pengine/container.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/pengine/container.c b/pengine/container.c +index f5d916c..15d094d 100644 +--- a/pengine/container.c ++++ b/pengine/container.c +@@ -486,10 +486,18 @@ container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc, rsc_colocatio + } else { + node_t *chosen = tuple->docker->fns->location(tuple->docker, NULL, FALSE); + +- if (chosen != NULL && is_set_recursive(tuple->docker, pe_rsc_block, TRUE) == FALSE) { +- pe_rsc_trace(rsc, "Allowing %s: %s %d", constraint->id, chosen->details->uname, chosen->weight); +- allocated_rhs = g_list_prepend(allocated_rhs, chosen); ++ if (chosen == NULL || is_set_recursive(tuple->docker, pe_rsc_block, TRUE)) { ++ continue; ++ } ++ if(constraint->role_rh >= RSC_ROLE_MASTER && tuple->child == NULL) { ++ continue; + } ++ if(constraint->role_rh >= RSC_ROLE_MASTER && tuple->child->next_role < RSC_ROLE_MASTER) { ++ continue; ++ } ++ ++ pe_rsc_trace(rsc, "Allowing %s: %s %d", constraint->id, chosen->details->uname, chosen->weight); ++ allocated_rhs = g_list_prepend(allocated_rhs, chosen); + } + } + +-- +1.8.3.1 + diff --git a/SOURCES/007-schema.patch b/SOURCES/007-schema.patch deleted file mode 100644 index f64e2e9..0000000 --- a/SOURCES/007-schema.patch +++ /dev/null @@ -1,481 +0,0 @@ -From e64661a0a650f48939d700e065e238524042d05b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Kristoffer=20Gr=C3=B6nlund?= -Date: Sun, 20 Nov 2016 05:44:47 +0100 -Subject: [PATCH 1/2] Low: rng: Create resources-2.7.rng to update template - class validation - -Breaks the class/provider attribute definitions for primitive and -template out into a new define, which will help prevent one or the -other getting out of sync. - -Also fixes the template class list being outdated. ---- - xml/resources-2.7.rng | 218 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 218 insertions(+) - create mode 100644 xml/resources-2.7.rng - -diff --git a/xml/resources-2.7.rng b/xml/resources-2.7.rng -new file mode 100644 -index 0000000..355382b ---- /dev/null -+++ b/xml/resources-2.7.rng -@@ -0,0 +1,218 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ Stopped -+ Started -+ Slave -+ Master -+ -+ -+ -+ -+ -+ -+ nothing -+ quorum -+ fencing -+ unfencing -+ -+ -+ -+ -+ -+ -+ ignore -+ block -+ stop -+ restart -+ standby -+ fence -+ restart-container -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ocf -+ -+ -+ -+ -+ lsb -+ heartbeat -+ stonith -+ upstart -+ service -+ systemd -+ nagios -+ -+ -+ -+ -+ --- -1.8.3.1 - - -From 1ec756ce373e1ec36a6de7c2c2a9a2d599cbbe98 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Wed, 23 Nov 2016 19:46:34 +0100 -Subject: [PATCH 2/2] Test: tools: make validity tests better adapting to new - schemas - -We only want to suppress boring repeated parts from the diff when -new schema emerges, but still want to be alerted about the new lines -arising from the presence of such new schema -- that's a feedback -loop that it is indeed being taken into account (and updating the -regression tests to reconcile this minimalistic diff is a bearable -duty at that opportunity). - -In one go, also reflect latest addition (as of previous commit) to -the line of schemas -- pacemaker-2.7. ---- - tools/regression.sh | 3 +- - tools/regression.validity.exp | 84 +++++++++++++++++++++++++------------------ - 2 files changed, 51 insertions(+), 36 deletions(-) - -diff --git a/tools/regression.sh b/tools/regression.sh -index f8def43..47bff43 100755 ---- a/tools/regression.sh -+++ b/tools/regression.sh -@@ -754,7 +754,8 @@ for t in $tests; do - -e 's/.*error: unpack_resources:/error: unpack_resources:/g'\ - -e 's/ last-rc-change=\"[0-9]*\"//'\ - -e 's|^/tmp/[0-9][0-9]*\.||'\ -- -e 's/^Entity: line [0-9][0-9]*: //' $test_home/regression.$t.out -+ -e 's/^Entity: line [0-9][0-9]*: //'\ -+ -e 's/\(validation ([0-9][0-9]* of \)[0-9][0-9]*\().*\)/\1X\2/' $test_home/regression.$t.out - - if [ $do_save = 1 ]; then - cp $test_home/regression.$t.out $test_home/regression.$t.exp -diff --git a/tools/regression.validity.exp b/tools/regression.validity.exp -index 39dbf92..827b660 100644 ---- a/tools/regression.validity.exp -+++ b/tools/regression.validity.exp -@@ -22,43 +22,47 @@ Call failed: Update does not conform to the configured schema - =#=#=#= End test: Try to make resulting CIB invalid (enum violation) - Update does not conform to the configured schema (203) =#=#=#= - * Passed: cibadmin - Try to make resulting CIB invalid (enum violation) - =#=#=#= Begin test: Run crm_simulate with invalid CIB (enum violation) =#=#=#= --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.2' validation (4 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.2' validation (4 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - ( schemas.c:760 ) trace: update_validation: pacemaker-1.2 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.3' validation (5 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.3' validation (5 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - ( schemas.c:760 ) trace: update_validation: pacemaker-1.3 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.0' validation (6 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.0' validation (6 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - ( schemas.c:760 ) trace: update_validation: pacemaker-2.0 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.1' validation (7 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.1' validation (7 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - ( schemas.c:760 ) trace: update_validation: pacemaker-2.1 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.2' validation (8 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.2' validation (8 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - ( schemas.c:760 ) trace: update_validation: pacemaker-2.2 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.3' validation (9 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.3' validation (9 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - ( schemas.c:760 ) trace: update_validation: pacemaker-2.3 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.4' validation (10 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.4' validation (10 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - ( schemas.c:760 ) trace: update_validation: pacemaker-2.4 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.5' validation (11 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.5' validation (11 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - ( schemas.c:760 ) trace: update_validation: pacemaker-2.5 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.6' validation (12 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.6' validation (12 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - ( schemas.c:760 ) trace: update_validation: pacemaker-2.6 validation failed --Your current configuration pacemaker-1.2 could not validate with any schema in range [pacemaker-1.2, pacemaker-2.6], cannot upgrade to pacemaker-2.0. -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.7' validation (13 of X) -+element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order -+element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order -+( schemas.c:760 ) trace: update_validation: pacemaker-2.7 validation failed -+Your current configuration pacemaker-1.2 could not validate with any schema in range [pacemaker-1.2, pacemaker-2.7], cannot upgrade to pacemaker-2.0. - =#=#=#= End test: Run crm_simulate with invalid CIB (enum violation) - Required key not available (126) =#=#=#= - * Passed: crm_simulate - Run crm_simulate with invalid CIB (enum violation) - =#=#=#= Begin test: Try to make resulting CIB invalid (unrecognized validate-with) =#=#=#= -@@ -82,54 +86,57 @@ Call failed: Update does not conform to the configured schema - * Passed: cibadmin - Try to make resulting CIB invalid (unrecognized validate-with) - =#=#=#= Begin test: Run crm_simulate with invalid CIB (unrecognized validate-with) =#=#=#= - ( schemas.c:736 ) debug: update_validation: Unknown validation type --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-0.6' validation (0 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-0.6' validation (0 of X) - element rsc_order: validity error : Element rsc_order does not carry attribute to - element rsc_order: validity error : Element rsc_order does not carry attribute from - element rsc_order: validity error : No declaration for attribute first of element rsc_order - element rsc_order: validity error : No declaration for attribute first-action of element rsc_order - element rsc_order: validity error : No declaration for attribute then of element rsc_order - ( schemas.c:760 ) trace: update_validation: pacemaker-0.6 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'transitional-0.6' validation (1 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'transitional-0.6' validation (1 of X) - element rsc_order: validity error : Element rsc_order does not carry attribute to - element rsc_order: validity error : Element rsc_order does not carry attribute from - element rsc_order: validity error : No declaration for attribute first of element rsc_order - element rsc_order: validity error : No declaration for attribute first-action of element rsc_order - element rsc_order: validity error : No declaration for attribute then of element rsc_order - ( schemas.c:760 ) trace: update_validation: transitional-0.6 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-0.7' validation (2 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-0.7' validation (2 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib - ( schemas.c:760 ) trace: update_validation: pacemaker-0.7 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.0' validation (3 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.0' validation (3 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib - ( schemas.c:760 ) trace: update_validation: pacemaker-1.0 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.2' validation (4 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.2' validation (4 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib - ( schemas.c:760 ) trace: update_validation: pacemaker-1.2 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.3' validation (5 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.3' validation (5 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib - ( schemas.c:760 ) trace: update_validation: pacemaker-1.3 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.0' validation (6 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.0' validation (6 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib - ( schemas.c:760 ) trace: update_validation: pacemaker-2.0 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.1' validation (7 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.1' validation (7 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib - ( schemas.c:760 ) trace: update_validation: pacemaker-2.1 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.2' validation (8 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.2' validation (8 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib - ( schemas.c:760 ) trace: update_validation: pacemaker-2.2 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.3' validation (9 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.3' validation (9 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib - ( schemas.c:760 ) trace: update_validation: pacemaker-2.3 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.4' validation (10 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.4' validation (10 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib - ( schemas.c:760 ) trace: update_validation: pacemaker-2.4 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.5' validation (11 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.5' validation (11 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib - ( schemas.c:760 ) trace: update_validation: pacemaker-2.5 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.6' validation (12 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.6' validation (12 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib - ( schemas.c:760 ) trace: update_validation: pacemaker-2.6 validation failed --Your current configuration pacemaker-9999.0 could not validate with any schema in range [unknown, pacemaker-2.6], cannot upgrade to pacemaker-2.0. -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.7' validation (13 of X) -+element cib: Relax-NG validity error : Invalid attribute validate-with for element cib -+( schemas.c:760 ) trace: update_validation: pacemaker-2.7 validation failed -+Your current configuration pacemaker-9999.0 could not validate with any schema in range [unknown, pacemaker-2.7], cannot upgrade to pacemaker-2.0. - =#=#=#= End test: Run crm_simulate with invalid CIB (unrecognized validate-with) - Required key not available (126) =#=#=#= - * Passed: crm_simulate - Run crm_simulate with invalid CIB (unrecognized validate-with) - =#=#=#= Begin test: Try to make resulting CIB invalid, but possibly recoverable (valid with X.Y+1) =#=#=#= -@@ -152,33 +159,36 @@ Call failed: Update does not conform to the configured schema - =#=#=#= End test: Try to make resulting CIB invalid, but possibly recoverable (valid with X.Y+1) - Update does not conform to the configured schema (203) =#=#=#= - * Passed: cibadmin - Try to make resulting CIB invalid, but possibly recoverable (valid with X.Y+1) - =#=#=#= Begin test: Run crm_simulate with invalid, but possibly recoverable CIB (valid with X.Y+1) =#=#=#= --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.2' validation (4 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.2' validation (4 of X) - element tags: Relax-NG validity error : Element configuration has extra content: tags - ( schemas.c:760 ) trace: update_validation: pacemaker-1.2 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.3' validation (5 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.3' validation (5 of X) - ( schemas.c:804 ) debug: update_validation: Upgrading pacemaker-1.3-style configuration to pacemaker-2.0 with upgrade-1.3.xsl - ( schemas.c:816 ) info: update_validation: Transformation upgrade-1.3.xsl successful --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.0' validation (6 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.0' validation (6 of X) - ( schemas.c:797 ) debug: update_validation: pacemaker-2.0-style configuration is also valid for pacemaker-2.1 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.1' validation (7 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.1' validation (7 of X) - ( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.1 - ( schemas.c:797 ) debug: update_validation: pacemaker-2.1-style configuration is also valid for pacemaker-2.2 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.2' validation (8 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.2' validation (8 of X) - ( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.2 - ( schemas.c:797 ) debug: update_validation: pacemaker-2.2-style configuration is also valid for pacemaker-2.3 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.3' validation (9 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.3' validation (9 of X) - ( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.3 - ( schemas.c:797 ) debug: update_validation: pacemaker-2.3-style configuration is also valid for pacemaker-2.4 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.4' validation (10 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.4' validation (10 of X) - ( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.4 - ( schemas.c:797 ) debug: update_validation: pacemaker-2.4-style configuration is also valid for pacemaker-2.5 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.5' validation (11 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.5' validation (11 of X) - ( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.5 - ( schemas.c:797 ) debug: update_validation: pacemaker-2.5-style configuration is also valid for pacemaker-2.6 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.6' validation (12 of 12) -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.6' validation (12 of X) - ( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.6 --( schemas.c:787 ) trace: update_validation: Stopping at pacemaker-2.6 --( schemas.c:843 ) info: update_validation: Transformed the configuration from pacemaker-1.2 to pacemaker-2.6 -+( schemas.c:797 ) debug: update_validation: pacemaker-2.6-style configuration is also valid for pacemaker-2.7 -+( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.7' validation (13 of X) -+( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.7 -+( schemas.c:787 ) trace: update_validation: Stopping at pacemaker-2.7 -+( schemas.c:843 ) info: update_validation: Transformed the configuration from pacemaker-1.2 to pacemaker-2.7 - error: unpack_resources: Resource start-up disabled since no STONITH resources have been defined - error: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option - error: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity -@@ -302,6 +312,8 @@ element rsc_order: Relax-NG validity error : Invalid attribute first-action for - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order -+element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order -+element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - =#=#=#= Current cib after: Make resulting CIB invalid, and without validate-with attribute =#=#=#= - - -@@ -357,6 +369,8 @@ bad-1.2.xml:10: element rsc_order: Relax-NG validity error : Invalid attribute f - bad-1.2.xml:10: element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - bad-1.2.xml:10: element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - bad-1.2.xml:10: element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order -+bad-1.2.xml:10: element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order -+bad-1.2.xml:10: element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - error: unpack_resources: Resource start-up disabled since no STONITH resources have been defined - error: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option - error: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity --- -1.8.3.1 - diff --git a/SOURCES/008-quorum.patch b/SOURCES/008-quorum.patch new file mode 100644 index 0000000..0d2dece --- /dev/null +++ b/SOURCES/008-quorum.patch @@ -0,0 +1,145 @@ +From 7c322f4b9a7f36eba1d3ca74d7dd8fe1093ca7bd Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Mon, 22 Jan 2018 11:38:22 -0600 +Subject: [PATCH] Low: crmd: quorum gain should always cause new transition + +0b689055 aborted the transition on quorum loss, but quorum can also be acquired +without triggering a new transition, if corosync gives quorum without a node +joining (e.g. forced via corosync-cmapctl, or perhaps via heuristics). + +This aborts the transition when quorum is gained, but only after a 5-second +delay, if the transition has not been aborted in that time. This avoids an +unnecessary abort in the vast majority of cases where an abort is already done, +and it allows some time for all nodes to connect when quorum is gained, rather +than immediately fencing remaining unseen nodes. +--- + crmd/membership.c | 22 +++++++++++++++++----- + crmd/te_utils.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- + crmd/tengine.h | 2 ++ + 3 files changed, 65 insertions(+), 7 deletions(-) + +diff --git a/crmd/membership.c b/crmd/membership.c +index c36dbed..4f2fa8a 100644 +--- a/crmd/membership.c ++++ b/crmd/membership.c +@@ -438,12 +438,24 @@ crm_update_quorum(gboolean quorum, gboolean force_update) + fsa_register_cib_callback(call_id, FALSE, NULL, cib_quorum_update_complete); + free_xml(update); + +- /* If a node not running any resources is cleanly shut down and drops us +- * below quorum, we won't necessarily abort the transition, so abort it +- * here to be safe. ++ /* Quorum changes usually cause a new transition via other activity: ++ * quorum gained via a node joining will abort via the node join, ++ * and quorum lost via a node leaving will usually abort via resource ++ * activity and/or fencing. ++ * ++ * However, it is possible that nothing else causes a transition (e.g. ++ * someone forces quorum via corosync-cmaptcl, or quorum is lost due to ++ * a node in standby shutting down cleanly), so here ensure a new ++ * transition is triggered. + */ +- if (quorum == FALSE) { +- abort_transition(INFINITY, tg_restart, "Quorum loss", NULL); ++ if (quorum) { ++ /* If quorum was gained, abort after a short delay, in case multiple ++ * nodes are joining around the same time, so the one that brings us ++ * to quorum doesn't cause all the remaining ones to be fenced. ++ */ ++ abort_after_delay(INFINITY, tg_restart, "Quorum gained", 5000); ++ } else { ++ abort_transition(INFINITY, tg_restart, "Quorum lost", NULL); + } + } + fsa_has_quorum = quorum; +diff --git a/crmd/te_utils.c b/crmd/te_utils.c +index dab02d3..8d105dc 100644 +--- a/crmd/te_utils.c ++++ b/crmd/te_utils.c +@@ -530,6 +530,46 @@ trigger_graph_processing(const char *fn, int line) + mainloop_set_trigger(transition_trigger); + } + ++static struct abort_timer_s { ++ bool aborted; ++ guint id; ++ int priority; ++ enum transition_action action; ++ const char *text; ++} abort_timer = { 0, }; ++ ++static gboolean ++abort_timer_popped(gpointer data) ++{ ++ if (abort_timer.aborted == FALSE) { ++ abort_transition(abort_timer.priority, abort_timer.action, ++ abort_timer.text, NULL); ++ } ++ abort_timer.id = 0; ++ return FALSE; // do not immediately reschedule timer ++} ++ ++/*! ++ * \internal ++ * \brief Abort transition after delay, if not already aborted in that time ++ * ++ * \param[in] abort_text Must be literal string ++ */ ++void ++abort_after_delay(int abort_priority, enum transition_action abort_action, ++ const char *abort_text, guint delay_ms) ++{ ++ if (abort_timer.id) { ++ // Timer already in progress, stop and reschedule ++ g_source_remove(abort_timer.id); ++ } ++ abort_timer.aborted = FALSE; ++ abort_timer.priority = abort_priority; ++ abort_timer.action = abort_action; ++ abort_timer.text = abort_text; ++ abort_timer.id = g_timeout_add(delay_ms, abort_timer_popped, NULL); ++} ++ + void + abort_transition_graph(int abort_priority, enum transition_action abort_action, + const char *abort_text, xmlNode * reason, const char *fn, int line) +@@ -557,6 +597,8 @@ abort_transition_graph(int abort_priority, enum transition_action abort_action, + break; + } + ++ abort_timer.aborted = TRUE; ++ + /* Make sure any queued calculations are discarded ASAP */ + free(fsa_pe_ref); + fsa_pe_ref = NULL; +@@ -660,10 +702,12 @@ abort_transition_graph(int abort_priority, enum transition_action abort_action, + (transition_graph->complete? "true" : "false")); + + } else { ++ const char *id = ID(reason); ++ + do_crm_log(level, "Transition aborted by %s.%s '%s': %s " + CRM_XS " cib=%d.%d.%d source=%s:%d path=%s complete=%s", +- TYPE(reason), ID(reason), (op? op : "change"), abort_text, +- add[0], add[1], add[2], fn, line, path, ++ TYPE(reason), (id? id : ""), (op? op : "change"), ++ abort_text, add[0], add[1], add[2], fn, line, path, + (transition_graph->complete? "true" : "false")); + } + } +diff --git a/crmd/tengine.h b/crmd/tengine.h +index 7205c16..6a75a08 100644 +--- a/crmd/tengine.h ++++ b/crmd/tengine.h +@@ -59,6 +59,8 @@ extern void notify_crmd(crm_graph_t * graph); + # include + + extern void trigger_graph_processing(const char *fn, int line); ++void abort_after_delay(int abort_priority, enum transition_action abort_action, ++ const char *abort_text, guint delay_ms); + extern void abort_transition_graph(int abort_priority, enum transition_action abort_action, + const char *abort_text, xmlNode * reason, const char *fn, + int line); +-- +1.8.3.1 + diff --git a/SOURCES/008-systemd-reloads.patch b/SOURCES/008-systemd-reloads.patch deleted file mode 100644 index 60c87db..0000000 --- a/SOURCES/008-systemd-reloads.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 898d30113adc366854dbffd402962e9bcc6337ae Mon Sep 17 00:00:00 2001 -From: Patrick Hemmer -Date: Tue, 29 Nov 2016 13:56:44 -0500 -Subject: [PATCH] Low: libservices: treat systemd service reloading as OK - -Previously if pacemaker performed a monitor operation while a service was -reloading, pacemaker treated it as if the service were stopped/failed. ---- - lib/services/systemd.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/lib/services/systemd.c b/lib/services/systemd.c -index e6e1114..ea01365 100644 ---- a/lib/services/systemd.c -+++ b/lib/services/systemd.c -@@ -552,6 +552,8 @@ systemd_unit_check(const char *name, const char *state, void *userdata) - - } else if (g_strcmp0(state, "active") == 0) { - op->rc = PCMK_OCF_OK; -+ } else if (g_strcmp0(state, "reloading") == 0) { -+ op->rc = PCMK_OCF_OK; - } else if (g_strcmp0(state, "activating") == 0) { - op->rc = PCMK_OCF_PENDING; - } else if (g_strcmp0(state, "deactivating") == 0) { --- -1.8.3.1 - diff --git a/SOURCES/009-crm_resource.patch b/SOURCES/009-crm_resource.patch new file mode 100644 index 0000000..9a877e5 --- /dev/null +++ b/SOURCES/009-crm_resource.patch @@ -0,0 +1,97 @@ +From 30eb9a980db152f6c803a35d3b261a563ad4ee75 Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Wed, 24 Jan 2018 10:51:34 -0600 +Subject: [PATCH 1/2] Low: tools: crm_resource --refresh should ignore + --operation and --interval + +It already did when a resource was not specified. +Also update help text to clarify cleanup vs refresh. +--- + tools/crm_resource.c | 26 ++++++++++++++++----------- + 1 file changed, 16 insertions(+), 10 deletions(-) + +diff --git a/tools/crm_resource.c b/tools/crm_resource.c +index 3fbc6e1..d007668 100644 +--- a/tools/crm_resource.c ++++ b/tools/crm_resource.c +@@ -212,14 +212,16 @@ static struct crm_option long_options[] = { + }, + { + "cleanup", no_argument, NULL, 'C', +- "\t\tDelete failed operations from a resource's history allowing its current state to be rechecked.\n" ++ "\t\tIf resource has any past failures, clear its history and fail count.\n" + "\t\t\t\tOptionally filtered by --resource, --node, --operation, and --interval (otherwise all).\n" ++ "\t\t\t\t--operation and --interval apply to fail counts, but entire history is always cleared,\n" ++ "\t\t\t\tto allow current state to be rechecked.\n" + }, + { + "refresh", no_argument, NULL, 'R', + "\t\tDelete resource's history (including failures) so its current state is rechecked.\n" +- "\t\t\t\tOptionally filtered by --resource, --node, --operation, and --interval (otherwise all).\n" +- "\t\t\t\tUnless --force is specified, resource's group or clone (if any) will also be cleaned" ++ "\t\t\t\tOptionally filtered by --resource and --node (otherwise all).\n" ++ "\t\t\t\tUnless --force is specified, resource's group or clone (if any) will also be refreshed." + }, + { + "set-parameter", required_argument, NULL, 'p', +@@ -438,7 +440,6 @@ main(int argc, char **argv) + bool require_resource = TRUE; /* whether command requires that resource be specified */ + bool require_dataset = TRUE; /* whether command requires populated dataset instance */ + bool require_crmd = FALSE; /* whether command requires connection to CRMd */ +- bool just_errors = TRUE; /* whether cleanup command deletes all history or just errors */ + + int rc = pcmk_ok; + int is_ocf_rc = 0; +@@ -630,8 +631,7 @@ main(int argc, char **argv) + if (cib_file == NULL) { + require_crmd = TRUE; + } +- just_errors = FALSE; +- rsc_cmd = 'C'; ++ rsc_cmd = 'R'; + find_flags = pe_find_renamed|pe_find_anon; + break; + +@@ -641,7 +641,6 @@ main(int argc, char **argv) + if (cib_file == NULL) { + require_crmd = TRUE; + } +- just_errors = TRUE; + rsc_cmd = 'C'; + find_flags = pe_find_renamed|pe_find_anon; + break; +@@ -1092,7 +1091,14 @@ main(int argc, char **argv) + rc = cli_resource_delete_attribute(rsc, rsc_id, prop_set, prop_id, + prop_name, cib_conn, &data_set); + +- } else if ((rsc_cmd == 'C') && rsc) { ++ } else if (((rsc_cmd == 'C') || (rsc_cmd == 'R')) && rsc) { ++ bool just_errors = TRUE; ++ ++ if (rsc_cmd == 'R') { ++ just_errors = FALSE; ++ operation = NULL; ++ interval = 0; ++ } + if (do_force == FALSE) { + rsc = uber_parent(rsc); + } +@@ -1113,14 +1119,14 @@ main(int argc, char **argv) + start_mainloop(); + } + +- } else if (rsc_cmd == 'C' && just_errors) { ++ } else if (rsc_cmd == 'C') { + rc = cli_cleanup_all(crmd_channel, host_uname, operation, interval, + &data_set); + if (rc == pcmk_ok) { + start_mainloop(); + } + +- } else if (rsc_cmd == 'C') { ++ } else if (rsc_cmd == 'R') { + #if HAVE_ATOMIC_ATTRD + const char *router_node = host_uname; + xmlNode *msg_data = NULL; +-- +1.8.3.1 diff --git a/SOURCES/009-dup-stonith.patch b/SOURCES/009-dup-stonith.patch deleted file mode 100644 index d42cbc9..0000000 --- a/SOURCES/009-dup-stonith.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 969bbfd06476a71f66882964e5ea92b0bebbcc5b Mon Sep 17 00:00:00 2001 -From: Nate Clark -Date: Thu, 1 Dec 2016 11:00:38 -0500 -Subject: [PATCH] stonith: Check for missing params in new device and dup - -device_has_duplicate would return a dup if all params in device where in dup with the same value but -if dup had a param that device did not the dup would still be considered a duplicate. This updates -the duplicate check to make sure that all keys and values overlap in both device and dup params. ---- - fencing/commands.c | 51 +++++++++++++++++++++++++++++++++------------------ - 1 file changed, 33 insertions(+), 18 deletions(-) - -diff --git a/fencing/commands.c b/fencing/commands.c -index a4699ee..d21e5a8 100644 ---- a/fencing/commands.c -+++ b/fencing/commands.c -@@ -988,27 +988,15 @@ dynamic_list_search_cb(GPid pid, int rc, const char *output, gpointer user_data) - - /*! - * \internal -- * \brief Checks to see if an identical device already exists in the device_list -+ * \brief Returns true if any key in first is not is second or second has a different value for key - */ --static stonith_device_t * --device_has_duplicate(stonith_device_t * device) --{ -+static int -+device_params_diff(GHashTable *first, GHashTable *second) { - char *key = NULL; - char *value = NULL; - GHashTableIter gIter; -- stonith_device_t *dup = g_hash_table_lookup(device_list, device->id); - -- if (!dup) { -- crm_trace("No match for %s", device->id); -- return NULL; -- -- } else if (safe_str_neq(dup->agent, device->agent)) { -- crm_trace("Different agent: %s != %s", dup->agent, device->agent); -- return NULL; -- } -- -- /* Use calculate_operation_digest() here? */ -- g_hash_table_iter_init(&gIter, device->params); -+ g_hash_table_iter_init(&gIter, first); - while (g_hash_table_iter_next(&gIter, (void **)&key, (void **)&value)) { - - if(strstr(key, "CRM_meta") == key) { -@@ -1016,15 +1004,42 @@ device_has_duplicate(stonith_device_t * device) - } else if(strcmp(key, "crm_feature_set") == 0) { - continue; - } else { -- char *other_value = g_hash_table_lookup(dup->params, key); -+ char *other_value = g_hash_table_lookup(second, key); - - if (!other_value || safe_str_neq(other_value, value)) { - crm_trace("Different value for %s: %s != %s", key, other_value, value); -- return NULL; -+ return 1; - } - } - } - -+ return 0; -+} -+ -+/*! -+ * \internal -+ * \brief Checks to see if an identical device already exists in the device_list -+ */ -+static stonith_device_t * -+device_has_duplicate(stonith_device_t * device) -+{ -+ stonith_device_t *dup = g_hash_table_lookup(device_list, device->id); -+ -+ if (!dup) { -+ crm_trace("No match for %s", device->id); -+ return NULL; -+ -+ } else if (safe_str_neq(dup->agent, device->agent)) { -+ crm_trace("Different agent: %s != %s", dup->agent, device->agent); -+ return NULL; -+ } -+ -+ /* Use calculate_operation_digest() here? */ -+ if (device_params_diff(device->params, dup->params) || -+ device_params_diff(dup->params, device->params)) { -+ return NULL; -+ } -+ - crm_trace("Match"); - return dup; - } --- -1.8.3.1 - diff --git a/SOURCES/010-crm_master.patch b/SOURCES/010-crm_master.patch new file mode 100644 index 0000000..61d5083 --- /dev/null +++ b/SOURCES/010-crm_master.patch @@ -0,0 +1,34 @@ +From 18572d4e1e84c9d1f293b9a3082190133367154e Mon Sep 17 00:00:00 2001 +From: Ken Gaillot +Date: Fri, 26 Jan 2018 12:31:09 -0600 +Subject: [PATCH] Fix: tools: crm_master should always work on node attribute + +Before ccbdb2a, crm_master would always set --node, thus ensuring crm_attribute +would treat the value as a node attribute. That commit removed that so that +crm_attribute could determine the local node name properly, but that introduced +an issue where the master value would be set as a cluster property instead of a +node attribute if --lifetime (or --node) was not set explicitly. + +This fixes it by setting the default value of --lifetime explicitly. +--- + tools/crm_master | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/tools/crm_master b/tools/crm_master +index 7e31cea..f4a0772 100755 +--- a/tools/crm_master ++++ b/tools/crm_master +@@ -8,6 +8,10 @@ if [ $? != 0 ] ; then echo "crm_master - A convenience wrapper for crm_attribute + # Note the quotes around `$TEMP': they are essential! + eval set -- "$TEMP" + ++# Explicitly set the (usual default) lifetime, so the attribute gets set as a ++# node attribute and not a cluster property. ++options="--lifetime forever" ++ + while true ; do + case "$1" in + -N|--node|-U|--uname) options="$options $1 $2"; shift; shift;; +-- +1.8.3.1 + diff --git a/SOURCES/010-permissions.patch b/SOURCES/010-permissions.patch deleted file mode 100644 index 3567057..0000000 --- a/SOURCES/010-permissions.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 6107292b7c01da883a5c8af5d0d2c90e186d4322 Mon Sep 17 00:00:00 2001 -From: HideoYamauchi -Date: Thu, 8 Dec 2016 13:25:54 +0900 -Subject: [PATCH] Low: mcp: Correction of the difference in access permission - setting. - ---- - configure.ac | 4 ++++ - mcp/pacemaker.c | 12 ++++++++---- - 2 files changed, 12 insertions(+), 4 deletions(-) - -diff --git a/configure.ac b/configure.ac -index a7f9158..e51a15b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1113,6 +1113,10 @@ CRM_STATE_DIR=${localstatedir}/run/crm - AC_DEFINE_UNQUOTED(CRM_STATE_DIR,"$CRM_STATE_DIR", Where to keep state files and sockets) - AC_SUBST(CRM_STATE_DIR) - -+CRM_PACEMAKER_DIR=${localstatedir}/lib/pacemaker -+AC_DEFINE_UNQUOTED(CRM_PACEMAKER_DIR,"$CRM_PACEMAKER_DIR", Location to store directory produced by Pacemaker daemons) -+AC_SUBST(CRM_PACEMAKER_DIR) -+ - CRM_BLACKBOX_DIR=${localstatedir}/lib/pacemaker/blackbox - AC_DEFINE_UNQUOTED(CRM_BLACKBOX_DIR,"$CRM_BLACKBOX_DIR", Where to keep blackbox dumps) - AC_SUBST(CRM_BLACKBOX_DIR) -diff --git a/mcp/pacemaker.c b/mcp/pacemaker.c -index 292e28c..95c1370 100644 ---- a/mcp/pacemaker.c -+++ b/mcp/pacemaker.c -@@ -1058,20 +1058,24 @@ main(int argc, char **argv) - mkdir(CRM_STATE_DIR, 0750); - mcp_chown(CRM_STATE_DIR, pcmk_uid, pcmk_gid); - -+ /* Used to store core/blackbox/pengine/cib files in */ -+ crm_build_path(CRM_PACEMAKER_DIR, 0750); -+ mcp_chown(CRM_PACEMAKER_DIR, pcmk_uid, pcmk_gid); -+ - /* Used to store core files in */ -- crm_build_path(CRM_CORE_DIR, 0775); -+ crm_build_path(CRM_CORE_DIR, 0750); - mcp_chown(CRM_CORE_DIR, pcmk_uid, pcmk_gid); - - /* Used to store blackbox dumps in */ -- crm_build_path(CRM_BLACKBOX_DIR, 0755); -+ crm_build_path(CRM_BLACKBOX_DIR, 0750); - mcp_chown(CRM_BLACKBOX_DIR, pcmk_uid, pcmk_gid); - - /* Used to store policy engine inputs in */ -- crm_build_path(PE_STATE_DIR, 0755); -+ crm_build_path(PE_STATE_DIR, 0750); - mcp_chown(PE_STATE_DIR, pcmk_uid, pcmk_gid); - - /* Used to store the cluster configuration */ -- crm_build_path(CRM_CONFIG_DIR, 0755); -+ crm_build_path(CRM_CONFIG_DIR, 0750); - mcp_chown(CRM_CONFIG_DIR, pcmk_uid, pcmk_gid); - - /* Resource agent paths are constructed by the lrmd */ --- -1.8.3.1 - diff --git a/SOURCES/011-pe-regression-test.patch b/SOURCES/011-pe-regression-test.patch deleted file mode 100644 index 619ff15..0000000 --- a/SOURCES/011-pe-regression-test.patch +++ /dev/null @@ -1,27 +0,0 @@ -From ddfd03c95ccf5bd56426f1dde0c9aa513fd91f25 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Wed, 14 Dec 2016 17:08:49 +0100 -Subject: [PATCH] Test: pengine: fix single test wrt. missing summary output to - diff - -This was missed in commit 98af208. ---- - pengine/regression.core.sh.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pengine/regression.core.sh.in b/pengine/regression.core.sh.in -index 05a1135..731844f 100644 ---- a/pengine/regression.core.sh.in -+++ b/pengine/regression.core.sh.in -@@ -161,7 +161,7 @@ function do_test { - # ../admin/crm_verify -X $input - if [ ! -z $single_test ]; then - echo CIB_shadow_dir=$io_dir $test_cmd -x $input -D $dot_output -G $output -S $* -- CIB_shadow_dir=$io_dir $test_cmd -x $input -D $dot_output -G $output -S $* -+ CIB_shadow_dir=$io_dir $test_cmd -x $input -D $dot_output -G $output -S $* 2>&1 | tee $summary_output - else - CIB_shadow_dir=$io_dir $test_cmd -x $input -S &> $summary_output - fi --- -1.8.3.1 - diff --git a/SOURCES/012-dbus.patch b/SOURCES/012-dbus.patch deleted file mode 100644 index ebb0440..0000000 --- a/SOURCES/012-dbus.patch +++ /dev/null @@ -1,133 +0,0 @@ -From 07c645f1d568b51dc5ae4566dcb7456daba6934c Mon Sep 17 00:00:00 2001 -From: "Gao,Yan" -Date: Wed, 14 Dec 2016 16:08:38 +0100 -Subject: [PATCH] Fix: dbus: Prevent lrmd from hanging on dbus calls - -With "service" class of resources, by chance, lrmd hangs on futex() -syscall: - -root@node2:~ # cat /proc/2503/stack -[] futex_wait_queue_me+0xc0/0x130 -[] futex_wait+0x163/0x250 -[] do_futex+0xe0/0x540 -[] SyS_futex+0x6e/0x140 -[] entry_SYSCALL_64_fastpath+0x12/0x6d -[] 0xffffffffffffffff - -Cluster no longer behaves and cannot recover from the situation. - -According to the backtrace, it seems due to the reentrancy of -dbus_connection_dispatch(): - - (gdb) bt - #0 0x00007f07f7d2e0af in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 - #1 0x00007f07f6c29925 in _dbus_connection_acquire_dispatch (connection=0x13411f0) at dbus-connection.c:4142 - #2 0x00007f07f6c2b3bc in dbus_connection_dispatch (connection=connection@entry=0x13411f0) at dbus-connection.c:4577 - #3 0x00007f07f8d88e50 in pcmk_dbus_connection_dispatch (connection=connection@entry=0x13411f0, new_status=new_status@entry=DBUS_DISPATCH_DATA_REMAINS, data=data@entry=0x0) at dbus.c:410 - #4 0x00007f07f6c29b70 in _dbus_connection_update_dispatch_status_and_unlock (connection=0x13411f0, new_status=DBUS_DISPATCH_DATA_REMAINS) at dbus-connection.c:4346 - #5 0x00007f07f6c29f79 in check_for_reply_and_update_dispatch_unlocked (connection=connection@entry=0x13411f0, pending=pending@entry=0x135a8b0) at dbus-connection.c:2355 - #6 0x00007f07f6c2a08b in _dbus_connection_block_pending_call (pending=0x135a8b0) at dbus-connection.c:2461 - #7 0x00007f07f6c396ba in dbus_pending_call_block (pending=) at dbus-pending-call.c:741 - #8 0x00007f07f8d8929c in pcmk_dbus_send_recv (msg=msg@entry=0x1340940, connection=0x13411f0, error=error@entry=0x7ffc5d148fc0, timeout=-1) at dbus.c:141 - #9 0x00007f07f8d8d2d7 in systemd_unit_by_name (arg_name=arg_name@entry=0x133dcb0 "service", op=op@entry=0x0) at systemd.c:296 - #10 0x00007f07f8d8d45b in systemd_unit_exists (name=name@entry=0x133dcb0 "service") at systemd.c:416 - #11 0x00007f07f8d83dc5 in resources_find_service_class (agent=0x133dcb0 "service") at services.c:88 - #12 0x0000000000405b05 in action_complete (action=0x134e0b0) at lrmd.c:876 - #13 0x00007f07f8d867e3 in operation_finalize (op=0x134e0b0) at services_linux.c:257 - #14 0x00007f07f8d899d8 in pcmk_dbus_lookup_result (reply=reply@entry=0x135cc80, data=data@entry=0x1355e30) at dbus.c:289 - #15 0x00007f07f8d89ba4 in pcmk_dbus_lookup_cb (pending=, user_data=0x1355e30) at dbus.c:334 - #16 0x00007f07f6c28032 in complete_pending_call_and_unlock (connection=0x13411f0, pending=0x135a2c0, message=) at dbus-connection.c:2331 - #17 0x00007f07f6c2b401 in dbus_connection_dispatch (connection=connection@entry=0x13411f0) at dbus-connection.c:4626 - #18 0x00007f07f8d88e50 in pcmk_dbus_connection_dispatch (connection=connection@entry=0x13411f0, new_status=new_status@entry=DBUS_DISPATCH_DATA_REMAINS, data=data@entry=0x0) at dbus.c:410 - #19 0x00007f07f6c29b70 in _dbus_connection_update_dispatch_status_and_unlock (connection=0x13411f0, new_status=DBUS_DISPATCH_DATA_REMAINS) at dbus-connection.c:4346 - #20 0x00007f07f6c29ca6 in _dbus_connection_handle_watch (watch=, condition=1, data=0x13411f0) at dbus-connection.c:1520 - #21 0x00007f07f6c40f2a in dbus_watch_handle (watch=watch@entry=0x133d6a0, flags=flags@entry=1) at dbus-watch.c:722 - #22 0x00007f07f8d887da in pcmk_dbus_watch_dispatch (userdata=0x133d6a0) at dbus.c:448 - #23 0x00007f07f8fcfef7 in mainloop_gio_callback (gio=, condition=G_IO_IN, data=0x133f210) at mainloop.c:673 - #24 0x00007f07f82a0015 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0 - #25 0x00007f07f82a0388 in ?? () from /usr/lib64/libglib-2.0.so.0 - #26 0x00007f07f82a064a in g_main_loop_run () from /usr/lib64/libglib-2.0.so.0 - #27 0x0000000000402c0e in main (argc=, argv=0x7ffc5d149818) at main.c:476 - -As described in: -https://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html#ga55ff88cd22c0672441c7deffbfb68fbf - -, dbus_connection_dispatch() MUST NOT BE CALLED from inside the -DBusDispatchStatusFunction. It seems that pcmk_dbus_watch_dispatch() is -an appropriate place to do it instead. ---- - lib/services/dbus.c | 30 +++++++++++++++++++++++++----- - 1 file changed, 25 insertions(+), 5 deletions(-) - -diff --git a/lib/services/dbus.c b/lib/services/dbus.c -index 4ce7dfe..0748c86 100644 ---- a/lib/services/dbus.c -+++ b/lib/services/dbus.c -@@ -13,6 +13,8 @@ - - #define BUS_PROPERTY_IFACE "org.freedesktop.DBus.Properties" - -+static GList *conn_dispatches = NULL; -+ - struct db_getall_data { - char *name; - char *target; -@@ -445,17 +447,31 @@ pcmk_dbus_get_property(DBusConnection *connection, const char *target, - } - - static void --pcmk_dbus_connection_dispatch(DBusConnection *connection, -+pcmk_dbus_connection_dispatch_status(DBusConnection *connection, - DBusDispatchStatus new_status, void *data) - { -- crm_trace("status %d for %p", new_status, data); -+ crm_trace("New status %d for connection %p", new_status, connection); - if (new_status == DBUS_DISPATCH_DATA_REMAINS){ -- dbus_connection_dispatch(connection); -+ conn_dispatches = g_list_prepend(conn_dispatches, connection); -+ } -+} -+ -+static void -+pcmk_dbus_connections_dispatch() -+{ -+ GList *gIter = NULL; -+ -+ for (gIter = conn_dispatches; gIter != NULL; gIter = gIter->next) { -+ DBusConnection *connection = gIter->data; - - while (dbus_connection_get_dispatch_status(connection) == DBUS_DISPATCH_DATA_REMAINS) { -+ crm_trace("Dispatching for connection %p", connection); - dbus_connection_dispatch(connection); - } - } -+ -+ g_list_free(conn_dispatches); -+ conn_dispatches = NULL; - } - - /* Copied from dbus-watch.c */ -@@ -506,7 +522,11 @@ pcmk_dbus_watch_dispatch(gpointer userdata) - if(oom) { - crm_err("DBus encountered OOM while attempting to dispatch %p (%s)", - client, dbus_watch_flags_to_string(flags)); -+ -+ } else { -+ pcmk_dbus_connections_dispatch(); - } -+ - return 0; - } - -@@ -616,6 +636,6 @@ pcmk_dbus_connection_setup_with_select(DBusConnection *c) - dbus_connection_set_watch_functions(c, pcmk_dbus_watch_add, - pcmk_dbus_watch_remove, - pcmk_dbus_watch_toggle, NULL, NULL); -- dbus_connection_set_dispatch_status_function(c, pcmk_dbus_connection_dispatch, NULL, NULL); -- pcmk_dbus_connection_dispatch(c, dbus_connection_get_dispatch_status(c), NULL); -+ dbus_connection_set_dispatch_status_function(c, pcmk_dbus_connection_dispatch_status, NULL, NULL); -+ pcmk_dbus_connection_dispatch_status(c, dbus_connection_get_dispatch_status(c), NULL); - } --- -1.8.3.1 - diff --git a/SOURCES/013-alert_snmp.patch b/SOURCES/013-alert_snmp.patch deleted file mode 100644 index be33941..0000000 --- a/SOURCES/013-alert_snmp.patch +++ /dev/null @@ -1,106 +0,0 @@ -From fefd8cc479b11d87fb4c4db69465de977fa94984 Mon Sep 17 00:00:00 2001 -From: HideoYamauchi -Date: Tue, 20 Dec 2016 08:31:59 +0900 -Subject: [PATCH] Mid: Alert: Set SNMP_PERSISTENT_DIR directory for the - snmp-trap tool. - ---- - extra/alerts/alert_snmp.sh.sample | 31 +++++++++++++++++++++++++------ - 1 file changed, 25 insertions(+), 6 deletions(-) - -diff --git a/extra/alerts/alert_snmp.sh.sample b/extra/alerts/alert_snmp.sh.sample -index fcdcd7e..48a2fe3 100644 ---- a/extra/alerts/alert_snmp.sh.sample -+++ b/extra/alerts/alert_snmp.sh.sample -@@ -62,6 +62,7 @@ trap_fencing_tasks_default="all" - trap_resource_tasks_default="all" - trap_monitor_success_default="false" - trap_add_hires_timestamp_oid_default="true" -+trap_snmp_persistent_dir_default="/var/lib/pacemaker/snmp" - - : ${trap_binary=${trap_binary_default}} - : ${trap_version=${trap_version_default}} -@@ -72,6 +73,7 @@ trap_add_hires_timestamp_oid_default="true" - : ${trap_resource_tasks=${trap_resource_tasks_default}} - : ${trap_monitor_success=${trap_monitor_success_default}} - : ${trap_add_hires_timestamp_oid=${trap_add_hires_timestamp_oid_default}} -+: ${trap_snmp_persistent_dir=${trap_snmp_persistent_dir_default}} - - if [ "${trap_add_hires_timestamp_oid}" = "true" ]; then - hires_timestamp="HOST-RESOURCES-MIB::hrSystemDate s ${CRM_alert_timestamp}" -@@ -93,30 +95,41 @@ is_in_list() { - return 1 - } - -+if [ -z ${SNMP_PERSISTENT_DIR} ]; then -+ export SNMP_PERSISTENT_DIR="${trap_snmp_persistent_dir}" -+ # mkdir for snmp trap tools. -+ if [ ! -d ${SNMP_PERSISTENT_DIR} ]; then -+ mkdir -p ${SNMP_PERSISTENT_DIR} -+ fi -+fi -+ -+rc=0 - case "$CRM_alert_kind" in - node) - is_in_list "${trap_node_states}" "${CRM_alert_desc}" - [ $? -ne 0 ] && exit 0 - -- "${trap_binary}" -v "${trap_version}" ${trap_options} \ -+ output=`"${trap_binary}" -v "${trap_version}" ${trap_options} \ - -c "${trap_community}" "${CRM_alert_recipient}" "" \ - PACEMAKER-MIB::pacemakerNotificationTrap \ - PACEMAKER-MIB::pacemakerNotificationNode s "${CRM_alert_node}" \ - PACEMAKER-MIB::pacemakerNotificationDescription s "${CRM_alert_desc}" \ -- ${hires_timestamp} -+ ${hires_timestamp} 2>&1` -+ rc=$? - ;; - fencing) - is_in_list "${trap_fencing_tasks}" "${CRM_alert_task}" - [ $? -ne 0 ] && exit 0 - -- "${trap_binary}" -v "${trap_version}" ${trap_options} \ -+ output=`"${trap_binary}" -v "${trap_version}" ${trap_options} \ - -c "${trap_community}" "${CRM_alert_recipient}" "" \ - PACEMAKER-MIB::pacemakerNotificationTrap \ - PACEMAKER-MIB::pacemakerNotificationNode s "${CRM_alert_node}" \ - PACEMAKER-MIB::pacemakerNotificationOperation s "${CRM_alert_task}" \ - PACEMAKER-MIB::pacemakerNotificationDescription s "${CRM_alert_desc}" \ - PACEMAKER-MIB::pacemakerNotificationReturnCode i ${CRM_alert_rc} \ -- ${hires_timestamp} -+ ${hires_timestamp} 2>&1` -+ rc=$? - ;; - resource) - is_in_list "${trap_resource_tasks}" "${CRM_alert_task}" -@@ -131,7 +144,7 @@ case "$CRM_alert_kind" in - exit - fi - -- "${trap_binary}" -v "${trap_version}" ${trap_options} \ -+ output=`"${trap_binary}" -v "${trap_version}" ${trap_options} \ - -c "${trap_community}" "${CRM_alert_recipient}" "" \ - PACEMAKER-MIB::pacemakerNotificationTrap \ - PACEMAKER-MIB::pacemakerNotificationNode s "${CRM_alert_node}" \ -@@ -141,10 +154,16 @@ case "$CRM_alert_kind" in - PACEMAKER-MIB::pacemakerNotificationStatus i ${CRM_alert_status} \ - PACEMAKER-MIB::pacemakerNotificationReturnCode i ${CRM_alert_rc} \ - PACEMAKER-MIB::pacemakerNotificationTargetReturnCode i ${CRM_alert_target_rc} \ -- ${hires_timestamp} -+ ${hires_timestamp} 2>&1` -+ rc=$? - ;; - esac - ;; - *) - ;; - esac -+ -+if [ $rc -ne 0 ]; then -+ echo "${trap_binary} returned error : rc=${rc} ${output}" -+fi -+ --- -1.8.3.1 - diff --git a/SOURCES/014-dbus.patch b/SOURCES/014-dbus.patch deleted file mode 100644 index 2181671..0000000 --- a/SOURCES/014-dbus.patch +++ /dev/null @@ -1,29 +0,0 @@ -From c1bc760d534aa057808e7d6503bda60ab9afa120 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 9 Jan 2017 16:58:50 -0600 -Subject: [PATCH] Fix: libservices: properly watch writable DBus handles - -e2128e7 introduced a typo such that DBUS_WATCH_WRITABLE was never checked ---- - lib/services/dbus.c | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/lib/services/dbus.c b/lib/services/dbus.c -index 0748c86..fb3e867 100644 ---- a/lib/services/dbus.c -+++ b/lib/services/dbus.c -@@ -503,10 +503,7 @@ pcmk_dbus_watch_dispatch(gpointer userdata) - mainloop_io_t *client = dbus_watch_get_data(watch); - - crm_trace("Dispatching client %p: %s", client, dbus_watch_flags_to_string(flags)); -- if (enabled && is_set(flags, DBUS_WATCH_READABLE)) { -- oom = !dbus_watch_handle(watch, flags); -- -- } else if (enabled && is_set(flags, DBUS_WATCH_READABLE)) { -+ if (enabled && (flags & (DBUS_WATCH_READABLE|DBUS_WATCH_WRITABLE))) { - oom = !dbus_watch_handle(watch, flags); - - } else if(enabled) { --- -1.8.3.1 - diff --git a/SOURCES/015-tools-test.patch b/SOURCES/015-tools-test.patch deleted file mode 100644 index 1b19c3b..0000000 --- a/SOURCES/015-tools-test.patch +++ /dev/null @@ -1,287 +0,0 @@ -From 0c2eab4dd768335e0212e79730f6cf17a318fe1c Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 19 Jan 2017 12:11:38 -0600 -Subject: [PATCH 1/2] Test: tools: ignore source code line numbers when - comparing validation output - ---- - tools/regression.sh | 1 + - tools/regression.validity.exp | 156 +++++++++++++++++++++--------------------- - 2 files changed, 79 insertions(+), 78 deletions(-) - -diff --git a/tools/regression.sh b/tools/regression.sh -index 47bff43..edc5e6b 100755 ---- a/tools/regression.sh -+++ b/tools/regression.sh -@@ -755,6 +755,7 @@ for t in $tests; do - -e 's/ last-rc-change=\"[0-9]*\"//'\ - -e 's|^/tmp/[0-9][0-9]*\.||'\ - -e 's/^Entity: line [0-9][0-9]*: //'\ -+ -e 's/schemas\.c:\([0-9][0-9]*\)/schemas.c:NNN/' \ - -e 's/\(validation ([0-9][0-9]* of \)[0-9][0-9]*\().*\)/\1X\2/' $test_home/regression.$t.out - - if [ $do_save = 1 ]; then -diff --git a/tools/regression.validity.exp b/tools/regression.validity.exp -index 827b660..1278a09 100644 ---- a/tools/regression.validity.exp -+++ b/tools/regression.validity.exp -@@ -22,46 +22,46 @@ Call failed: Update does not conform to the configured schema - =#=#=#= End test: Try to make resulting CIB invalid (enum violation) - Update does not conform to the configured schema (203) =#=#=#= - * Passed: cibadmin - Try to make resulting CIB invalid (enum violation) - =#=#=#= Begin test: Run crm_simulate with invalid CIB (enum violation) =#=#=#= --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.2' validation (4 of X) -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-1.2' validation (4 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order --( schemas.c:760 ) trace: update_validation: pacemaker-1.2 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.3' validation (5 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-1.2 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-1.3' validation (5 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order --( schemas.c:760 ) trace: update_validation: pacemaker-1.3 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.0' validation (6 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-1.3 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.0' validation (6 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order --( schemas.c:760 ) trace: update_validation: pacemaker-2.0 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.1' validation (7 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.0 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.1' validation (7 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order --( schemas.c:760 ) trace: update_validation: pacemaker-2.1 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.2' validation (8 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.1 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.2' validation (8 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order --( schemas.c:760 ) trace: update_validation: pacemaker-2.2 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.3' validation (9 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.2 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.3' validation (9 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order --( schemas.c:760 ) trace: update_validation: pacemaker-2.3 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.4' validation (10 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.3 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.4' validation (10 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order --( schemas.c:760 ) trace: update_validation: pacemaker-2.4 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.5' validation (11 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.4 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.5' validation (11 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order --( schemas.c:760 ) trace: update_validation: pacemaker-2.5 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.6' validation (12 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.5 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.6' validation (12 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order --( schemas.c:760 ) trace: update_validation: pacemaker-2.6 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.7' validation (13 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.6 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.7' validation (13 of X) - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order --( schemas.c:760 ) trace: update_validation: pacemaker-2.7 validation failed -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.7 validation failed - Your current configuration pacemaker-1.2 could not validate with any schema in range [pacemaker-1.2, pacemaker-2.7], cannot upgrade to pacemaker-2.0. - =#=#=#= End test: Run crm_simulate with invalid CIB (enum violation) - Required key not available (126) =#=#=#= - * Passed: crm_simulate - Run crm_simulate with invalid CIB (enum violation) -@@ -85,57 +85,57 @@ Call failed: Update does not conform to the configured schema - =#=#=#= End test: Try to make resulting CIB invalid (unrecognized validate-with) - Update does not conform to the configured schema (203) =#=#=#= - * Passed: cibadmin - Try to make resulting CIB invalid (unrecognized validate-with) - =#=#=#= Begin test: Run crm_simulate with invalid CIB (unrecognized validate-with) =#=#=#= --( schemas.c:736 ) debug: update_validation: Unknown validation type --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-0.6' validation (0 of X) -+( schemas.c:NNN ) debug: update_validation: Unknown validation type -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-0.6' validation (0 of X) - element rsc_order: validity error : Element rsc_order does not carry attribute to - element rsc_order: validity error : Element rsc_order does not carry attribute from - element rsc_order: validity error : No declaration for attribute first of element rsc_order - element rsc_order: validity error : No declaration for attribute first-action of element rsc_order - element rsc_order: validity error : No declaration for attribute then of element rsc_order --( schemas.c:760 ) trace: update_validation: pacemaker-0.6 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'transitional-0.6' validation (1 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-0.6 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'transitional-0.6' validation (1 of X) - element rsc_order: validity error : Element rsc_order does not carry attribute to - element rsc_order: validity error : Element rsc_order does not carry attribute from - element rsc_order: validity error : No declaration for attribute first of element rsc_order - element rsc_order: validity error : No declaration for attribute first-action of element rsc_order - element rsc_order: validity error : No declaration for attribute then of element rsc_order --( schemas.c:760 ) trace: update_validation: transitional-0.6 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-0.7' validation (2 of X) -+( schemas.c:NNN ) trace: update_validation: transitional-0.6 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-0.7' validation (2 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib --( schemas.c:760 ) trace: update_validation: pacemaker-0.7 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.0' validation (3 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-0.7 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-1.0' validation (3 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib --( schemas.c:760 ) trace: update_validation: pacemaker-1.0 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.2' validation (4 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-1.0 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-1.2' validation (4 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib --( schemas.c:760 ) trace: update_validation: pacemaker-1.2 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.3' validation (5 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-1.2 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-1.3' validation (5 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib --( schemas.c:760 ) trace: update_validation: pacemaker-1.3 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.0' validation (6 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-1.3 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.0' validation (6 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib --( schemas.c:760 ) trace: update_validation: pacemaker-2.0 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.1' validation (7 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.0 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.1' validation (7 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib --( schemas.c:760 ) trace: update_validation: pacemaker-2.1 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.2' validation (8 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.1 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.2' validation (8 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib --( schemas.c:760 ) trace: update_validation: pacemaker-2.2 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.3' validation (9 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.2 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.3' validation (9 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib --( schemas.c:760 ) trace: update_validation: pacemaker-2.3 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.4' validation (10 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.3 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.4' validation (10 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib --( schemas.c:760 ) trace: update_validation: pacemaker-2.4 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.5' validation (11 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.4 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.5' validation (11 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib --( schemas.c:760 ) trace: update_validation: pacemaker-2.5 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.6' validation (12 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.5 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.6' validation (12 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib --( schemas.c:760 ) trace: update_validation: pacemaker-2.6 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.7' validation (13 of X) -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.6 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.7' validation (13 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib --( schemas.c:760 ) trace: update_validation: pacemaker-2.7 validation failed -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.7 validation failed - Your current configuration pacemaker-9999.0 could not validate with any schema in range [unknown, pacemaker-2.7], cannot upgrade to pacemaker-2.0. - =#=#=#= End test: Run crm_simulate with invalid CIB (unrecognized validate-with) - Required key not available (126) =#=#=#= - * Passed: crm_simulate - Run crm_simulate with invalid CIB (unrecognized validate-with) -@@ -159,36 +159,36 @@ Call failed: Update does not conform to the configured schema - =#=#=#= End test: Try to make resulting CIB invalid, but possibly recoverable (valid with X.Y+1) - Update does not conform to the configured schema (203) =#=#=#= - * Passed: cibadmin - Try to make resulting CIB invalid, but possibly recoverable (valid with X.Y+1) - =#=#=#= Begin test: Run crm_simulate with invalid, but possibly recoverable CIB (valid with X.Y+1) =#=#=#= --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.2' validation (4 of X) -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-1.2' validation (4 of X) - element tags: Relax-NG validity error : Element configuration has extra content: tags --( schemas.c:760 ) trace: update_validation: pacemaker-1.2 validation failed --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-1.3' validation (5 of X) --( schemas.c:804 ) debug: update_validation: Upgrading pacemaker-1.3-style configuration to pacemaker-2.0 with upgrade-1.3.xsl --( schemas.c:816 ) info: update_validation: Transformation upgrade-1.3.xsl successful --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.0' validation (6 of X) --( schemas.c:797 ) debug: update_validation: pacemaker-2.0-style configuration is also valid for pacemaker-2.1 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.1' validation (7 of X) --( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.1 --( schemas.c:797 ) debug: update_validation: pacemaker-2.1-style configuration is also valid for pacemaker-2.2 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.2' validation (8 of X) --( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.2 --( schemas.c:797 ) debug: update_validation: pacemaker-2.2-style configuration is also valid for pacemaker-2.3 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.3' validation (9 of X) --( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.3 --( schemas.c:797 ) debug: update_validation: pacemaker-2.3-style configuration is also valid for pacemaker-2.4 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.4' validation (10 of X) --( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.4 --( schemas.c:797 ) debug: update_validation: pacemaker-2.4-style configuration is also valid for pacemaker-2.5 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.5' validation (11 of X) --( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.5 --( schemas.c:797 ) debug: update_validation: pacemaker-2.5-style configuration is also valid for pacemaker-2.6 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.6' validation (12 of X) --( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.6 --( schemas.c:797 ) debug: update_validation: pacemaker-2.6-style configuration is also valid for pacemaker-2.7 --( schemas.c:751 ) debug: update_validation: Testing 'pacemaker-2.7' validation (13 of X) --( schemas.c:771 ) debug: update_validation: Configuration valid for schema: pacemaker-2.7 --( schemas.c:787 ) trace: update_validation: Stopping at pacemaker-2.7 --( schemas.c:843 ) info: update_validation: Transformed the configuration from pacemaker-1.2 to pacemaker-2.7 -+( schemas.c:NNN ) trace: update_validation: pacemaker-1.2 validation failed -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-1.3' validation (5 of X) -+( schemas.c:NNN ) debug: update_validation: Upgrading pacemaker-1.3-style configuration to pacemaker-2.0 with upgrade-1.3.xsl -+( schemas.c:NNN ) info: update_validation: Transformation upgrade-1.3.xsl successful -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.0' validation (6 of X) -+( schemas.c:NNN ) debug: update_validation: pacemaker-2.0-style configuration is also valid for pacemaker-2.1 -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.1' validation (7 of X) -+( schemas.c:NNN ) debug: update_validation: Configuration valid for schema: pacemaker-2.1 -+( schemas.c:NNN ) debug: update_validation: pacemaker-2.1-style configuration is also valid for pacemaker-2.2 -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.2' validation (8 of X) -+( schemas.c:NNN ) debug: update_validation: Configuration valid for schema: pacemaker-2.2 -+( schemas.c:NNN ) debug: update_validation: pacemaker-2.2-style configuration is also valid for pacemaker-2.3 -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.3' validation (9 of X) -+( schemas.c:NNN ) debug: update_validation: Configuration valid for schema: pacemaker-2.3 -+( schemas.c:NNN ) debug: update_validation: pacemaker-2.3-style configuration is also valid for pacemaker-2.4 -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.4' validation (10 of X) -+( schemas.c:NNN ) debug: update_validation: Configuration valid for schema: pacemaker-2.4 -+( schemas.c:NNN ) debug: update_validation: pacemaker-2.4-style configuration is also valid for pacemaker-2.5 -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.5' validation (11 of X) -+( schemas.c:NNN ) debug: update_validation: Configuration valid for schema: pacemaker-2.5 -+( schemas.c:NNN ) debug: update_validation: pacemaker-2.5-style configuration is also valid for pacemaker-2.6 -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.6' validation (12 of X) -+( schemas.c:NNN ) debug: update_validation: Configuration valid for schema: pacemaker-2.6 -+( schemas.c:NNN ) debug: update_validation: pacemaker-2.6-style configuration is also valid for pacemaker-2.7 -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.7' validation (13 of X) -+( schemas.c:NNN ) debug: update_validation: Configuration valid for schema: pacemaker-2.7 -+( schemas.c:NNN ) trace: update_validation: Stopping at pacemaker-2.7 -+( schemas.c:NNN ) info: update_validation: Transformed the configuration from pacemaker-1.2 to pacemaker-2.7 - error: unpack_resources: Resource start-up disabled since no STONITH resources have been defined - error: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option - error: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity --- -1.8.3.1 - - -From eacd1a651d5c081aa297d09e07a1bc0b3d00fe04 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 19 Jan 2017 17:56:47 -0600 -Subject: [PATCH 2/2] Test: tools: make regression test clean up after itself - on success - ---- - tools/regression.sh | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/tools/regression.sh b/tools/regression.sh -index edc5e6b..56de6a4 100755 ---- a/tools/regression.sh -+++ b/tools/regression.sh -@@ -606,7 +606,7 @@ function test_acls() { - $VALGRIND_CMD crm_shadow --batch --force --create-empty $shadow --validate-with pacemaker-1.3 2>&1 - export CIB_shadow=$shadow - -- cat</tmp/$$.acls.xml -+ cat </tmp/$$.acls.xml - - - -@@ -794,5 +794,9 @@ elif [ $failed = 1 ]; then - exit 2 - else - echo $num_passed tests passed -+ for t in $tests; do -+ rm -f "$test_home/regression.$t.out" -+ done -+ crm_shadow --force --delete $shadow >/dev/null 2>&1 - exit 0 - fi --- -1.8.3.1 - diff --git a/SOURCES/016-waitpid.patch b/SOURCES/016-waitpid.patch deleted file mode 100644 index efef1d3..0000000 --- a/SOURCES/016-waitpid.patch +++ /dev/null @@ -1,134 +0,0 @@ -From 142169da59518ee17bbf885dfbf42525fd2c1d0b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Tue, 31 Jan 2017 20:06:21 +0100 -Subject: [PATCH 1/2] Low: libservices (sync): ensure no zombie is left behind - -It could happen because this parent that is to wait for its -not-well-behaved child is knowlingly not blocking any signal (beside -SIGCHLD explicitly in case of using signalfd facility) and delivery of -such signal can interrupt waitpid, at least on paper, so protect -against this accordingly. - -Speaking of SIGCHLD in plain self-pipe (not signalfd one) context, while -there's no clash with other synchronous actions, it may be the case with -asynchronous ones (or for that matter, arbitrary other fork-related -activities in the main program a library can have no idea about), and -this is exactly what could interrupt waitpid for real. ---- - lib/services/services_linux.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c -index cd7fd3f..ffb74ef 100644 ---- a/lib/services/services_linux.c -+++ b/lib/services/services_linux.c -@@ -517,7 +517,7 @@ action_synced_wait(svc_action_t * op, sigset_t *mask) - if (1) { - /* Clear out the sigchld pipe. */ - char ch; -- while (read(sfd, &ch, 1) == 1); -+ while (read(sfd, &ch, 1) == 1) /*omit*/; - #endif - wait_rc = waitpid(op->pid, &status, WNOHANG); - -@@ -567,7 +567,7 @@ action_synced_wait(svc_action_t * op, sigset_t *mask) - * - * This makes it safe to skip WNOHANG here - */ -- waitpid(op->pid, &status, 0); -+ while (waitpid(op->pid, &status, 0) == (pid_t) -1 && errno == EINTR) /*omit*/; - - } else if (WIFEXITED(status)) { - op->status = PCMK_LRM_OP_DONE; --- -1.8.3.1 - - -From 9acc32260562df262a768bd2259372d16d90283b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Tue, 31 Jan 2017 20:49:04 +0100 -Subject: [PATCH 2/2] Low: libservices(sync): partially prevent killing foreign - process - -Do not attempt sending SIGKILL to process for which previous -waitpid(pid, &st, WNOHANG) indicated ECHILD issue. This might -be a result of clashing with another thread or an orthogonal -signal handler getting to reap the child first. - -For good measure, repeat non-hanging waitpid test right before -killing -- it won't prevent illustrated race, but will limit it -a bit more. That's unlikely, sad path, hence without regularly -imposed performance penalty. And when we can pay more attention -to prevent killing innocent processes (the code in question is -commonly run as root so nothing will prevent that), we should. ---- - lib/services/services_linux.c | 36 +++++++++++++++++++++--------------- - 1 file changed, 21 insertions(+), 15 deletions(-) - -diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c -index ffb74ef..16f25f3 100644 ---- a/lib/services/services_linux.c -+++ b/lib/services/services_linux.c -@@ -521,11 +521,19 @@ action_synced_wait(svc_action_t * op, sigset_t *mask) - #endif - wait_rc = waitpid(op->pid, &status, WNOHANG); - -- if (wait_rc < 0){ -- crm_perror(LOG_ERR, "waitpid() for %d failed", op->pid); -- -- } else if (wait_rc > 0) { -+ if (wait_rc > 0) { - break; -+ -+ } else if (wait_rc < 0){ -+ if (errno == ECHILD) { -+ /* Here, don't dare to kill and bail out... */ -+ break; -+ -+ } else { -+ /* ...otherwise pretend process still runs. */ -+ wait_rc = 0; -+ } -+ crm_perror(LOG_ERR, "waitpid() for %d failed", op->pid); - } - } - } -@@ -547,9 +555,8 @@ action_synced_wait(svc_action_t * op, sigset_t *mask) - - crm_trace("Child done: %d", op->pid); - if (wait_rc <= 0) { -- int killrc = kill(op->pid, SIGKILL); -- - op->rc = PCMK_OCF_UNKNOWN_ERROR; -+ - if (op->timeout > 0 && timeout <= 0) { - op->status = PCMK_LRM_OP_TIMEOUT; - crm_warn("%s:%d - timed out after %dms", op->id, op->pid, op->timeout); -@@ -558,16 +565,15 @@ action_synced_wait(svc_action_t * op, sigset_t *mask) - op->status = PCMK_LRM_OP_ERROR; - } - -- if (killrc && errno != ESRCH) { -- crm_err("kill(%d, KILL) failed: %d", op->pid, errno); -+ /* If only child hasn't been successfully waited for, yet. -+ This is to limit killing wrong target a bit more. */ -+ if (wait_rc == 0 && waitpid(op->pid, &status, WNOHANG) == 0) { -+ if (kill(op->pid, SIGKILL)) { -+ crm_err("kill(%d, KILL) failed: %d", op->pid, errno); -+ } -+ /* Safe to skip WNOHANG here as we sent non-ignorable signal. */ -+ while (waitpid(op->pid, &status, 0) == (pid_t) -1 && errno == EINTR) /*omit*/; - } -- /* -- * From sigprocmask(2): -- * It is not possible to block SIGKILL or SIGSTOP. Attempts to do so are silently ignored. -- * -- * This makes it safe to skip WNOHANG here -- */ -- while (waitpid(op->pid, &status, 0) == (pid_t) -1 && errno == EINTR) /*omit*/; - - } else if (WIFEXITED(status)) { - op->status = PCMK_LRM_OP_DONE; --- -1.8.3.1 - diff --git a/SOURCES/017-use-of-null.patch b/SOURCES/017-use-of-null.patch deleted file mode 100644 index b3aed5e..0000000 --- a/SOURCES/017-use-of-null.patch +++ /dev/null @@ -1,38 +0,0 @@ -From a7476dd96e79197f65acf0f049f75ce8e8f9e801 Mon Sep 17 00:00:00 2001 -From: Jan Pokorny -Date: Thu, 2 Feb 2017 14:51:46 +0100 -Subject: [PATCH] Fix: crm_mon: protect against non-standard or failing asctime - -So far, we have been likely covered by standards requiring asctime to -produce an output ending with \n\0 bytes, because otherwise, we would -overrun the buffer, reading unspecified content, possibly segfaulting. -This was actually discovered with a brand new GCC7 warning -( [-Werror=pointer-compare]). - -Another latent issue was that the code was not ready for the case -of failing asctime call (returning NULL). This is now fixed as well. ---- - tools/crm_mon.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/tools/crm_mon.c b/tools/crm_mon.c -index 776aea8..023b07b 100644 ---- a/tools/crm_mon.c -+++ b/tools/crm_mon.c -@@ -954,10 +954,10 @@ print_nvpair(FILE *stream, const char *name, const char *value, - - /* Otherwise print user-friendly time string */ - } else { -- char *date_str, *c; -+ static char empty_str[] = ""; -+ char *c, *date_str = asctime(localtime(&epoch_time)); - -- date_str = asctime(localtime(&epoch_time)); -- for (c = date_str; c != '\0'; ++c) { -+ for (c = (date_str != NULL) ? date_str : empty_str; *c != '\0'; ++c) { - if (*c == '\n') { - *c = '\0'; - break; --- -1.8.3.1 - diff --git a/SOURCES/018-crm_node-ra.patch b/SOURCES/018-crm_node-ra.patch deleted file mode 100644 index 27284cc..0000000 --- a/SOURCES/018-crm_node-ra.patch +++ /dev/null @@ -1,69 +0,0 @@ -From e0eb9e766dc3dd296e7a5e623bf7b10ebcdb33f7 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 6 Feb 2017 13:54:50 -0600 -Subject: [PATCH] Fix: libcrmcommon,pengine,tools: pass local node name to - resource agents - -Preivously, crm_node -n would show the local uname on remote nodes, even when -the node name known to the cluster was different. Now, the policy engine adds -environment variables with the local node name and UUID before calling the -resource agent. If crm_node detects these variables, it will use them instead -of uname. - -This only affects crm_node behavior when called via the cluster, not -directly from the command line. - -Based on patch originally provided by Andrew Beekhof ---- - lib/common/utils.c | 2 ++ - pengine/graph.c | 3 +++ - tools/crm_node.c | 6 +++++- - 3 files changed, 10 insertions(+), 1 deletion(-) - -diff --git a/lib/common/utils.c b/lib/common/utils.c -index 83072c5..3e3abd3 100644 ---- a/lib/common/utils.c -+++ b/lib/common/utils.c -@@ -894,6 +894,8 @@ filter_action_parameters(xmlNode * param_set, const char *version) - XML_ATTR_ID, - XML_ATTR_CRM_VERSION, - XML_LRM_ATTR_OP_DIGEST, -+ XML_LRM_ATTR_TARGET, -+ XML_LRM_ATTR_TARGET_UUID, - }; - - gboolean do_delete = FALSE; -diff --git a/pengine/graph.c b/pengine/graph.c -index 569cf6e..81d8355 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -948,6 +948,9 @@ action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set) - if (router_node) { - crm_xml_add(action_xml, XML_LRM_ATTR_ROUTER_NODE, router_node->details->uname); - } -+ -+ g_hash_table_insert(action->meta, strdup(XML_LRM_ATTR_TARGET), strdup(action->node->details->uname)); -+ g_hash_table_insert(action->meta, strdup(XML_LRM_ATTR_TARGET_UUID), strdup(action->node->details->id)); - } - - /* No details if this action is only being listed in the inputs section */ -diff --git a/tools/crm_node.c b/tools/crm_node.c -index d927f31..7092db4 100644 ---- a/tools/crm_node.c -+++ b/tools/crm_node.c -@@ -951,7 +951,11 @@ main(int argc, char **argv) - } - - if (command == 'n') { -- fprintf(stdout, "%s\n", get_local_node_name()); -+ const char *name = getenv("OCF_RESKEY_" CRM_META "_" XML_LRM_ATTR_TARGET); -+ if(name == NULL) { -+ name = get_local_node_name(); -+ } -+ fprintf(stdout, "%s\n", name); - crm_exit(pcmk_ok); - - } else if (command == 'N') { --- -1.8.3.1 - diff --git a/SOURCES/019-crm_node-ra-tests.patch b/SOURCES/019-crm_node-ra-tests.patch deleted file mode 100644 index 00b17bd..0000000 --- a/SOURCES/019-crm_node-ra-tests.patch +++ /dev/null @@ -1,61478 +0,0 @@ -From ac29e7a439be25c9c22e0062e3c94d067766fe47 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 7 Feb 2017 17:16:25 -0600 -Subject: [PATCH] Test: pengine: update regression tests for new - meta-attributes - ---- - pengine/test10/1-a-then-bm-move-b.exp | 8 +- - pengine/test10/10-a-then-bm-b-move-a-clone.exp | 8 +- - .../11-a-then-bm-b-move-a-clone-starting.exp | 10 +- - pengine/test10/1360.exp | 4 +- - pengine/test10/1484.exp | 2 +- - pengine/test10/1494.exp | 2 +- - pengine/test10/2-am-then-b-move-a.exp | 8 +- - pengine/test10/3-am-then-bm-both-migrate.exp | 16 +- - pengine/test10/4-am-then-bm-b-not-migratable.exp | 14 +- - pengine/test10/5-am-then-bm-a-not-migratable.exp | 12 +- - pengine/test10/594.exp | 28 +- - pengine/test10/6-migrate-group.exp | 24 +- - pengine/test10/662.exp | 56 +-- - pengine/test10/696.exp | 54 +-- - .../test10/7-migrate-group-one-unmigratable.exp | 20 +- - pengine/test10/726.exp | 94 ++--- - pengine/test10/735.exp | 26 +- - pengine/test10/764.exp | 30 +- - pengine/test10/797.exp | 50 +-- - .../test10/8-am-then-bm-a-migrating-b-stopping.exp | 10 +- - pengine/test10/829.exp | 38 +- - .../test10/9-am-then-bm-b-migrating-a-stopping.exp | 4 +- - pengine/test10/994-2.exp | 10 +- - pengine/test10/994.exp | 6 +- - pengine/test10/a-demote-then-b-migrate.exp | 36 +- - pengine/test10/a-promote-then-b-migrate.exp | 22 +- - pengine/test10/anti-colocation-master.exp | 8 +- - pengine/test10/anti-colocation-order.exp | 12 +- - pengine/test10/anti-colocation-slave.exp | 8 +- - pengine/test10/asymmetric.exp | 8 +- - pengine/test10/asymmetrical-order-move.exp | 2 +- - pengine/test10/attrs1.exp | 6 +- - pengine/test10/attrs2.exp | 6 +- - pengine/test10/attrs3.exp | 6 +- - pengine/test10/attrs4.exp | 6 +- - pengine/test10/attrs5.exp | 4 +- - pengine/test10/attrs6.exp | 6 +- - pengine/test10/attrs7.exp | 6 +- - pengine/test10/attrs8.exp | 6 +- - pengine/test10/balanced.exp | 12 +- - pengine/test10/base-score.exp | 10 +- - pengine/test10/bnc-515172.exp | 4 +- - pengine/test10/bug-1572-1.exp | 46 +- - pengine/test10/bug-1572-2.exp | 26 +- - pengine/test10/bug-1573.exp | 4 +- - pengine/test10/bug-1685.exp | 16 +- - pengine/test10/bug-1718.exp | 14 +- - pengine/test10/bug-1765.exp | 8 +- - pengine/test10/bug-1820-1.exp | 24 +- - pengine/test10/bug-1820.exp | 18 +- - pengine/test10/bug-1822.exp | 10 +- - pengine/test10/bug-5007-masterslave_colocation.exp | 8 +- - pengine/test10/bug-5014-A-start-B-start.exp | 12 +- - pengine/test10/bug-5014-A-stop-B-started.exp | 2 +- - pengine/test10/bug-5014-A-stopped-B-stopped.exp | 4 +- - pengine/test10/bug-5014-CLONE-A-start-B-start.exp | 12 +- - pengine/test10/bug-5014-CLONE-A-stop-B-started.exp | 2 +- - pengine/test10/bug-5014-CthenAthenB-C-stopped.exp | 6 +- - pengine/test10/bug-5014-GROUP-A-start-B-start.exp | 8 +- - .../test10/bug-5014-GROUP-A-stopped-B-started.exp | 2 +- - .../bug-5014-ordered-set-symmetrical-false.exp | 2 +- - .../bug-5014-ordered-set-symmetrical-true.exp | 4 +- - pengine/test10/bug-5025-1.exp | 6 +- - pengine/test10/bug-5025-3.exp | 8 +- - pengine/test10/bug-5025-4.exp | 8 +- - pengine/test10/bug-5028-bottom.exp | 2 +- - pengine/test10/bug-5028-detach.exp | 2 +- - pengine/test10/bug-5059.exp | 44 +- - pengine/test10/bug-5069-op-disabled.exp | 4 +- - pengine/test10/bug-5140-require-all-false.exp | 6 +- - pengine/test10/bug-5143-ms-shuffle.exp | 14 +- - pengine/test10/bug-5186-partial-migrate.exp | 16 +- - pengine/test10/bug-cl-5168.exp | 14 +- - pengine/test10/bug-cl-5170.exp | 4 +- - pengine/test10/bug-cl-5212.exp | 4 +- - pengine/test10/bug-cl-5213.exp | 2 +- - pengine/test10/bug-cl-5219.exp | 2 +- - pengine/test10/bug-cl-5247.exp | 34 +- - pengine/test10/bug-lf-1852.exp | 8 +- - pengine/test10/bug-lf-1920.exp | 2 +- - pengine/test10/bug-lf-2106.exp | 16 +- - pengine/test10/bug-lf-2153.exp | 10 +- - pengine/test10/bug-lf-2160.exp | 4 +- - pengine/test10/bug-lf-2171.exp | 8 +- - pengine/test10/bug-lf-2213.exp | 4 +- - pengine/test10/bug-lf-2317.exp | 14 +- - pengine/test10/bug-lf-2358.exp | 8 +- - pengine/test10/bug-lf-2361.exp | 18 +- - pengine/test10/bug-lf-2422.exp | 26 +- - pengine/test10/bug-lf-2435.exp | 12 +- - pengine/test10/bug-lf-2445.exp | 4 +- - pengine/test10/bug-lf-2453.exp | 10 +- - pengine/test10/bug-lf-2474.exp | 4 +- - pengine/test10/bug-lf-2493.exp | 68 +-- - pengine/test10/bug-lf-2508.exp | 14 +- - pengine/test10/bug-lf-2544.exp | 2 +- - pengine/test10/bug-lf-2551.exp | 10 +- - pengine/test10/bug-lf-2574.exp | 8 +- - pengine/test10/bug-lf-2581.exp | 26 +- - pengine/test10/bug-lf-2606.exp | 4 +- - pengine/test10/bug-lf-2613.exp | 36 +- - pengine/test10/bug-lf-2619.exp | 38 +- - pengine/test10/bug-n-385265-2.exp | 12 +- - pengine/test10/bug-n-385265.exp | 2 +- - pengine/test10/bug-n-387749.exp | 30 +- - pengine/test10/bug-pm-11.exp | 14 +- - pengine/test10/bug-pm-12.exp | 12 +- - pengine/test10/bug-rh-1097457.exp | 30 +- - pengine/test10/bug-rh-880249.exp | 14 +- - pengine/test10/bug-suse-707150.exp | 16 +- - pengine/test10/clone-anon-dup.exp | 10 +- - pengine/test10/clone-anon-failcount.exp | 38 +- - pengine/test10/clone-anon-probe-1.exp | 8 +- - pengine/test10/clone-anon-probe-2.exp | 2 +- - pengine/test10/clone-colocate-instance-1.exp | 20 +- - pengine/test10/clone-colocate-instance-2.exp | 20 +- - pengine/test10/clone-fail-block-colocation.exp | 24 +- - pengine/test10/clone-interleave-1.exp | 16 +- - pengine/test10/clone-interleave-2.exp | 8 +- - pengine/test10/clone-interleave-3.exp | 12 +- - pengine/test10/clone-max-zero.exp | 12 +- - pengine/test10/clone-no-shuffle.exp | 28 +- - pengine/test10/clone-order-16instances.exp | 56 +-- - pengine/test10/clone-order-instance.exp | 14 +- - pengine/test10/clone-order-primitive.exp | 6 +- - pengine/test10/clone-require-all-1.exp | 8 +- - pengine/test10/clone-require-all-2.exp | 10 +- - pengine/test10/clone-require-all-3.exp | 14 +- - pengine/test10/clone-require-all-4.exp | 8 +- - pengine/test10/clone-require-all-5.exp | 16 +- - pengine/test10/clone-require-all-6.exp | 4 +- - pengine/test10/clone-require-all-7.exp | 24 +- - .../test10/clone-require-all-no-interleave-1.exp | 20 +- - .../test10/clone-require-all-no-interleave-2.exp | 20 +- - .../test10/clone-require-all-no-interleave-3.exp | 18 +- - pengine/test10/clone_min_interleave_start_one.exp | 4 +- - pengine/test10/clone_min_interleave_start_two.exp | 32 +- - pengine/test10/clone_min_interleave_stop_one.exp | 2 +- - pengine/test10/clone_min_interleave_stop_two.exp | 16 +- - pengine/test10/clone_min_start_one.exp | 10 +- - pengine/test10/clone_min_start_two.exp | 12 +- - pengine/test10/clone_min_stop_all.exp | 14 +- - pengine/test10/clone_min_stop_one.exp | 2 +- - pengine/test10/clone_min_stop_two.exp | 12 +- - pengine/test10/cloned-group-stop.exp | 32 +- - pengine/test10/cloned-group.exp | 16 +- - pengine/test10/cloned_start_one.exp | 8 +- - pengine/test10/cloned_start_two.exp | 10 +- - pengine/test10/cloned_stop_one.exp | 4 +- - pengine/test10/cloned_stop_two.exp | 8 +- - pengine/test10/cluster-specific-params.exp | 8 +- - pengine/test10/colo_master_w_native.exp | 24 +- - pengine/test10/colo_slave_w_native.exp | 30 +- - pengine/test10/coloc-attr.exp | 4 +- - pengine/test10/coloc-clone-stays-active.exp | 8 +- - pengine/test10/coloc-group.exp | 22 +- - pengine/test10/coloc-intra-set.exp | 22 +- - pengine/test10/coloc-list.exp | 28 +- - pengine/test10/coloc-loop.exp | 24 +- - pengine/test10/coloc-many-one.exp | 24 +- - pengine/test10/coloc-negative-group.exp | 4 +- - pengine/test10/coloc-slave-anti.exp | 12 +- - pengine/test10/coloc_fp_logic.exp | 6 +- - pengine/test10/colocate-primitive-with-clone.exp | 16 +- - pengine/test10/colocated-utilization-clone.exp | 46 +- - pengine/test10/colocated-utilization-group.exp | 30 +- - .../test10/colocated-utilization-primitive-1.exp | 18 +- - .../test10/colocated-utilization-primitive-2.exp | 16 +- - .../test10/colocation_constraint_stops_master.exp | 12 +- - .../test10/colocation_constraint_stops_slave.exp | 6 +- - pengine/test10/comments.exp | 12 +- - pengine/test10/complex_enforce_colo.exp | 186 ++++----- - pengine/test10/container-1.exp | 16 +- - pengine/test10/container-2.exp | 18 +- - pengine/test10/container-3.exp | 16 +- - pengine/test10/container-4.exp | 18 +- - pengine/test10/container-group-1.exp | 16 +- - pengine/test10/container-group-2.exp | 18 +- - pengine/test10/container-group-3.exp | 14 +- - pengine/test10/container-group-4.exp | 18 +- - pengine/test10/date-1.exp | 6 +- - pengine/test10/enforce-colo1.exp | 10 +- - pengine/test10/expire-non-blocked-failure.exp | 2 +- - pengine/test10/failcount-block.exp | 16 +- - pengine/test10/failcount.exp | 8 +- - pengine/test10/group-dependents.exp | 146 +++---- - pengine/test10/group-fail.exp | 12 +- - pengine/test10/group-unmanaged-stopped.exp | 2 +- - pengine/test10/group1.exp | 18 +- - pengine/test10/group10.exp | 36 +- - pengine/test10/group11.exp | 4 +- - pengine/test10/group13.exp | 2 +- - pengine/test10/group14.exp | 10 +- - pengine/test10/group15.exp | 30 +- - pengine/test10/group2.exp | 30 +- - pengine/test10/group3.exp | 36 +- - pengine/test10/group4.exp | 10 +- - pengine/test10/group5.exp | 30 +- - pengine/test10/group6.exp | 36 +- - pengine/test10/group7.exp | 56 +-- - pengine/test10/group8.exp | 22 +- - pengine/test10/group9.exp | 36 +- - pengine/test10/guest-node-host-dies.exp | 30 +- - pengine/test10/honor_stonith_rsc_order1.exp | 12 +- - pengine/test10/honor_stonith_rsc_order2.exp | 20 +- - pengine/test10/honor_stonith_rsc_order3.exp | 20 +- - pengine/test10/honor_stonith_rsc_order4.exp | 12 +- - pengine/test10/ignore_stonith_rsc_order1.exp | 8 +- - pengine/test10/ignore_stonith_rsc_order2.exp | 12 +- - pengine/test10/ignore_stonith_rsc_order3.exp | 12 +- - pengine/test10/ignore_stonith_rsc_order4.exp | 12 +- - pengine/test10/inc0.exp | 28 +- - pengine/test10/inc1.exp | 40 +- - pengine/test10/inc10.exp | 18 +- - pengine/test10/inc11.exp | 26 +- - pengine/test10/inc12.exp | 62 +-- - pengine/test10/inc2.exp | 20 +- - pengine/test10/inc3.exp | 38 +- - pengine/test10/inc4.exp | 38 +- - pengine/test10/inc5.exp | 80 ++-- - pengine/test10/inc6.exp | 24 +- - pengine/test10/inc7.exp | 88 ++-- - pengine/test10/inc8.exp | 50 +-- - pengine/test10/inc9.exp | 6 +- - pengine/test10/interleave-0.exp | 324 +++++++------- - pengine/test10/interleave-1.exp | 324 +++++++------- - pengine/test10/interleave-2.exp | 324 +++++++------- - pengine/test10/interleave-3.exp | 324 +++++++------- - pengine/test10/interleave-pseudo-stop.exp | 12 +- - pengine/test10/interleave-restart.exp | 52 +-- - pengine/test10/interleave-stop.exp | 26 +- - pengine/test10/isolation-clone.exp | 16 +- - pengine/test10/isolation-restart-all.exp | 66 +-- - pengine/test10/isolation-start-all.exp | 44 +- - pengine/test10/load-stopped-loop-2.exp | 68 +-- - pengine/test10/load-stopped-loop.exp | 56 +-- - pengine/test10/location-sets-templates.exp | 36 +- - pengine/test10/managed-0.exp | 162 +++---- - pengine/test10/managed-1.exp | 162 +++---- - pengine/test10/managed-2.exp | 230 +++++----- - pengine/test10/master-0.exp | 28 +- - pengine/test10/master-1.exp | 30 +- - pengine/test10/master-10.exp | 62 +-- - pengine/test10/master-11.exp | 20 +- - pengine/test10/master-12.exp | 2 +- - pengine/test10/master-13.exp | 34 +- - pengine/test10/master-2.exp | 54 +-- - pengine/test10/master-3.exp | 30 +- - pengine/test10/master-4.exp | 60 +-- - pengine/test10/master-5.exp | 54 +-- - pengine/test10/master-6.exp | 48 +-- - pengine/test10/master-7.exp | 58 +-- - pengine/test10/master-8.exp | 64 +-- - pengine/test10/master-9.exp | 38 +- - pengine/test10/master-asymmetrical-order.exp | 6 +- - pengine/test10/master-colocation.exp | 6 +- - pengine/test10/master-demote-2.exp | 28 +- - pengine/test10/master-demote-block.exp | 2 +- - pengine/test10/master-demote.exp | 16 +- - pengine/test10/master-depend.exp | 22 +- - pengine/test10/master-dependent-ban.exp | 16 +- - pengine/test10/master-failed-demote-2.exp | 14 +- - pengine/test10/master-failed-demote.exp | 32 +- - pengine/test10/master-group.exp | 6 +- - pengine/test10/master-move.exp | 44 +- - pengine/test10/master-notify.exp | 14 +- - pengine/test10/master-ordering.exp | 50 +-- - pengine/test10/master-partially-demoted-group.exp | 58 +-- - pengine/test10/master-probed-score.exp | 282 ++++++------- - pengine/test10/master-promotion-constraint.exp | 6 +- - pengine/test10/master-pseudo.exp | 18 +- - pengine/test10/master-reattach.exp | 10 +- - pengine/test10/master-role.exp | 2 +- - pengine/test10/master-stop.exp | 2 +- - pengine/test10/master-unmanaged-monitor.exp | 20 +- - pengine/test10/master_monitor_restart.exp | 2 +- - pengine/test10/migrate-1.exp | 8 +- - pengine/test10/migrate-3.exp | 6 +- - pengine/test10/migrate-4.exp | 4 +- - pengine/test10/migrate-5.exp | 8 +- - pengine/test10/migrate-begin.exp | 6 +- - pengine/test10/migrate-both-vms.exp | 36 +- - pengine/test10/migrate-fail-2.exp | 6 +- - pengine/test10/migrate-fail-3.exp | 4 +- - pengine/test10/migrate-fail-4.exp | 6 +- - pengine/test10/migrate-fail-5.exp | 2 +- - pengine/test10/migrate-fail-6.exp | 6 +- - pengine/test10/migrate-fail-7.exp | 2 +- - pengine/test10/migrate-fail-8.exp | 4 +- - pengine/test10/migrate-fail-9.exp | 4 +- - pengine/test10/migrate-fencing.exp | 36 +- - pengine/test10/migrate-partial-1.exp | 2 +- - pengine/test10/migrate-partial-2.exp | 4 +- - pengine/test10/migrate-partial-3.exp | 4 +- - pengine/test10/migrate-partial-4.exp | 28 +- - pengine/test10/migrate-shutdown.exp | 42 +- - pengine/test10/migrate-start-complex.exp | 20 +- - pengine/test10/migrate-start.exp | 8 +- - pengine/test10/migrate-stop-complex.exp | 14 +- - pengine/test10/migrate-stop-start-complex.exp | 12 +- - pengine/test10/migrate-stop.exp | 8 +- - pengine/test10/migrate-stop_start.exp | 10 +- - pengine/test10/minimal.exp | 12 +- - pengine/test10/mon-rsc-1.exp | 8 +- - pengine/test10/mon-rsc-2.exp | 8 +- - pengine/test10/mon-rsc-3.exp | 6 +- - pengine/test10/mon-rsc-4.exp | 8 +- - pengine/test10/monitor-onfail-restart.exp | 6 +- - pengine/test10/monitor-onfail-stop.exp | 2 +- - pengine/test10/monitor-recovery.exp | 2 +- - pengine/test10/multi1.exp | 6 +- - pengine/test10/multiple-monitor-one-failed.exp | 8 +- - pengine/test10/node-maintenance-1.exp | 4 +- - pengine/test10/node-maintenance-2.exp | 6 +- - pengine/test10/not-installed-agent.exp | 12 +- - pengine/test10/not-installed-tools.exp | 6 +- - pengine/test10/not-reschedule-unneeded-monitor.exp | 6 +- - pengine/test10/notify-0.exp | 8 +- - pengine/test10/notify-1.exp | 16 +- - pengine/test10/notify-2.exp | 16 +- - pengine/test10/notify-3.exp | 30 +- - pengine/test10/novell-239079.exp | 8 +- - pengine/test10/novell-239082.exp | 30 +- - pengine/test10/novell-251689.exp | 2 +- - pengine/test10/novell-252693-2.exp | 56 +-- - pengine/test10/novell-252693-3.exp | 62 +-- - pengine/test10/novell-252693.exp | 38 +- - pengine/test10/nvpair-id-ref.exp | 16 +- - pengine/test10/obsolete-lrm-resource.exp | 6 +- - pengine/test10/one-or-more-0.exp | 16 +- - pengine/test10/one-or-more-1.exp | 8 +- - pengine/test10/one-or-more-2.exp | 14 +- - pengine/test10/one-or-more-3.exp | 10 +- - pengine/test10/one-or-more-4.exp | 14 +- - pengine/test10/one-or-more-5.exp | 20 +- - pengine/test10/one-or-more-6.exp | 2 +- - pengine/test10/one-or-more-7.exp | 2 +- - .../test10/one-or-more-unrunnnable-instances.exp | 464 ++++++++++----------- - pengine/test10/order-clone.exp | 2 +- - pengine/test10/order-mandatory.exp | 8 +- - pengine/test10/order-optional-keyword.exp | 2 +- - pengine/test10/order-optional.exp | 2 +- - pengine/test10/order-required.exp | 8 +- - pengine/test10/order-serialize-set.exp | 48 +-- - pengine/test10/order-serialize.exp | 48 +-- - pengine/test10/order-sets.exp | 24 +- - pengine/test10/order-wrong-kind.exp | 6 +- - pengine/test10/order1.exp | 18 +- - pengine/test10/order2.exp | 24 +- - pengine/test10/order3.exp | 24 +- - pengine/test10/order4.exp | 18 +- - pengine/test10/order5.exp | 32 +- - pengine/test10/order6.exp | 32 +- - pengine/test10/order7.exp | 14 +- - pengine/test10/order_constraint_stops_master.exp | 14 +- - pengine/test10/order_constraint_stops_slave.exp | 6 +- - pengine/test10/ordered-set-basic-startup.exp | 14 +- - pengine/test10/origin.exp | 2 +- - pengine/test10/orphan-0.exp | 26 +- - pengine/test10/orphan-1.exp | 34 +- - pengine/test10/orphan-2.exp | 38 +- - pengine/test10/params-0.exp | 30 +- - pengine/test10/params-1.exp | 42 +- - pengine/test10/params-2.exp | 26 +- - pengine/test10/params-4.exp | 40 +- - pengine/test10/params-5.exp | 42 +- - pengine/test10/params-6.exp | 8 +- - pengine/test10/per-node-attrs.exp | 8 +- - pengine/test10/placement-capacity.exp | 2 +- - pengine/test10/placement-location.exp | 2 +- - pengine/test10/placement-priority.exp | 2 +- - pengine/test10/placement-stickiness.exp | 2 +- - pengine/test10/probe-0.exp | 12 +- - pengine/test10/probe-1.exp | 6 +- - pengine/test10/probe-2.exp | 70 ++-- - pengine/test10/probe-timeout.exp | 20 +- - pengine/test10/quorum-1.exp | 14 +- - pengine/test10/quorum-2.exp | 12 +- - pengine/test10/quorum-3.exp | 12 +- - pengine/test10/quorum-4.exp | 6 +- - pengine/test10/quorum-5.exp | 12 +- - pengine/test10/quorum-6.exp | 20 +- - pengine/test10/rec-node-1.exp | 8 +- - pengine/test10/rec-node-10.exp | 6 +- - pengine/test10/rec-node-11.exp | 16 +- - pengine/test10/rec-node-12.exp | 86 ++-- - pengine/test10/rec-node-15.exp | 44 +- - pengine/test10/rec-node-2.exp | 28 +- - pengine/test10/rec-node-3.exp | 8 +- - pengine/test10/rec-node-4.exp | 12 +- - pengine/test10/rec-node-5.exp | 8 +- - pengine/test10/rec-node-6.exp | 12 +- - pengine/test10/rec-node-7.exp | 12 +- - pengine/test10/rec-node-8.exp | 8 +- - pengine/test10/rec-node-9.exp | 4 +- - pengine/test10/rec-rsc-0.exp | 4 +- - pengine/test10/rec-rsc-1.exp | 6 +- - pengine/test10/rec-rsc-2.exp | 8 +- - pengine/test10/rec-rsc-3.exp | 4 +- - pengine/test10/rec-rsc-4.exp | 2 +- - pengine/test10/rec-rsc-5.exp | 12 +- - pengine/test10/rec-rsc-6.exp | 6 +- - pengine/test10/rec-rsc-7.exp | 4 +- - pengine/test10/rec-rsc-9.exp | 12 +- - pengine/test10/remote-disable.exp | 4 +- - pengine/test10/remote-fence-before-reconnect.exp | 6 +- - pengine/test10/remote-fence-unclean.exp | 22 +- - pengine/test10/remote-move.exp | 14 +- - pengine/test10/remote-orphaned.exp | 14 +- - pengine/test10/remote-partial-migrate.exp | 82 ++-- - pengine/test10/remote-partial-migrate2.exp | 108 ++--- - pengine/test10/remote-recover-fail.exp | 22 +- - pengine/test10/remote-recover.exp | 14 +- - pengine/test10/remote-stale-node-entry.exp | 106 ++--- - pengine/test10/remote-start-fail.exp | 6 +- - pengine/test10/remote-startup-probes.exp | 24 +- - pengine/test10/remote-startup.exp | 26 +- - pengine/test10/remote-unclean2.exp | 6 +- - pengine/test10/reprobe-target_rc.exp | 4 +- - pengine/test10/resource-discovery.exp | 120 +++--- - pengine/test10/rsc-discovery-per-node.exp | 138 +++--- - pengine/test10/rsc-maintenance.exp | 4 +- - pengine/test10/rsc-sets-clone-1.exp | 64 +-- - pengine/test10/rsc-sets-clone.exp | 10 +- - pengine/test10/rsc-sets-master.exp | 18 +- - pengine/test10/rsc-sets-seq-false.exp | 24 +- - pengine/test10/rsc-sets-seq-true.exp | 24 +- - pengine/test10/rsc_dep1.exp | 12 +- - pengine/test10/rsc_dep10.exp | 10 +- - pengine/test10/rsc_dep2.exp | 16 +- - pengine/test10/rsc_dep3.exp | 12 +- - pengine/test10/rsc_dep4.exp | 20 +- - pengine/test10/rsc_dep5.exp | 16 +- - pengine/test10/rsc_dep7.exp | 18 +- - pengine/test10/rsc_dep8.exp | 16 +- - pengine/test10/simple11.exp | 12 +- - pengine/test10/simple12.exp | 12 +- - pengine/test10/simple2.exp | 6 +- - pengine/test10/simple3.exp | 2 +- - pengine/test10/simple4.exp | 2 +- - pengine/test10/simple6.exp | 6 +- - pengine/test10/simple7.exp | 4 +- - pengine/test10/simple8.exp | 8 +- - pengine/test10/site-specific-params.exp | 10 +- - pengine/test10/standby.exp | 48 +-- - pengine/test10/start-then-stop-with-unfence.exp | 18 +- - pengine/test10/stonith-0.exp | 22 +- - pengine/test10/stonith-1.exp | 48 +-- - pengine/test10/stonith-2.exp | 4 +- - pengine/test10/stonith-3.exp | 10 +- - pengine/test10/stop-failure-with-fencing.exp | 2 +- - pengine/test10/stopped-monitor-00.exp | 10 +- - pengine/test10/stopped-monitor-01.exp | 6 +- - pengine/test10/stopped-monitor-02.exp | 10 +- - pengine/test10/stopped-monitor-03.exp | 4 +- - pengine/test10/stopped-monitor-08.exp | 10 +- - pengine/test10/stopped-monitor-20.exp | 8 +- - pengine/test10/stopped-monitor-21.exp | 4 +- - pengine/test10/stopped-monitor-22.exp | 8 +- - pengine/test10/stopped-monitor-23.exp | 6 +- - pengine/test10/stopped-monitor-25.exp | 4 +- - pengine/test10/stopped-monitor-27.exp | 4 +- - pengine/test10/stopped-monitor-30.exp | 4 +- - pengine/test10/stopped-monitor-31.exp | 4 +- - pengine/test10/systemhealth2.exp | 16 +- - pengine/test10/systemhealth3.exp | 16 +- - pengine/test10/systemhealthm2.exp | 16 +- - pengine/test10/systemhealthm3.exp | 6 +- - pengine/test10/systemhealthn2.exp | 16 +- - pengine/test10/systemhealthn3.exp | 16 +- - pengine/test10/systemhealtho2.exp | 6 +- - pengine/test10/systemhealtho3.exp | 6 +- - pengine/test10/systemhealthp2.exp | 14 +- - pengine/test10/systemhealthp3.exp | 6 +- - pengine/test10/tags-coloc-order-1.exp | 24 +- - pengine/test10/tags-coloc-order-2.exp | 72 ++-- - pengine/test10/tags-location.exp | 36 +- - pengine/test10/tags-ticket.exp | 24 +- - pengine/test10/target-0.exp | 30 +- - pengine/test10/target-1.exp | 26 +- - pengine/test10/target-2.exp | 32 +- - pengine/test10/template-1.exp | 12 +- - pengine/test10/template-2.exp | 12 +- - pengine/test10/template-3.exp | 20 +- - pengine/test10/template-clone-group.exp | 16 +- - pengine/test10/template-clone-primitive.exp | 8 +- - pengine/test10/template-coloc-1.exp | 24 +- - pengine/test10/template-coloc-2.exp | 24 +- - pengine/test10/template-coloc-3.exp | 36 +- - pengine/test10/template-order-1.exp | 24 +- - pengine/test10/template-order-2.exp | 24 +- - pengine/test10/template-order-3.exp | 36 +- - pengine/test10/template-rsc-sets-1.exp | 30 +- - pengine/test10/template-rsc-sets-2.exp | 30 +- - pengine/test10/template-rsc-sets-3.exp | 30 +- - pengine/test10/template-rsc-sets-4.exp | 12 +- - pengine/test10/template-ticket.exp | 12 +- - pengine/test10/ticket-clone-1.exp | 4 +- - pengine/test10/ticket-clone-10.exp | 4 +- - pengine/test10/ticket-clone-11.exp | 8 +- - pengine/test10/ticket-clone-14.exp | 4 +- - pengine/test10/ticket-clone-15.exp | 4 +- - pengine/test10/ticket-clone-17.exp | 4 +- - pengine/test10/ticket-clone-18.exp | 4 +- - pengine/test10/ticket-clone-2.exp | 8 +- - pengine/test10/ticket-clone-20.exp | 4 +- - pengine/test10/ticket-clone-23.exp | 4 +- - pengine/test10/ticket-clone-3.exp | 4 +- - pengine/test10/ticket-clone-4.exp | 4 +- - pengine/test10/ticket-clone-5.exp | 8 +- - pengine/test10/ticket-clone-6.exp | 4 +- - pengine/test10/ticket-clone-7.exp | 4 +- - pengine/test10/ticket-clone-8.exp | 8 +- - pengine/test10/ticket-group-1.exp | 8 +- - pengine/test10/ticket-group-10.exp | 8 +- - pengine/test10/ticket-group-11.exp | 8 +- - pengine/test10/ticket-group-14.exp | 4 +- - pengine/test10/ticket-group-15.exp | 4 +- - pengine/test10/ticket-group-17.exp | 4 +- - pengine/test10/ticket-group-18.exp | 4 +- - pengine/test10/ticket-group-2.exp | 8 +- - pengine/test10/ticket-group-20.exp | 4 +- - pengine/test10/ticket-group-23.exp | 4 +- - pengine/test10/ticket-group-3.exp | 4 +- - pengine/test10/ticket-group-4.exp | 8 +- - pengine/test10/ticket-group-5.exp | 8 +- - pengine/test10/ticket-group-6.exp | 4 +- - pengine/test10/ticket-group-7.exp | 8 +- - pengine/test10/ticket-group-8.exp | 8 +- - pengine/test10/ticket-master-1.exp | 4 +- - pengine/test10/ticket-master-10.exp | 8 +- - pengine/test10/ticket-master-11.exp | 2 +- - pengine/test10/ticket-master-14.exp | 6 +- - pengine/test10/ticket-master-15.exp | 6 +- - pengine/test10/ticket-master-17.exp | 2 +- - pengine/test10/ticket-master-18.exp | 2 +- - pengine/test10/ticket-master-2.exp | 6 +- - pengine/test10/ticket-master-20.exp | 2 +- - pengine/test10/ticket-master-21.exp | 2 +- - pengine/test10/ticket-master-23.exp | 2 +- - pengine/test10/ticket-master-3.exp | 6 +- - pengine/test10/ticket-master-4.exp | 8 +- - pengine/test10/ticket-master-5.exp | 2 +- - pengine/test10/ticket-master-6.exp | 2 +- - pengine/test10/ticket-master-7.exp | 8 +- - pengine/test10/ticket-master-8.exp | 2 +- - pengine/test10/ticket-master-9.exp | 2 +- - pengine/test10/ticket-primitive-1.exp | 4 +- - pengine/test10/ticket-primitive-10.exp | 4 +- - pengine/test10/ticket-primitive-11.exp | 4 +- - pengine/test10/ticket-primitive-14.exp | 2 +- - pengine/test10/ticket-primitive-15.exp | 2 +- - pengine/test10/ticket-primitive-17.exp | 2 +- - pengine/test10/ticket-primitive-18.exp | 2 +- - pengine/test10/ticket-primitive-2.exp | 4 +- - pengine/test10/ticket-primitive-20.exp | 2 +- - pengine/test10/ticket-primitive-23.exp | 2 +- - pengine/test10/ticket-primitive-3.exp | 2 +- - pengine/test10/ticket-primitive-4.exp | 4 +- - pengine/test10/ticket-primitive-5.exp | 4 +- - pengine/test10/ticket-primitive-6.exp | 2 +- - pengine/test10/ticket-primitive-7.exp | 4 +- - pengine/test10/ticket-primitive-8.exp | 4 +- - pengine/test10/ticket-rsc-sets-1.exp | 24 +- - pengine/test10/ticket-rsc-sets-10.exp | 12 +- - pengine/test10/ticket-rsc-sets-12.exp | 6 +- - pengine/test10/ticket-rsc-sets-13.exp | 12 +- - pengine/test10/ticket-rsc-sets-14.exp | 12 +- - pengine/test10/ticket-rsc-sets-2.exp | 22 +- - pengine/test10/ticket-rsc-sets-3.exp | 12 +- - pengine/test10/ticket-rsc-sets-4.exp | 24 +- - pengine/test10/ticket-rsc-sets-5.exp | 12 +- - pengine/test10/ticket-rsc-sets-6.exp | 10 +- - pengine/test10/ticket-rsc-sets-7.exp | 12 +- - pengine/test10/ticket-rsc-sets-9.exp | 12 +- - pengine/test10/unfence-definition.exp | 28 +- - pengine/test10/unfence-parameters.exp | 30 +- - pengine/test10/unfence-startup.exp | 14 +- - pengine/test10/unmanaged-block-restart.exp | 4 +- - pengine/test10/unmanaged-master.exp | 4 +- - pengine/test10/unrunnable-1.exp | 22 +- - pengine/test10/use-after-free-merge.exp | 22 +- - pengine/test10/utilization-check-allowed-nodes.exp | 10 +- - pengine/test10/utilization-order1.exp | 4 +- - pengine/test10/utilization-order2.exp | 10 +- - pengine/test10/utilization-order3.exp | 8 +- - pengine/test10/utilization-order4.exp | 18 +- - pengine/test10/utilization-shuffle.exp | 24 +- - pengine/test10/utilization.exp | 10 +- - pengine/test10/whitebox-asymmetric.exp | 8 +- - pengine/test10/whitebox-fail1.exp | 18 +- - pengine/test10/whitebox-fail2.exp | 18 +- - pengine/test10/whitebox-fail3.exp | 18 +- - pengine/test10/whitebox-imply-stop-on-fence.exp | 24 +- - pengine/test10/whitebox-migrate1.exp | 28 +- - pengine/test10/whitebox-move.exp | 22 +- - pengine/test10/whitebox-ms-ordering-move.exp | 18 +- - pengine/test10/whitebox-ms-ordering.exp | 38 +- - pengine/test10/whitebox-nested-group.exp | 90 ++-- - pengine/test10/whitebox-orphan-ms.exp | 50 +-- - pengine/test10/whitebox-orphaned.exp | 28 +- - pengine/test10/whitebox-start.exp | 22 +- - pengine/test10/whitebox-stop.exp | 12 +- - pengine/test10/whitebox-unexpectedly-running.exp | 10 +- - 606 files changed, 6561 insertions(+), 6561 deletions(-) - -diff --git a/pengine/test10/1-a-then-bm-move-b.exp b/pengine/test10/1-a-then-bm-move-b.exp -index 542ddfa..b29c4ff 100644 ---- a/pengine/test10/1-a-then-bm-move-b.exp -+++ b/pengine/test10/1-a-then-bm-move-b.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/10-a-then-bm-b-move-a-clone.exp b/pengine/test10/10-a-then-bm-b-move-a-clone.exp -index aa13464..c7ea7dc 100644 ---- a/pengine/test10/10-a-then-bm-b-move-a-clone.exp -+++ b/pengine/test10/10-a-then-bm-b-move-a-clone.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -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 6126486..76652ab 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 -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -35,7 +35,7 @@ - - - -- -+ - - - -@@ -101,7 +101,7 @@ - - - -- -+ - - - -@@ -117,7 +117,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/1360.exp b/pengine/test10/1360.exp -index 17858ff..4db2681 100644 ---- a/pengine/test10/1360.exp -+++ b/pengine/test10/1360.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/1484.exp b/pengine/test10/1484.exp -index 8921198..91807b8 100644 ---- a/pengine/test10/1484.exp -+++ b/pengine/test10/1484.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/1494.exp b/pengine/test10/1494.exp -index 8145b57..b5e03e9 100644 ---- a/pengine/test10/1494.exp -+++ b/pengine/test10/1494.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/2-am-then-b-move-a.exp b/pengine/test10/2-am-then-b-move-a.exp -index a12bd6d..ed7d3fa 100644 ---- a/pengine/test10/2-am-then-b-move-a.exp -+++ b/pengine/test10/2-am-then-b-move-a.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/3-am-then-bm-both-migrate.exp b/pengine/test10/3-am-then-bm-both-migrate.exp -index deecc5d..aac63ba 100644 ---- a/pengine/test10/3-am-then-bm-both-migrate.exp -+++ b/pengine/test10/3-am-then-bm-both-migrate.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -95,7 +95,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/4-am-then-bm-b-not-migratable.exp b/pengine/test10/4-am-then-bm-b-not-migratable.exp -index 7684002..66aa4ad 100644 ---- a/pengine/test10/4-am-then-bm-b-not-migratable.exp -+++ b/pengine/test10/4-am-then-bm-b-not-migratable.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -86,7 +86,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/5-am-then-bm-a-not-migratable.exp b/pengine/test10/5-am-then-bm-a-not-migratable.exp -index 199ef39..c3bb278 100644 ---- a/pengine/test10/5-am-then-bm-a-not-migratable.exp -+++ b/pengine/test10/5-am-then-bm-a-not-migratable.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/594.exp b/pengine/test10/594.exp -index bb15a36..5d58ab4 100644 ---- a/pengine/test10/594.exp -+++ b/pengine/test10/594.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -35,7 +35,7 @@ - - - -- -+ - - - -@@ -48,7 +48,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -136,7 +136,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -203,7 +203,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/6-migrate-group.exp b/pengine/test10/6-migrate-group.exp -index 0041c40..23c5fae 100644 ---- a/pengine/test10/6-migrate-group.exp -+++ b/pengine/test10/6-migrate-group.exp -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -137,7 +137,7 @@ - - - -- -+ - - - -@@ -150,7 +150,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -197,7 +197,7 @@ - - - -- -+ - - - -@@ -216,7 +216,7 @@ - - - -- -+ - - - -@@ -229,7 +229,7 @@ - - - -- -+ - - - -@@ -242,7 +242,7 @@ - - - -- -+ - - - -@@ -276,7 +276,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/662.exp b/pengine/test10/662.exp -index b18a5ea..d05f4d3 100644 ---- a/pengine/test10/662.exp -+++ b/pengine/test10/662.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 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -92,7 +92,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -202,7 +202,7 @@ - - - -- -+ - - - -@@ -211,7 +211,7 @@ - - - -- -+ - - - -@@ -220,7 +220,7 @@ - - - -- -+ - - - -@@ -229,7 +229,7 @@ - - - -- -+ - - - -@@ -238,7 +238,7 @@ - - - -- -+ - - - -@@ -247,7 +247,7 @@ - - - -- -+ - - - -@@ -256,7 +256,7 @@ - - - -- -+ - - - -@@ -265,7 +265,7 @@ - - - -- -+ - - - -@@ -274,7 +274,7 @@ - - - -- -+ - - - -@@ -305,7 +305,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/696.exp b/pengine/test10/696.exp -index 42477ab..71befb4 100644 ---- a/pengine/test10/696.exp -+++ b/pengine/test10/696.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -@@ -116,7 +116,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -172,7 +172,7 @@ - - - -- -+ - - - -@@ -181,7 +181,7 @@ - - - -- -+ - - - -@@ -190,7 +190,7 @@ - - - -- -+ - - - -@@ -199,7 +199,7 @@ - - - -- -+ - - - -@@ -208,7 +208,7 @@ - - - -- -+ - - - -@@ -217,7 +217,7 @@ - - - -- -+ - - - -@@ -226,7 +226,7 @@ - - - -- -+ - - - -@@ -235,7 +235,7 @@ - - - -- -+ - - - -@@ -244,7 +244,7 @@ - - - -- -+ - - - -@@ -257,7 +257,7 @@ - - - -- -+ - - - -@@ -270,7 +270,7 @@ - - - -- -+ - - - -@@ -279,7 +279,7 @@ - - - -- -+ - - - -@@ -288,7 +288,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/7-migrate-group-one-unmigratable.exp b/pengine/test10/7-migrate-group-one-unmigratable.exp -index 3988eb3..8005321 100644 ---- a/pengine/test10/7-migrate-group-one-unmigratable.exp -+++ b/pengine/test10/7-migrate-group-one-unmigratable.exp -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -141,7 +141,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -173,7 +173,7 @@ - - - -- -+ - - - -@@ -189,7 +189,7 @@ - - - -- -+ - - - -@@ -202,7 +202,7 @@ - - - -- -+ - - - -@@ -221,7 +221,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/726.exp b/pengine/test10/726.exp -index bb9345e..a1a0be4 100644 ---- a/pengine/test10/726.exp -+++ b/pengine/test10/726.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -92,7 +92,7 @@ - - - -- -+ - - - -@@ -101,7 +101,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -164,7 +164,7 @@ - - - -- -+ - - - -@@ -173,7 +173,7 @@ - - - -- -+ - - - -@@ -182,7 +182,7 @@ - - - -- -+ - - - -@@ -191,7 +191,7 @@ - - - -- -+ - - - -@@ -204,7 +204,7 @@ - - - -- -+ - - - -@@ -226,7 +226,7 @@ - - - -- -+ - - - -@@ -235,7 +235,7 @@ - - - -- -+ - - - -@@ -244,7 +244,7 @@ - - - -- -+ - - - -@@ -253,7 +253,7 @@ - - - -- -+ - - - -@@ -262,7 +262,7 @@ - - - -- -+ - - - -@@ -271,7 +271,7 @@ - - - -- -+ - - - -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -289,7 +289,7 @@ - - - -- -+ - - - -@@ -298,7 +298,7 @@ - - - -- -+ - - - -@@ -311,7 +311,7 @@ - - - -- -+ - - - -@@ -324,7 +324,7 @@ - - - -- -+ - - - -@@ -333,7 +333,7 @@ - - - -- -+ - - - -@@ -342,7 +342,7 @@ - - - -- -+ - - - -@@ -355,7 +355,7 @@ - - - -- -+ - - - -@@ -368,7 +368,7 @@ - - - -- -+ - - - -@@ -377,7 +377,7 @@ - - - -- -+ - - - -@@ -386,7 +386,7 @@ - - - -- -+ - - - -@@ -395,7 +395,7 @@ - - - -- -+ - - - -@@ -408,7 +408,7 @@ - - - -- -+ - - - -@@ -421,7 +421,7 @@ - - - -- -+ - - - -@@ -430,7 +430,7 @@ - - - -- -+ - - - -@@ -439,7 +439,7 @@ - - - -- -+ - - - -@@ -448,7 +448,7 @@ - - - -- -+ - - - -@@ -457,7 +457,7 @@ - - - -- -+ - - - -@@ -470,7 +470,7 @@ - - - -- -+ - - - -@@ -483,7 +483,7 @@ - - - -- -+ - - - -@@ -492,7 +492,7 @@ - - - -- -+ - - - -@@ -501,7 +501,7 @@ - - - -- -+ - - - -@@ -510,7 +510,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/735.exp b/pengine/test10/735.exp -index 10bc0d9..b5f89bf 100644 ---- a/pengine/test10/735.exp -+++ b/pengine/test10/735.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -104,7 +104,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/764.exp b/pengine/test10/764.exp -index 4f9aa06..5101644 100644 ---- a/pengine/test10/764.exp -+++ b/pengine/test10/764.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -104,7 +104,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -131,7 +131,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -@@ -149,7 +149,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/797.exp b/pengine/test10/797.exp -index 6126a4c..51f64cb 100644 ---- a/pengine/test10/797.exp -+++ b/pengine/test10/797.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -@@ -72,7 +72,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -115,7 +115,7 @@ - - - -- -+ - - - -@@ -128,7 +128,7 @@ - - - -- -+ - - - -@@ -137,7 +137,7 @@ - - - -- -+ - - - -@@ -146,7 +146,7 @@ - - - -- -+ - - - -@@ -159,7 +159,7 @@ - - - -- -+ - - - -@@ -168,7 +168,7 @@ - - - -- -+ - - - -@@ -187,7 +187,7 @@ - - - -- -+ - - - -@@ -200,7 +200,7 @@ - - - -- -+ - - - -@@ -213,7 +213,7 @@ - - - -- -+ - - - -@@ -226,7 +226,7 @@ - - - -- -+ - - - -@@ -239,7 +239,7 @@ - - - -- -+ - - - -@@ -248,7 +248,7 @@ - - - -- -+ - - - -@@ -257,7 +257,7 @@ - - - -- -+ - - - -@@ -266,7 +266,7 @@ - - - -- -+ - - - -@@ -342,7 +342,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/8-am-then-bm-a-migrating-b-stopping.exp b/pengine/test10/8-am-then-bm-a-migrating-b-stopping.exp -index 2c64ae6..6fb28d5 100644 ---- a/pengine/test10/8-am-then-bm-a-migrating-b-stopping.exp -+++ b/pengine/test10/8-am-then-bm-a-migrating-b-stopping.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/829.exp b/pengine/test10/829.exp -index 5975a6b..115a39f 100644 ---- a/pengine/test10/829.exp -+++ b/pengine/test10/829.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -@@ -116,7 +116,7 @@ - - - -- -+ - - - -@@ -125,7 +125,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -152,7 +152,7 @@ - - - -- -+ - - - -@@ -179,7 +179,7 @@ - - - -- -+ - - - -@@ -188,7 +188,7 @@ - - - -- -+ - - - -@@ -197,7 +197,7 @@ - - - -- -+ - - - -@@ -206,7 +206,7 @@ - - - -- -+ - - - -@@ -215,7 +215,7 @@ - - - -- -+ - - - -@@ -224,7 +224,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/9-am-then-bm-b-migrating-a-stopping.exp b/pengine/test10/9-am-then-bm-b-migrating-a-stopping.exp -index 759a28f..10f0f8c 100644 ---- a/pengine/test10/9-am-then-bm-b-migrating-a-stopping.exp -+++ b/pengine/test10/9-am-then-bm-b-migrating-a-stopping.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/994-2.exp b/pengine/test10/994-2.exp -index 1d8def6..c00f2f2 100644 ---- a/pengine/test10/994-2.exp -+++ b/pengine/test10/994-2.exp -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -86,7 +86,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -115,7 +115,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/994.exp b/pengine/test10/994.exp -index ddc7551..b0111ff 100644 ---- a/pengine/test10/994.exp -+++ b/pengine/test10/994.exp -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/a-demote-then-b-migrate.exp b/pengine/test10/a-demote-then-b-migrate.exp -index 4858bdc..2b12db2 100644 ---- a/pengine/test10/a-demote-then-b-migrate.exp -+++ b/pengine/test10/a-demote-then-b-migrate.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -125,7 +125,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -151,7 +151,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -374,7 +374,7 @@ - - - -- -+ - - - -@@ -387,7 +387,7 @@ - - - -- -+ - - - -@@ -400,7 +400,7 @@ - - - -- -+ - - - -@@ -428,7 +428,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/a-promote-then-b-migrate.exp b/pengine/test10/a-promote-then-b-migrate.exp -index 4187ede..26cd1b1 100644 ---- a/pengine/test10/a-promote-then-b-migrate.exp -+++ b/pengine/test10/a-promote-then-b-migrate.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -179,7 +179,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -205,7 +205,7 @@ - - - -- -+ - - - -@@ -236,7 +236,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/anti-colocation-master.exp b/pengine/test10/anti-colocation-master.exp -index 00e20b1..011bfdd 100644 ---- a/pengine/test10/anti-colocation-master.exp -+++ b/pengine/test10/anti-colocation-master.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/anti-colocation-order.exp b/pengine/test10/anti-colocation-order.exp -index 24de4d2..fa5304f 100644 ---- a/pengine/test10/anti-colocation-order.exp -+++ b/pengine/test10/anti-colocation-order.exp -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -152,7 +152,7 @@ - - - -- -+ - - - -@@ -168,7 +168,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/anti-colocation-slave.exp b/pengine/test10/anti-colocation-slave.exp -index afb8983..dc3eb08 100644 ---- a/pengine/test10/anti-colocation-slave.exp -+++ b/pengine/test10/anti-colocation-slave.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/asymmetric.exp b/pengine/test10/asymmetric.exp -index a18ba0a..6284925 100644 ---- a/pengine/test10/asymmetric.exp -+++ b/pengine/test10/asymmetric.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/asymmetrical-order-move.exp b/pengine/test10/asymmetrical-order-move.exp -index 458094f..ac48583 100644 ---- a/pengine/test10/asymmetrical-order-move.exp -+++ b/pengine/test10/asymmetrical-order-move.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/attrs1.exp b/pengine/test10/attrs1.exp -index 69f93df..7df2479 100644 ---- a/pengine/test10/attrs1.exp -+++ b/pengine/test10/attrs1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/attrs2.exp b/pengine/test10/attrs2.exp -index 69f93df..7df2479 100644 ---- a/pengine/test10/attrs2.exp -+++ b/pengine/test10/attrs2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/attrs3.exp b/pengine/test10/attrs3.exp -index 52309b8..d86378f 100644 ---- a/pengine/test10/attrs3.exp -+++ b/pengine/test10/attrs3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/attrs4.exp b/pengine/test10/attrs4.exp -index 52309b8..d86378f 100644 ---- a/pengine/test10/attrs4.exp -+++ b/pengine/test10/attrs4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/attrs5.exp b/pengine/test10/attrs5.exp -index 7d7b6c4..f74da82 100644 ---- a/pengine/test10/attrs5.exp -+++ b/pengine/test10/attrs5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/attrs6.exp b/pengine/test10/attrs6.exp -index 52309b8..d86378f 100644 ---- a/pengine/test10/attrs6.exp -+++ b/pengine/test10/attrs6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/attrs7.exp b/pengine/test10/attrs7.exp -index 69f93df..7df2479 100644 ---- a/pengine/test10/attrs7.exp -+++ b/pengine/test10/attrs7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/attrs8.exp b/pengine/test10/attrs8.exp -index 69f93df..7df2479 100644 ---- a/pengine/test10/attrs8.exp -+++ b/pengine/test10/attrs8.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/balanced.exp b/pengine/test10/balanced.exp -index db8d65b..cfe66f8 100644 ---- a/pengine/test10/balanced.exp -+++ b/pengine/test10/balanced.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/base-score.exp b/pengine/test10/base-score.exp -index baa4f77..a13d02f 100644 ---- a/pengine/test10/base-score.exp -+++ b/pengine/test10/base-score.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bnc-515172.exp b/pengine/test10/bnc-515172.exp -index 45fc9b8..4086cff 100644 ---- a/pengine/test10/bnc-515172.exp -+++ b/pengine/test10/bnc-515172.exp -@@ -26,7 +26,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-1572-1.exp b/pengine/test10/bug-1572-1.exp -index dc37bf2..5d781c2 100644 ---- a/pengine/test10/bug-1572-1.exp -+++ b/pengine/test10/bug-1572-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -133,7 +133,7 @@ - - - -- -+ - - - -@@ -152,7 +152,7 @@ - - - -- -+ - - - -@@ -168,7 +168,7 @@ - - - -- -+ - - - -@@ -181,7 +181,7 @@ - - - -- -+ - - - -@@ -627,7 +627,7 @@ - - - -- -+ - - - -@@ -643,7 +643,7 @@ - - - -- -+ - - - -@@ -659,7 +659,7 @@ - - - -- -+ - - - -@@ -678,7 +678,7 @@ - - - -- -+ - - - -@@ -694,7 +694,7 @@ - - - -- -+ - - - -@@ -707,7 +707,7 @@ - - - -- -+ - - - -@@ -726,7 +726,7 @@ - - - -- -+ - - - -@@ -739,7 +739,7 @@ - - - -- -+ - - - -@@ -751,7 +751,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-1572-2.exp b/pengine/test10/bug-1572-2.exp -index 5c3177c..a854f62 100644 ---- a/pengine/test10/bug-1572-2.exp -+++ b/pengine/test10/bug-1572-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -@@ -328,7 +328,7 @@ - - - -- -+ - - - -@@ -344,7 +344,7 @@ - - - -- -+ - - - -@@ -360,7 +360,7 @@ - - - -- -+ - - - -@@ -372,7 +372,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-1573.exp b/pengine/test10/bug-1573.exp -index 651d263..79700fc 100644 ---- a/pengine/test10/bug-1573.exp -+++ b/pengine/test10/bug-1573.exp -@@ -26,7 +26,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-1685.exp b/pengine/test10/bug-1685.exp -index 8420772..8b46500 100644 ---- a/pengine/test10/bug-1685.exp -+++ b/pengine/test10/bug-1685.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -164,7 +164,7 @@ - - - -- -+ - - - -@@ -177,7 +177,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-1718.exp b/pengine/test10/bug-1718.exp -index 13e6bda..7c5db02 100644 ---- a/pengine/test10/bug-1718.exp -+++ b/pengine/test10/bug-1718.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -76,7 +76,7 @@ - - - -- -+ - - - -@@ -85,7 +85,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-1765.exp b/pengine/test10/bug-1765.exp -index dbbe8c5..11c822e 100644 ---- a/pengine/test10/bug-1765.exp -+++ b/pengine/test10/bug-1765.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-1820-1.exp b/pengine/test10/bug-1820-1.exp -index 03e5a08..7a41069 100644 ---- a/pengine/test10/bug-1820-1.exp -+++ b/pengine/test10/bug-1820-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -115,7 +115,7 @@ - - - -- -+ - - - -@@ -146,7 +146,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -178,7 +178,7 @@ - - - -- -+ - - - -@@ -191,7 +191,7 @@ - - - -- -+ - - - -@@ -225,7 +225,7 @@ - - - -- -+ - - - -@@ -240,7 +240,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-1820.exp b/pengine/test10/bug-1820.exp -index 4ec4a4d..35c0e65 100644 ---- a/pengine/test10/bug-1820.exp -+++ b/pengine/test10/bug-1820.exp -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -72,7 +72,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -131,7 +131,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -157,7 +157,7 @@ - - - -- -+ - - - -@@ -191,7 +191,7 @@ - - - -- -+ - - - -@@ -206,7 +206,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-1822.exp b/pengine/test10/bug-1822.exp -index 974d74d..8ce6d70 100644 ---- a/pengine/test10/bug-1822.exp -+++ b/pengine/test10/bug-1822.exp -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -76,7 +76,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5007-masterslave_colocation.exp b/pengine/test10/bug-5007-masterslave_colocation.exp -index 3c33624..bf83867 100644 ---- a/pengine/test10/bug-5007-masterslave_colocation.exp -+++ b/pengine/test10/bug-5007-masterslave_colocation.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5014-A-start-B-start.exp b/pengine/test10/bug-5014-A-start-B-start.exp -index 154b23b..c89ed4b 100644 ---- a/pengine/test10/bug-5014-A-start-B-start.exp -+++ b/pengine/test10/bug-5014-A-start-B-start.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5014-A-stop-B-started.exp b/pengine/test10/bug-5014-A-stop-B-started.exp -index 745ef4b..dc289f0 100644 ---- a/pengine/test10/bug-5014-A-stop-B-started.exp -+++ b/pengine/test10/bug-5014-A-stop-B-started.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5014-A-stopped-B-stopped.exp b/pengine/test10/bug-5014-A-stopped-B-stopped.exp -index 4ef72cd..0d3b9ea 100644 ---- a/pengine/test10/bug-5014-A-stopped-B-stopped.exp -+++ b/pengine/test10/bug-5014-A-stopped-B-stopped.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5014-CLONE-A-start-B-start.exp b/pengine/test10/bug-5014-CLONE-A-start-B-start.exp -index 38b1705..1e9013e 100644 ---- a/pengine/test10/bug-5014-CLONE-A-start-B-start.exp -+++ b/pengine/test10/bug-5014-CLONE-A-start-B-start.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5014-CLONE-A-stop-B-started.exp b/pengine/test10/bug-5014-CLONE-A-stop-B-started.exp -index 5da5b83..aa99923 100644 ---- a/pengine/test10/bug-5014-CLONE-A-stop-B-started.exp -+++ b/pengine/test10/bug-5014-CLONE-A-stop-B-started.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5014-CthenAthenB-C-stopped.exp b/pengine/test10/bug-5014-CthenAthenB-C-stopped.exp -index 9e9265f..0896ce2 100644 ---- a/pengine/test10/bug-5014-CthenAthenB-C-stopped.exp -+++ b/pengine/test10/bug-5014-CthenAthenB-C-stopped.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5014-GROUP-A-start-B-start.exp b/pengine/test10/bug-5014-GROUP-A-start-B-start.exp -index 407f04b..598bdce 100644 ---- a/pengine/test10/bug-5014-GROUP-A-start-B-start.exp -+++ b/pengine/test10/bug-5014-GROUP-A-start-B-start.exp -@@ -26,7 +26,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -92,7 +92,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5014-GROUP-A-stopped-B-started.exp b/pengine/test10/bug-5014-GROUP-A-stopped-B-started.exp -index 06749e9..0a0cb5c 100644 ---- a/pengine/test10/bug-5014-GROUP-A-stopped-B-started.exp -+++ b/pengine/test10/bug-5014-GROUP-A-stopped-B-started.exp -@@ -26,7 +26,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5014-ordered-set-symmetrical-false.exp b/pengine/test10/bug-5014-ordered-set-symmetrical-false.exp -index 445a77c..4525661 100644 ---- a/pengine/test10/bug-5014-ordered-set-symmetrical-false.exp -+++ b/pengine/test10/bug-5014-ordered-set-symmetrical-false.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5014-ordered-set-symmetrical-true.exp b/pengine/test10/bug-5014-ordered-set-symmetrical-true.exp -index e6fe6d0..d0c9593 100644 ---- a/pengine/test10/bug-5014-ordered-set-symmetrical-true.exp -+++ b/pengine/test10/bug-5014-ordered-set-symmetrical-true.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5025-1.exp b/pengine/test10/bug-5025-1.exp -index 8465dfb..053ece4 100644 ---- a/pengine/test10/bug-5025-1.exp -+++ b/pengine/test10/bug-5025-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5025-3.exp b/pengine/test10/bug-5025-3.exp -index 3b01eae..eb2e2e6 100644 ---- a/pengine/test10/bug-5025-3.exp -+++ b/pengine/test10/bug-5025-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5025-4.exp b/pengine/test10/bug-5025-4.exp -index 16d9fc1..a51c888 100644 ---- a/pengine/test10/bug-5025-4.exp -+++ b/pengine/test10/bug-5025-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5028-bottom.exp b/pengine/test10/bug-5028-bottom.exp -index 2853f2d..f7e7050 100644 ---- a/pengine/test10/bug-5028-bottom.exp -+++ b/pengine/test10/bug-5028-bottom.exp -@@ -11,7 +11,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5028-detach.exp b/pengine/test10/bug-5028-detach.exp -index 3f7cdaf..8c3cae3 100644 ---- a/pengine/test10/bug-5028-detach.exp -+++ b/pengine/test10/bug-5028-detach.exp -@@ -2,7 +2,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5059.exp b/pengine/test10/bug-5059.exp -index a9402fc..a97b99d 100644 ---- a/pengine/test10/bug-5059.exp -+++ b/pengine/test10/bug-5059.exp -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -161,7 +161,7 @@ - - - -- -+ - - - -@@ -180,7 +180,7 @@ - - - -- -+ - - - -@@ -220,7 +220,7 @@ - - - -- -+ - - - -@@ -233,7 +233,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -259,7 +259,7 @@ - - - -- -+ - - - -@@ -272,7 +272,7 @@ - - - -- -+ - - - -@@ -288,7 +288,7 @@ - - - -- -+ - - - -@@ -301,7 +301,7 @@ - - - -- -+ - - - -@@ -314,7 +314,7 @@ - - - -- -+ - - - -@@ -327,7 +327,7 @@ - - - -- -+ - - - -@@ -346,7 +346,7 @@ - - - -- -+ - - - -@@ -556,7 +556,7 @@ - - - -- -+ - - - -@@ -565,7 +565,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5069-op-disabled.exp b/pengine/test10/bug-5069-op-disabled.exp -index ca7f56c..9653af1 100644 ---- a/pengine/test10/bug-5069-op-disabled.exp -+++ b/pengine/test10/bug-5069-op-disabled.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5140-require-all-false.exp b/pengine/test10/bug-5140-require-all-false.exp -index bce90d0..9751b9b 100644 ---- a/pengine/test10/bug-5140-require-all-false.exp -+++ b/pengine/test10/bug-5140-require-all-false.exp -@@ -36,7 +36,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5143-ms-shuffle.exp b/pengine/test10/bug-5143-ms-shuffle.exp -index 597502d..e8fb58c 100644 ---- a/pengine/test10/bug-5143-ms-shuffle.exp -+++ b/pengine/test10/bug-5143-ms-shuffle.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-5186-partial-migrate.exp b/pengine/test10/bug-5186-partial-migrate.exp -index eddabe1..bba083e 100644 ---- a/pengine/test10/bug-5186-partial-migrate.exp -+++ b/pengine/test10/bug-5186-partial-migrate.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -44,7 +44,7 @@ - - - -- -+ - - - -@@ -75,7 +75,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -@@ -153,7 +153,7 @@ - - - -- -+ - - - -@@ -184,7 +184,7 @@ - - - -- -+ - - - -@@ -197,7 +197,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-cl-5168.exp b/pengine/test10/bug-cl-5168.exp -index 23a4ed0..f4b3b79 100644 ---- a/pengine/test10/bug-cl-5168.exp -+++ b/pengine/test10/bug-cl-5168.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-cl-5170.exp b/pengine/test10/bug-cl-5170.exp -index c6b8720..d8143c0 100644 ---- a/pengine/test10/bug-cl-5170.exp -+++ b/pengine/test10/bug-cl-5170.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-cl-5212.exp b/pengine/test10/bug-cl-5212.exp -index fef9f87..6d0a2f4 100644 ---- a/pengine/test10/bug-cl-5212.exp -+++ b/pengine/test10/bug-cl-5212.exp -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-cl-5213.exp b/pengine/test10/bug-cl-5213.exp -index 154384d..790b12a 100644 ---- a/pengine/test10/bug-cl-5213.exp -+++ b/pengine/test10/bug-cl-5213.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-cl-5219.exp b/pengine/test10/bug-cl-5219.exp -index 182b279..608c849 100644 ---- a/pengine/test10/bug-cl-5219.exp -+++ b/pengine/test10/bug-cl-5219.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-cl-5247.exp b/pengine/test10/bug-cl-5247.exp -index 59a62af..8ef8b9d 100644 ---- a/pengine/test10/bug-cl-5247.exp -+++ b/pengine/test10/bug-cl-5247.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -161,7 +161,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -193,7 +193,7 @@ - - - -- -+ - - - -@@ -269,7 +269,7 @@ - - - -- -+ - - - -@@ -282,7 +282,7 @@ - - - -- -+ - - - -@@ -319,7 +319,7 @@ - - - -- -+ - - - -@@ -332,7 +332,7 @@ - - - -- -+ - - - -@@ -429,7 +429,7 @@ - - - -- -+ - - - -@@ -442,7 +442,7 @@ - - - -- -+ - - - -@@ -455,7 +455,7 @@ - - - -- -+ - - - -@@ -468,7 +468,7 @@ - - - -- -+ - - - -@@ -484,7 +484,7 @@ - - - -- -+ - - - -@@ -673,7 +673,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-1852.exp b/pengine/test10/bug-lf-1852.exp -index 0b64d57..070c6db 100644 ---- a/pengine/test10/bug-lf-1852.exp -+++ b/pengine/test10/bug-lf-1852.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-1920.exp b/pengine/test10/bug-lf-1920.exp -index da2d03c..27965ed 100644 ---- a/pengine/test10/bug-lf-1920.exp -+++ b/pengine/test10/bug-lf-1920.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2106.exp b/pengine/test10/bug-lf-2106.exp -index fc89c3f..f7d4900 100644 ---- a/pengine/test10/bug-lf-2106.exp -+++ b/pengine/test10/bug-lf-2106.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2153.exp b/pengine/test10/bug-lf-2153.exp -index 79c72a1..abe1554 100644 ---- a/pengine/test10/bug-lf-2153.exp -+++ b/pengine/test10/bug-lf-2153.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2160.exp b/pengine/test10/bug-lf-2160.exp -index 61fd792..1a69082 100644 ---- a/pengine/test10/bug-lf-2160.exp -+++ b/pengine/test10/bug-lf-2160.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2171.exp b/pengine/test10/bug-lf-2171.exp -index c6c3379..8679088 100644 ---- a/pengine/test10/bug-lf-2171.exp -+++ b/pengine/test10/bug-lf-2171.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -85,7 +85,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2213.exp b/pengine/test10/bug-lf-2213.exp -index c2f7052..5a6a311 100644 ---- a/pengine/test10/bug-lf-2213.exp -+++ b/pengine/test10/bug-lf-2213.exp -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2317.exp b/pengine/test10/bug-lf-2317.exp -index ee8121b..cf84cd5 100644 ---- a/pengine/test10/bug-lf-2317.exp -+++ b/pengine/test10/bug-lf-2317.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2358.exp b/pengine/test10/bug-lf-2358.exp -index 35cb683..adbcac0 100644 ---- a/pengine/test10/bug-lf-2358.exp -+++ b/pengine/test10/bug-lf-2358.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2361.exp b/pengine/test10/bug-lf-2361.exp -index ccae9c2..dd909bd 100644 ---- a/pengine/test10/bug-lf-2361.exp -+++ b/pengine/test10/bug-lf-2361.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2422.exp b/pengine/test10/bug-lf-2422.exp -index 724cb23..14eba30 100644 ---- a/pengine/test10/bug-lf-2422.exp -+++ b/pengine/test10/bug-lf-2422.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -61,7 +61,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -169,7 +169,7 @@ - - - -- -+ - - - -@@ -185,7 +185,7 @@ - - - -- -+ - - - -@@ -231,7 +231,7 @@ - - - -- -+ - - - -@@ -247,7 +247,7 @@ - - - -- -+ - - - -@@ -296,7 +296,7 @@ - - - -- -+ - - - -@@ -312,7 +312,7 @@ - - - -- -+ - - - -@@ -328,7 +328,7 @@ - - - -- -+ - - - -@@ -344,7 +344,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2435.exp b/pengine/test10/bug-lf-2435.exp -index 22fda7a..4349312 100644 ---- a/pengine/test10/bug-lf-2435.exp -+++ b/pengine/test10/bug-lf-2435.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2445.exp b/pengine/test10/bug-lf-2445.exp -index 5f89edb..953b32d 100644 ---- a/pengine/test10/bug-lf-2445.exp -+++ b/pengine/test10/bug-lf-2445.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2453.exp b/pengine/test10/bug-lf-2453.exp -index 2aabeab..c4dd2b2 100644 ---- a/pengine/test10/bug-lf-2453.exp -+++ b/pengine/test10/bug-lf-2453.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2474.exp b/pengine/test10/bug-lf-2474.exp -index 78287be..8eca0af 100644 ---- a/pengine/test10/bug-lf-2474.exp -+++ b/pengine/test10/bug-lf-2474.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2493.exp b/pengine/test10/bug-lf-2493.exp -index b47cda4..19c162a 100644 ---- a/pengine/test10/bug-lf-2493.exp -+++ b/pengine/test10/bug-lf-2493.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -136,7 +136,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -172,7 +172,7 @@ - - - -- -+ - - - -@@ -181,7 +181,7 @@ - - - -- -+ - - - -@@ -190,7 +190,7 @@ - - - -- -+ - - - -@@ -199,7 +199,7 @@ - - - -- -+ - - - -@@ -208,7 +208,7 @@ - - - -- -+ - - - -@@ -217,7 +217,7 @@ - - - -- -+ - - - -@@ -226,7 +226,7 @@ - - - -- -+ - - - -@@ -235,7 +235,7 @@ - - - -- -+ - - - -@@ -244,7 +244,7 @@ - - - -- -+ - - - -@@ -253,7 +253,7 @@ - - - -- -+ - - - -@@ -262,7 +262,7 @@ - - - -- -+ - - - -@@ -271,7 +271,7 @@ - - - -- -+ - - - -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -289,7 +289,7 @@ - - - -- -+ - - - -@@ -298,7 +298,7 @@ - - - -- -+ - - - -@@ -307,7 +307,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2508.exp b/pengine/test10/bug-lf-2508.exp -index 363154d..bf70378 100644 ---- a/pengine/test10/bug-lf-2508.exp -+++ b/pengine/test10/bug-lf-2508.exp -@@ -26,7 +26,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -336,7 +336,7 @@ - - - -- -+ - - - -@@ -345,7 +345,7 @@ - - - -- -+ - - - -@@ -358,7 +358,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2544.exp b/pengine/test10/bug-lf-2544.exp -index 1755130..64cd62a 100644 ---- a/pengine/test10/bug-lf-2544.exp -+++ b/pengine/test10/bug-lf-2544.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2551.exp b/pengine/test10/bug-lf-2551.exp -index 44bdfca..f5b8236 100644 ---- a/pengine/test10/bug-lf-2551.exp -+++ b/pengine/test10/bug-lf-2551.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -24,7 +24,7 @@ - - - -- -+ - - - -@@ -33,7 +33,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2574.exp b/pengine/test10/bug-lf-2574.exp -index 5d0a58a..2b35f48 100644 ---- a/pengine/test10/bug-lf-2574.exp -+++ b/pengine/test10/bug-lf-2574.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2581.exp b/pengine/test10/bug-lf-2581.exp -index c04e478..421e75a 100644 ---- a/pengine/test10/bug-lf-2581.exp -+++ b/pengine/test10/bug-lf-2581.exp -@@ -33,7 +33,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -136,7 +136,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -172,7 +172,7 @@ - - - -- -+ - - - -@@ -185,7 +185,7 @@ - - - -- -+ - - - -@@ -198,7 +198,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2606.exp b/pengine/test10/bug-lf-2606.exp -index 467e233..55f138b 100644 ---- a/pengine/test10/bug-lf-2606.exp -+++ b/pengine/test10/bug-lf-2606.exp -@@ -15,7 +15,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2613.exp b/pengine/test10/bug-lf-2613.exp -index e4dd227..47d7fc8 100644 ---- a/pengine/test10/bug-lf-2613.exp -+++ b/pengine/test10/bug-lf-2613.exp -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -115,7 +115,7 @@ - - - -- -+ - - - -@@ -131,7 +131,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -179,7 +179,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -211,7 +211,7 @@ - - - -- -+ - - - -@@ -227,7 +227,7 @@ - - - -- -+ - - - -@@ -240,7 +240,7 @@ - - - -- -+ - - - -@@ -259,7 +259,7 @@ - - - -- -+ - - - -@@ -275,7 +275,7 @@ - - - -- -+ - - - -@@ -288,7 +288,7 @@ - - - -- -+ - - - -@@ -307,7 +307,7 @@ - - - -- -+ - - - -@@ -323,7 +323,7 @@ - - - -- -+ - - - -@@ -336,7 +336,7 @@ - - - -- -+ - - - -@@ -355,7 +355,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2619.exp b/pengine/test10/bug-lf-2619.exp -index 4240db1..57aff38 100644 ---- a/pengine/test10/bug-lf-2619.exp -+++ b/pengine/test10/bug-lf-2619.exp -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -115,7 +115,7 @@ - - - -- -+ - - - -@@ -131,7 +131,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -179,7 +179,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -211,7 +211,7 @@ - - - -- -+ - - - -@@ -227,7 +227,7 @@ - - - -- -+ - - - -@@ -240,7 +240,7 @@ - - - -- -+ - - - -@@ -259,7 +259,7 @@ - - - -- -+ - - - -@@ -275,7 +275,7 @@ - - - -- -+ - - - -@@ -288,7 +288,7 @@ - - - -- -+ - - - -@@ -307,7 +307,7 @@ - - - -- -+ - - - -@@ -323,7 +323,7 @@ - - - -- -+ - - - -@@ -336,7 +336,7 @@ - - - -- -+ - - - -@@ -355,7 +355,7 @@ - - - -- -+ - - - -@@ -368,7 +368,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-n-385265-2.exp b/pengine/test10/bug-n-385265-2.exp -index 4c38b55..2f536dc 100644 ---- a/pengine/test10/bug-n-385265-2.exp -+++ b/pengine/test10/bug-n-385265-2.exp -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -72,7 +72,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -104,7 +104,7 @@ - - - -- -+ - - - -@@ -117,7 +117,7 @@ - - - -- -+ - - - -@@ -136,7 +136,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-n-385265.exp b/pengine/test10/bug-n-385265.exp -index 82624fa..c8bad25 100644 ---- a/pengine/test10/bug-n-385265.exp -+++ b/pengine/test10/bug-n-385265.exp -@@ -26,7 +26,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-n-387749.exp b/pengine/test10/bug-n-387749.exp -index 3ca8c2a..bba3012 100644 ---- a/pengine/test10/bug-n-387749.exp -+++ b/pengine/test10/bug-n-387749.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -233,7 +233,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -265,7 +265,7 @@ - - - -- -+ - - - -@@ -284,7 +284,7 @@ - - - -- -+ - - - -@@ -293,7 +293,7 @@ - - - -- -+ - - - -@@ -306,7 +306,7 @@ - - - -- -+ - - - -@@ -328,7 +328,7 @@ - - - -- -+ - - - -@@ -344,7 +344,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-pm-11.exp b/pengine/test10/bug-pm-11.exp -index 4576a78..505e51e 100644 ---- a/pengine/test10/bug-pm-11.exp -+++ b/pengine/test10/bug-pm-11.exp -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -128,7 +128,7 @@ - - - -- -+ - - - -@@ -141,7 +141,7 @@ - - - -- -+ - - - -@@ -150,7 +150,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-pm-12.exp b/pengine/test10/bug-pm-12.exp -index bea17dc..ced0661 100644 ---- a/pengine/test10/bug-pm-12.exp -+++ b/pengine/test10/bug-pm-12.exp -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -197,7 +197,7 @@ - - - -- -+ - - - -@@ -213,7 +213,7 @@ - - - -- -+ - - - -@@ -229,7 +229,7 @@ - - - -- -+ - - - -@@ -242,7 +242,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-rh-1097457.exp b/pengine/test10/bug-rh-1097457.exp -index 0c3430c..16b6b77 100644 ---- a/pengine/test10/bug-rh-1097457.exp -+++ b/pengine/test10/bug-rh-1097457.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -92,7 +92,7 @@ - - - -- -+ - - - -@@ -168,7 +168,7 @@ - - - -- -+ - - - -@@ -208,7 +208,7 @@ - - - -- -+ - - - -@@ -224,7 +224,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -317,7 +317,7 @@ - - - -- -+ - - - -@@ -387,7 +387,7 @@ - - - -- -+ - - - -@@ -406,7 +406,7 @@ - - - -- -+ - - - -@@ -418,7 +418,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-rh-880249.exp b/pengine/test10/bug-rh-880249.exp -index 97749e6..c66bd8c 100644 ---- a/pengine/test10/bug-rh-880249.exp -+++ b/pengine/test10/bug-rh-880249.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-suse-707150.exp b/pengine/test10/bug-suse-707150.exp -index c4d77c9..8254cf6 100644 ---- a/pengine/test10/bug-suse-707150.exp -+++ b/pengine/test10/bug-suse-707150.exp -@@ -15,7 +15,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -44,7 +44,7 @@ - - - -- -+ - - - -@@ -72,7 +72,7 @@ - - - -- -+ - - - -@@ -85,7 +85,7 @@ - - - -- -+ - - - -@@ -101,7 +101,7 @@ - - - -- -+ - - - -@@ -117,7 +117,7 @@ - - - -- -+ - - - -@@ -133,7 +133,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-anon-dup.exp b/pengine/test10/clone-anon-dup.exp -index 725c82c..1af059f 100644 ---- a/pengine/test10/clone-anon-dup.exp -+++ b/pengine/test10/clone-anon-dup.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -76,7 +76,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-anon-failcount.exp b/pengine/test10/clone-anon-failcount.exp -index 1d8c7f9..24a8393 100644 ---- a/pengine/test10/clone-anon-failcount.exp -+++ b/pengine/test10/clone-anon-failcount.exp -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -202,7 +202,7 @@ - - - -- -+ - - - -@@ -215,7 +215,7 @@ - - - -- -+ - - - -@@ -234,7 +234,7 @@ - - - -- -+ - - - -@@ -310,7 +310,7 @@ - - - -- -+ - - - -@@ -326,7 +326,7 @@ - - - -- -+ - - - -@@ -342,7 +342,7 @@ - - - -- -+ - - - -@@ -355,7 +355,7 @@ - - - -- -+ - - - -@@ -374,7 +374,7 @@ - - - -- -+ - - - -@@ -387,7 +387,7 @@ - - - -- -+ - - - -@@ -430,7 +430,7 @@ - - - -- -+ - - - -@@ -446,7 +446,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-anon-probe-1.exp b/pengine/test10/clone-anon-probe-1.exp -index 2232a21..e5610b4 100644 ---- a/pengine/test10/clone-anon-probe-1.exp -+++ b/pengine/test10/clone-anon-probe-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-anon-probe-2.exp b/pengine/test10/clone-anon-probe-2.exp -index ec55079..af914d3 100644 ---- a/pengine/test10/clone-anon-probe-2.exp -+++ b/pengine/test10/clone-anon-probe-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-colocate-instance-1.exp b/pengine/test10/clone-colocate-instance-1.exp -index 9d9fecc..92460c3 100644 ---- a/pengine/test10/clone-colocate-instance-1.exp -+++ b/pengine/test10/clone-colocate-instance-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-colocate-instance-2.exp b/pengine/test10/clone-colocate-instance-2.exp -index 672c7fe..85bb239 100644 ---- a/pengine/test10/clone-colocate-instance-2.exp -+++ b/pengine/test10/clone-colocate-instance-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-fail-block-colocation.exp b/pengine/test10/clone-fail-block-colocation.exp -index d58700f..ee0d031 100644 ---- a/pengine/test10/clone-fail-block-colocation.exp -+++ b/pengine/test10/clone-fail-block-colocation.exp -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -116,7 +116,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -164,7 +164,7 @@ - - - -- -+ - - - -@@ -177,7 +177,7 @@ - - - -- -+ - - - -@@ -196,7 +196,7 @@ - - - -- -+ - - - -@@ -212,7 +212,7 @@ - - - -- -+ - - - -@@ -225,7 +225,7 @@ - - - -- -+ - - - -@@ -244,7 +244,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-interleave-1.exp b/pengine/test10/clone-interleave-1.exp -index d18fe0a..3afe4f0 100644 ---- a/pengine/test10/clone-interleave-1.exp -+++ b/pengine/test10/clone-interleave-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -146,7 +146,7 @@ - - - -- -+ - - - -@@ -162,7 +162,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-interleave-2.exp b/pengine/test10/clone-interleave-2.exp -index c0be936..e198665 100644 ---- a/pengine/test10/clone-interleave-2.exp -+++ b/pengine/test10/clone-interleave-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-interleave-3.exp b/pengine/test10/clone-interleave-3.exp -index 61004b8..a16537d 100644 ---- a/pengine/test10/clone-interleave-3.exp -+++ b/pengine/test10/clone-interleave-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -44,7 +44,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -133,7 +133,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-max-zero.exp b/pengine/test10/clone-max-zero.exp -index 1d0cfa5..d3113c0 100644 ---- a/pengine/test10/clone-max-zero.exp -+++ b/pengine/test10/clone-max-zero.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-no-shuffle.exp b/pengine/test10/clone-no-shuffle.exp -index 5c22cfc..126914b 100644 ---- a/pengine/test10/clone-no-shuffle.exp -+++ b/pengine/test10/clone-no-shuffle.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -@@ -76,7 +76,7 @@ - - - -- -+ - - - -@@ -92,7 +92,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -416,7 +416,7 @@ - - - -- -+ - - - -@@ -429,7 +429,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-order-16instances.exp b/pengine/test10/clone-order-16instances.exp -index 2d997e5..96ec770 100644 ---- a/pengine/test10/clone-order-16instances.exp -+++ b/pengine/test10/clone-order-16instances.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -116,7 +116,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -187,7 +187,7 @@ - - - -- -+ - - - -@@ -203,7 +203,7 @@ - - - -- -+ - - - -@@ -216,7 +216,7 @@ - - - -- -+ - - - -@@ -232,7 +232,7 @@ - - - -- -+ - - - -@@ -245,7 +245,7 @@ - - - -- -+ - - - -@@ -261,7 +261,7 @@ - - - -- -+ - - - -@@ -274,7 +274,7 @@ - - - -- -+ - - - -@@ -290,7 +290,7 @@ - - - -- -+ - - - -@@ -303,7 +303,7 @@ - - - -- -+ - - - -@@ -319,7 +319,7 @@ - - - -- -+ - - - -@@ -332,7 +332,7 @@ - - - -- -+ - - - -@@ -348,7 +348,7 @@ - - - -- -+ - - - -@@ -361,7 +361,7 @@ - - - -- -+ - - - -@@ -377,7 +377,7 @@ - - - -- -+ - - - -@@ -390,7 +390,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-order-instance.exp b/pengine/test10/clone-order-instance.exp -index 4e05e59..4fb8f6a 100644 ---- a/pengine/test10/clone-order-instance.exp -+++ b/pengine/test10/clone-order-instance.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -75,7 +75,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-order-primitive.exp b/pengine/test10/clone-order-primitive.exp -index f10cd28..2ad3e91 100644 ---- a/pengine/test10/clone-order-primitive.exp -+++ b/pengine/test10/clone-order-primitive.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-require-all-1.exp b/pengine/test10/clone-require-all-1.exp -index 062a124..1ce125e 100644 ---- a/pengine/test10/clone-require-all-1.exp -+++ b/pengine/test10/clone-require-all-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-require-all-2.exp b/pengine/test10/clone-require-all-2.exp -index e5717d8..9b0b973 100644 ---- a/pengine/test10/clone-require-all-2.exp -+++ b/pengine/test10/clone-require-all-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-require-all-3.exp b/pengine/test10/clone-require-all-3.exp -index d1e5c71..3e72133 100644 ---- a/pengine/test10/clone-require-all-3.exp -+++ b/pengine/test10/clone-require-all-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-require-all-4.exp b/pengine/test10/clone-require-all-4.exp -index 2b49105..ff83ac9 100644 ---- a/pengine/test10/clone-require-all-4.exp -+++ b/pengine/test10/clone-require-all-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-require-all-5.exp b/pengine/test10/clone-require-all-5.exp -index 0d36b45..b55799c 100644 ---- a/pengine/test10/clone-require-all-5.exp -+++ b/pengine/test10/clone-require-all-5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -104,7 +104,7 @@ - - - -- -+ - - - -@@ -117,7 +117,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-require-all-6.exp b/pengine/test10/clone-require-all-6.exp -index 14f92a6..075bedf 100644 ---- a/pengine/test10/clone-require-all-6.exp -+++ b/pengine/test10/clone-require-all-6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-require-all-7.exp b/pengine/test10/clone-require-all-7.exp -index 6b3dd83..0ffd03d 100644 ---- a/pengine/test10/clone-require-all-7.exp -+++ b/pengine/test10/clone-require-all-7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -169,7 +169,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-require-all-no-interleave-1.exp b/pengine/test10/clone-require-all-no-interleave-1.exp -index 61fb0fd..d839d92 100644 ---- a/pengine/test10/clone-require-all-no-interleave-1.exp -+++ b/pengine/test10/clone-require-all-no-interleave-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -131,7 +131,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -157,7 +157,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-require-all-no-interleave-2.exp b/pengine/test10/clone-require-all-no-interleave-2.exp -index 85a6848..05f20d9 100644 ---- a/pengine/test10/clone-require-all-no-interleave-2.exp -+++ b/pengine/test10/clone-require-all-no-interleave-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -131,7 +131,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -157,7 +157,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone-require-all-no-interleave-3.exp b/pengine/test10/clone-require-all-no-interleave-3.exp -index d8c01e8..e68c1c0 100644 ---- a/pengine/test10/clone-require-all-no-interleave-3.exp -+++ b/pengine/test10/clone-require-all-no-interleave-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -128,7 +128,7 @@ - - - -- -+ - - - -@@ -198,7 +198,7 @@ - - - -- -+ - - - -@@ -211,7 +211,7 @@ - - - -- -+ - - - -@@ -227,7 +227,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone_min_interleave_start_one.exp b/pengine/test10/clone_min_interleave_start_one.exp -index 1bbe370..a7ffb48 100644 ---- a/pengine/test10/clone_min_interleave_start_one.exp -+++ b/pengine/test10/clone_min_interleave_start_one.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone_min_interleave_start_two.exp b/pengine/test10/clone_min_interleave_start_two.exp -index f5da7ce..0ce054a 100644 ---- a/pengine/test10/clone_min_interleave_start_two.exp -+++ b/pengine/test10/clone_min_interleave_start_two.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -133,7 +133,7 @@ - - - -- -+ - - - -@@ -146,7 +146,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -205,7 +205,7 @@ - - - -- -+ - - - -@@ -221,7 +221,7 @@ - - - -- -+ - - - -@@ -234,7 +234,7 @@ - - - -- -+ - - - -@@ -250,7 +250,7 @@ - - - -- -+ - - - -@@ -263,7 +263,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone_min_interleave_stop_one.exp b/pengine/test10/clone_min_interleave_stop_one.exp -index eeaf3ba..dd803cc 100644 ---- a/pengine/test10/clone_min_interleave_stop_one.exp -+++ b/pengine/test10/clone_min_interleave_stop_one.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone_min_interleave_stop_two.exp b/pengine/test10/clone_min_interleave_stop_two.exp -index 5afb9e5..db57deb 100644 ---- a/pengine/test10/clone_min_interleave_stop_two.exp -+++ b/pengine/test10/clone_min_interleave_stop_two.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -196,7 +196,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone_min_start_one.exp b/pengine/test10/clone_min_start_one.exp -index 449e148..6b383fc 100644 ---- a/pengine/test10/clone_min_start_one.exp -+++ b/pengine/test10/clone_min_start_one.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone_min_start_two.exp b/pengine/test10/clone_min_start_two.exp -index 8da10bb..486873e 100644 ---- a/pengine/test10/clone_min_start_two.exp -+++ b/pengine/test10/clone_min_start_two.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone_min_stop_all.exp b/pengine/test10/clone_min_stop_all.exp -index 2f3b26b..62c9682 100644 ---- a/pengine/test10/clone_min_stop_all.exp -+++ b/pengine/test10/clone_min_stop_all.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone_min_stop_one.exp b/pengine/test10/clone_min_stop_one.exp -index 2e8cf3e..80e4c6c 100644 ---- a/pengine/test10/clone_min_stop_one.exp -+++ b/pengine/test10/clone_min_stop_one.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/clone_min_stop_two.exp b/pengine/test10/clone_min_stop_two.exp -index 49cbbf2..09386f4 100644 ---- a/pengine/test10/clone_min_stop_two.exp -+++ b/pengine/test10/clone_min_stop_two.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/cloned-group-stop.exp b/pengine/test10/cloned-group-stop.exp -index 34e8d1e..a512940 100644 ---- a/pengine/test10/cloned-group-stop.exp -+++ b/pengine/test10/cloned-group-stop.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -72,7 +72,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -164,7 +164,7 @@ - - - -- -+ - - - -@@ -180,7 +180,7 @@ - - - -- -+ - - - -@@ -226,7 +226,7 @@ - - - -- -+ - - - -@@ -242,7 +242,7 @@ - - - -- -+ - - - -@@ -258,7 +258,7 @@ - - - -- -+ - - - -@@ -334,7 +334,7 @@ - - - -- -+ - - - -@@ -350,7 +350,7 @@ - - - -- -+ - - - -@@ -366,7 +366,7 @@ - - - -- -+ - - - -@@ -412,7 +412,7 @@ - - - -- -+ - - - -@@ -428,7 +428,7 @@ - - - -- -+ - - - -@@ -444,7 +444,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/cloned-group.exp b/pengine/test10/cloned-group.exp -index 6e3d0f2..3e2d000 100644 ---- a/pengine/test10/cloned-group.exp -+++ b/pengine/test10/cloned-group.exp -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -202,7 +202,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/cloned_start_one.exp b/pengine/test10/cloned_start_one.exp -index 2d86e20..1cd567a 100644 ---- a/pengine/test10/cloned_start_one.exp -+++ b/pengine/test10/cloned_start_one.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/cloned_start_two.exp b/pengine/test10/cloned_start_two.exp -index 7aa5435..d3eb250 100644 ---- a/pengine/test10/cloned_start_two.exp -+++ b/pengine/test10/cloned_start_two.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/cloned_stop_one.exp b/pengine/test10/cloned_stop_one.exp -index 058a76a..d4797ac 100644 ---- a/pengine/test10/cloned_stop_one.exp -+++ b/pengine/test10/cloned_stop_one.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/cloned_stop_two.exp b/pengine/test10/cloned_stop_two.exp -index 27ea9ce..cc39af6 100644 ---- a/pengine/test10/cloned_stop_two.exp -+++ b/pengine/test10/cloned_stop_two.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/cluster-specific-params.exp b/pengine/test10/cluster-specific-params.exp -index 7873d35..00fa252 100644 ---- a/pengine/test10/cluster-specific-params.exp -+++ b/pengine/test10/cluster-specific-params.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/colo_master_w_native.exp b/pengine/test10/colo_master_w_native.exp -index 2a50a09..2803879 100644 ---- a/pengine/test10/colo_master_w_native.exp -+++ b/pengine/test10/colo_master_w_native.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -155,7 +155,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/colo_slave_w_native.exp b/pengine/test10/colo_slave_w_native.exp -index d05313a..e5ec984 100644 ---- a/pengine/test10/colo_slave_w_native.exp -+++ b/pengine/test10/colo_slave_w_native.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -161,7 +161,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -190,7 +190,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/coloc-attr.exp b/pengine/test10/coloc-attr.exp -index 893f786..d69fc0a 100644 ---- a/pengine/test10/coloc-attr.exp -+++ b/pengine/test10/coloc-attr.exp -@@ -26,7 +26,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/coloc-clone-stays-active.exp b/pengine/test10/coloc-clone-stays-active.exp -index 48d0860..e765d8c 100644 ---- a/pengine/test10/coloc-clone-stays-active.exp -+++ b/pengine/test10/coloc-clone-stays-active.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/coloc-group.exp b/pengine/test10/coloc-group.exp -index 188b047..7aaf59c 100644 ---- a/pengine/test10/coloc-group.exp -+++ b/pengine/test10/coloc-group.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/coloc-intra-set.exp b/pengine/test10/coloc-intra-set.exp -index f3a2ac8..198f943 100644 ---- a/pengine/test10/coloc-intra-set.exp -+++ b/pengine/test10/coloc-intra-set.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/coloc-list.exp b/pengine/test10/coloc-list.exp -index 3814d04..a53d554 100644 ---- a/pengine/test10/coloc-list.exp -+++ b/pengine/test10/coloc-list.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -49,7 +49,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -108,7 +108,7 @@ - - - -- -+ - - - -@@ -117,7 +117,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/coloc-loop.exp b/pengine/test10/coloc-loop.exp -index 751e2ed..9fa67e8 100644 ---- a/pengine/test10/coloc-loop.exp -+++ b/pengine/test10/coloc-loop.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -49,7 +49,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -86,7 +86,7 @@ - - - -- -+ - - - -@@ -95,7 +95,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/coloc-many-one.exp b/pengine/test10/coloc-many-one.exp -index 1f7d901..3054754 100644 ---- a/pengine/test10/coloc-many-one.exp -+++ b/pengine/test10/coloc-many-one.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -49,7 +49,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -108,7 +108,7 @@ - - - -- -+ - - - -@@ -117,7 +117,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/coloc-negative-group.exp b/pengine/test10/coloc-negative-group.exp -index 9ac9e90..3fd9d30 100644 ---- a/pengine/test10/coloc-negative-group.exp -+++ b/pengine/test10/coloc-negative-group.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/coloc-slave-anti.exp b/pengine/test10/coloc-slave-anti.exp -index 56d795f..a98aae1 100644 ---- a/pengine/test10/coloc-slave-anti.exp -+++ b/pengine/test10/coloc-slave-anti.exp -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/coloc_fp_logic.exp b/pengine/test10/coloc_fp_logic.exp -index 6892ccf..659a5f2 100644 ---- a/pengine/test10/coloc_fp_logic.exp -+++ b/pengine/test10/coloc_fp_logic.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/colocate-primitive-with-clone.exp b/pengine/test10/colocate-primitive-with-clone.exp -index c23c7b5..66218e8 100644 ---- a/pengine/test10/colocate-primitive-with-clone.exp -+++ b/pengine/test10/colocate-primitive-with-clone.exp -@@ -35,7 +35,7 @@ - - - -- -+ - - - -@@ -48,7 +48,7 @@ - - - -- -+ - - - -@@ -61,7 +61,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/colocated-utilization-clone.exp b/pengine/test10/colocated-utilization-clone.exp -index f51693a..376c653 100644 ---- a/pengine/test10/colocated-utilization-clone.exp -+++ b/pengine/test10/colocated-utilization-clone.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -128,7 +128,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -153,7 +153,7 @@ - - - -- -+ - - - -@@ -162,7 +162,7 @@ - - - -- -+ - - - -@@ -181,7 +181,7 @@ - - - -- -+ - - - -@@ -190,7 +190,7 @@ - - - -- -+ - - - -@@ -229,7 +229,7 @@ - - - -- -+ - - - -@@ -245,7 +245,7 @@ - - - -- -+ - - - -@@ -254,7 +254,7 @@ - - - -- -+ - - - -@@ -273,7 +273,7 @@ - - - -- -+ - - - -@@ -360,7 +360,7 @@ - - - -- -+ - - - -@@ -385,7 +385,7 @@ - - - -- -+ - - - -@@ -394,7 +394,7 @@ - - - -- -+ - - - -@@ -403,7 +403,7 @@ - - - -- -+ - - - -@@ -412,7 +412,7 @@ - - - -- -+ - - - -@@ -440,7 +440,7 @@ - - - -- -+ - - - -@@ -449,7 +449,7 @@ - - - -- -+ - - - -@@ -458,7 +458,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/colocated-utilization-group.exp b/pengine/test10/colocated-utilization-group.exp -index 4e2101d..11e64a1 100644 ---- a/pengine/test10/colocated-utilization-group.exp -+++ b/pengine/test10/colocated-utilization-group.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -131,7 +131,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -@@ -175,7 +175,7 @@ - - - -- -+ - - - -@@ -197,7 +197,7 @@ - - - -- -+ - - - -@@ -206,7 +206,7 @@ - - - -- -+ - - - -@@ -215,7 +215,7 @@ - - - -- -+ - - - -@@ -240,7 +240,7 @@ - - - -- -+ - - - -@@ -249,7 +249,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/colocated-utilization-primitive-1.exp b/pengine/test10/colocated-utilization-primitive-1.exp -index c445b8d..b34471a 100644 ---- a/pengine/test10/colocated-utilization-primitive-1.exp -+++ b/pengine/test10/colocated-utilization-primitive-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/colocated-utilization-primitive-2.exp b/pengine/test10/colocated-utilization-primitive-2.exp -index 803ffda..1e304cb 100644 ---- a/pengine/test10/colocated-utilization-primitive-2.exp -+++ b/pengine/test10/colocated-utilization-primitive-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -86,7 +86,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/colocation_constraint_stops_master.exp b/pengine/test10/colocation_constraint_stops_master.exp -index e96e07a..0b006d2 100644 ---- a/pengine/test10/colocation_constraint_stops_master.exp -+++ b/pengine/test10/colocation_constraint_stops_master.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/colocation_constraint_stops_slave.exp b/pengine/test10/colocation_constraint_stops_slave.exp -index 38a6021..1da1134 100644 ---- a/pengine/test10/colocation_constraint_stops_slave.exp -+++ b/pengine/test10/colocation_constraint_stops_slave.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/comments.exp b/pengine/test10/comments.exp -index aac1d72..cfb31c9 100644 ---- a/pengine/test10/comments.exp -+++ b/pengine/test10/comments.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/complex_enforce_colo.exp b/pengine/test10/complex_enforce_colo.exp -index 9096647..dd00a16 100644 ---- a/pengine/test10/complex_enforce_colo.exp -+++ b/pengine/test10/complex_enforce_colo.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -@@ -142,7 +142,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -207,7 +207,7 @@ - - - -- -+ - - - -@@ -220,7 +220,7 @@ - - - -- -+ - - - -@@ -233,7 +233,7 @@ - - - -- -+ - - - -@@ -275,7 +275,7 @@ - - - -- -+ - - - -@@ -288,7 +288,7 @@ - - - -- -+ - - - -@@ -301,7 +301,7 @@ - - - -- -+ - - - -@@ -310,7 +310,7 @@ - - - -- -+ - - - -@@ -329,7 +329,7 @@ - - - -- -+ - - - -@@ -348,7 +348,7 @@ - - - -- -+ - - - -@@ -403,7 +403,7 @@ - - - -- -+ - - - -@@ -419,7 +419,7 @@ - - - -- -+ - - - -@@ -435,7 +435,7 @@ - - - -- -+ - - - -@@ -484,7 +484,7 @@ - - - -- -+ - - - -@@ -497,7 +497,7 @@ - - - -- -+ - - - -@@ -510,7 +510,7 @@ - - - -- -+ - - - -@@ -552,7 +552,7 @@ - - - -- -+ - - - -@@ -565,7 +565,7 @@ - - - -- -+ - - - -@@ -578,7 +578,7 @@ - - - -- -+ - - - -@@ -624,7 +624,7 @@ - - - -- -+ - - - -@@ -633,7 +633,7 @@ - - - -- -+ - - - -@@ -649,7 +649,7 @@ - - - -- -+ - - - -@@ -665,7 +665,7 @@ - - - -- -+ - - - -@@ -714,7 +714,7 @@ - - - -- -+ - - - -@@ -730,7 +730,7 @@ - - - -- -+ - - - -@@ -746,7 +746,7 @@ - - - -- -+ - - - -@@ -795,7 +795,7 @@ - - - -- -+ - - - -@@ -811,7 +811,7 @@ - - - -- -+ - - - -@@ -827,7 +827,7 @@ - - - -- -+ - - - -@@ -876,7 +876,7 @@ - - - -- -+ - - - -@@ -892,7 +892,7 @@ - - - -- -+ - - - -@@ -908,7 +908,7 @@ - - - -- -+ - - - -@@ -957,7 +957,7 @@ - - - -- -+ - - - -@@ -973,7 +973,7 @@ - - - -- -+ - - - -@@ -989,7 +989,7 @@ - - - -- -+ - - - -@@ -1038,7 +1038,7 @@ - - - -- -+ - - - -@@ -1054,7 +1054,7 @@ - - - -- -+ - - - -@@ -1070,7 +1070,7 @@ - - - -- -+ - - - -@@ -1119,7 +1119,7 @@ - - - -- -+ - - - -@@ -1135,7 +1135,7 @@ - - - -- -+ - - - -@@ -1151,7 +1151,7 @@ - - - -- -+ - - - -@@ -1200,7 +1200,7 @@ - - - -- -+ - - - -@@ -1213,7 +1213,7 @@ - - - -- -+ - - - -@@ -1226,7 +1226,7 @@ - - - -- -+ - - - -@@ -1268,7 +1268,7 @@ - - - -- -+ - - - -@@ -1284,7 +1284,7 @@ - - - -- -+ - - - -@@ -1300,7 +1300,7 @@ - - - -- -+ - - - -@@ -1349,7 +1349,7 @@ - - - -- -+ - - - -@@ -1365,7 +1365,7 @@ - - - -- -+ - - - -@@ -1381,7 +1381,7 @@ - - - -- -+ - - - -@@ -1430,7 +1430,7 @@ - - - -- -+ - - - -@@ -1446,7 +1446,7 @@ - - - -- -+ - - - -@@ -1462,7 +1462,7 @@ - - - -- -+ - - - -@@ -1511,7 +1511,7 @@ - - - -- -+ - - - -@@ -1527,7 +1527,7 @@ - - - -- -+ - - - -@@ -1543,7 +1543,7 @@ - - - -- -+ - - - -@@ -1592,7 +1592,7 @@ - - - -- -+ - - - -@@ -1605,7 +1605,7 @@ - - - -- -+ - - - -@@ -1618,7 +1618,7 @@ - - - -- -+ - - - -@@ -1660,7 +1660,7 @@ - - - -- -+ - - - -@@ -1673,7 +1673,7 @@ - - - -- -+ - - - -@@ -1689,7 +1689,7 @@ - - - -- -+ - - - -@@ -1705,7 +1705,7 @@ - - - -- -+ - - - -@@ -1754,7 +1754,7 @@ - - - -- -+ - - - -@@ -1770,7 +1770,7 @@ - - - -- -+ - - - -@@ -1786,7 +1786,7 @@ - - - -- -+ - - - -@@ -1835,7 +1835,7 @@ - - - -- -+ - - - -@@ -1851,7 +1851,7 @@ - - - -- -+ - - - -@@ -1867,7 +1867,7 @@ - - - -- -+ - - - -@@ -1916,7 +1916,7 @@ - - - -- -+ - - - -@@ -1932,7 +1932,7 @@ - - - -- -+ - - - -@@ -1948,7 +1948,7 @@ - - - -- -+ - - - -@@ -1997,7 +1997,7 @@ - - - -- -+ - - - -@@ -2013,7 +2013,7 @@ - - - -- -+ - - - -@@ -2029,7 +2029,7 @@ - - - -- -+ - - - -@@ -2078,7 +2078,7 @@ - - - -- -+ - - - -@@ -2094,7 +2094,7 @@ - - - -- -+ - - - -@@ -2110,7 +2110,7 @@ - - - -- -+ - - - -@@ -2159,7 +2159,7 @@ - - - -- -+ - - - -@@ -2175,7 +2175,7 @@ - - - -- -+ - - - -@@ -2191,7 +2191,7 @@ - - - -- -+ - - - -@@ -2240,7 +2240,7 @@ - - - -- -+ - - - -@@ -2256,7 +2256,7 @@ - - - -- -+ - - - -@@ -2272,7 +2272,7 @@ - - - -- -+ - - - -@@ -2321,7 +2321,7 @@ - - - -- -+ - - - -@@ -2334,7 +2334,7 @@ - - - -- -+ - - - -@@ -2347,7 +2347,7 @@ - - - -- -+ - - - -@@ -2393,7 +2393,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/container-1.exp b/pengine/test10/container-1.exp -index d0eab69..0c40b34 100644 ---- a/pengine/test10/container-1.exp -+++ b/pengine/test10/container-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -@@ -76,7 +76,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/container-2.exp b/pengine/test10/container-2.exp -index 15125c1..ab50c7f 100644 ---- a/pengine/test10/container-2.exp -+++ b/pengine/test10/container-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -61,7 +61,7 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -108,7 +108,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/container-3.exp b/pengine/test10/container-3.exp -index f6be364..c52dd31 100644 ---- a/pengine/test10/container-3.exp -+++ b/pengine/test10/container-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/container-4.exp b/pengine/test10/container-4.exp -index a7ac836..c734230 100644 ---- a/pengine/test10/container-4.exp -+++ b/pengine/test10/container-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/container-group-1.exp b/pengine/test10/container-group-1.exp -index 1305689..fc9e237 100644 ---- a/pengine/test10/container-group-1.exp -+++ b/pengine/test10/container-group-1.exp -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -95,7 +95,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -124,7 +124,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/container-group-2.exp b/pengine/test10/container-group-2.exp -index 84d3c30..bfbb8f2 100644 ---- a/pengine/test10/container-group-2.exp -+++ b/pengine/test10/container-group-2.exp -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -161,7 +161,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -196,7 +196,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/container-group-3.exp b/pengine/test10/container-group-3.exp -index 1dcc3ed..58dedb9 100644 ---- a/pengine/test10/container-group-3.exp -+++ b/pengine/test10/container-group-3.exp -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -75,7 +75,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -101,7 +101,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/container-group-4.exp b/pengine/test10/container-group-4.exp -index 1c7c7a8..efb7127 100644 ---- a/pengine/test10/container-group-4.exp -+++ b/pengine/test10/container-group-4.exp -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -161,7 +161,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -196,7 +196,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/date-1.exp b/pengine/test10/date-1.exp -index 3edd40d..61455bb 100644 ---- a/pengine/test10/date-1.exp -+++ b/pengine/test10/date-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/enforce-colo1.exp b/pengine/test10/enforce-colo1.exp -index 6f4994c..6e2a6a9 100644 ---- a/pengine/test10/enforce-colo1.exp -+++ b/pengine/test10/enforce-colo1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/expire-non-blocked-failure.exp b/pengine/test10/expire-non-blocked-failure.exp -index 37f973f..c21fb9d 100644 ---- a/pengine/test10/expire-non-blocked-failure.exp -+++ b/pengine/test10/expire-non-blocked-failure.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/failcount-block.exp b/pengine/test10/failcount-block.exp -index 411c1d6..ca27afa 100644 ---- a/pengine/test10/failcount-block.exp -+++ b/pengine/test10/failcount-block.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/failcount.exp b/pengine/test10/failcount.exp -index 6149710..d64c632 100644 ---- a/pengine/test10/failcount.exp -+++ b/pengine/test10/failcount.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group-dependents.exp b/pengine/test10/group-dependents.exp -index dc57f28..607e9d7 100644 ---- a/pengine/test10/group-dependents.exp -+++ b/pengine/test10/group-dependents.exp -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -149,7 +149,7 @@ - - - -- -+ - - - -@@ -162,7 +162,7 @@ - - - -- -+ - - - -@@ -175,7 +175,7 @@ - - - -- -+ - - - -@@ -209,7 +209,7 @@ - - - -- -+ - - - -@@ -225,7 +225,7 @@ - - - -- -+ - - - -@@ -238,7 +238,7 @@ - - - -- -+ - - - -@@ -254,7 +254,7 @@ - - - -- -+ - - - -@@ -267,7 +267,7 @@ - - - -- -+ - - - -@@ -283,7 +283,7 @@ - - - -- -+ - - - -@@ -296,7 +296,7 @@ - - - -- -+ - - - -@@ -312,7 +312,7 @@ - - - -- -+ - - - -@@ -325,7 +325,7 @@ - - - -- -+ - - - -@@ -341,7 +341,7 @@ - - - -- -+ - - - -@@ -354,7 +354,7 @@ - - - -- -+ - - - -@@ -433,7 +433,7 @@ - - - -- -+ - - - -@@ -446,7 +446,7 @@ - - - -- -+ - - - -@@ -455,7 +455,7 @@ - - - -- -+ - - - -@@ -486,7 +486,7 @@ - - - -- -+ - - - -@@ -502,7 +502,7 @@ - - - -- -+ - - - -@@ -515,7 +515,7 @@ - - - -- -+ - - - -@@ -524,7 +524,7 @@ - - - -- -+ - - - -@@ -555,7 +555,7 @@ - - - -- -+ - - - -@@ -670,7 +670,7 @@ - - - -- -+ - - - -@@ -683,7 +683,7 @@ - - - -- -+ - - - -@@ -692,7 +692,7 @@ - - - -- -+ - - - -@@ -723,7 +723,7 @@ - - - -- -+ - - - -@@ -739,7 +739,7 @@ - - - -- -+ - - - -@@ -752,7 +752,7 @@ - - - -- -+ - - - -@@ -761,7 +761,7 @@ - - - -- -+ - - - -@@ -792,7 +792,7 @@ - - - -- -+ - - - -@@ -808,7 +808,7 @@ - - - -- -+ - - - -@@ -821,7 +821,7 @@ - - - -- -+ - - - -@@ -830,7 +830,7 @@ - - - -- -+ - - - -@@ -861,7 +861,7 @@ - - - -- -+ - - - -@@ -877,7 +877,7 @@ - - - -- -+ - - - -@@ -890,7 +890,7 @@ - - - -- -+ - - - -@@ -899,7 +899,7 @@ - - - -- -+ - - - -@@ -930,7 +930,7 @@ - - - -- -+ - - - -@@ -946,7 +946,7 @@ - - - -- -+ - - - -@@ -959,7 +959,7 @@ - - - -- -+ - - - -@@ -968,7 +968,7 @@ - - - -- -+ - - - -@@ -999,7 +999,7 @@ - - - -- -+ - - - -@@ -1015,7 +1015,7 @@ - - - -- -+ - - - -@@ -1028,7 +1028,7 @@ - - - -- -+ - - - -@@ -1037,7 +1037,7 @@ - - - -- -+ - - - -@@ -1068,7 +1068,7 @@ - - - -- -+ - - - -@@ -1084,7 +1084,7 @@ - - - -- -+ - - - -@@ -1097,7 +1097,7 @@ - - - -- -+ - - - -@@ -1106,7 +1106,7 @@ - - - -- -+ - - - -@@ -1137,7 +1137,7 @@ - - - -- -+ - - - -@@ -1153,7 +1153,7 @@ - - - -- -+ - - - -@@ -1166,7 +1166,7 @@ - - - -- -+ - - - -@@ -1175,7 +1175,7 @@ - - - -- -+ - - - -@@ -1206,7 +1206,7 @@ - - - -- -+ - - - -@@ -1222,7 +1222,7 @@ - - - -- -+ - - - -@@ -1235,7 +1235,7 @@ - - - -- -+ - - - -@@ -1251,7 +1251,7 @@ - - - -- -+ - - - -@@ -1264,7 +1264,7 @@ - - - -- -+ - - - -@@ -1277,7 +1277,7 @@ - - - -- -+ - - - -@@ -1290,7 +1290,7 @@ - - - -- -+ - - - -@@ -1303,7 +1303,7 @@ - - - -- -+ - - - -@@ -1316,7 +1316,7 @@ - - - -- -+ - - - -@@ -1335,7 +1335,7 @@ - - - -- -+ - - - -@@ -1348,7 +1348,7 @@ - - - -- -+ - - - -@@ -1361,7 +1361,7 @@ - - - -- -+ - - - -@@ -1374,7 +1374,7 @@ - - - -- -+ - - - -@@ -1387,7 +1387,7 @@ - - - -- -+ - - - -@@ -1400,7 +1400,7 @@ - - - -- -+ - - - -@@ -1416,7 +1416,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group-fail.exp b/pengine/test10/group-fail.exp -index 27b6930..c2b9f80 100644 ---- a/pengine/test10/group-fail.exp -+++ b/pengine/test10/group-fail.exp -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group-unmanaged-stopped.exp b/pengine/test10/group-unmanaged-stopped.exp -index c574481..c1f2193 100644 ---- a/pengine/test10/group-unmanaged-stopped.exp -+++ b/pengine/test10/group-unmanaged-stopped.exp -@@ -26,7 +26,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group1.exp b/pengine/test10/group1.exp -index f0eec35..cec1961 100644 ---- a/pengine/test10/group1.exp -+++ b/pengine/test10/group1.exp -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -131,7 +131,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group10.exp b/pengine/test10/group10.exp -index 7ba4c1e..78df467 100644 ---- a/pengine/test10/group10.exp -+++ b/pengine/test10/group10.exp -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -177,7 +177,7 @@ - - - -- -+ - - - -@@ -190,7 +190,7 @@ - - - -- -+ - - - -@@ -203,7 +203,7 @@ - - - -- -+ - - - -@@ -212,7 +212,7 @@ - - - -- -+ - - - -@@ -221,7 +221,7 @@ - - - -- -+ - - - -@@ -230,7 +230,7 @@ - - - -- -+ - - - -@@ -239,7 +239,7 @@ - - - -- -+ - - - -@@ -248,7 +248,7 @@ - - - -- -+ - - - -@@ -257,7 +257,7 @@ - - - -- -+ - - - -@@ -266,7 +266,7 @@ - - - -- -+ - - - -@@ -275,7 +275,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group11.exp b/pengine/test10/group11.exp -index 3be4f69..901702e 100644 ---- a/pengine/test10/group11.exp -+++ b/pengine/test10/group11.exp -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group13.exp b/pengine/test10/group13.exp -index 307d57d..aeab46d 100644 ---- a/pengine/test10/group13.exp -+++ b/pengine/test10/group13.exp -@@ -26,7 +26,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group14.exp b/pengine/test10/group14.exp -index bf28251..839c85e 100644 ---- a/pengine/test10/group14.exp -+++ b/pengine/test10/group14.exp -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group15.exp b/pengine/test10/group15.exp -index 5a0b12b..f8344f5 100644 ---- a/pengine/test10/group15.exp -+++ b/pengine/test10/group15.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 @@ - - - -- -+ - - - -@@ -86,7 +86,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -185,7 +185,7 @@ - - - -- -+ - - - -@@ -194,7 +194,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group2.exp b/pengine/test10/group2.exp -index ae3ddb6..9c9cb65 100644 ---- a/pengine/test10/group2.exp -+++ b/pengine/test10/group2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -169,7 +169,7 @@ - - - -- -+ - - - -@@ -178,7 +178,7 @@ - - - -- -+ - - - -@@ -187,7 +187,7 @@ - - - -- -+ - - - -@@ -206,7 +206,7 @@ - - - -- -+ - - - -@@ -215,7 +215,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group3.exp b/pengine/test10/group3.exp -index ad28f83..c78ebae 100644 ---- a/pengine/test10/group3.exp -+++ b/pengine/test10/group3.exp -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -131,7 +131,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -@@ -182,7 +182,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -@@ -219,7 +219,7 @@ - - - -- -+ - - - -@@ -241,7 +241,7 @@ - - - -- -+ - - - -@@ -250,7 +250,7 @@ - - - -- -+ - - - -@@ -259,7 +259,7 @@ - - - -- -+ - - - -@@ -281,7 +281,7 @@ - - - -- -+ - - - -@@ -290,7 +290,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group4.exp b/pengine/test10/group4.exp -index 91a3494..2f4f9ff 100644 ---- a/pengine/test10/group4.exp -+++ b/pengine/test10/group4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group5.exp b/pengine/test10/group5.exp -index b41f9a9..f03f4ab 100644 ---- a/pengine/test10/group5.exp -+++ b/pengine/test10/group5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -35,7 +35,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -151,7 +151,7 @@ - - - -- -+ - - - -@@ -160,7 +160,7 @@ - - - -- -+ - - - -@@ -182,7 +182,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -@@ -232,7 +232,7 @@ - - - -- -+ - - - -@@ -248,7 +248,7 @@ - - - -- -+ - - - -@@ -257,7 +257,7 @@ - - - -- -+ - - - -@@ -276,7 +276,7 @@ - - - -- -+ - - - -@@ -289,7 +289,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group6.exp b/pengine/test10/group6.exp -index d80d63c..7a7d265 100644 ---- a/pengine/test10/group6.exp -+++ b/pengine/test10/group6.exp -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -@@ -116,7 +116,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -157,7 +157,7 @@ - - - -- -+ - - - -@@ -166,7 +166,7 @@ - - - -- -+ - - - -@@ -188,7 +188,7 @@ - - - -- -+ - - - -@@ -204,7 +204,7 @@ - - - -- -+ - - - -@@ -278,7 +278,7 @@ - - - -- -+ - - - -@@ -297,7 +297,7 @@ - - - -- -+ - - - -@@ -316,7 +316,7 @@ - - - -- -+ - - - -@@ -325,7 +325,7 @@ - - - -- -+ - - - -@@ -347,7 +347,7 @@ - - - -- -+ - - - -@@ -366,7 +366,7 @@ - - - -- -+ - - - -@@ -375,7 +375,7 @@ - - - -- -+ - - - -@@ -397,7 +397,7 @@ - - - -- -+ - - - -@@ -413,7 +413,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group7.exp b/pengine/test10/group7.exp -index 5f63c67..def4718 100644 ---- a/pengine/test10/group7.exp -+++ b/pengine/test10/group7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -152,7 +152,7 @@ - - - -- -+ - - - -@@ -161,7 +161,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -@@ -179,7 +179,7 @@ - - - -- -+ - - - -@@ -204,7 +204,7 @@ - - - -- -+ - - - -@@ -213,7 +213,7 @@ - - - -- -+ - - - -@@ -222,7 +222,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -286,7 +286,7 @@ - - - -- -+ - - - -@@ -295,7 +295,7 @@ - - - -- -+ - - - -@@ -304,7 +304,7 @@ - - - -- -+ - - - -@@ -313,7 +313,7 @@ - - - -- -+ - - - -@@ -338,7 +338,7 @@ - - - -- -+ - - - -@@ -347,7 +347,7 @@ - - - -- -+ - - - -@@ -356,7 +356,7 @@ - - - -- -+ - - - -@@ -365,7 +365,7 @@ - - - -- -+ - - - -@@ -390,7 +390,7 @@ - - - -- -+ - - - -@@ -399,7 +399,7 @@ - - - -- -+ - - - -@@ -408,7 +408,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group8.exp b/pengine/test10/group8.exp -index 3a1f19e..3e1fb1a 100644 ---- a/pengine/test10/group8.exp -+++ b/pengine/test10/group8.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -153,7 +153,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/group9.exp b/pengine/test10/group9.exp -index c325adf..66e85a4 100644 ---- a/pengine/test10/group9.exp -+++ b/pengine/test10/group9.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -86,7 +86,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -133,7 +133,7 @@ - - - -- -+ - - - -@@ -155,7 +155,7 @@ - - - -- -+ - - - -@@ -171,7 +171,7 @@ - - - -- -+ - - - -@@ -242,7 +242,7 @@ - - - -- -+ - - - -@@ -261,7 +261,7 @@ - - - -- -+ - - - -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -289,7 +289,7 @@ - - - -- -+ - - - -@@ -311,7 +311,7 @@ - - - -- -+ - - - -@@ -320,7 +320,7 @@ - - - -- -+ - - - -@@ -339,7 +339,7 @@ - - - -- -+ - - - -@@ -361,7 +361,7 @@ - - - -- -+ - - - -@@ -377,7 +377,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/guest-node-host-dies.exp b/pengine/test10/guest-node-host-dies.exp -index 6bd7a60..2029b60 100644 ---- a/pengine/test10/guest-node-host-dies.exp -+++ b/pengine/test10/guest-node-host-dies.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -169,7 +169,7 @@ - - - -- -+ - - - -@@ -224,7 +224,7 @@ - - - -- -+ - - - -@@ -240,7 +240,7 @@ - - - -- -+ - - - -@@ -399,7 +399,7 @@ - - - -- -+ - - - -@@ -412,7 +412,7 @@ - - - -- -+ - - - -@@ -443,7 +443,7 @@ - - - -- -+ - - - -@@ -456,7 +456,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/honor_stonith_rsc_order1.exp b/pengine/test10/honor_stonith_rsc_order1.exp -index a8c5fd8..081a50f 100644 ---- a/pengine/test10/honor_stonith_rsc_order1.exp -+++ b/pengine/test10/honor_stonith_rsc_order1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -103,7 +103,7 @@ - - - -- -+ - - - -@@ -116,7 +116,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/honor_stonith_rsc_order2.exp b/pengine/test10/honor_stonith_rsc_order2.exp -index 35386de..15e798f 100644 ---- a/pengine/test10/honor_stonith_rsc_order2.exp -+++ b/pengine/test10/honor_stonith_rsc_order2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -128,7 +128,7 @@ - - - -- -+ - - - -@@ -137,7 +137,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -178,7 +178,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/honor_stonith_rsc_order3.exp b/pengine/test10/honor_stonith_rsc_order3.exp -index f6b25db..c59ccf1 100644 ---- a/pengine/test10/honor_stonith_rsc_order3.exp -+++ b/pengine/test10/honor_stonith_rsc_order3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -101,7 +101,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -151,7 +151,7 @@ - - - -- -+ - - - -@@ -193,7 +193,7 @@ - - - -- -+ - - - -@@ -206,7 +206,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/honor_stonith_rsc_order4.exp b/pengine/test10/honor_stonith_rsc_order4.exp -index 435b5d9..a42ec95 100644 ---- a/pengine/test10/honor_stonith_rsc_order4.exp -+++ b/pengine/test10/honor_stonith_rsc_order4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ignore_stonith_rsc_order1.exp b/pengine/test10/ignore_stonith_rsc_order1.exp -index 79404b8..c45a687 100644 ---- a/pengine/test10/ignore_stonith_rsc_order1.exp -+++ b/pengine/test10/ignore_stonith_rsc_order1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ignore_stonith_rsc_order2.exp b/pengine/test10/ignore_stonith_rsc_order2.exp -index 7eee978..76054b8 100644 ---- a/pengine/test10/ignore_stonith_rsc_order2.exp -+++ b/pengine/test10/ignore_stonith_rsc_order2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ignore_stonith_rsc_order3.exp b/pengine/test10/ignore_stonith_rsc_order3.exp -index abd51cf..922498e 100644 ---- a/pengine/test10/ignore_stonith_rsc_order3.exp -+++ b/pengine/test10/ignore_stonith_rsc_order3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -125,7 +125,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ignore_stonith_rsc_order4.exp b/pengine/test10/ignore_stonith_rsc_order4.exp -index b72f3d6..7439950 100644 ---- a/pengine/test10/ignore_stonith_rsc_order4.exp -+++ b/pengine/test10/ignore_stonith_rsc_order4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -85,7 +85,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc0.exp b/pengine/test10/inc0.exp -index da87c51..5d90858 100644 ---- a/pengine/test10/inc0.exp -+++ b/pengine/test10/inc0.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -136,7 +136,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc1.exp b/pengine/test10/inc1.exp -index aa615e1..45b9cb5 100644 ---- a/pengine/test10/inc1.exp -+++ b/pengine/test10/inc1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -152,7 +152,7 @@ - - - -- -+ - - - -@@ -161,7 +161,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -@@ -245,7 +245,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -273,7 +273,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc10.exp b/pengine/test10/inc10.exp -index d0dfa82..3779287 100644 ---- a/pengine/test10/inc10.exp -+++ b/pengine/test10/inc10.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -104,7 +104,7 @@ - - - -- -+ - - - -@@ -117,7 +117,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc11.exp b/pengine/test10/inc11.exp -index 4618df6..508ad5c 100644 ---- a/pengine/test10/inc11.exp -+++ b/pengine/test10/inc11.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -49,7 +49,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -136,7 +136,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc12.exp b/pengine/test10/inc12.exp -index ac3bc39..93de58d 100644 ---- a/pengine/test10/inc12.exp -+++ b/pengine/test10/inc12.exp -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -48,7 +48,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -115,7 +115,7 @@ - - - -- -+ - - - -@@ -124,7 +124,7 @@ - - - -- -+ - - - -@@ -133,7 +133,7 @@ - - - -- -+ - - - -@@ -142,7 +142,7 @@ - - - -- -+ - - - -@@ -155,7 +155,7 @@ - - - -- -+ - - - -@@ -168,7 +168,7 @@ - - - -- -+ - - - -@@ -181,7 +181,7 @@ - - - -- -+ - - - -@@ -194,7 +194,7 @@ - - - -- -+ - - - -@@ -242,7 +242,7 @@ - - - -- -+ - - - -@@ -255,7 +255,7 @@ - - - -- -+ - - - -@@ -268,7 +268,7 @@ - - - -- -+ - - - -@@ -281,7 +281,7 @@ - - - -- -+ - - - -@@ -294,7 +294,7 @@ - - - -- -+ - - - -@@ -307,7 +307,7 @@ - - - -- -+ - - - -@@ -320,7 +320,7 @@ - - - -- -+ - - - -@@ -333,7 +333,7 @@ - - - -- -+ - - - -@@ -346,7 +346,7 @@ - - - -- -+ - - - -@@ -359,7 +359,7 @@ - - - -- -+ - - - -@@ -421,7 +421,7 @@ - - - -- -+ - - - -@@ -445,7 +445,7 @@ - - - -- -+ - - - -@@ -469,7 +469,7 @@ - - - -- -+ - - - -@@ -496,7 +496,7 @@ - - - -- -+ - - - -@@ -523,7 +523,7 @@ - - - -- -+ - - - -@@ -550,7 +550,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc2.exp b/pengine/test10/inc2.exp -index 440e593..3fb5134 100644 ---- a/pengine/test10/inc2.exp -+++ b/pengine/test10/inc2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -103,7 +103,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc3.exp b/pengine/test10/inc3.exp -index 4666cb1..e6b0982 100644 ---- a/pengine/test10/inc3.exp -+++ b/pengine/test10/inc3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -103,7 +103,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -@@ -206,7 +206,7 @@ - - - -- -+ - - - -@@ -215,7 +215,7 @@ - - - -- -+ - - - -@@ -224,7 +224,7 @@ - - - -- -+ - - - -@@ -233,7 +233,7 @@ - - - -- -+ - - - -@@ -249,7 +249,7 @@ - - - -- -+ - - - -@@ -265,7 +265,7 @@ - - - -- -+ - - - -@@ -274,7 +274,7 @@ - - - -- -+ - - - -@@ -290,7 +290,7 @@ - - - -- -+ - - - -@@ -306,7 +306,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc4.exp b/pengine/test10/inc4.exp -index 36f8cd9..1f4e71c 100644 ---- a/pengine/test10/inc4.exp -+++ b/pengine/test10/inc4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -103,7 +103,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -128,7 +128,7 @@ - - - -- -+ - - - -@@ -215,7 +215,7 @@ - - - -- -+ - - - -@@ -224,7 +224,7 @@ - - - -- -+ - - - -@@ -233,7 +233,7 @@ - - - -- -+ - - - -@@ -242,7 +242,7 @@ - - - -- -+ - - - -@@ -258,7 +258,7 @@ - - - -- -+ - - - -@@ -277,7 +277,7 @@ - - - -- -+ - - - -@@ -286,7 +286,7 @@ - - - -- -+ - - - -@@ -305,7 +305,7 @@ - - - -- -+ - - - -@@ -321,7 +321,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc5.exp b/pengine/test10/inc5.exp -index 0dbbf67..5eff72f 100644 ---- a/pengine/test10/inc5.exp -+++ b/pengine/test10/inc5.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 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -169,7 +169,7 @@ - - - -- -+ - - - -@@ -178,7 +178,7 @@ - - - -- -+ - - - -@@ -187,7 +187,7 @@ - - - -- -+ - - - -@@ -196,7 +196,7 @@ - - - -- -+ - - - -@@ -205,7 +205,7 @@ - - - -- -+ - - - -@@ -214,7 +214,7 @@ - - - -- -+ - - - -@@ -230,7 +230,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -255,7 +255,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -335,7 +335,7 @@ - - - -- -+ - - - -@@ -344,7 +344,7 @@ - - - -- -+ - - - -@@ -360,7 +360,7 @@ - - - -- -+ - - - -@@ -376,7 +376,7 @@ - - - -- -+ - - - -@@ -385,7 +385,7 @@ - - - -- -+ - - - -@@ -394,7 +394,7 @@ - - - -- -+ - - - -@@ -465,7 +465,7 @@ - - - -- -+ - - - -@@ -474,7 +474,7 @@ - - - -- -+ - - - -@@ -483,7 +483,7 @@ - - - -- -+ - - - -@@ -492,7 +492,7 @@ - - - -- -+ - - - -@@ -501,7 +501,7 @@ - - - -- -+ - - - -@@ -510,7 +510,7 @@ - - - -- -+ - - - -@@ -526,7 +526,7 @@ - - - -- -+ - - - -@@ -542,7 +542,7 @@ - - - -- -+ - - - -@@ -551,7 +551,7 @@ - - - -- -+ - - - -@@ -560,7 +560,7 @@ - - - -- -+ - - - -@@ -631,7 +631,7 @@ - - - -- -+ - - - -@@ -640,7 +640,7 @@ - - - -- -+ - - - -@@ -649,7 +649,7 @@ - - - -- -+ - - - -@@ -658,7 +658,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc6.exp b/pengine/test10/inc6.exp -index 096b7ae..c4e4326 100644 ---- a/pengine/test10/inc6.exp -+++ b/pengine/test10/inc6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -161,7 +161,7 @@ - - - -- -+ - - - -@@ -177,7 +177,7 @@ - - - -- -+ - - - -@@ -244,7 +244,7 @@ - - - -- -+ - - - -@@ -260,7 +260,7 @@ - - - -- -+ - - - -@@ -273,7 +273,7 @@ - - - -- -+ - - - -@@ -289,7 +289,7 @@ - - - -- -+ - - - -@@ -361,7 +361,7 @@ - - - -- -+ - - - -@@ -377,7 +377,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc7.exp b/pengine/test10/inc7.exp -index 2745e10..e4d1058 100644 ---- a/pengine/test10/inc7.exp -+++ b/pengine/test10/inc7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -49,7 +49,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -142,7 +142,7 @@ - - - -- -+ - - - -@@ -151,7 +151,7 @@ - - - -- -+ - - - -@@ -160,7 +160,7 @@ - - - -- -+ - - - -@@ -169,7 +169,7 @@ - - - -- -+ - - - -@@ -182,7 +182,7 @@ - - - -- -+ - - - -@@ -191,7 +191,7 @@ - - - -- -+ - - - -@@ -200,7 +200,7 @@ - - - -- -+ - - - -@@ -209,7 +209,7 @@ - - - -- -+ - - - -@@ -222,7 +222,7 @@ - - - -- -+ - - - -@@ -231,7 +231,7 @@ - - - -- -+ - - - -@@ -240,7 +240,7 @@ - - - -- -+ - - - -@@ -330,7 +330,7 @@ - - - -- -+ - - - -@@ -346,7 +346,7 @@ - - - -- -+ - - - -@@ -355,7 +355,7 @@ - - - -- -+ - - - -@@ -364,7 +364,7 @@ - - - -- -+ - - - -@@ -373,7 +373,7 @@ - - - -- -+ - - - -@@ -389,7 +389,7 @@ - - - -- -+ - - - -@@ -398,7 +398,7 @@ - - - -- -+ - - - -@@ -407,7 +407,7 @@ - - - -- -+ - - - -@@ -416,7 +416,7 @@ - - - -- -+ - - - -@@ -432,7 +432,7 @@ - - - -- -+ - - - -@@ -441,7 +441,7 @@ - - - -- -+ - - - -@@ -450,7 +450,7 @@ - - - -- -+ - - - -@@ -459,7 +459,7 @@ - - - -- -+ - - - -@@ -475,7 +475,7 @@ - - - -- -+ - - - -@@ -484,7 +484,7 @@ - - - -- -+ - - - -@@ -493,7 +493,7 @@ - - - -- -+ - - - -@@ -502,7 +502,7 @@ - - - -- -+ - - - -@@ -518,7 +518,7 @@ - - - -- -+ - - - -@@ -527,7 +527,7 @@ - - - -- -+ - - - -@@ -536,7 +536,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc8.exp b/pengine/test10/inc8.exp -index 3cc6202..0ae4bc7 100644 ---- a/pengine/test10/inc8.exp -+++ b/pengine/test10/inc8.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -@@ -149,7 +149,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -171,7 +171,7 @@ - - - -- -+ - - - -@@ -180,7 +180,7 @@ - - - -- -+ - - - -@@ -189,7 +189,7 @@ - - - -- -+ - - - -@@ -198,7 +198,7 @@ - - - -- -+ - - - -@@ -207,7 +207,7 @@ - - - -- -+ - - - -@@ -216,7 +216,7 @@ - - - -- -+ - - - -@@ -225,7 +225,7 @@ - - - -- -+ - - - -@@ -234,7 +234,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/inc9.exp b/pengine/test10/inc9.exp -index c093d48..506c27b 100644 ---- a/pengine/test10/inc9.exp -+++ b/pengine/test10/inc9.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/interleave-0.exp b/pengine/test10/interleave-0.exp -index fba35fc..888a0e8 100644 ---- a/pengine/test10/interleave-0.exp -+++ b/pengine/test10/interleave-0.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -@@ -219,7 +219,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -237,7 +237,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -255,7 +255,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -273,7 +273,7 @@ - - - -- -+ - - - -@@ -282,7 +282,7 @@ - - - -- -+ - - - -@@ -291,7 +291,7 @@ - - - -- -+ - - - -@@ -300,7 +300,7 @@ - - - -- -+ - - - -@@ -309,7 +309,7 @@ - - - -- -+ - - - -@@ -318,7 +318,7 @@ - - - -- -+ - - - -@@ -327,7 +327,7 @@ - - - -- -+ - - - -@@ -336,7 +336,7 @@ - - - -- -+ - - - -@@ -345,7 +345,7 @@ - - - -- -+ - - - -@@ -354,7 +354,7 @@ - - - -- -+ - - - -@@ -363,7 +363,7 @@ - - - -- -+ - - - -@@ -372,7 +372,7 @@ - - - -- -+ - - - -@@ -381,7 +381,7 @@ - - - -- -+ - - - -@@ -390,7 +390,7 @@ - - - -- -+ - - - -@@ -399,7 +399,7 @@ - - - -- -+ - - - -@@ -408,7 +408,7 @@ - - - -- -+ - - - -@@ -417,7 +417,7 @@ - - - -- -+ - - - -@@ -426,7 +426,7 @@ - - - -- -+ - - - -@@ -435,7 +435,7 @@ - - - -- -+ - - - -@@ -444,7 +444,7 @@ - - - -- -+ - - - -@@ -453,7 +453,7 @@ - - - -- -+ - - - -@@ -462,7 +462,7 @@ - - - -- -+ - - - -@@ -471,7 +471,7 @@ - - - -- -+ - - - -@@ -480,7 +480,7 @@ - - - -- -+ - - - -@@ -489,7 +489,7 @@ - - - -- -+ - - - -@@ -498,7 +498,7 @@ - - - -- -+ - - - -@@ -507,7 +507,7 @@ - - - -- -+ - - - -@@ -516,7 +516,7 @@ - - - -- -+ - - - -@@ -525,7 +525,7 @@ - - - -- -+ - - - -@@ -534,7 +534,7 @@ - - - -- -+ - - - -@@ -543,7 +543,7 @@ - - - -- -+ - - - -@@ -552,7 +552,7 @@ - - - -- -+ - - - -@@ -561,7 +561,7 @@ - - - -- -+ - - - -@@ -570,7 +570,7 @@ - - - -- -+ - - - -@@ -579,7 +579,7 @@ - - - -- -+ - - - -@@ -588,7 +588,7 @@ - - - -- -+ - - - -@@ -597,7 +597,7 @@ - - - -- -+ - - - -@@ -606,7 +606,7 @@ - - - -- -+ - - - -@@ -615,7 +615,7 @@ - - - -- -+ - - - -@@ -624,7 +624,7 @@ - - - -- -+ - - - -@@ -633,7 +633,7 @@ - - - -- -+ - - - -@@ -642,7 +642,7 @@ - - - -- -+ - - - -@@ -651,7 +651,7 @@ - - - -- -+ - - - -@@ -660,7 +660,7 @@ - - - -- -+ - - - -@@ -669,7 +669,7 @@ - - - -- -+ - - - -@@ -678,7 +678,7 @@ - - - -- -+ - - - -@@ -687,7 +687,7 @@ - - - -- -+ - - - -@@ -696,7 +696,7 @@ - - - -- -+ - - - -@@ -705,7 +705,7 @@ - - - -- -+ - - - -@@ -714,7 +714,7 @@ - - - -- -+ - - - -@@ -723,7 +723,7 @@ - - - -- -+ - - - -@@ -732,7 +732,7 @@ - - - -- -+ - - - -@@ -741,7 +741,7 @@ - - - -- -+ - - - -@@ -754,7 +754,7 @@ - - - -- -+ - - - -@@ -767,7 +767,7 @@ - - - -- -+ - - - -@@ -776,7 +776,7 @@ - - - -- -+ - - - -@@ -785,7 +785,7 @@ - - - -- -+ - - - -@@ -794,7 +794,7 @@ - - - -- -+ - - - -@@ -803,7 +803,7 @@ - - - -- -+ - - - -@@ -812,7 +812,7 @@ - - - -- -+ - - - -@@ -821,7 +821,7 @@ - - - -- -+ - - - -@@ -830,7 +830,7 @@ - - - -- -+ - - - -@@ -839,7 +839,7 @@ - - - -- -+ - - - -@@ -852,7 +852,7 @@ - - - -- -+ - - - -@@ -865,7 +865,7 @@ - - - -- -+ - - - -@@ -874,7 +874,7 @@ - - - -- -+ - - - -@@ -883,7 +883,7 @@ - - - -- -+ - - - -@@ -892,7 +892,7 @@ - - - -- -+ - - - -@@ -901,7 +901,7 @@ - - - -- -+ - - - -@@ -910,7 +910,7 @@ - - - -- -+ - - - -@@ -919,7 +919,7 @@ - - - -- -+ - - - -@@ -928,7 +928,7 @@ - - - -- -+ - - - -@@ -937,7 +937,7 @@ - - - -- -+ - - - -@@ -950,7 +950,7 @@ - - - -- -+ - - - -@@ -963,7 +963,7 @@ - - - -- -+ - - - -@@ -972,7 +972,7 @@ - - - -- -+ - - - -@@ -981,7 +981,7 @@ - - - -- -+ - - - -@@ -990,7 +990,7 @@ - - - -- -+ - - - -@@ -999,7 +999,7 @@ - - - -- -+ - - - -@@ -1008,7 +1008,7 @@ - - - -- -+ - - - -@@ -1017,7 +1017,7 @@ - - - -- -+ - - - -@@ -1026,7 +1026,7 @@ - - - -- -+ - - - -@@ -1035,7 +1035,7 @@ - - - -- -+ - - - -@@ -1048,7 +1048,7 @@ - - - -- -+ - - - -@@ -1061,7 +1061,7 @@ - - - -- -+ - - - -@@ -1070,7 +1070,7 @@ - - - -- -+ - - - -@@ -1079,7 +1079,7 @@ - - - -- -+ - - - -@@ -1088,7 +1088,7 @@ - - - -- -+ - - - -@@ -1097,7 +1097,7 @@ - - - -- -+ - - - -@@ -1106,7 +1106,7 @@ - - - -- -+ - - - -@@ -1115,7 +1115,7 @@ - - - -- -+ - - - -@@ -1124,7 +1124,7 @@ - - - -- -+ - - - -@@ -1133,7 +1133,7 @@ - - - -- -+ - - - -@@ -1146,7 +1146,7 @@ - - - -- -+ - - - -@@ -1159,7 +1159,7 @@ - - - -- -+ - - - -@@ -1168,7 +1168,7 @@ - - - -- -+ - - - -@@ -1177,7 +1177,7 @@ - - - -- -+ - - - -@@ -1186,7 +1186,7 @@ - - - -- -+ - - - -@@ -1195,7 +1195,7 @@ - - - -- -+ - - - -@@ -1204,7 +1204,7 @@ - - - -- -+ - - - -@@ -1213,7 +1213,7 @@ - - - -- -+ - - - -@@ -1222,7 +1222,7 @@ - - - -- -+ - - - -@@ -1231,7 +1231,7 @@ - - - -- -+ - - - -@@ -1244,7 +1244,7 @@ - - - -- -+ - - - -@@ -1257,7 +1257,7 @@ - - - -- -+ - - - -@@ -1266,7 +1266,7 @@ - - - -- -+ - - - -@@ -1275,7 +1275,7 @@ - - - -- -+ - - - -@@ -1284,7 +1284,7 @@ - - - -- -+ - - - -@@ -1293,7 +1293,7 @@ - - - -- -+ - - - -@@ -1302,7 +1302,7 @@ - - - -- -+ - - - -@@ -1311,7 +1311,7 @@ - - - -- -+ - - - -@@ -1320,7 +1320,7 @@ - - - -- -+ - - - -@@ -1329,7 +1329,7 @@ - - - -- -+ - - - -@@ -1342,7 +1342,7 @@ - - - -- -+ - - - -@@ -1355,7 +1355,7 @@ - - - -- -+ - - - -@@ -1364,7 +1364,7 @@ - - - -- -+ - - - -@@ -1373,7 +1373,7 @@ - - - -- -+ - - - -@@ -1382,7 +1382,7 @@ - - - -- -+ - - - -@@ -1391,7 +1391,7 @@ - - - -- -+ - - - -@@ -1400,7 +1400,7 @@ - - - -- -+ - - - -@@ -1409,7 +1409,7 @@ - - - -- -+ - - - -@@ -1418,7 +1418,7 @@ - - - -- -+ - - - -@@ -1427,7 +1427,7 @@ - - - -- -+ - - - -@@ -1440,7 +1440,7 @@ - - - -- -+ - - - -@@ -1453,7 +1453,7 @@ - - - -- -+ - - - -@@ -1462,7 +1462,7 @@ - - - -- -+ - - - -@@ -1471,7 +1471,7 @@ - - - -- -+ - - - -@@ -1480,7 +1480,7 @@ - - - -- -+ - - - -@@ -1489,7 +1489,7 @@ - - - -- -+ - - - -@@ -1498,7 +1498,7 @@ - - - -- -+ - - - -@@ -1507,7 +1507,7 @@ - - - -- -+ - - - -@@ -1516,7 +1516,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/interleave-1.exp b/pengine/test10/interleave-1.exp -index fba35fc..888a0e8 100644 ---- a/pengine/test10/interleave-1.exp -+++ b/pengine/test10/interleave-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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -@@ -219,7 +219,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -237,7 +237,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -255,7 +255,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -273,7 +273,7 @@ - - - -- -+ - - - -@@ -282,7 +282,7 @@ - - - -- -+ - - - -@@ -291,7 +291,7 @@ - - - -- -+ - - - -@@ -300,7 +300,7 @@ - - - -- -+ - - - -@@ -309,7 +309,7 @@ - - - -- -+ - - - -@@ -318,7 +318,7 @@ - - - -- -+ - - - -@@ -327,7 +327,7 @@ - - - -- -+ - - - -@@ -336,7 +336,7 @@ - - - -- -+ - - - -@@ -345,7 +345,7 @@ - - - -- -+ - - - -@@ -354,7 +354,7 @@ - - - -- -+ - - - -@@ -363,7 +363,7 @@ - - - -- -+ - - - -@@ -372,7 +372,7 @@ - - - -- -+ - - - -@@ -381,7 +381,7 @@ - - - -- -+ - - - -@@ -390,7 +390,7 @@ - - - -- -+ - - - -@@ -399,7 +399,7 @@ - - - -- -+ - - - -@@ -408,7 +408,7 @@ - - - -- -+ - - - -@@ -417,7 +417,7 @@ - - - -- -+ - - - -@@ -426,7 +426,7 @@ - - - -- -+ - - - -@@ -435,7 +435,7 @@ - - - -- -+ - - - -@@ -444,7 +444,7 @@ - - - -- -+ - - - -@@ -453,7 +453,7 @@ - - - -- -+ - - - -@@ -462,7 +462,7 @@ - - - -- -+ - - - -@@ -471,7 +471,7 @@ - - - -- -+ - - - -@@ -480,7 +480,7 @@ - - - -- -+ - - - -@@ -489,7 +489,7 @@ - - - -- -+ - - - -@@ -498,7 +498,7 @@ - - - -- -+ - - - -@@ -507,7 +507,7 @@ - - - -- -+ - - - -@@ -516,7 +516,7 @@ - - - -- -+ - - - -@@ -525,7 +525,7 @@ - - - -- -+ - - - -@@ -534,7 +534,7 @@ - - - -- -+ - - - -@@ -543,7 +543,7 @@ - - - -- -+ - - - -@@ -552,7 +552,7 @@ - - - -- -+ - - - -@@ -561,7 +561,7 @@ - - - -- -+ - - - -@@ -570,7 +570,7 @@ - - - -- -+ - - - -@@ -579,7 +579,7 @@ - - - -- -+ - - - -@@ -588,7 +588,7 @@ - - - -- -+ - - - -@@ -597,7 +597,7 @@ - - - -- -+ - - - -@@ -606,7 +606,7 @@ - - - -- -+ - - - -@@ -615,7 +615,7 @@ - - - -- -+ - - - -@@ -624,7 +624,7 @@ - - - -- -+ - - - -@@ -633,7 +633,7 @@ - - - -- -+ - - - -@@ -642,7 +642,7 @@ - - - -- -+ - - - -@@ -651,7 +651,7 @@ - - - -- -+ - - - -@@ -660,7 +660,7 @@ - - - -- -+ - - - -@@ -669,7 +669,7 @@ - - - -- -+ - - - -@@ -678,7 +678,7 @@ - - - -- -+ - - - -@@ -687,7 +687,7 @@ - - - -- -+ - - - -@@ -696,7 +696,7 @@ - - - -- -+ - - - -@@ -705,7 +705,7 @@ - - - -- -+ - - - -@@ -714,7 +714,7 @@ - - - -- -+ - - - -@@ -723,7 +723,7 @@ - - - -- -+ - - - -@@ -732,7 +732,7 @@ - - - -- -+ - - - -@@ -741,7 +741,7 @@ - - - -- -+ - - - -@@ -754,7 +754,7 @@ - - - -- -+ - - - -@@ -767,7 +767,7 @@ - - - -- -+ - - - -@@ -776,7 +776,7 @@ - - - -- -+ - - - -@@ -785,7 +785,7 @@ - - - -- -+ - - - -@@ -794,7 +794,7 @@ - - - -- -+ - - - -@@ -803,7 +803,7 @@ - - - -- -+ - - - -@@ -812,7 +812,7 @@ - - - -- -+ - - - -@@ -821,7 +821,7 @@ - - - -- -+ - - - -@@ -830,7 +830,7 @@ - - - -- -+ - - - -@@ -839,7 +839,7 @@ - - - -- -+ - - - -@@ -852,7 +852,7 @@ - - - -- -+ - - - -@@ -865,7 +865,7 @@ - - - -- -+ - - - -@@ -874,7 +874,7 @@ - - - -- -+ - - - -@@ -883,7 +883,7 @@ - - - -- -+ - - - -@@ -892,7 +892,7 @@ - - - -- -+ - - - -@@ -901,7 +901,7 @@ - - - -- -+ - - - -@@ -910,7 +910,7 @@ - - - -- -+ - - - -@@ -919,7 +919,7 @@ - - - -- -+ - - - -@@ -928,7 +928,7 @@ - - - -- -+ - - - -@@ -937,7 +937,7 @@ - - - -- -+ - - - -@@ -950,7 +950,7 @@ - - - -- -+ - - - -@@ -963,7 +963,7 @@ - - - -- -+ - - - -@@ -972,7 +972,7 @@ - - - -- -+ - - - -@@ -981,7 +981,7 @@ - - - -- -+ - - - -@@ -990,7 +990,7 @@ - - - -- -+ - - - -@@ -999,7 +999,7 @@ - - - -- -+ - - - -@@ -1008,7 +1008,7 @@ - - - -- -+ - - - -@@ -1017,7 +1017,7 @@ - - - -- -+ - - - -@@ -1026,7 +1026,7 @@ - - - -- -+ - - - -@@ -1035,7 +1035,7 @@ - - - -- -+ - - - -@@ -1048,7 +1048,7 @@ - - - -- -+ - - - -@@ -1061,7 +1061,7 @@ - - - -- -+ - - - -@@ -1070,7 +1070,7 @@ - - - -- -+ - - - -@@ -1079,7 +1079,7 @@ - - - -- -+ - - - -@@ -1088,7 +1088,7 @@ - - - -- -+ - - - -@@ -1097,7 +1097,7 @@ - - - -- -+ - - - -@@ -1106,7 +1106,7 @@ - - - -- -+ - - - -@@ -1115,7 +1115,7 @@ - - - -- -+ - - - -@@ -1124,7 +1124,7 @@ - - - -- -+ - - - -@@ -1133,7 +1133,7 @@ - - - -- -+ - - - -@@ -1146,7 +1146,7 @@ - - - -- -+ - - - -@@ -1159,7 +1159,7 @@ - - - -- -+ - - - -@@ -1168,7 +1168,7 @@ - - - -- -+ - - - -@@ -1177,7 +1177,7 @@ - - - -- -+ - - - -@@ -1186,7 +1186,7 @@ - - - -- -+ - - - -@@ -1195,7 +1195,7 @@ - - - -- -+ - - - -@@ -1204,7 +1204,7 @@ - - - -- -+ - - - -@@ -1213,7 +1213,7 @@ - - - -- -+ - - - -@@ -1222,7 +1222,7 @@ - - - -- -+ - - - -@@ -1231,7 +1231,7 @@ - - - -- -+ - - - -@@ -1244,7 +1244,7 @@ - - - -- -+ - - - -@@ -1257,7 +1257,7 @@ - - - -- -+ - - - -@@ -1266,7 +1266,7 @@ - - - -- -+ - - - -@@ -1275,7 +1275,7 @@ - - - -- -+ - - - -@@ -1284,7 +1284,7 @@ - - - -- -+ - - - -@@ -1293,7 +1293,7 @@ - - - -- -+ - - - -@@ -1302,7 +1302,7 @@ - - - -- -+ - - - -@@ -1311,7 +1311,7 @@ - - - -- -+ - - - -@@ -1320,7 +1320,7 @@ - - - -- -+ - - - -@@ -1329,7 +1329,7 @@ - - - -- -+ - - - -@@ -1342,7 +1342,7 @@ - - - -- -+ - - - -@@ -1355,7 +1355,7 @@ - - - -- -+ - - - -@@ -1364,7 +1364,7 @@ - - - -- -+ - - - -@@ -1373,7 +1373,7 @@ - - - -- -+ - - - -@@ -1382,7 +1382,7 @@ - - - -- -+ - - - -@@ -1391,7 +1391,7 @@ - - - -- -+ - - - -@@ -1400,7 +1400,7 @@ - - - -- -+ - - - -@@ -1409,7 +1409,7 @@ - - - -- -+ - - - -@@ -1418,7 +1418,7 @@ - - - -- -+ - - - -@@ -1427,7 +1427,7 @@ - - - -- -+ - - - -@@ -1440,7 +1440,7 @@ - - - -- -+ - - - -@@ -1453,7 +1453,7 @@ - - - -- -+ - - - -@@ -1462,7 +1462,7 @@ - - - -- -+ - - - -@@ -1471,7 +1471,7 @@ - - - -- -+ - - - -@@ -1480,7 +1480,7 @@ - - - -- -+ - - - -@@ -1489,7 +1489,7 @@ - - - -- -+ - - - -@@ -1498,7 +1498,7 @@ - - - -- -+ - - - -@@ -1507,7 +1507,7 @@ - - - -- -+ - - - -@@ -1516,7 +1516,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/interleave-2.exp b/pengine/test10/interleave-2.exp -index fba35fc..888a0e8 100644 ---- a/pengine/test10/interleave-2.exp -+++ b/pengine/test10/interleave-2.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -@@ -219,7 +219,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -237,7 +237,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -255,7 +255,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -273,7 +273,7 @@ - - - -- -+ - - - -@@ -282,7 +282,7 @@ - - - -- -+ - - - -@@ -291,7 +291,7 @@ - - - -- -+ - - - -@@ -300,7 +300,7 @@ - - - -- -+ - - - -@@ -309,7 +309,7 @@ - - - -- -+ - - - -@@ -318,7 +318,7 @@ - - - -- -+ - - - -@@ -327,7 +327,7 @@ - - - -- -+ - - - -@@ -336,7 +336,7 @@ - - - -- -+ - - - -@@ -345,7 +345,7 @@ - - - -- -+ - - - -@@ -354,7 +354,7 @@ - - - -- -+ - - - -@@ -363,7 +363,7 @@ - - - -- -+ - - - -@@ -372,7 +372,7 @@ - - - -- -+ - - - -@@ -381,7 +381,7 @@ - - - -- -+ - - - -@@ -390,7 +390,7 @@ - - - -- -+ - - - -@@ -399,7 +399,7 @@ - - - -- -+ - - - -@@ -408,7 +408,7 @@ - - - -- -+ - - - -@@ -417,7 +417,7 @@ - - - -- -+ - - - -@@ -426,7 +426,7 @@ - - - -- -+ - - - -@@ -435,7 +435,7 @@ - - - -- -+ - - - -@@ -444,7 +444,7 @@ - - - -- -+ - - - -@@ -453,7 +453,7 @@ - - - -- -+ - - - -@@ -462,7 +462,7 @@ - - - -- -+ - - - -@@ -471,7 +471,7 @@ - - - -- -+ - - - -@@ -480,7 +480,7 @@ - - - -- -+ - - - -@@ -489,7 +489,7 @@ - - - -- -+ - - - -@@ -498,7 +498,7 @@ - - - -- -+ - - - -@@ -507,7 +507,7 @@ - - - -- -+ - - - -@@ -516,7 +516,7 @@ - - - -- -+ - - - -@@ -525,7 +525,7 @@ - - - -- -+ - - - -@@ -534,7 +534,7 @@ - - - -- -+ - - - -@@ -543,7 +543,7 @@ - - - -- -+ - - - -@@ -552,7 +552,7 @@ - - - -- -+ - - - -@@ -561,7 +561,7 @@ - - - -- -+ - - - -@@ -570,7 +570,7 @@ - - - -- -+ - - - -@@ -579,7 +579,7 @@ - - - -- -+ - - - -@@ -588,7 +588,7 @@ - - - -- -+ - - - -@@ -597,7 +597,7 @@ - - - -- -+ - - - -@@ -606,7 +606,7 @@ - - - -- -+ - - - -@@ -615,7 +615,7 @@ - - - -- -+ - - - -@@ -624,7 +624,7 @@ - - - -- -+ - - - -@@ -633,7 +633,7 @@ - - - -- -+ - - - -@@ -642,7 +642,7 @@ - - - -- -+ - - - -@@ -651,7 +651,7 @@ - - - -- -+ - - - -@@ -660,7 +660,7 @@ - - - -- -+ - - - -@@ -669,7 +669,7 @@ - - - -- -+ - - - -@@ -678,7 +678,7 @@ - - - -- -+ - - - -@@ -687,7 +687,7 @@ - - - -- -+ - - - -@@ -696,7 +696,7 @@ - - - -- -+ - - - -@@ -705,7 +705,7 @@ - - - -- -+ - - - -@@ -714,7 +714,7 @@ - - - -- -+ - - - -@@ -723,7 +723,7 @@ - - - -- -+ - - - -@@ -732,7 +732,7 @@ - - - -- -+ - - - -@@ -741,7 +741,7 @@ - - - -- -+ - - - -@@ -754,7 +754,7 @@ - - - -- -+ - - - -@@ -767,7 +767,7 @@ - - - -- -+ - - - -@@ -776,7 +776,7 @@ - - - -- -+ - - - -@@ -785,7 +785,7 @@ - - - -- -+ - - - -@@ -794,7 +794,7 @@ - - - -- -+ - - - -@@ -803,7 +803,7 @@ - - - -- -+ - - - -@@ -812,7 +812,7 @@ - - - -- -+ - - - -@@ -821,7 +821,7 @@ - - - -- -+ - - - -@@ -830,7 +830,7 @@ - - - -- -+ - - - -@@ -839,7 +839,7 @@ - - - -- -+ - - - -@@ -852,7 +852,7 @@ - - - -- -+ - - - -@@ -865,7 +865,7 @@ - - - -- -+ - - - -@@ -874,7 +874,7 @@ - - - -- -+ - - - -@@ -883,7 +883,7 @@ - - - -- -+ - - - -@@ -892,7 +892,7 @@ - - - -- -+ - - - -@@ -901,7 +901,7 @@ - - - -- -+ - - - -@@ -910,7 +910,7 @@ - - - -- -+ - - - -@@ -919,7 +919,7 @@ - - - -- -+ - - - -@@ -928,7 +928,7 @@ - - - -- -+ - - - -@@ -937,7 +937,7 @@ - - - -- -+ - - - -@@ -950,7 +950,7 @@ - - - -- -+ - - - -@@ -963,7 +963,7 @@ - - - -- -+ - - - -@@ -972,7 +972,7 @@ - - - -- -+ - - - -@@ -981,7 +981,7 @@ - - - -- -+ - - - -@@ -990,7 +990,7 @@ - - - -- -+ - - - -@@ -999,7 +999,7 @@ - - - -- -+ - - - -@@ -1008,7 +1008,7 @@ - - - -- -+ - - - -@@ -1017,7 +1017,7 @@ - - - -- -+ - - - -@@ -1026,7 +1026,7 @@ - - - -- -+ - - - -@@ -1035,7 +1035,7 @@ - - - -- -+ - - - -@@ -1048,7 +1048,7 @@ - - - -- -+ - - - -@@ -1061,7 +1061,7 @@ - - - -- -+ - - - -@@ -1070,7 +1070,7 @@ - - - -- -+ - - - -@@ -1079,7 +1079,7 @@ - - - -- -+ - - - -@@ -1088,7 +1088,7 @@ - - - -- -+ - - - -@@ -1097,7 +1097,7 @@ - - - -- -+ - - - -@@ -1106,7 +1106,7 @@ - - - -- -+ - - - -@@ -1115,7 +1115,7 @@ - - - -- -+ - - - -@@ -1124,7 +1124,7 @@ - - - -- -+ - - - -@@ -1133,7 +1133,7 @@ - - - -- -+ - - - -@@ -1146,7 +1146,7 @@ - - - -- -+ - - - -@@ -1159,7 +1159,7 @@ - - - -- -+ - - - -@@ -1168,7 +1168,7 @@ - - - -- -+ - - - -@@ -1177,7 +1177,7 @@ - - - -- -+ - - - -@@ -1186,7 +1186,7 @@ - - - -- -+ - - - -@@ -1195,7 +1195,7 @@ - - - -- -+ - - - -@@ -1204,7 +1204,7 @@ - - - -- -+ - - - -@@ -1213,7 +1213,7 @@ - - - -- -+ - - - -@@ -1222,7 +1222,7 @@ - - - -- -+ - - - -@@ -1231,7 +1231,7 @@ - - - -- -+ - - - -@@ -1244,7 +1244,7 @@ - - - -- -+ - - - -@@ -1257,7 +1257,7 @@ - - - -- -+ - - - -@@ -1266,7 +1266,7 @@ - - - -- -+ - - - -@@ -1275,7 +1275,7 @@ - - - -- -+ - - - -@@ -1284,7 +1284,7 @@ - - - -- -+ - - - -@@ -1293,7 +1293,7 @@ - - - -- -+ - - - -@@ -1302,7 +1302,7 @@ - - - -- -+ - - - -@@ -1311,7 +1311,7 @@ - - - -- -+ - - - -@@ -1320,7 +1320,7 @@ - - - -- -+ - - - -@@ -1329,7 +1329,7 @@ - - - -- -+ - - - -@@ -1342,7 +1342,7 @@ - - - -- -+ - - - -@@ -1355,7 +1355,7 @@ - - - -- -+ - - - -@@ -1364,7 +1364,7 @@ - - - -- -+ - - - -@@ -1373,7 +1373,7 @@ - - - -- -+ - - - -@@ -1382,7 +1382,7 @@ - - - -- -+ - - - -@@ -1391,7 +1391,7 @@ - - - -- -+ - - - -@@ -1400,7 +1400,7 @@ - - - -- -+ - - - -@@ -1409,7 +1409,7 @@ - - - -- -+ - - - -@@ -1418,7 +1418,7 @@ - - - -- -+ - - - -@@ -1427,7 +1427,7 @@ - - - -- -+ - - - -@@ -1440,7 +1440,7 @@ - - - -- -+ - - - -@@ -1453,7 +1453,7 @@ - - - -- -+ - - - -@@ -1462,7 +1462,7 @@ - - - -- -+ - - - -@@ -1471,7 +1471,7 @@ - - - -- -+ - - - -@@ -1480,7 +1480,7 @@ - - - -- -+ - - - -@@ -1489,7 +1489,7 @@ - - - -- -+ - - - -@@ -1498,7 +1498,7 @@ - - - -- -+ - - - -@@ -1507,7 +1507,7 @@ - - - -- -+ - - - -@@ -1516,7 +1516,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/interleave-3.exp b/pengine/test10/interleave-3.exp -index fba35fc..888a0e8 100644 ---- a/pengine/test10/interleave-3.exp -+++ b/pengine/test10/interleave-3.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -@@ -219,7 +219,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -237,7 +237,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -255,7 +255,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -273,7 +273,7 @@ - - - -- -+ - - - -@@ -282,7 +282,7 @@ - - - -- -+ - - - -@@ -291,7 +291,7 @@ - - - -- -+ - - - -@@ -300,7 +300,7 @@ - - - -- -+ - - - -@@ -309,7 +309,7 @@ - - - -- -+ - - - -@@ -318,7 +318,7 @@ - - - -- -+ - - - -@@ -327,7 +327,7 @@ - - - -- -+ - - - -@@ -336,7 +336,7 @@ - - - -- -+ - - - -@@ -345,7 +345,7 @@ - - - -- -+ - - - -@@ -354,7 +354,7 @@ - - - -- -+ - - - -@@ -363,7 +363,7 @@ - - - -- -+ - - - -@@ -372,7 +372,7 @@ - - - -- -+ - - - -@@ -381,7 +381,7 @@ - - - -- -+ - - - -@@ -390,7 +390,7 @@ - - - -- -+ - - - -@@ -399,7 +399,7 @@ - - - -- -+ - - - -@@ -408,7 +408,7 @@ - - - -- -+ - - - -@@ -417,7 +417,7 @@ - - - -- -+ - - - -@@ -426,7 +426,7 @@ - - - -- -+ - - - -@@ -435,7 +435,7 @@ - - - -- -+ - - - -@@ -444,7 +444,7 @@ - - - -- -+ - - - -@@ -453,7 +453,7 @@ - - - -- -+ - - - -@@ -462,7 +462,7 @@ - - - -- -+ - - - -@@ -471,7 +471,7 @@ - - - -- -+ - - - -@@ -480,7 +480,7 @@ - - - -- -+ - - - -@@ -489,7 +489,7 @@ - - - -- -+ - - - -@@ -498,7 +498,7 @@ - - - -- -+ - - - -@@ -507,7 +507,7 @@ - - - -- -+ - - - -@@ -516,7 +516,7 @@ - - - -- -+ - - - -@@ -525,7 +525,7 @@ - - - -- -+ - - - -@@ -534,7 +534,7 @@ - - - -- -+ - - - -@@ -543,7 +543,7 @@ - - - -- -+ - - - -@@ -552,7 +552,7 @@ - - - -- -+ - - - -@@ -561,7 +561,7 @@ - - - -- -+ - - - -@@ -570,7 +570,7 @@ - - - -- -+ - - - -@@ -579,7 +579,7 @@ - - - -- -+ - - - -@@ -588,7 +588,7 @@ - - - -- -+ - - - -@@ -597,7 +597,7 @@ - - - -- -+ - - - -@@ -606,7 +606,7 @@ - - - -- -+ - - - -@@ -615,7 +615,7 @@ - - - -- -+ - - - -@@ -624,7 +624,7 @@ - - - -- -+ - - - -@@ -633,7 +633,7 @@ - - - -- -+ - - - -@@ -642,7 +642,7 @@ - - - -- -+ - - - -@@ -651,7 +651,7 @@ - - - -- -+ - - - -@@ -660,7 +660,7 @@ - - - -- -+ - - - -@@ -669,7 +669,7 @@ - - - -- -+ - - - -@@ -678,7 +678,7 @@ - - - -- -+ - - - -@@ -687,7 +687,7 @@ - - - -- -+ - - - -@@ -696,7 +696,7 @@ - - - -- -+ - - - -@@ -705,7 +705,7 @@ - - - -- -+ - - - -@@ -714,7 +714,7 @@ - - - -- -+ - - - -@@ -723,7 +723,7 @@ - - - -- -+ - - - -@@ -732,7 +732,7 @@ - - - -- -+ - - - -@@ -741,7 +741,7 @@ - - - -- -+ - - - -@@ -754,7 +754,7 @@ - - - -- -+ - - - -@@ -767,7 +767,7 @@ - - - -- -+ - - - -@@ -776,7 +776,7 @@ - - - -- -+ - - - -@@ -785,7 +785,7 @@ - - - -- -+ - - - -@@ -794,7 +794,7 @@ - - - -- -+ - - - -@@ -803,7 +803,7 @@ - - - -- -+ - - - -@@ -812,7 +812,7 @@ - - - -- -+ - - - -@@ -821,7 +821,7 @@ - - - -- -+ - - - -@@ -830,7 +830,7 @@ - - - -- -+ - - - -@@ -839,7 +839,7 @@ - - - -- -+ - - - -@@ -852,7 +852,7 @@ - - - -- -+ - - - -@@ -865,7 +865,7 @@ - - - -- -+ - - - -@@ -874,7 +874,7 @@ - - - -- -+ - - - -@@ -883,7 +883,7 @@ - - - -- -+ - - - -@@ -892,7 +892,7 @@ - - - -- -+ - - - -@@ -901,7 +901,7 @@ - - - -- -+ - - - -@@ -910,7 +910,7 @@ - - - -- -+ - - - -@@ -919,7 +919,7 @@ - - - -- -+ - - - -@@ -928,7 +928,7 @@ - - - -- -+ - - - -@@ -937,7 +937,7 @@ - - - -- -+ - - - -@@ -950,7 +950,7 @@ - - - -- -+ - - - -@@ -963,7 +963,7 @@ - - - -- -+ - - - -@@ -972,7 +972,7 @@ - - - -- -+ - - - -@@ -981,7 +981,7 @@ - - - -- -+ - - - -@@ -990,7 +990,7 @@ - - - -- -+ - - - -@@ -999,7 +999,7 @@ - - - -- -+ - - - -@@ -1008,7 +1008,7 @@ - - - -- -+ - - - -@@ -1017,7 +1017,7 @@ - - - -- -+ - - - -@@ -1026,7 +1026,7 @@ - - - -- -+ - - - -@@ -1035,7 +1035,7 @@ - - - -- -+ - - - -@@ -1048,7 +1048,7 @@ - - - -- -+ - - - -@@ -1061,7 +1061,7 @@ - - - -- -+ - - - -@@ -1070,7 +1070,7 @@ - - - -- -+ - - - -@@ -1079,7 +1079,7 @@ - - - -- -+ - - - -@@ -1088,7 +1088,7 @@ - - - -- -+ - - - -@@ -1097,7 +1097,7 @@ - - - -- -+ - - - -@@ -1106,7 +1106,7 @@ - - - -- -+ - - - -@@ -1115,7 +1115,7 @@ - - - -- -+ - - - -@@ -1124,7 +1124,7 @@ - - - -- -+ - - - -@@ -1133,7 +1133,7 @@ - - - -- -+ - - - -@@ -1146,7 +1146,7 @@ - - - -- -+ - - - -@@ -1159,7 +1159,7 @@ - - - -- -+ - - - -@@ -1168,7 +1168,7 @@ - - - -- -+ - - - -@@ -1177,7 +1177,7 @@ - - - -- -+ - - - -@@ -1186,7 +1186,7 @@ - - - -- -+ - - - -@@ -1195,7 +1195,7 @@ - - - -- -+ - - - -@@ -1204,7 +1204,7 @@ - - - -- -+ - - - -@@ -1213,7 +1213,7 @@ - - - -- -+ - - - -@@ -1222,7 +1222,7 @@ - - - -- -+ - - - -@@ -1231,7 +1231,7 @@ - - - -- -+ - - - -@@ -1244,7 +1244,7 @@ - - - -- -+ - - - -@@ -1257,7 +1257,7 @@ - - - -- -+ - - - -@@ -1266,7 +1266,7 @@ - - - -- -+ - - - -@@ -1275,7 +1275,7 @@ - - - -- -+ - - - -@@ -1284,7 +1284,7 @@ - - - -- -+ - - - -@@ -1293,7 +1293,7 @@ - - - -- -+ - - - -@@ -1302,7 +1302,7 @@ - - - -- -+ - - - -@@ -1311,7 +1311,7 @@ - - - -- -+ - - - -@@ -1320,7 +1320,7 @@ - - - -- -+ - - - -@@ -1329,7 +1329,7 @@ - - - -- -+ - - - -@@ -1342,7 +1342,7 @@ - - - -- -+ - - - -@@ -1355,7 +1355,7 @@ - - - -- -+ - - - -@@ -1364,7 +1364,7 @@ - - - -- -+ - - - -@@ -1373,7 +1373,7 @@ - - - -- -+ - - - -@@ -1382,7 +1382,7 @@ - - - -- -+ - - - -@@ -1391,7 +1391,7 @@ - - - -- -+ - - - -@@ -1400,7 +1400,7 @@ - - - -- -+ - - - -@@ -1409,7 +1409,7 @@ - - - -- -+ - - - -@@ -1418,7 +1418,7 @@ - - - -- -+ - - - -@@ -1427,7 +1427,7 @@ - - - -- -+ - - - -@@ -1440,7 +1440,7 @@ - - - -- -+ - - - -@@ -1453,7 +1453,7 @@ - - - -- -+ - - - -@@ -1462,7 +1462,7 @@ - - - -- -+ - - - -@@ -1471,7 +1471,7 @@ - - - -- -+ - - - -@@ -1480,7 +1480,7 @@ - - - -- -+ - - - -@@ -1489,7 +1489,7 @@ - - - -- -+ - - - -@@ -1498,7 +1498,7 @@ - - - -- -+ - - - -@@ -1507,7 +1507,7 @@ - - - -- -+ - - - -@@ -1516,7 +1516,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/interleave-pseudo-stop.exp b/pengine/test10/interleave-pseudo-stop.exp -index 8412fd8..7a6b7ed 100644 ---- a/pengine/test10/interleave-pseudo-stop.exp -+++ b/pengine/test10/interleave-pseudo-stop.exp -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -211,7 +211,7 @@ - - - -- -+ - - - -@@ -224,7 +224,7 @@ - - - -- -+ - - - -@@ -365,7 +365,7 @@ - - - -- -+ - - - -@@ -378,7 +378,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/interleave-restart.exp b/pengine/test10/interleave-restart.exp -index 28f4d32..fb6eaca 100644 ---- a/pengine/test10/interleave-restart.exp -+++ b/pengine/test10/interleave-restart.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -295,7 +295,7 @@ - - - -- -+ - - - -@@ -308,7 +308,7 @@ - - - -- -+ - - - -@@ -321,7 +321,7 @@ - - - -- -+ - - - -@@ -334,7 +334,7 @@ - - - -- -+ - - - -@@ -347,7 +347,7 @@ - - - -- -+ - - - -@@ -360,7 +360,7 @@ - - - -- -+ - - - -@@ -373,7 +373,7 @@ - - - -- -+ - - - -@@ -392,7 +392,7 @@ - - - -- -+ - - - -@@ -405,7 +405,7 @@ - - - -- -+ - - - -@@ -597,7 +597,7 @@ - - - -- -+ - - - -@@ -610,7 +610,7 @@ - - - -- -+ - - - -@@ -623,7 +623,7 @@ - - - -- -+ - - - -@@ -636,7 +636,7 @@ - - - -- -+ - - - -@@ -649,7 +649,7 @@ - - - -- -+ - - - -@@ -662,7 +662,7 @@ - - - -- -+ - - - -@@ -675,7 +675,7 @@ - - - -- -+ - - - -@@ -694,7 +694,7 @@ - - - -- -+ - - - -@@ -707,7 +707,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/interleave-stop.exp b/pengine/test10/interleave-stop.exp -index e91703c..a4c524f 100644 ---- a/pengine/test10/interleave-stop.exp -+++ b/pengine/test10/interleave-stop.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -199,7 +199,7 @@ - - - -- -+ - - - -@@ -212,7 +212,7 @@ - - - -- -+ - - - -@@ -225,7 +225,7 @@ - - - -- -+ - - - -@@ -321,7 +321,7 @@ - - - -- -+ - - - -@@ -334,7 +334,7 @@ - - - -- -+ - - - -@@ -347,7 +347,7 @@ - - - -- -+ - - - -@@ -360,7 +360,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/isolation-clone.exp b/pengine/test10/isolation-clone.exp -index 3568796..b3df0fa 100644 ---- a/pengine/test10/isolation-clone.exp -+++ b/pengine/test10/isolation-clone.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/isolation-restart-all.exp b/pengine/test10/isolation-restart-all.exp -index 2d54b9e..3e09183 100644 ---- a/pengine/test10/isolation-restart-all.exp -+++ b/pengine/test10/isolation-restart-all.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -234,7 +234,7 @@ - - - -- -+ - - - -@@ -250,7 +250,7 @@ - - - -- -+ - - - -@@ -266,7 +266,7 @@ - - - -- -+ - - - -@@ -279,7 +279,7 @@ - - - -- -+ - - - -@@ -292,7 +292,7 @@ - - - -- -+ - - - -@@ -311,7 +311,7 @@ - - - -- -+ - - - -@@ -387,7 +387,7 @@ - - - -- -+ - - - -@@ -403,7 +403,7 @@ - - - -- -+ - - - -@@ -419,7 +419,7 @@ - - - -- -+ - - - -@@ -432,7 +432,7 @@ - - - -- -+ - - - -@@ -445,7 +445,7 @@ - - - -- -+ - - - -@@ -464,7 +464,7 @@ - - - -- -+ - - - -@@ -540,7 +540,7 @@ - - - -- -+ - - - -@@ -556,7 +556,7 @@ - - - -- -+ - - - -@@ -572,7 +572,7 @@ - - - -- -+ - - - -@@ -585,7 +585,7 @@ - - - -- -+ - - - -@@ -598,7 +598,7 @@ - - - -- -+ - - - -@@ -617,7 +617,7 @@ - - - -- -+ - - - -@@ -742,7 +742,7 @@ - - - -- -+ - - - -@@ -758,7 +758,7 @@ - - - -- -+ - - - -@@ -774,7 +774,7 @@ - - - -- -+ - - - -@@ -787,7 +787,7 @@ - - - -- -+ - - - -@@ -800,7 +800,7 @@ - - - -- -+ - - - -@@ -819,7 +819,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/isolation-start-all.exp b/pengine/test10/isolation-start-all.exp -index 9368fb7..49fc58f 100644 ---- a/pengine/test10/isolation-start-all.exp -+++ b/pengine/test10/isolation-start-all.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -142,7 +142,7 @@ - - - -- -+ - - - -@@ -155,7 +155,7 @@ - - - -- -+ - - - -@@ -168,7 +168,7 @@ - - - -- -+ - - - -@@ -214,7 +214,7 @@ - - - -- -+ - - - -@@ -227,7 +227,7 @@ - - - -- -+ - - - -@@ -240,7 +240,7 @@ - - - -- -+ - - - -@@ -253,7 +253,7 @@ - - - -- -+ - - - -@@ -299,7 +299,7 @@ - - - -- -+ - - - -@@ -312,7 +312,7 @@ - - - -- -+ - - - -@@ -325,7 +325,7 @@ - - - -- -+ - - - -@@ -338,7 +338,7 @@ - - - -- -+ - - - -@@ -406,7 +406,7 @@ - - - -- -+ - - - -@@ -419,7 +419,7 @@ - - - -- -+ - - - -@@ -432,7 +432,7 @@ - - - -- -+ - - - -@@ -445,7 +445,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/load-stopped-loop-2.exp b/pengine/test10/load-stopped-loop-2.exp -index 4a362c1..f6315cb 100644 ---- a/pengine/test10/load-stopped-loop-2.exp -+++ b/pengine/test10/load-stopped-loop-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -157,7 +157,7 @@ - - - -- -+ - - - -@@ -188,7 +188,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -214,7 +214,7 @@ - - - -- -+ - - - -@@ -223,7 +223,7 @@ - - - -- -+ - - - -@@ -254,7 +254,7 @@ - - - -- -+ - - - -@@ -267,7 +267,7 @@ - - - -- -+ - - - -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -289,7 +289,7 @@ - - - -- -+ - - - -@@ -320,7 +320,7 @@ - - - -- -+ - - - -@@ -333,7 +333,7 @@ - - - -- -+ - - - -@@ -346,7 +346,7 @@ - - - -- -+ - - - -@@ -359,7 +359,7 @@ - - - -- -+ - - - -@@ -390,7 +390,7 @@ - - - -- -+ - - - -@@ -403,7 +403,7 @@ - - - -- -+ - - - -@@ -416,7 +416,7 @@ - - - -- -+ - - - -@@ -429,7 +429,7 @@ - - - -- -+ - - - -@@ -460,7 +460,7 @@ - - - -- -+ - - - -@@ -473,7 +473,7 @@ - - - -- -+ - - - -@@ -486,7 +486,7 @@ - - - -- -+ - - - -@@ -499,7 +499,7 @@ - - - -- -+ - - - -@@ -530,7 +530,7 @@ - - - -- -+ - - - -@@ -543,7 +543,7 @@ - - - -- -+ - - - -@@ -556,7 +556,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/load-stopped-loop.exp b/pengine/test10/load-stopped-loop.exp -index deac491..2d12452 100644 ---- a/pengine/test10/load-stopped-loop.exp -+++ b/pengine/test10/load-stopped-loop.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -157,7 +157,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -@@ -179,7 +179,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -205,7 +205,7 @@ - - - -- -+ - - - -@@ -218,7 +218,7 @@ - - - -- -+ - - - -@@ -227,7 +227,7 @@ - - - -- -+ - - - -@@ -258,7 +258,7 @@ - - - -- -+ - - - -@@ -271,7 +271,7 @@ - - - -- -+ - - - -@@ -284,7 +284,7 @@ - - - -- -+ - - - -@@ -297,7 +297,7 @@ - - - -- -+ - - - -@@ -328,7 +328,7 @@ - - - -- -+ - - - -@@ -341,7 +341,7 @@ - - - -- -+ - - - -@@ -354,7 +354,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/location-sets-templates.exp b/pengine/test10/location-sets-templates.exp -index 2590c53..ad8ea50 100644 ---- a/pengine/test10/location-sets-templates.exp -+++ b/pengine/test10/location-sets-templates.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -155,7 +155,7 @@ - - - -- -+ - - - -@@ -164,7 +164,7 @@ - - - -- -+ - - - -@@ -173,7 +173,7 @@ - - - -- -+ - - - -@@ -189,7 +189,7 @@ - - - -- -+ - - - -@@ -198,7 +198,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/managed-0.exp b/pengine/test10/managed-0.exp -index e001978..ee9667c 100644 ---- a/pengine/test10/managed-0.exp -+++ b/pengine/test10/managed-0.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -@@ -219,7 +219,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -237,7 +237,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -255,7 +255,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -273,7 +273,7 @@ - - - -- -+ - - - -@@ -282,7 +282,7 @@ - - - -- -+ - - - -@@ -291,7 +291,7 @@ - - - -- -+ - - - -@@ -300,7 +300,7 @@ - - - -- -+ - - - -@@ -309,7 +309,7 @@ - - - -- -+ - - - -@@ -318,7 +318,7 @@ - - - -- -+ - - - -@@ -327,7 +327,7 @@ - - - -- -+ - - - -@@ -336,7 +336,7 @@ - - - -- -+ - - - -@@ -345,7 +345,7 @@ - - - -- -+ - - - -@@ -354,7 +354,7 @@ - - - -- -+ - - - -@@ -363,7 +363,7 @@ - - - -- -+ - - - -@@ -372,7 +372,7 @@ - - - -- -+ - - - -@@ -381,7 +381,7 @@ - - - -- -+ - - - -@@ -390,7 +390,7 @@ - - - -- -+ - - - -@@ -399,7 +399,7 @@ - - - -- -+ - - - -@@ -408,7 +408,7 @@ - - - -- -+ - - - -@@ -417,7 +417,7 @@ - - - -- -+ - - - -@@ -426,7 +426,7 @@ - - - -- -+ - - - -@@ -435,7 +435,7 @@ - - - -- -+ - - - -@@ -444,7 +444,7 @@ - - - -- -+ - - - -@@ -453,7 +453,7 @@ - - - -- -+ - - - -@@ -462,7 +462,7 @@ - - - -- -+ - - - -@@ -471,7 +471,7 @@ - - - -- -+ - - - -@@ -480,7 +480,7 @@ - - - -- -+ - - - -@@ -489,7 +489,7 @@ - - - -- -+ - - - -@@ -498,7 +498,7 @@ - - - -- -+ - - - -@@ -507,7 +507,7 @@ - - - -- -+ - - - -@@ -516,7 +516,7 @@ - - - -- -+ - - - -@@ -525,7 +525,7 @@ - - - -- -+ - - - -@@ -534,7 +534,7 @@ - - - -- -+ - - - -@@ -543,7 +543,7 @@ - - - -- -+ - - - -@@ -552,7 +552,7 @@ - - - -- -+ - - - -@@ -561,7 +561,7 @@ - - - -- -+ - - - -@@ -570,7 +570,7 @@ - - - -- -+ - - - -@@ -579,7 +579,7 @@ - - - -- -+ - - - -@@ -588,7 +588,7 @@ - - - -- -+ - - - -@@ -597,7 +597,7 @@ - - - -- -+ - - - -@@ -606,7 +606,7 @@ - - - -- -+ - - - -@@ -615,7 +615,7 @@ - - - -- -+ - - - -@@ -624,7 +624,7 @@ - - - -- -+ - - - -@@ -633,7 +633,7 @@ - - - -- -+ - - - -@@ -642,7 +642,7 @@ - - - -- -+ - - - -@@ -651,7 +651,7 @@ - - - -- -+ - - - -@@ -660,7 +660,7 @@ - - - -- -+ - - - -@@ -669,7 +669,7 @@ - - - -- -+ - - - -@@ -678,7 +678,7 @@ - - - -- -+ - - - -@@ -687,7 +687,7 @@ - - - -- -+ - - - -@@ -696,7 +696,7 @@ - - - -- -+ - - - -@@ -705,7 +705,7 @@ - - - -- -+ - - - -@@ -714,7 +714,7 @@ - - - -- -+ - - - -@@ -723,7 +723,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/managed-1.exp b/pengine/test10/managed-1.exp -index e001978..ee9667c 100644 ---- a/pengine/test10/managed-1.exp -+++ b/pengine/test10/managed-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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -@@ -219,7 +219,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -237,7 +237,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -255,7 +255,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -273,7 +273,7 @@ - - - -- -+ - - - -@@ -282,7 +282,7 @@ - - - -- -+ - - - -@@ -291,7 +291,7 @@ - - - -- -+ - - - -@@ -300,7 +300,7 @@ - - - -- -+ - - - -@@ -309,7 +309,7 @@ - - - -- -+ - - - -@@ -318,7 +318,7 @@ - - - -- -+ - - - -@@ -327,7 +327,7 @@ - - - -- -+ - - - -@@ -336,7 +336,7 @@ - - - -- -+ - - - -@@ -345,7 +345,7 @@ - - - -- -+ - - - -@@ -354,7 +354,7 @@ - - - -- -+ - - - -@@ -363,7 +363,7 @@ - - - -- -+ - - - -@@ -372,7 +372,7 @@ - - - -- -+ - - - -@@ -381,7 +381,7 @@ - - - -- -+ - - - -@@ -390,7 +390,7 @@ - - - -- -+ - - - -@@ -399,7 +399,7 @@ - - - -- -+ - - - -@@ -408,7 +408,7 @@ - - - -- -+ - - - -@@ -417,7 +417,7 @@ - - - -- -+ - - - -@@ -426,7 +426,7 @@ - - - -- -+ - - - -@@ -435,7 +435,7 @@ - - - -- -+ - - - -@@ -444,7 +444,7 @@ - - - -- -+ - - - -@@ -453,7 +453,7 @@ - - - -- -+ - - - -@@ -462,7 +462,7 @@ - - - -- -+ - - - -@@ -471,7 +471,7 @@ - - - -- -+ - - - -@@ -480,7 +480,7 @@ - - - -- -+ - - - -@@ -489,7 +489,7 @@ - - - -- -+ - - - -@@ -498,7 +498,7 @@ - - - -- -+ - - - -@@ -507,7 +507,7 @@ - - - -- -+ - - - -@@ -516,7 +516,7 @@ - - - -- -+ - - - -@@ -525,7 +525,7 @@ - - - -- -+ - - - -@@ -534,7 +534,7 @@ - - - -- -+ - - - -@@ -543,7 +543,7 @@ - - - -- -+ - - - -@@ -552,7 +552,7 @@ - - - -- -+ - - - -@@ -561,7 +561,7 @@ - - - -- -+ - - - -@@ -570,7 +570,7 @@ - - - -- -+ - - - -@@ -579,7 +579,7 @@ - - - -- -+ - - - -@@ -588,7 +588,7 @@ - - - -- -+ - - - -@@ -597,7 +597,7 @@ - - - -- -+ - - - -@@ -606,7 +606,7 @@ - - - -- -+ - - - -@@ -615,7 +615,7 @@ - - - -- -+ - - - -@@ -624,7 +624,7 @@ - - - -- -+ - - - -@@ -633,7 +633,7 @@ - - - -- -+ - - - -@@ -642,7 +642,7 @@ - - - -- -+ - - - -@@ -651,7 +651,7 @@ - - - -- -+ - - - -@@ -660,7 +660,7 @@ - - - -- -+ - - - -@@ -669,7 +669,7 @@ - - - -- -+ - - - -@@ -678,7 +678,7 @@ - - - -- -+ - - - -@@ -687,7 +687,7 @@ - - - -- -+ - - - -@@ -696,7 +696,7 @@ - - - -- -+ - - - -@@ -705,7 +705,7 @@ - - - -- -+ - - - -@@ -714,7 +714,7 @@ - - - -- -+ - - - -@@ -723,7 +723,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/managed-2.exp b/pengine/test10/managed-2.exp -index 5b9920d..8afe373 100644 ---- a/pengine/test10/managed-2.exp -+++ b/pengine/test10/managed-2.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -@@ -219,7 +219,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -237,7 +237,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -255,7 +255,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -273,7 +273,7 @@ - - - -- -+ - - - -@@ -282,7 +282,7 @@ - - - -- -+ - - - -@@ -291,7 +291,7 @@ - - - -- -+ - - - -@@ -300,7 +300,7 @@ - - - -- -+ - - - -@@ -309,7 +309,7 @@ - - - -- -+ - - - -@@ -318,7 +318,7 @@ - - - -- -+ - - - -@@ -327,7 +327,7 @@ - - - -- -+ - - - -@@ -336,7 +336,7 @@ - - - -- -+ - - - -@@ -345,7 +345,7 @@ - - - -- -+ - - - -@@ -354,7 +354,7 @@ - - - -- -+ - - - -@@ -363,7 +363,7 @@ - - - -- -+ - - - -@@ -372,7 +372,7 @@ - - - -- -+ - - - -@@ -381,7 +381,7 @@ - - - -- -+ - - - -@@ -390,7 +390,7 @@ - - - -- -+ - - - -@@ -399,7 +399,7 @@ - - - -- -+ - - - -@@ -408,7 +408,7 @@ - - - -- -+ - - - -@@ -417,7 +417,7 @@ - - - -- -+ - - - -@@ -426,7 +426,7 @@ - - - -- -+ - - - -@@ -435,7 +435,7 @@ - - - -- -+ - - - -@@ -444,7 +444,7 @@ - - - -- -+ - - - -@@ -453,7 +453,7 @@ - - - -- -+ - - - -@@ -462,7 +462,7 @@ - - - -- -+ - - - -@@ -471,7 +471,7 @@ - - - -- -+ - - - -@@ -480,7 +480,7 @@ - - - -- -+ - - - -@@ -489,7 +489,7 @@ - - - -- -+ - - - -@@ -498,7 +498,7 @@ - - - -- -+ - - - -@@ -507,7 +507,7 @@ - - - -- -+ - - - -@@ -516,7 +516,7 @@ - - - -- -+ - - - -@@ -525,7 +525,7 @@ - - - -- -+ - - - -@@ -534,7 +534,7 @@ - - - -- -+ - - - -@@ -543,7 +543,7 @@ - - - -- -+ - - - -@@ -552,7 +552,7 @@ - - - -- -+ - - - -@@ -561,7 +561,7 @@ - - - -- -+ - - - -@@ -570,7 +570,7 @@ - - - -- -+ - - - -@@ -579,7 +579,7 @@ - - - -- -+ - - - -@@ -588,7 +588,7 @@ - - - -- -+ - - - -@@ -597,7 +597,7 @@ - - - -- -+ - - - -@@ -606,7 +606,7 @@ - - - -- -+ - - - -@@ -615,7 +615,7 @@ - - - -- -+ - - - -@@ -624,7 +624,7 @@ - - - -- -+ - - - -@@ -633,7 +633,7 @@ - - - -- -+ - - - -@@ -642,7 +642,7 @@ - - - -- -+ - - - -@@ -651,7 +651,7 @@ - - - -- -+ - - - -@@ -660,7 +660,7 @@ - - - -- -+ - - - -@@ -669,7 +669,7 @@ - - - -- -+ - - - -@@ -678,7 +678,7 @@ - - - -- -+ - - - -@@ -687,7 +687,7 @@ - - - -- -+ - - - -@@ -696,7 +696,7 @@ - - - -- -+ - - - -@@ -705,7 +705,7 @@ - - - -- -+ - - - -@@ -714,7 +714,7 @@ - - - -- -+ - - - -@@ -723,7 +723,7 @@ - - - -- -+ - - - -@@ -732,7 +732,7 @@ - - - -- -+ - - - -@@ -741,7 +741,7 @@ - - - -- -+ - - - -@@ -750,7 +750,7 @@ - - - -- -+ - - - -@@ -759,7 +759,7 @@ - - - -- -+ - - - -@@ -768,7 +768,7 @@ - - - -- -+ - - - -@@ -777,7 +777,7 @@ - - - -- -+ - - - -@@ -786,7 +786,7 @@ - - - -- -+ - - - -@@ -795,7 +795,7 @@ - - - -- -+ - - - -@@ -804,7 +804,7 @@ - - - -- -+ - - - -@@ -813,7 +813,7 @@ - - - -- -+ - - - -@@ -822,7 +822,7 @@ - - - -- -+ - - - -@@ -831,7 +831,7 @@ - - - -- -+ - - - -@@ -840,7 +840,7 @@ - - - -- -+ - - - -@@ -849,7 +849,7 @@ - - - -- -+ - - - -@@ -858,7 +858,7 @@ - - - -- -+ - - - -@@ -867,7 +867,7 @@ - - - -- -+ - - - -@@ -876,7 +876,7 @@ - - - -- -+ - - - -@@ -885,7 +885,7 @@ - - - -- -+ - - - -@@ -894,7 +894,7 @@ - - - -- -+ - - - -@@ -903,7 +903,7 @@ - - - -- -+ - - - -@@ -912,7 +912,7 @@ - - - -- -+ - - - -@@ -921,7 +921,7 @@ - - - -- -+ - - - -@@ -930,7 +930,7 @@ - - - -- -+ - - - -@@ -939,7 +939,7 @@ - - - -- -+ - - - -@@ -948,7 +948,7 @@ - - - -- -+ - - - -@@ -957,7 +957,7 @@ - - - -- -+ - - - -@@ -966,7 +966,7 @@ - - - -- -+ - - - -@@ -975,7 +975,7 @@ - - - -- -+ - - - -@@ -984,7 +984,7 @@ - - - -- -+ - - - -@@ -993,7 +993,7 @@ - - - -- -+ - - - -@@ -1002,7 +1002,7 @@ - - - -- -+ - - - -@@ -1011,7 +1011,7 @@ - - - -- -+ - - - -@@ -1020,7 +1020,7 @@ - - - -- -+ - - - -@@ -1029,7 +1029,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-0.exp b/pengine/test10/master-0.exp -index 248a841..410b0fa 100644 ---- a/pengine/test10/master-0.exp -+++ b/pengine/test10/master-0.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -136,7 +136,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-1.exp b/pengine/test10/master-1.exp -index 6d9a832..7d2f1e5 100644 ---- a/pengine/test10/master-1.exp -+++ b/pengine/test10/master-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -@@ -72,7 +72,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -103,7 +103,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -125,7 +125,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -152,7 +152,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-10.exp b/pengine/test10/master-10.exp -index baf2d5c..4027170 100644 ---- a/pengine/test10/master-10.exp -+++ b/pengine/test10/master-10.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -124,7 +124,7 @@ - - - -- -+ - - - -@@ -137,7 +137,7 @@ - - - -- -+ - - - -@@ -150,7 +150,7 @@ - - - -- -+ - - - -@@ -169,7 +169,7 @@ - - - -- -+ - - - -@@ -182,7 +182,7 @@ - - - -- -+ - - - -@@ -191,7 +191,7 @@ - - - -- -+ - - - -@@ -200,7 +200,7 @@ - - - -- -+ - - - -@@ -213,7 +213,7 @@ - - - -- -+ - - - -@@ -226,7 +226,7 @@ - - - -- -+ - - - -@@ -239,7 +239,7 @@ - - - -- -+ - - - -@@ -258,7 +258,7 @@ - - - -- -+ - - - -@@ -271,7 +271,7 @@ - - - -- -+ - - - -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -289,7 +289,7 @@ - - - -- -+ - - - -@@ -302,7 +302,7 @@ - - - -- -+ - - - -@@ -315,7 +315,7 @@ - - - -- -+ - - - -@@ -328,7 +328,7 @@ - - - -- -+ - - - -@@ -347,7 +347,7 @@ - - - -- -+ - - - -@@ -360,7 +360,7 @@ - - - -- -+ - - - -@@ -369,7 +369,7 @@ - - - -- -+ - - - -@@ -378,7 +378,7 @@ - - - -- -+ - - - -@@ -387,7 +387,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-11.exp b/pengine/test10/master-11.exp -index 0725907..02acb64 100644 ---- a/pengine/test10/master-11.exp -+++ b/pengine/test10/master-11.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-12.exp b/pengine/test10/master-12.exp -index 8a05834..571d338 100644 ---- a/pengine/test10/master-12.exp -+++ b/pengine/test10/master-12.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-13.exp b/pengine/test10/master-13.exp -index b9f48ae..1e09ee1 100644 ---- a/pengine/test10/master-13.exp -+++ b/pengine/test10/master-13.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -125,7 +125,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -151,7 +151,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -401,7 +401,7 @@ - - - -- -+ - - - -@@ -414,7 +414,7 @@ - - - -- -+ - - - -@@ -427,7 +427,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-2.exp b/pengine/test10/master-2.exp -index fb267c6..410c1e4 100644 ---- a/pengine/test10/master-2.exp -+++ b/pengine/test10/master-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -115,7 +115,7 @@ - - - -- -+ - - - -@@ -128,7 +128,7 @@ - - - -- -+ - - - -@@ -141,7 +141,7 @@ - - - -- -+ - - - -@@ -150,7 +150,7 @@ - - - -- -+ - - - -@@ -159,7 +159,7 @@ - - - -- -+ - - - -@@ -172,7 +172,7 @@ - - - -- -+ - - - -@@ -185,7 +185,7 @@ - - - -- -+ - - - -@@ -198,7 +198,7 @@ - - - -- -+ - - - -@@ -211,7 +211,7 @@ - - - -- -+ - - - -@@ -220,7 +220,7 @@ - - - -- -+ - - - -@@ -229,7 +229,7 @@ - - - -- -+ - - - -@@ -242,7 +242,7 @@ - - - -- -+ - - - -@@ -255,7 +255,7 @@ - - - -- -+ - - - -@@ -268,7 +268,7 @@ - - - -- -+ - - - -@@ -281,7 +281,7 @@ - - - -- -+ - - - -@@ -290,7 +290,7 @@ - - - -- -+ - - - -@@ -299,7 +299,7 @@ - - - -- -+ - - - -@@ -308,7 +308,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-3.exp b/pengine/test10/master-3.exp -index 6d9a832..7d2f1e5 100644 ---- a/pengine/test10/master-3.exp -+++ b/pengine/test10/master-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -@@ -72,7 +72,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -103,7 +103,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -125,7 +125,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -152,7 +152,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-4.exp b/pengine/test10/master-4.exp -index 6beb76c..ee273e6 100644 ---- a/pengine/test10/master-4.exp -+++ b/pengine/test10/master-4.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -131,7 +131,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -@@ -149,7 +149,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -@@ -176,7 +176,7 @@ - - - -- -+ - - - -@@ -185,7 +185,7 @@ - - - -- -+ - - - -@@ -194,7 +194,7 @@ - - - -- -+ - - - -@@ -203,7 +203,7 @@ - - - -- -+ - - - -@@ -212,7 +212,7 @@ - - - -- -+ - - - -@@ -221,7 +221,7 @@ - - - -- -+ - - - -@@ -230,7 +230,7 @@ - - - -- -+ - - - -@@ -239,7 +239,7 @@ - - - -- -+ - - - -@@ -248,7 +248,7 @@ - - - -- -+ - - - -@@ -257,7 +257,7 @@ - - - -- -+ - - - -@@ -266,7 +266,7 @@ - - - -- -+ - - - -@@ -275,7 +275,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-5.exp b/pengine/test10/master-5.exp -index 9091e67..9188bb5 100644 ---- a/pengine/test10/master-5.exp -+++ b/pengine/test10/master-5.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -@@ -219,7 +219,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -237,7 +237,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-6.exp b/pengine/test10/master-6.exp -index 48cc2e4..6bfa184 100644 ---- a/pengine/test10/master-6.exp -+++ b/pengine/test10/master-6.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-7.exp b/pengine/test10/master-7.exp -index 4ea225c..be05853 100644 ---- a/pengine/test10/master-7.exp -+++ b/pengine/test10/master-7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -169,7 +169,7 @@ - - - -- -+ - - - -@@ -193,7 +193,7 @@ - - - -- -+ - - - -@@ -211,7 +211,7 @@ - - - -- -+ - - - -@@ -224,7 +224,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -259,7 +259,7 @@ - - - -- -+ - - - -@@ -272,7 +272,7 @@ - - - -- -+ - - - -@@ -288,7 +288,7 @@ - - - -- -+ - - - -@@ -297,7 +297,7 @@ - - - -- -+ - - - -@@ -310,7 +310,7 @@ - - - -- -+ - - - -@@ -353,7 +353,7 @@ - - - -- -+ - - - -@@ -362,7 +362,7 @@ - - - -- -+ - - - -@@ -371,7 +371,7 @@ - - - -- -+ - - - -@@ -380,7 +380,7 @@ - - - -- -+ - - - -@@ -473,7 +473,7 @@ - - - -- -+ - - - -@@ -482,7 +482,7 @@ - - - -- -+ - - - -@@ -491,7 +491,7 @@ - - - -- -+ - - - -@@ -500,7 +500,7 @@ - - - -- -+ - - - -@@ -509,7 +509,7 @@ - - - -- -+ - - - -@@ -518,7 +518,7 @@ - - - -- -+ - - - -@@ -527,7 +527,7 @@ - - - -- -+ - - - -@@ -536,7 +536,7 @@ - - - -- -+ - - - -@@ -545,7 +545,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-8.exp b/pengine/test10/master-8.exp -index a233346..6843922 100644 ---- a/pengine/test10/master-8.exp -+++ b/pengine/test10/master-8.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -169,7 +169,7 @@ - - - -- -+ - - - -@@ -193,7 +193,7 @@ - - - -- -+ - - - -@@ -211,7 +211,7 @@ - - - -- -+ - - - -@@ -224,7 +224,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -259,7 +259,7 @@ - - - -- -+ - - - -@@ -272,7 +272,7 @@ - - - -- -+ - - - -@@ -288,7 +288,7 @@ - - - -- -+ - - - -@@ -297,7 +297,7 @@ - - - -- -+ - - - -@@ -310,7 +310,7 @@ - - - -- -+ - - - -@@ -353,7 +353,7 @@ - - - -- -+ - - - -@@ -362,7 +362,7 @@ - - - -- -+ - - - -@@ -371,7 +371,7 @@ - - - -- -+ - - - -@@ -380,7 +380,7 @@ - - - -- -+ - - - -@@ -416,7 +416,7 @@ - - - -- -+ - - - -@@ -432,7 +432,7 @@ - - - -- -+ - - - -@@ -484,7 +484,7 @@ - - - -- -+ - - - -@@ -493,7 +493,7 @@ - - - -- -+ - - - -@@ -502,7 +502,7 @@ - - - -- -+ - - - -@@ -511,7 +511,7 @@ - - - -- -+ - - - -@@ -520,7 +520,7 @@ - - - -- -+ - - - -@@ -529,7 +529,7 @@ - - - -- -+ - - - -@@ -538,7 +538,7 @@ - - - -- -+ - - - -@@ -547,7 +547,7 @@ - - - -- -+ - - - -@@ -556,7 +556,7 @@ - - - -- -+ - - - -@@ -565,7 +565,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-9.exp b/pengine/test10/master-9.exp -index d298e66..51ab23e 100644 ---- a/pengine/test10/master-9.exp -+++ b/pengine/test10/master-9.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -141,7 +141,7 @@ - - - -- -+ - - - -@@ -150,7 +150,7 @@ - - - -- -+ - - - -@@ -159,7 +159,7 @@ - - - -- -+ - - - -@@ -168,7 +168,7 @@ - - - -- -+ - - - -@@ -177,7 +177,7 @@ - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -194,7 +194,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-asymmetrical-order.exp b/pengine/test10/master-asymmetrical-order.exp -index cbfe4ad..32ae2e3 100644 ---- a/pengine/test10/master-asymmetrical-order.exp -+++ b/pengine/test10/master-asymmetrical-order.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-colocation.exp b/pengine/test10/master-colocation.exp -index de69800..fe7d857 100644 ---- a/pengine/test10/master-colocation.exp -+++ b/pengine/test10/master-colocation.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-demote-2.exp b/pengine/test10/master-demote-2.exp -index 3f5a34f..794e74c 100644 ---- a/pengine/test10/master-demote-2.exp -+++ b/pengine/test10/master-demote-2.exp -@@ -36,7 +36,7 @@ - - - -- -+ - - - -@@ -49,7 +49,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -75,7 +75,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -104,7 +104,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -133,7 +133,7 @@ - - - -- -+ - - - -@@ -146,7 +146,7 @@ - - - -- -+ - - - -@@ -159,7 +159,7 @@ - - - -- -+ - - - -@@ -175,7 +175,7 @@ - - - -- -+ - - - -@@ -188,7 +188,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -217,7 +217,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-demote-block.exp b/pengine/test10/master-demote-block.exp -index c9cf896..935837b 100644 ---- a/pengine/test10/master-demote-block.exp -+++ b/pengine/test10/master-demote-block.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-demote.exp b/pengine/test10/master-demote.exp -index 77596d1..8909056 100644 ---- a/pengine/test10/master-demote.exp -+++ b/pengine/test10/master-demote.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-depend.exp b/pengine/test10/master-depend.exp -index 09ac2eb..c50e7a5 100644 ---- a/pengine/test10/master-depend.exp -+++ b/pengine/test10/master-depend.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -@@ -219,7 +219,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-dependent-ban.exp b/pengine/test10/master-dependent-ban.exp -index 4d6c241..99a6e94 100644 ---- a/pengine/test10/master-dependent-ban.exp -+++ b/pengine/test10/master-dependent-ban.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -180,7 +180,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-failed-demote-2.exp b/pengine/test10/master-failed-demote-2.exp -index eeb0476..0602868 100644 ---- a/pengine/test10/master-failed-demote-2.exp -+++ b/pengine/test10/master-failed-demote-2.exp -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -108,7 +108,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-failed-demote.exp b/pengine/test10/master-failed-demote.exp -index b0b7438..1d27dc5 100644 ---- a/pengine/test10/master-failed-demote.exp -+++ b/pengine/test10/master-failed-demote.exp -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -@@ -179,7 +179,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -205,7 +205,7 @@ - - - -- -+ - - - -@@ -218,7 +218,7 @@ - - - -- -+ - - - -@@ -231,7 +231,7 @@ - - - -- -+ - - - -@@ -250,7 +250,7 @@ - - - -- -+ - - - -@@ -269,7 +269,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-group.exp b/pengine/test10/master-group.exp -index 96e4432..fe175c5 100644 ---- a/pengine/test10/master-group.exp -+++ b/pengine/test10/master-group.exp -@@ -27,7 +27,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-move.exp b/pengine/test10/master-move.exp -index c72cddf..e77005f 100644 ---- a/pengine/test10/master-move.exp -+++ b/pengine/test10/master-move.exp -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -142,7 +142,7 @@ - - - -- -+ - - - -@@ -155,7 +155,7 @@ - - - -- -+ - - - -@@ -168,7 +168,7 @@ - - - -- -+ - - - -@@ -184,7 +184,7 @@ - - - -- -+ - - - -@@ -197,7 +197,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -@@ -223,7 +223,7 @@ - - - -- -+ - - - -@@ -236,7 +236,7 @@ - - - -- -+ - - - -@@ -255,7 +255,7 @@ - - - -- -+ - - - -@@ -271,7 +271,7 @@ - - - -- -+ - - - -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -293,7 +293,7 @@ - - - -- -+ - - - -@@ -306,7 +306,7 @@ - - - -- -+ - - - -@@ -319,7 +319,7 @@ - - - -- -+ - - - -@@ -332,7 +332,7 @@ - - - -- -+ - - - -@@ -351,7 +351,7 @@ - - - -- -+ - - - -@@ -367,7 +367,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-notify.exp b/pengine/test10/master-notify.exp -index 8286651..0f6295c 100644 ---- a/pengine/test10/master-notify.exp -+++ b/pengine/test10/master-notify.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-ordering.exp b/pengine/test10/master-ordering.exp -index d1c56e9..6e396ac 100644 ---- a/pengine/test10/master-ordering.exp -+++ b/pengine/test10/master-ordering.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -104,7 +104,7 @@ - - - -- -+ - - - -@@ -117,7 +117,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -152,7 +152,7 @@ - - - -- -+ - - - -@@ -161,7 +161,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -187,7 +187,7 @@ - - - -- -+ - - - -@@ -282,7 +282,7 @@ - - - -- -+ - - - -@@ -291,7 +291,7 @@ - - - -- -+ - - - -@@ -300,7 +300,7 @@ - - - -- -+ - - - -@@ -309,7 +309,7 @@ - - - -- -+ - - - -@@ -318,7 +318,7 @@ - - - -- -+ - - - -@@ -331,7 +331,7 @@ - - - -- -+ - - - -@@ -344,7 +344,7 @@ - - - -- -+ - - - -@@ -439,7 +439,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-partially-demoted-group.exp b/pengine/test10/master-partially-demoted-group.exp -index 9b223a7..fecf3c5 100644 ---- a/pengine/test10/master-partially-demoted-group.exp -+++ b/pengine/test10/master-partially-demoted-group.exp -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -95,7 +95,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -124,7 +124,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -222,7 +222,7 @@ - - - -- -+ - - - -@@ -235,7 +235,7 @@ - - - -- -+ - - - -@@ -251,7 +251,7 @@ - - - -- -+ - - - -@@ -267,7 +267,7 @@ - - - -- -+ - - - -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -299,7 +299,7 @@ - - - -- -+ - - - -@@ -351,7 +351,7 @@ - - - -- -+ - - - -@@ -364,7 +364,7 @@ - - - -- -+ - - - -@@ -377,7 +377,7 @@ - - - -- -+ - - - -@@ -413,7 +413,7 @@ - - - -- -+ - - - -@@ -426,7 +426,7 @@ - - - -- -+ - - - -@@ -495,7 +495,7 @@ - - - -- -+ - - - -@@ -508,7 +508,7 @@ - - - -- -+ - - - -@@ -521,7 +521,7 @@ - - - -- -+ - - - -@@ -534,7 +534,7 @@ - - - -- -+ - - - -@@ -547,7 +547,7 @@ - - - -- -+ - - - -@@ -566,7 +566,7 @@ - - - -- -+ - - - -@@ -579,7 +579,7 @@ - - - -- -+ - - - -@@ -592,7 +592,7 @@ - - - -- -+ - - - -@@ -605,7 +605,7 @@ - - - -- -+ - - - -@@ -618,7 +618,7 @@ - - - -- -+ - - - -@@ -631,7 +631,7 @@ - - - -- -+ - - - -@@ -650,7 +650,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-probed-score.exp b/pengine/test10/master-probed-score.exp -index f1a029b..213be36 100644 ---- a/pengine/test10/master-probed-score.exp -+++ b/pengine/test10/master-probed-score.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -@@ -359,7 +359,7 @@ - - - -- -+ - - - -@@ -372,7 +372,7 @@ - - - -- -+ - - - -@@ -385,7 +385,7 @@ - - - -- -+ - - - -@@ -394,7 +394,7 @@ - - - -- -+ - - - -@@ -415,7 +415,7 @@ - - - -- -+ - - - -@@ -428,7 +428,7 @@ - - - -- -+ - - - -@@ -441,7 +441,7 @@ - - - -- -+ - - - -@@ -454,7 +454,7 @@ - - - -- -+ - - - -@@ -470,7 +470,7 @@ - - - -- -+ - - - -@@ -483,7 +483,7 @@ - - - -- -+ - - - -@@ -535,7 +535,7 @@ - - - -- -+ - - - -@@ -548,7 +548,7 @@ - - - -- -+ - - - -@@ -561,7 +561,7 @@ - - - -- -+ - - - -@@ -574,7 +574,7 @@ - - - -- -+ - - - -@@ -590,7 +590,7 @@ - - - -- -+ - - - -@@ -603,7 +603,7 @@ - - - -- -+ - - - -@@ -655,7 +655,7 @@ - - - -- -+ - - - -@@ -668,7 +668,7 @@ - - - -- -+ - - - -@@ -681,7 +681,7 @@ - - - -- -+ - - - -@@ -694,7 +694,7 @@ - - - -- -+ - - - -@@ -710,7 +710,7 @@ - - - -- -+ - - - -@@ -723,7 +723,7 @@ - - - -- -+ - - - -@@ -802,7 +802,7 @@ - - - -- -+ - - - -@@ -815,7 +815,7 @@ - - - -- -+ - - - -@@ -828,7 +828,7 @@ - - - -- -+ - - - -@@ -841,7 +841,7 @@ - - - -- -+ - - - -@@ -857,7 +857,7 @@ - - - -- -+ - - - -@@ -870,7 +870,7 @@ - - - -- -+ - - - -@@ -919,7 +919,7 @@ - - - -- -+ - - - -@@ -932,7 +932,7 @@ - - - -- -+ - - - -@@ -945,7 +945,7 @@ - - - -- -+ - - - -@@ -958,7 +958,7 @@ - - - -- -+ - - - -@@ -974,7 +974,7 @@ - - - -- -+ - - - -@@ -987,7 +987,7 @@ - - - -- -+ - - - -@@ -1066,7 +1066,7 @@ - - - -- -+ - - - -@@ -1079,7 +1079,7 @@ - - - -- -+ - - - -@@ -1092,7 +1092,7 @@ - - - -- -+ - - - -@@ -1101,7 +1101,7 @@ - - - -- -+ - - - -@@ -1114,7 +1114,7 @@ - - - -- -+ - - - -@@ -1130,7 +1130,7 @@ - - - -- -+ - - - -@@ -1139,7 +1139,7 @@ - - - -- -+ - - - -@@ -1181,7 +1181,7 @@ - - - -- -+ - - - -@@ -1194,7 +1194,7 @@ - - - -- -+ - - - -@@ -1207,7 +1207,7 @@ - - - -- -+ - - - -@@ -1220,7 +1220,7 @@ - - - -- -+ - - - -@@ -1308,7 +1308,7 @@ - - - -- -+ - - - -@@ -1321,7 +1321,7 @@ - - - -- -+ - - - -@@ -1334,7 +1334,7 @@ - - - -- -+ - - - -@@ -1343,7 +1343,7 @@ - - - -- -+ - - - -@@ -1359,7 +1359,7 @@ - - - -- -+ - - - -@@ -1401,7 +1401,7 @@ - - - -- -+ - - - -@@ -1414,7 +1414,7 @@ - - - -- -+ - - - -@@ -1427,7 +1427,7 @@ - - - -- -+ - - - -@@ -1436,7 +1436,7 @@ - - - -- -+ - - - -@@ -1452,7 +1452,7 @@ - - - -- -+ - - - -@@ -1554,7 +1554,7 @@ - - - -- -+ - - - -@@ -1567,7 +1567,7 @@ - - - -- -+ - - - -@@ -1576,7 +1576,7 @@ - - - -- -+ - - - -@@ -1592,7 +1592,7 @@ - - - -- -+ - - - -@@ -1601,7 +1601,7 @@ - - - -- -+ - - - -@@ -1617,7 +1617,7 @@ - - - -- -+ - - - -@@ -1626,7 +1626,7 @@ - - - -- -+ - - - -@@ -1642,7 +1642,7 @@ - - - -- -+ - - - -@@ -1651,7 +1651,7 @@ - - - -- -+ - - - -@@ -1667,7 +1667,7 @@ - - - -- -+ - - - -@@ -1676,7 +1676,7 @@ - - - -- -+ - - - -@@ -1692,7 +1692,7 @@ - - - -- -+ - - - -@@ -1701,7 +1701,7 @@ - - - -- -+ - - - -@@ -1717,7 +1717,7 @@ - - - -- -+ - - - -@@ -1726,7 +1726,7 @@ - - - -- -+ - - - -@@ -1742,7 +1742,7 @@ - - - -- -+ - - - -@@ -1802,7 +1802,7 @@ - - - -- -+ - - - -@@ -1815,7 +1815,7 @@ - - - -- -+ - - - -@@ -1824,7 +1824,7 @@ - - - -- -+ - - - -@@ -1840,7 +1840,7 @@ - - - -- -+ - - - -@@ -1849,7 +1849,7 @@ - - - -- -+ - - - -@@ -1865,7 +1865,7 @@ - - - -- -+ - - - -@@ -1874,7 +1874,7 @@ - - - -- -+ - - - -@@ -1890,7 +1890,7 @@ - - - -- -+ - - - -@@ -1899,7 +1899,7 @@ - - - -- -+ - - - -@@ -1915,7 +1915,7 @@ - - - -- -+ - - - -@@ -1924,7 +1924,7 @@ - - - -- -+ - - - -@@ -1940,7 +1940,7 @@ - - - -- -+ - - - -@@ -1949,7 +1949,7 @@ - - - -- -+ - - - -@@ -1965,7 +1965,7 @@ - - - -- -+ - - - -@@ -1974,7 +1974,7 @@ - - - -- -+ - - - -@@ -1990,7 +1990,7 @@ - - - -- -+ - - - -@@ -2122,7 +2122,7 @@ - - - -- -+ - - - -@@ -2135,7 +2135,7 @@ - - - -- -+ - - - -@@ -2148,7 +2148,7 @@ - - - -- -+ - - - -@@ -2157,7 +2157,7 @@ - - - -- -+ - - - -@@ -2170,7 +2170,7 @@ - - - -- -+ - - - -@@ -2186,7 +2186,7 @@ - - - -- -+ - - - -@@ -2195,7 +2195,7 @@ - - - -- -+ - - - -@@ -2208,7 +2208,7 @@ - - - -- -+ - - - -@@ -2224,7 +2224,7 @@ - - - -- -+ - - - -@@ -2233,7 +2233,7 @@ - - - -- -+ - - - -@@ -2246,7 +2246,7 @@ - - - -- -+ - - - -@@ -2262,7 +2262,7 @@ - - - -- -+ - - - -@@ -2271,7 +2271,7 @@ - - - -- -+ - - - -@@ -2284,7 +2284,7 @@ - - - -- -+ - - - -@@ -2300,7 +2300,7 @@ - - - -- -+ - - - -@@ -2309,7 +2309,7 @@ - - - -- -+ - - - -@@ -2322,7 +2322,7 @@ - - - -- -+ - - - -@@ -2338,7 +2338,7 @@ - - - -- -+ - - - -@@ -2392,7 +2392,7 @@ - - - -- -+ - - - -@@ -2405,7 +2405,7 @@ - - - -- -+ - - - -@@ -2418,7 +2418,7 @@ - - - -- -+ - - - -@@ -2427,7 +2427,7 @@ - - - -- -+ - - - -@@ -2440,7 +2440,7 @@ - - - -- -+ - - - -@@ -2456,7 +2456,7 @@ - - - -- -+ - - - -@@ -2465,7 +2465,7 @@ - - - -- -+ - - - -@@ -2478,7 +2478,7 @@ - - - -- -+ - - - -@@ -2494,7 +2494,7 @@ - - - -- -+ - - - -@@ -2503,7 +2503,7 @@ - - - -- -+ - - - -@@ -2516,7 +2516,7 @@ - - - -- -+ - - - -@@ -2532,7 +2532,7 @@ - - - -- -+ - - - -@@ -2541,7 +2541,7 @@ - - - -- -+ - - - -@@ -2554,7 +2554,7 @@ - - - -- -+ - - - -@@ -2570,7 +2570,7 @@ - - - -- -+ - - - -@@ -2579,7 +2579,7 @@ - - - -- -+ - - - -@@ -2592,7 +2592,7 @@ - - - -- -+ - - - -@@ -2608,7 +2608,7 @@ - - - -- -+ - - - -@@ -2683,7 +2683,7 @@ - - - -- -+ - - - -@@ -2702,7 +2702,7 @@ - - - -- -+ - - - -@@ -2711,7 +2711,7 @@ - - - -- -+ - - - -@@ -2720,7 +2720,7 @@ - - - -- -+ - - - -@@ -2739,7 +2739,7 @@ - - - -- -+ - - - -@@ -2748,7 +2748,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-promotion-constraint.exp b/pengine/test10/master-promotion-constraint.exp -index f4368fb..c371c52 100644 ---- a/pengine/test10/master-promotion-constraint.exp -+++ b/pengine/test10/master-promotion-constraint.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-pseudo.exp b/pengine/test10/master-pseudo.exp -index c498921..1ba87e6 100644 ---- a/pengine/test10/master-pseudo.exp -+++ b/pengine/test10/master-pseudo.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -375,7 +375,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-reattach.exp b/pengine/test10/master-reattach.exp -index d47fc88..c4d5272 100644 ---- a/pengine/test10/master-reattach.exp -+++ b/pengine/test10/master-reattach.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-role.exp b/pengine/test10/master-role.exp -index 0ebac5b..fc925cb 100644 ---- a/pengine/test10/master-role.exp -+++ b/pengine/test10/master-role.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-stop.exp b/pengine/test10/master-stop.exp -index 4ab7d0d..6de4959 100644 ---- a/pengine/test10/master-stop.exp -+++ b/pengine/test10/master-stop.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master-unmanaged-monitor.exp b/pengine/test10/master-unmanaged-monitor.exp -index f42e9f3..acf00eb 100644 ---- a/pengine/test10/master-unmanaged-monitor.exp -+++ b/pengine/test10/master-unmanaged-monitor.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/master_monitor_restart.exp b/pengine/test10/master_monitor_restart.exp -index 487969e..cbb549a 100644 ---- a/pengine/test10/master_monitor_restart.exp -+++ b/pengine/test10/master_monitor_restart.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-1.exp b/pengine/test10/migrate-1.exp -index 7af71db..399cc8c 100644 ---- a/pengine/test10/migrate-1.exp -+++ b/pengine/test10/migrate-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-3.exp b/pengine/test10/migrate-3.exp -index d4a062d..1aeb422 100644 ---- a/pengine/test10/migrate-3.exp -+++ b/pengine/test10/migrate-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-4.exp b/pengine/test10/migrate-4.exp -index ed17bc7..b4dfe24 100644 ---- a/pengine/test10/migrate-4.exp -+++ b/pengine/test10/migrate-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-5.exp b/pengine/test10/migrate-5.exp -index c76b7bc..4840658 100644 ---- a/pengine/test10/migrate-5.exp -+++ b/pengine/test10/migrate-5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-begin.exp b/pengine/test10/migrate-begin.exp -index f53f196..c4f6c0a 100644 ---- a/pengine/test10/migrate-begin.exp -+++ b/pengine/test10/migrate-begin.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-both-vms.exp b/pengine/test10/migrate-both-vms.exp -index fb93984..a8c5c63 100644 ---- a/pengine/test10/migrate-both-vms.exp -+++ b/pengine/test10/migrate-both-vms.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -142,7 +142,7 @@ - - - -- -+ - - - -@@ -188,7 +188,7 @@ - - - -- -+ - - - -@@ -204,7 +204,7 @@ - - - -- -+ - - - -@@ -250,7 +250,7 @@ - - - -- -+ - - - -@@ -269,7 +269,7 @@ - - - -- -+ - - - -@@ -315,7 +315,7 @@ - - - -- -+ - - - -@@ -328,7 +328,7 @@ - - - -- -+ - - - -@@ -341,7 +341,7 @@ - - - -- -+ - - - -@@ -372,7 +372,7 @@ - - - -- -+ - - - -@@ -388,7 +388,7 @@ - - - -- -+ - - - -@@ -401,7 +401,7 @@ - - - -- -+ - - - -@@ -417,7 +417,7 @@ - - - -- -+ - - - -@@ -451,7 +451,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-fail-2.exp b/pengine/test10/migrate-fail-2.exp -index 89226e3..3f3e679 100644 ---- a/pengine/test10/migrate-fail-2.exp -+++ b/pengine/test10/migrate-fail-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-fail-3.exp b/pengine/test10/migrate-fail-3.exp -index 3bb142e..1681a38 100644 ---- a/pengine/test10/migrate-fail-3.exp -+++ b/pengine/test10/migrate-fail-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-fail-4.exp b/pengine/test10/migrate-fail-4.exp -index 904a68b..0cc2864 100644 ---- a/pengine/test10/migrate-fail-4.exp -+++ b/pengine/test10/migrate-fail-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-fail-5.exp b/pengine/test10/migrate-fail-5.exp -index a74411d..3b167b3 100644 ---- a/pengine/test10/migrate-fail-5.exp -+++ b/pengine/test10/migrate-fail-5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-fail-6.exp b/pengine/test10/migrate-fail-6.exp -index cfcd086..ca1aead 100644 ---- a/pengine/test10/migrate-fail-6.exp -+++ b/pengine/test10/migrate-fail-6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-fail-7.exp b/pengine/test10/migrate-fail-7.exp -index 669afaa..8b49be1 100644 ---- a/pengine/test10/migrate-fail-7.exp -+++ b/pengine/test10/migrate-fail-7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-fail-8.exp b/pengine/test10/migrate-fail-8.exp -index fbb1f4b..2e01397 100644 ---- a/pengine/test10/migrate-fail-8.exp -+++ b/pengine/test10/migrate-fail-8.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-fail-9.exp b/pengine/test10/migrate-fail-9.exp -index 02d8d23..d3ef2e9 100644 ---- a/pengine/test10/migrate-fail-9.exp -+++ b/pengine/test10/migrate-fail-9.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-fencing.exp b/pengine/test10/migrate-fencing.exp -index 9c82f6b..a670395 100644 ---- a/pengine/test10/migrate-fencing.exp -+++ b/pengine/test10/migrate-fencing.exp -@@ -117,7 +117,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -@@ -180,7 +180,7 @@ - - - -- -+ - - - -@@ -220,7 +220,7 @@ - - - -- -+ - - - -@@ -233,7 +233,7 @@ - - - -- -+ - - - -@@ -270,7 +270,7 @@ - - - -- -+ - - - -@@ -283,7 +283,7 @@ - - - -- -+ - - - -@@ -311,7 +311,7 @@ - - - -- -+ - - - -@@ -324,7 +324,7 @@ - - - -- -+ - - - -@@ -355,7 +355,7 @@ - - - -- -+ - - - -@@ -368,7 +368,7 @@ - - - -- -+ - - - -@@ -381,7 +381,7 @@ - - - -- -+ - - - -@@ -412,7 +412,7 @@ - - - -- -+ - - - -@@ -500,7 +500,7 @@ - - - -- -+ - - - -@@ -513,7 +513,7 @@ - - - -- -+ - - - -@@ -529,7 +529,7 @@ - - - -- -+ - - - -@@ -538,7 +538,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-partial-1.exp b/pengine/test10/migrate-partial-1.exp -index daaf791..781226c 100644 ---- a/pengine/test10/migrate-partial-1.exp -+++ b/pengine/test10/migrate-partial-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-partial-2.exp b/pengine/test10/migrate-partial-2.exp -index 8ffbe6e..59dd5f8 100644 ---- a/pengine/test10/migrate-partial-2.exp -+++ b/pengine/test10/migrate-partial-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-partial-3.exp b/pengine/test10/migrate-partial-3.exp -index 49565d8..34cda86 100644 ---- a/pengine/test10/migrate-partial-3.exp -+++ b/pengine/test10/migrate-partial-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-partial-4.exp b/pengine/test10/migrate-partial-4.exp -index 390d7ef..edddc37 100644 ---- a/pengine/test10/migrate-partial-4.exp -+++ b/pengine/test10/migrate-partial-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -160,7 +160,7 @@ - - - -- -+ - - - -@@ -176,7 +176,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-shutdown.exp b/pengine/test10/migrate-shutdown.exp -index a3578ef..3b91933 100644 ---- a/pengine/test10/migrate-shutdown.exp -+++ b/pengine/test10/migrate-shutdown.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -61,7 +61,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -108,7 +108,7 @@ - - - -- -+ - - - -@@ -117,7 +117,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -157,7 +157,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -@@ -212,7 +212,7 @@ - - - -- -+ - - - -@@ -225,7 +225,7 @@ - - - -- -+ - - - -@@ -241,7 +241,7 @@ - - - -- -+ - - - -@@ -254,7 +254,7 @@ - - - -- -+ - - - -@@ -326,7 +326,7 @@ - - - -- -+ - - - -@@ -347,7 +347,7 @@ - - - -- -+ - - - -@@ -362,7 +362,7 @@ - - - -- -+ - - - -@@ -395,7 +395,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-start-complex.exp b/pengine/test10/migrate-start-complex.exp -index 8e1652e..786d4da 100644 ---- a/pengine/test10/migrate-start-complex.exp -+++ b/pengine/test10/migrate-start-complex.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -124,7 +124,7 @@ - - - -- -+ - - - -@@ -160,7 +160,7 @@ - - - -- -+ - - - -@@ -173,7 +173,7 @@ - - - -- -+ - - - -@@ -182,7 +182,7 @@ - - - -- -+ - - - -@@ -195,7 +195,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-start.exp b/pengine/test10/migrate-start.exp -index de12b2d..fcb8511 100644 ---- a/pengine/test10/migrate-start.exp -+++ b/pengine/test10/migrate-start.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-stop-complex.exp b/pengine/test10/migrate-stop-complex.exp -index 20e77fa..0f57988 100644 ---- a/pengine/test10/migrate-stop-complex.exp -+++ b/pengine/test10/migrate-stop-complex.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-stop-start-complex.exp b/pengine/test10/migrate-stop-start-complex.exp -index 55ed6bc..335c3dd 100644 ---- a/pengine/test10/migrate-stop-start-complex.exp -+++ b/pengine/test10/migrate-stop-start-complex.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -116,7 +116,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-stop.exp b/pengine/test10/migrate-stop.exp -index c76b7bc..4840658 100644 ---- a/pengine/test10/migrate-stop.exp -+++ b/pengine/test10/migrate-stop.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/migrate-stop_start.exp b/pengine/test10/migrate-stop_start.exp -index 353302b..e57cab2 100644 ---- a/pengine/test10/migrate-stop_start.exp -+++ b/pengine/test10/migrate-stop_start.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -117,7 +117,7 @@ - - - -- -+ - - - -@@ -133,7 +133,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/minimal.exp b/pengine/test10/minimal.exp -index b426b94..f6c58fa 100644 ---- a/pengine/test10/minimal.exp -+++ b/pengine/test10/minimal.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/mon-rsc-1.exp b/pengine/test10/mon-rsc-1.exp -index b141888..519bea6 100644 ---- a/pengine/test10/mon-rsc-1.exp -+++ b/pengine/test10/mon-rsc-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/mon-rsc-2.exp b/pengine/test10/mon-rsc-2.exp -index 146eaf1..5afe53f 100644 ---- a/pengine/test10/mon-rsc-2.exp -+++ b/pengine/test10/mon-rsc-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/mon-rsc-3.exp b/pengine/test10/mon-rsc-3.exp -index 573a4ae..2e2427f 100644 ---- a/pengine/test10/mon-rsc-3.exp -+++ b/pengine/test10/mon-rsc-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/mon-rsc-4.exp b/pengine/test10/mon-rsc-4.exp -index 180746c..914535b 100644 ---- a/pengine/test10/mon-rsc-4.exp -+++ b/pengine/test10/mon-rsc-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/monitor-onfail-restart.exp b/pengine/test10/monitor-onfail-restart.exp -index d651bed..e9d50f1 100644 ---- a/pengine/test10/monitor-onfail-restart.exp -+++ b/pengine/test10/monitor-onfail-restart.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/monitor-onfail-stop.exp b/pengine/test10/monitor-onfail-stop.exp -index 6139c0e..c93a84c 100644 ---- a/pengine/test10/monitor-onfail-stop.exp -+++ b/pengine/test10/monitor-onfail-stop.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/monitor-recovery.exp b/pengine/test10/monitor-recovery.exp -index 600d977..2d6716a 100644 ---- a/pengine/test10/monitor-recovery.exp -+++ b/pengine/test10/monitor-recovery.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/multi1.exp b/pengine/test10/multi1.exp -index a359f1b..6648e00 100644 ---- a/pengine/test10/multi1.exp -+++ b/pengine/test10/multi1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/multiple-monitor-one-failed.exp b/pengine/test10/multiple-monitor-one-failed.exp -index 2f0ff23..3c2eb06 100644 ---- a/pengine/test10/multiple-monitor-one-failed.exp -+++ b/pengine/test10/multiple-monitor-one-failed.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/node-maintenance-1.exp b/pengine/test10/node-maintenance-1.exp -index c2fe0b5..6804721 100644 ---- a/pengine/test10/node-maintenance-1.exp -+++ b/pengine/test10/node-maintenance-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/node-maintenance-2.exp b/pengine/test10/node-maintenance-2.exp -index 9da705c..35b569a 100644 ---- a/pengine/test10/node-maintenance-2.exp -+++ b/pengine/test10/node-maintenance-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/not-installed-agent.exp b/pengine/test10/not-installed-agent.exp -index be6f456..722272d 100644 ---- a/pengine/test10/not-installed-agent.exp -+++ b/pengine/test10/not-installed-agent.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/not-installed-tools.exp b/pengine/test10/not-installed-tools.exp -index 70d46d4..f10504f 100644 ---- a/pengine/test10/not-installed-tools.exp -+++ b/pengine/test10/not-installed-tools.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/not-reschedule-unneeded-monitor.exp b/pengine/test10/not-reschedule-unneeded-monitor.exp -index 196ce47..76d4034 100644 ---- a/pengine/test10/not-reschedule-unneeded-monitor.exp -+++ b/pengine/test10/not-reschedule-unneeded-monitor.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/notify-0.exp b/pengine/test10/notify-0.exp -index 50266d3..34f6dab 100644 ---- a/pengine/test10/notify-0.exp -+++ b/pengine/test10/notify-0.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/notify-1.exp b/pengine/test10/notify-1.exp -index d7759f3..d6bce21 100644 ---- a/pengine/test10/notify-1.exp -+++ b/pengine/test10/notify-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -150,7 +150,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -176,7 +176,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/notify-2.exp b/pengine/test10/notify-2.exp -index d7759f3..d6bce21 100644 ---- a/pengine/test10/notify-2.exp -+++ b/pengine/test10/notify-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -150,7 +150,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -176,7 +176,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/notify-3.exp b/pengine/test10/notify-3.exp -index 07d833f..20028dd 100644 ---- a/pengine/test10/notify-3.exp -+++ b/pengine/test10/notify-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -310,7 +310,7 @@ - - - -- -+ - - - -@@ -323,7 +323,7 @@ - - - -- -+ - - - -@@ -339,7 +339,7 @@ - - - -- -+ - - - -@@ -348,7 +348,7 @@ - - - -- -+ - - - -@@ -357,7 +357,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/novell-239079.exp b/pengine/test10/novell-239079.exp -index bce5eec..16fac82 100644 ---- a/pengine/test10/novell-239079.exp -+++ b/pengine/test10/novell-239079.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/novell-239082.exp b/pengine/test10/novell-239082.exp -index c3b9e99..9453656 100644 ---- a/pengine/test10/novell-239082.exp -+++ b/pengine/test10/novell-239082.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -455,7 +455,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/novell-251689.exp b/pengine/test10/novell-251689.exp -index 520d114..ff12e41 100644 ---- a/pengine/test10/novell-251689.exp -+++ b/pengine/test10/novell-251689.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/novell-252693-2.exp b/pengine/test10/novell-252693-2.exp -index ddd9f28..364692c 100644 ---- a/pengine/test10/novell-252693-2.exp -+++ b/pengine/test10/novell-252693-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -@@ -153,7 +153,7 @@ - - - -- -+ - - - -@@ -166,7 +166,7 @@ - - - -- -+ - - - -@@ -179,7 +179,7 @@ - - - -- -+ - - - -@@ -277,7 +277,7 @@ - - - -- -+ - - - -@@ -290,7 +290,7 @@ - - - -- -+ - - - -@@ -303,7 +303,7 @@ - - - -- -+ - - - -@@ -316,7 +316,7 @@ - - - -- -+ - - - -@@ -332,7 +332,7 @@ - - - -- -+ - - - -@@ -345,7 +345,7 @@ - - - -- -+ - - - -@@ -443,7 +443,7 @@ - - - -- -+ - - - -@@ -456,7 +456,7 @@ - - - -- -+ - - - -@@ -469,7 +469,7 @@ - - - -- -+ - - - -@@ -482,7 +482,7 @@ - - - -- -+ - - - -@@ -498,7 +498,7 @@ - - - -- -+ - - - -@@ -511,7 +511,7 @@ - - - -- -+ - - - -@@ -609,7 +609,7 @@ - - - -- -+ - - - -@@ -622,7 +622,7 @@ - - - -- -+ - - - -@@ -641,7 +641,7 @@ - - - -- -+ - - - -@@ -678,7 +678,7 @@ - - - -- -+ - - - -@@ -694,7 +694,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/novell-252693-3.exp b/pengine/test10/novell-252693-3.exp -index 0abef4d..be4df36 100644 ---- a/pengine/test10/novell-252693-3.exp -+++ b/pengine/test10/novell-252693-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -@@ -153,7 +153,7 @@ - - - -- -+ - - - -@@ -166,7 +166,7 @@ - - - -- -+ - - - -@@ -179,7 +179,7 @@ - - - -- -+ - - - -@@ -277,7 +277,7 @@ - - - -- -+ - - - -@@ -290,7 +290,7 @@ - - - -- -+ - - - -@@ -303,7 +303,7 @@ - - - -- -+ - - - -@@ -319,7 +319,7 @@ - - - -- -+ - - - -@@ -335,7 +335,7 @@ - - - -- -+ - - - -@@ -344,7 +344,7 @@ - - - -- -+ - - - -@@ -360,7 +360,7 @@ - - - -- -+ - - - -@@ -373,7 +373,7 @@ - - - -- -+ - - - -@@ -389,7 +389,7 @@ - - - -- -+ - - - -@@ -575,7 +575,7 @@ - - - -- -+ - - - -@@ -588,7 +588,7 @@ - - - -- -+ - - - -@@ -601,7 +601,7 @@ - - - -- -+ - - - -@@ -614,7 +614,7 @@ - - - -- -+ - - - -@@ -630,7 +630,7 @@ - - - -- -+ - - - -@@ -643,7 +643,7 @@ - - - -- -+ - - - -@@ -741,7 +741,7 @@ - - - -- -+ - - - -@@ -754,7 +754,7 @@ - - - -- -+ - - - -@@ -773,7 +773,7 @@ - - - -- -+ - - - -@@ -810,7 +810,7 @@ - - - -- -+ - - - -@@ -826,7 +826,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/novell-252693.exp b/pengine/test10/novell-252693.exp -index d9af5c0..43da979 100644 ---- a/pengine/test10/novell-252693.exp -+++ b/pengine/test10/novell-252693.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -92,7 +92,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -220,7 +220,7 @@ - - - -- -+ - - - -@@ -233,7 +233,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -259,7 +259,7 @@ - - - -- -+ - - - -@@ -355,7 +355,7 @@ - - - -- -+ - - - -@@ -368,7 +368,7 @@ - - - -- -+ - - - -@@ -381,7 +381,7 @@ - - - -- -+ - - - -@@ -394,7 +394,7 @@ - - - -- -+ - - - -@@ -490,7 +490,7 @@ - - - -- -+ - - - -@@ -503,7 +503,7 @@ - - - -- -+ - - - -@@ -512,7 +512,7 @@ - - - -- -+ - - - -@@ -540,7 +540,7 @@ - - - -- -+ - - - -@@ -552,7 +552,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/nvpair-id-ref.exp b/pengine/test10/nvpair-id-ref.exp -index 325e1a1..fa46779 100644 ---- a/pengine/test10/nvpair-id-ref.exp -+++ b/pengine/test10/nvpair-id-ref.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/obsolete-lrm-resource.exp b/pengine/test10/obsolete-lrm-resource.exp -index ad4a086..e37262b 100644 ---- a/pengine/test10/obsolete-lrm-resource.exp -+++ b/pengine/test10/obsolete-lrm-resource.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/one-or-more-0.exp b/pengine/test10/one-or-more-0.exp -index 2b9cb7c..36283a8 100644 ---- a/pengine/test10/one-or-more-0.exp -+++ b/pengine/test10/one-or-more-0.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -75,7 +75,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/one-or-more-1.exp b/pengine/test10/one-or-more-1.exp -index ef014a7..e3a9512 100644 ---- a/pengine/test10/one-or-more-1.exp -+++ b/pengine/test10/one-or-more-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/one-or-more-2.exp b/pengine/test10/one-or-more-2.exp -index 6ada456..0670cdb 100644 ---- a/pengine/test10/one-or-more-2.exp -+++ b/pengine/test10/one-or-more-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -75,7 +75,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/one-or-more-3.exp b/pengine/test10/one-or-more-3.exp -index 4621691..ad8db73 100644 ---- a/pengine/test10/one-or-more-3.exp -+++ b/pengine/test10/one-or-more-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -43,7 +43,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/one-or-more-4.exp b/pengine/test10/one-or-more-4.exp -index 4fd271d..c301230 100644 ---- a/pengine/test10/one-or-more-4.exp -+++ b/pengine/test10/one-or-more-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -75,7 +75,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/one-or-more-5.exp b/pengine/test10/one-or-more-5.exp -index d355258..fec2127 100644 ---- a/pengine/test10/one-or-more-5.exp -+++ b/pengine/test10/one-or-more-5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/one-or-more-6.exp b/pengine/test10/one-or-more-6.exp -index 75a22f8..732da9b 100644 ---- a/pengine/test10/one-or-more-6.exp -+++ b/pengine/test10/one-or-more-6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/one-or-more-7.exp b/pengine/test10/one-or-more-7.exp -index bd0ba22..7aeab78 100644 ---- a/pengine/test10/one-or-more-7.exp -+++ b/pengine/test10/one-or-more-7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/one-or-more-unrunnnable-instances.exp b/pengine/test10/one-or-more-unrunnnable-instances.exp -index 7abcf3f..45ae3b6 100644 ---- a/pengine/test10/one-or-more-unrunnnable-instances.exp -+++ b/pengine/test10/one-or-more-unrunnnable-instances.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -171,7 +171,7 @@ - - - -- -+ - - - -@@ -184,7 +184,7 @@ - - - -- -+ - - - -@@ -230,7 +230,7 @@ - - - -- -+ - - - -@@ -243,7 +243,7 @@ - - - -- -+ - - - -@@ -256,7 +256,7 @@ - - - -- -+ - - - -@@ -269,7 +269,7 @@ - - - -- -+ - - - -@@ -282,7 +282,7 @@ - - - -- -+ - - - -@@ -295,7 +295,7 @@ - - - -- -+ - - - -@@ -341,7 +341,7 @@ - - - -- -+ - - - -@@ -354,7 +354,7 @@ - - - -- -+ - - - -@@ -370,7 +370,7 @@ - - - -- -+ - - - -@@ -383,7 +383,7 @@ - - - -- -+ - - - -@@ -399,7 +399,7 @@ - - - -- -+ - - - -@@ -412,7 +412,7 @@ - - - -- -+ - - - -@@ -461,7 +461,7 @@ - - - -- -+ - - - -@@ -474,7 +474,7 @@ - - - -- -+ - - - -@@ -490,7 +490,7 @@ - - - -- -+ - - - -@@ -503,7 +503,7 @@ - - - -- -+ - - - -@@ -519,7 +519,7 @@ - - - -- -+ - - - -@@ -532,7 +532,7 @@ - - - -- -+ - - - -@@ -581,7 +581,7 @@ - - - -- -+ - - - -@@ -594,7 +594,7 @@ - - - -- -+ - - - -@@ -607,7 +607,7 @@ - - - -- -+ - - - -@@ -620,7 +620,7 @@ - - - -- -+ - - - -@@ -636,7 +636,7 @@ - - - -- -+ - - - -@@ -649,7 +649,7 @@ - - - -- -+ - - - -@@ -665,7 +665,7 @@ - - - -- -+ - - - -@@ -678,7 +678,7 @@ - - - -- -+ - - - -@@ -727,7 +727,7 @@ - - - -- -+ - - - -@@ -740,7 +740,7 @@ - - - -- -+ - - - -@@ -756,7 +756,7 @@ - - - -- -+ - - - -@@ -769,7 +769,7 @@ - - - -- -+ - - - -@@ -785,7 +785,7 @@ - - - -- -+ - - - -@@ -798,7 +798,7 @@ - - - -- -+ - - - -@@ -847,7 +847,7 @@ - - - -- -+ - - - -@@ -860,7 +860,7 @@ - - - -- -+ - - - -@@ -876,7 +876,7 @@ - - - -- -+ - - - -@@ -889,7 +889,7 @@ - - - -- -+ - - - -@@ -905,7 +905,7 @@ - - - -- -+ - - - -@@ -918,7 +918,7 @@ - - - -- -+ - - - -@@ -967,7 +967,7 @@ - - - -- -+ - - - -@@ -980,7 +980,7 @@ - - - -- -+ - - - -@@ -996,7 +996,7 @@ - - - -- -+ - - - -@@ -1009,7 +1009,7 @@ - - - -- -+ - - - -@@ -1025,7 +1025,7 @@ - - - -- -+ - - - -@@ -1038,7 +1038,7 @@ - - - -- -+ - - - -@@ -1087,7 +1087,7 @@ - - - -- -+ - - - -@@ -1100,7 +1100,7 @@ - - - -- -+ - - - -@@ -1113,7 +1113,7 @@ - - - -- -+ - - - -@@ -1126,7 +1126,7 @@ - - - -- -+ - - - -@@ -1142,7 +1142,7 @@ - - - -- -+ - - - -@@ -1155,7 +1155,7 @@ - - - -- -+ - - - -@@ -1171,7 +1171,7 @@ - - - -- -+ - - - -@@ -1184,7 +1184,7 @@ - - - -- -+ - - - -@@ -1233,7 +1233,7 @@ - - - -- -+ - - - -@@ -1246,7 +1246,7 @@ - - - -- -+ - - - -@@ -1262,7 +1262,7 @@ - - - -- -+ - - - -@@ -1275,7 +1275,7 @@ - - - -- -+ - - - -@@ -1291,7 +1291,7 @@ - - - -- -+ - - - -@@ -1304,7 +1304,7 @@ - - - -- -+ - - - -@@ -1353,7 +1353,7 @@ - - - -- -+ - - - -@@ -1366,7 +1366,7 @@ - - - -- -+ - - - -@@ -1382,7 +1382,7 @@ - - - -- -+ - - - -@@ -1395,7 +1395,7 @@ - - - -- -+ - - - -@@ -1411,7 +1411,7 @@ - - - -- -+ - - - -@@ -1424,7 +1424,7 @@ - - - -- -+ - - - -@@ -1473,7 +1473,7 @@ - - - -- -+ - - - -@@ -1486,7 +1486,7 @@ - - - -- -+ - - - -@@ -1502,7 +1502,7 @@ - - - -- -+ - - - -@@ -1515,7 +1515,7 @@ - - - -- -+ - - - -@@ -1531,7 +1531,7 @@ - - - -- -+ - - - -@@ -1544,7 +1544,7 @@ - - - -- -+ - - - -@@ -1593,7 +1593,7 @@ - - - -- -+ - - - -@@ -1606,7 +1606,7 @@ - - - -- -+ - - - -@@ -1622,7 +1622,7 @@ - - - -- -+ - - - -@@ -1635,7 +1635,7 @@ - - - -- -+ - - - -@@ -1651,7 +1651,7 @@ - - - -- -+ - - - -@@ -1664,7 +1664,7 @@ - - - -- -+ - - - -@@ -1713,7 +1713,7 @@ - - - -- -+ - - - -@@ -1726,7 +1726,7 @@ - - - -- -+ - - - -@@ -1742,7 +1742,7 @@ - - - -- -+ - - - -@@ -1755,7 +1755,7 @@ - - - -- -+ - - - -@@ -1771,7 +1771,7 @@ - - - -- -+ - - - -@@ -1784,7 +1784,7 @@ - - - -- -+ - - - -@@ -1833,7 +1833,7 @@ - - - -- -+ - - - -@@ -1846,7 +1846,7 @@ - - - -- -+ - - - -@@ -1862,7 +1862,7 @@ - - - -- -+ - - - -@@ -1875,7 +1875,7 @@ - - - -- -+ - - - -@@ -1891,7 +1891,7 @@ - - - -- -+ - - - -@@ -1904,7 +1904,7 @@ - - - -- -+ - - - -@@ -1953,7 +1953,7 @@ - - - -- -+ - - - -@@ -1966,7 +1966,7 @@ - - - -- -+ - - - -@@ -1982,7 +1982,7 @@ - - - -- -+ - - - -@@ -1995,7 +1995,7 @@ - - - -- -+ - - - -@@ -2011,7 +2011,7 @@ - - - -- -+ - - - -@@ -2024,7 +2024,7 @@ - - - -- -+ - - - -@@ -2073,7 +2073,7 @@ - - - -- -+ - - - -@@ -2086,7 +2086,7 @@ - - - -- -+ - - - -@@ -2099,7 +2099,7 @@ - - - -- -+ - - - -@@ -2112,7 +2112,7 @@ - - - -- -+ - - - -@@ -2125,7 +2125,7 @@ - - - -- -+ - - - -@@ -2138,7 +2138,7 @@ - - - -- -+ - - - -@@ -2184,7 +2184,7 @@ - - - -- -+ - - - -@@ -2197,7 +2197,7 @@ - - - -- -+ - - - -@@ -2210,7 +2210,7 @@ - - - -- -+ - - - -@@ -2223,7 +2223,7 @@ - - - -- -+ - - - -@@ -2236,7 +2236,7 @@ - - - -- -+ - - - -@@ -2249,7 +2249,7 @@ - - - -- -+ - - - -@@ -2295,7 +2295,7 @@ - - - -- -+ - - - -@@ -2308,7 +2308,7 @@ - - - -- -+ - - - -@@ -2321,7 +2321,7 @@ - - - -- -+ - - - -@@ -2334,7 +2334,7 @@ - - - -- -+ - - - -@@ -2347,7 +2347,7 @@ - - - -- -+ - - - -@@ -2360,7 +2360,7 @@ - - - -- -+ - - - -@@ -2406,7 +2406,7 @@ - - - -- -+ - - - -@@ -2419,7 +2419,7 @@ - - - -- -+ - - - -@@ -2432,7 +2432,7 @@ - - - -- -+ - - - -@@ -2445,7 +2445,7 @@ - - - -- -+ - - - -@@ -2458,7 +2458,7 @@ - - - -- -+ - - - -@@ -2471,7 +2471,7 @@ - - - -- -+ - - - -@@ -2517,7 +2517,7 @@ - - - -- -+ - - - -@@ -2530,7 +2530,7 @@ - - - -- -+ - - - -@@ -2543,7 +2543,7 @@ - - - -- -+ - - - -@@ -2556,7 +2556,7 @@ - - - -- -+ - - - -@@ -2569,7 +2569,7 @@ - - - -- -+ - - - -@@ -2582,7 +2582,7 @@ - - - -- -+ - - - -@@ -2628,7 +2628,7 @@ - - - -- -+ - - - -@@ -2641,7 +2641,7 @@ - - - -- -+ - - - -@@ -2657,7 +2657,7 @@ - - - -- -+ - - - -@@ -2670,7 +2670,7 @@ - - - -- -+ - - - -@@ -2686,7 +2686,7 @@ - - - -- -+ - - - -@@ -2699,7 +2699,7 @@ - - - -- -+ - - - -@@ -2748,7 +2748,7 @@ - - - -- -+ - - - -@@ -2761,7 +2761,7 @@ - - - -- -+ - - - -@@ -2777,7 +2777,7 @@ - - - -- -+ - - - -@@ -2790,7 +2790,7 @@ - - - -- -+ - - - -@@ -2806,7 +2806,7 @@ - - - -- -+ - - - -@@ -2819,7 +2819,7 @@ - - - -- -+ - - - -@@ -2868,7 +2868,7 @@ - - - -- -+ - - - -@@ -2881,7 +2881,7 @@ - - - -- -+ - - - -@@ -2897,7 +2897,7 @@ - - - -- -+ - - - -@@ -2910,7 +2910,7 @@ - - - -- -+ - - - -@@ -2926,7 +2926,7 @@ - - - -- -+ - - - -@@ -2939,7 +2939,7 @@ - - - -- -+ - - - -@@ -2988,7 +2988,7 @@ - - - -- -+ - - - -@@ -3001,7 +3001,7 @@ - - - -- -+ - - - -@@ -3017,7 +3017,7 @@ - - - -- -+ - - - -@@ -3030,7 +3030,7 @@ - - - -- -+ - - - -@@ -3046,7 +3046,7 @@ - - - -- -+ - - - -@@ -3059,7 +3059,7 @@ - - - -- -+ - - - -@@ -3108,7 +3108,7 @@ - - - -- -+ - - - -@@ -3121,7 +3121,7 @@ - - - -- -+ - - - -@@ -3137,7 +3137,7 @@ - - - -- -+ - - - -@@ -3150,7 +3150,7 @@ - - - -- -+ - - - -@@ -3166,7 +3166,7 @@ - - - -- -+ - - - -@@ -3179,7 +3179,7 @@ - - - -- -+ - - - -@@ -3228,7 +3228,7 @@ - - - -- -+ - - - -@@ -3241,7 +3241,7 @@ - - - -- -+ - - - -@@ -3257,7 +3257,7 @@ - - - -- -+ - - - -@@ -3270,7 +3270,7 @@ - - - -- -+ - - - -@@ -3286,7 +3286,7 @@ - - - -- -+ - - - -@@ -3299,7 +3299,7 @@ - - - -- -+ - - - -@@ -3348,7 +3348,7 @@ - - - -- -+ - - - -@@ -3361,7 +3361,7 @@ - - - -- -+ - - - -@@ -3377,7 +3377,7 @@ - - - -- -+ - - - -@@ -3390,7 +3390,7 @@ - - - -- -+ - - - -@@ -3406,7 +3406,7 @@ - - - -- -+ - - - -@@ -3419,7 +3419,7 @@ - - - -- -+ - - - -@@ -3468,7 +3468,7 @@ - - - -- -+ - - - -@@ -3481,7 +3481,7 @@ - - - -- -+ - - - -@@ -3497,7 +3497,7 @@ - - - -- -+ - - - -@@ -3510,7 +3510,7 @@ - - - -- -+ - - - -@@ -3526,7 +3526,7 @@ - - - -- -+ - - - -@@ -3539,7 +3539,7 @@ - - - -- -+ - - - -@@ -3588,7 +3588,7 @@ - - - -- -+ - - - -@@ -3601,7 +3601,7 @@ - - - -- -+ - - - -@@ -3617,7 +3617,7 @@ - - - -- -+ - - - -@@ -3630,7 +3630,7 @@ - - - -- -+ - - - -@@ -3646,7 +3646,7 @@ - - - -- -+ - - - -@@ -3659,7 +3659,7 @@ - - - -- -+ - - - -@@ -3708,7 +3708,7 @@ - - - -- -+ - - - -@@ -3721,7 +3721,7 @@ - - - -- -+ - - - -@@ -3737,7 +3737,7 @@ - - - -- -+ - - - -@@ -3750,7 +3750,7 @@ - - - -- -+ - - - -@@ -3766,7 +3766,7 @@ - - - -- -+ - - - -@@ -3779,7 +3779,7 @@ - - - -- -+ - - - -@@ -3828,7 +3828,7 @@ - - - -- -+ - - - -@@ -3841,7 +3841,7 @@ - - - -- -+ - - - -@@ -3857,7 +3857,7 @@ - - - -- -+ - - - -@@ -3870,7 +3870,7 @@ - - - -- -+ - - - -@@ -3886,7 +3886,7 @@ - - - -- -+ - - - -@@ -3899,7 +3899,7 @@ - - - -- -+ - - - -@@ -3948,7 +3948,7 @@ - - - -- -+ - - - -@@ -3961,7 +3961,7 @@ - - - -- -+ - - - -@@ -3974,7 +3974,7 @@ - - - -- -+ - - - -@@ -3987,7 +3987,7 @@ - - - -- -+ - - - -@@ -4000,7 +4000,7 @@ - - - -- -+ - - - -@@ -4013,7 +4013,7 @@ - - - -- -+ - - - -@@ -4059,7 +4059,7 @@ - - - -- -+ - - - -@@ -4072,7 +4072,7 @@ - - - -- -+ - - - -@@ -4088,7 +4088,7 @@ - - - -- -+ - - - -@@ -4101,7 +4101,7 @@ - - - -- -+ - - - -@@ -4117,7 +4117,7 @@ - - - -- -+ - - - -@@ -4130,7 +4130,7 @@ - - - -- -+ - - - -@@ -4179,7 +4179,7 @@ - - - -- -+ - - - -@@ -4192,7 +4192,7 @@ - - - -- -+ - - - -@@ -4208,7 +4208,7 @@ - - - -- -+ - - - -@@ -4221,7 +4221,7 @@ - - - -- -+ - - - -@@ -4237,7 +4237,7 @@ - - - -- -+ - - - -@@ -4250,7 +4250,7 @@ - - - -- -+ - - - -@@ -4302,7 +4302,7 @@ - - - -- -+ - - - -@@ -4315,7 +4315,7 @@ - - - -- -+ - - - -@@ -4331,7 +4331,7 @@ - - - -- -+ - - - -@@ -4347,7 +4347,7 @@ - - - -- -+ - - - -@@ -4360,7 +4360,7 @@ - - - -- -+ - - - -@@ -4376,7 +4376,7 @@ - - - -- -+ - - - -@@ -4392,7 +4392,7 @@ - - - -- -+ - - - -@@ -4405,7 +4405,7 @@ - - - -- -+ - - - -@@ -4421,7 +4421,7 @@ - - - -- -+ - - - -@@ -4532,7 +4532,7 @@ - - - -- -+ - - - -@@ -4545,7 +4545,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order-clone.exp b/pengine/test10/order-clone.exp -index e38f2a1..9bd7a5f 100644 ---- a/pengine/test10/order-clone.exp -+++ b/pengine/test10/order-clone.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order-mandatory.exp b/pengine/test10/order-mandatory.exp -index 0ad0c5b..1db9fba 100644 ---- a/pengine/test10/order-mandatory.exp -+++ b/pengine/test10/order-mandatory.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order-optional-keyword.exp b/pengine/test10/order-optional-keyword.exp -index 40f3c04..76b7268 100644 ---- a/pengine/test10/order-optional-keyword.exp -+++ b/pengine/test10/order-optional-keyword.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order-optional.exp b/pengine/test10/order-optional.exp -index f88ebe3..0fbfed8 100644 ---- a/pengine/test10/order-optional.exp -+++ b/pengine/test10/order-optional.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order-required.exp b/pengine/test10/order-required.exp -index e9cf1f7..9336677 100644 ---- a/pengine/test10/order-required.exp -+++ b/pengine/test10/order-required.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order-serialize-set.exp b/pengine/test10/order-serialize-set.exp -index 7031b99..d0a8bec 100644 ---- a/pengine/test10/order-serialize-set.exp -+++ b/pengine/test10/order-serialize-set.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -136,7 +136,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -@@ -180,7 +180,7 @@ - - - -- -+ - - - -@@ -193,7 +193,7 @@ - - - -- -+ - - - -@@ -209,7 +209,7 @@ - - - -- -+ - - - -@@ -243,7 +243,7 @@ - - - -- -+ - - - -@@ -256,7 +256,7 @@ - - - -- -+ - - - -@@ -269,7 +269,7 @@ - - - -- -+ - - - -@@ -288,7 +288,7 @@ - - - -- -+ - - - -@@ -325,7 +325,7 @@ - - - -- -+ - - - -@@ -338,7 +338,7 @@ - - - -- -+ - - - -@@ -351,7 +351,7 @@ - - - -- -+ - - - -@@ -373,7 +373,7 @@ - - - -- -+ - - - -@@ -413,7 +413,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order-serialize.exp b/pengine/test10/order-serialize.exp -index c2b9e75..4736732 100644 ---- a/pengine/test10/order-serialize.exp -+++ b/pengine/test10/order-serialize.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -160,7 +160,7 @@ - - - -- -+ - - - -@@ -173,7 +173,7 @@ - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -199,7 +199,7 @@ - - - -- -+ - - - -@@ -230,7 +230,7 @@ - - - -- -+ - - - -@@ -243,7 +243,7 @@ - - - -- -+ - - - -@@ -256,7 +256,7 @@ - - - -- -+ - - - -@@ -265,7 +265,7 @@ - - - -- -+ - - - -@@ -293,7 +293,7 @@ - - - -- -+ - - - -@@ -306,7 +306,7 @@ - - - -- -+ - - - -@@ -319,7 +319,7 @@ - - - -- -+ - - - -@@ -332,7 +332,7 @@ - - - -- -+ - - - -@@ -363,7 +363,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order-sets.exp b/pengine/test10/order-sets.exp -index 94da776..1f5673e 100644 ---- a/pengine/test10/order-sets.exp -+++ b/pengine/test10/order-sets.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -155,7 +155,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order-wrong-kind.exp b/pengine/test10/order-wrong-kind.exp -index c26d14b..cd5e138 100644 ---- a/pengine/test10/order-wrong-kind.exp -+++ b/pengine/test10/order-wrong-kind.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order1.exp b/pengine/test10/order1.exp -index 3769b99..66f0a85 100644 ---- a/pengine/test10/order1.exp -+++ b/pengine/test10/order1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order2.exp b/pengine/test10/order2.exp -index 95cff69..a385359 100644 ---- a/pengine/test10/order2.exp -+++ b/pengine/test10/order2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order3.exp b/pengine/test10/order3.exp -index af78652..655ad74 100644 ---- a/pengine/test10/order3.exp -+++ b/pengine/test10/order3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -35,7 +35,7 @@ - - - -- -+ - - - -@@ -44,7 +44,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -164,7 +164,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order4.exp b/pengine/test10/order4.exp -index 3769b99..66f0a85 100644 ---- a/pengine/test10/order4.exp -+++ b/pengine/test10/order4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order5.exp b/pengine/test10/order5.exp -index c429355..e019ca3 100644 ---- a/pengine/test10/order5.exp -+++ b/pengine/test10/order5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -75,7 +75,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -153,7 +153,7 @@ - - - -- -+ - - - -@@ -169,7 +169,7 @@ - - - -- -+ - - - -@@ -182,7 +182,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order6.exp b/pengine/test10/order6.exp -index 8b8d3a5..d6eb81e 100644 ---- a/pengine/test10/order6.exp -+++ b/pengine/test10/order6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -75,7 +75,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -153,7 +153,7 @@ - - - -- -+ - - - -@@ -169,7 +169,7 @@ - - - -- -+ - - - -@@ -182,7 +182,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order7.exp b/pengine/test10/order7.exp -index ab531cc..4e59463 100644 ---- a/pengine/test10/order7.exp -+++ b/pengine/test10/order7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order_constraint_stops_master.exp b/pengine/test10/order_constraint_stops_master.exp -index 3edec39..551e186 100644 ---- a/pengine/test10/order_constraint_stops_master.exp -+++ b/pengine/test10/order_constraint_stops_master.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -248,7 +248,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/order_constraint_stops_slave.exp b/pengine/test10/order_constraint_stops_slave.exp -index fb4837f..1a7d5da 100644 ---- a/pengine/test10/order_constraint_stops_slave.exp -+++ b/pengine/test10/order_constraint_stops_slave.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ordered-set-basic-startup.exp b/pengine/test10/ordered-set-basic-startup.exp -index 9a24829..56a506a 100644 ---- a/pengine/test10/ordered-set-basic-startup.exp -+++ b/pengine/test10/ordered-set-basic-startup.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -61,7 +61,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/origin.exp b/pengine/test10/origin.exp -index 7bcde4a..780be47 100644 ---- a/pengine/test10/origin.exp -+++ b/pengine/test10/origin.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/orphan-0.exp b/pengine/test10/orphan-0.exp -index 07f6bbd..7bdb18f 100644 ---- a/pengine/test10/orphan-0.exp -+++ b/pengine/test10/orphan-0.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/orphan-1.exp b/pengine/test10/orphan-1.exp -index d0259dd..af4873a 100644 ---- a/pengine/test10/orphan-1.exp -+++ b/pengine/test10/orphan-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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/orphan-2.exp b/pengine/test10/orphan-2.exp -index 18fec8a..a0ad50e 100644 ---- a/pengine/test10/orphan-2.exp -+++ b/pengine/test10/orphan-2.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -172,7 +172,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/params-0.exp b/pengine/test10/params-0.exp -index ca9db40..bea3f17 100644 ---- a/pengine/test10/params-0.exp -+++ b/pengine/test10/params-0.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/params-1.exp b/pengine/test10/params-1.exp -index 0952230..d2efaf3 100644 ---- a/pengine/test10/params-1.exp -+++ b/pengine/test10/params-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -49,7 +49,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/params-2.exp b/pengine/test10/params-2.exp -index bd55ea2..94f3773 100644 ---- a/pengine/test10/params-2.exp -+++ b/pengine/test10/params-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -103,7 +103,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -131,7 +131,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/params-4.exp b/pengine/test10/params-4.exp -index aadc5ac..2b31cb1 100644 ---- a/pengine/test10/params-4.exp -+++ b/pengine/test10/params-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -49,7 +49,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -@@ -116,7 +116,7 @@ - - - -- -+ - - - -@@ -125,7 +125,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -152,7 +152,7 @@ - - - -- -+ - - - -@@ -161,7 +161,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -@@ -179,7 +179,7 @@ - - - -- -+ - - - -@@ -188,7 +188,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/params-5.exp b/pengine/test10/params-5.exp -index b912ad1..1208fd0 100644 ---- a/pengine/test10/params-5.exp -+++ b/pengine/test10/params-5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -49,7 +49,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -210,7 +210,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/params-6.exp b/pengine/test10/params-6.exp -index 307dbf3..f33ca74 100644 ---- a/pengine/test10/params-6.exp -+++ b/pengine/test10/params-6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/per-node-attrs.exp b/pengine/test10/per-node-attrs.exp -index 67f2a05..13a128c 100644 ---- a/pengine/test10/per-node-attrs.exp -+++ b/pengine/test10/per-node-attrs.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/placement-capacity.exp b/pengine/test10/placement-capacity.exp -index 6481121..9aca009 100644 ---- a/pengine/test10/placement-capacity.exp -+++ b/pengine/test10/placement-capacity.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/placement-location.exp b/pengine/test10/placement-location.exp -index 6481121..9aca009 100644 ---- a/pengine/test10/placement-location.exp -+++ b/pengine/test10/placement-location.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/placement-priority.exp b/pengine/test10/placement-priority.exp -index ae6b29f..4db51ba 100644 ---- a/pengine/test10/placement-priority.exp -+++ b/pengine/test10/placement-priority.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/placement-stickiness.exp b/pengine/test10/placement-stickiness.exp -index 6481121..9aca009 100644 ---- a/pengine/test10/placement-stickiness.exp -+++ b/pengine/test10/placement-stickiness.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/probe-0.exp b/pengine/test10/probe-0.exp -index 5e425b0..fe866a4 100644 ---- a/pengine/test10/probe-0.exp -+++ b/pengine/test10/probe-0.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/probe-1.exp b/pengine/test10/probe-1.exp -index 6b4ce0d..79ad319 100644 ---- a/pengine/test10/probe-1.exp -+++ b/pengine/test10/probe-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/probe-2.exp b/pengine/test10/probe-2.exp -index 939fda7..e8fbcff 100644 ---- a/pengine/test10/probe-2.exp -+++ b/pengine/test10/probe-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -103,7 +103,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -@@ -128,7 +128,7 @@ - - - -- -+ - - - -@@ -141,7 +141,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -530,7 +530,7 @@ - - - -- -+ - - - -@@ -543,7 +543,7 @@ - - - -- -+ - - - -@@ -559,7 +559,7 @@ - - - -- -+ - - - -@@ -575,7 +575,7 @@ - - - -- -+ - - - -@@ -588,7 +588,7 @@ - - - -- -+ - - - -@@ -607,7 +607,7 @@ - - - -- -+ - - - -@@ -623,7 +623,7 @@ - - - -- -+ - - - -@@ -636,7 +636,7 @@ - - - -- -+ - - - -@@ -655,7 +655,7 @@ - - - -- -+ - - - -@@ -668,7 +668,7 @@ - - - -- -+ - - - -@@ -681,7 +681,7 @@ - - - -- -+ - - - -@@ -694,7 +694,7 @@ - - - -- -+ - - - -@@ -707,7 +707,7 @@ - - - -- -+ - - - -@@ -833,7 +833,7 @@ - - - -- -+ - - - -@@ -900,7 +900,7 @@ - - - -- -+ - - - -@@ -966,7 +966,7 @@ - - - -- -+ - - - -@@ -982,7 +982,7 @@ - - - -- -+ - - - -@@ -1018,7 +1018,7 @@ - - - -- -+ - - - -@@ -1031,7 +1031,7 @@ - - - -- -+ - - - -@@ -1044,7 +1044,7 @@ - - - -- -+ - - - -@@ -1060,7 +1060,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/probe-timeout.exp b/pengine/test10/probe-timeout.exp -index 4299aba..5f36d79 100644 ---- a/pengine/test10/probe-timeout.exp -+++ b/pengine/test10/probe-timeout.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -@@ -76,7 +76,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/quorum-1.exp b/pengine/test10/quorum-1.exp -index adf6be0..6f2f40f 100644 ---- a/pengine/test10/quorum-1.exp -+++ b/pengine/test10/quorum-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -75,7 +75,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/quorum-2.exp b/pengine/test10/quorum-2.exp -index 5e16daf..002cc16 100644 ---- a/pengine/test10/quorum-2.exp -+++ b/pengine/test10/quorum-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/quorum-3.exp b/pengine/test10/quorum-3.exp -index 3ffad71..e263aeb 100644 ---- a/pengine/test10/quorum-3.exp -+++ b/pengine/test10/quorum-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/quorum-4.exp b/pengine/test10/quorum-4.exp -index a1ac982..282be77 100644 ---- a/pengine/test10/quorum-4.exp -+++ b/pengine/test10/quorum-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/quorum-5.exp b/pengine/test10/quorum-5.exp -index 5554fa2..1576d42 100644 ---- a/pengine/test10/quorum-5.exp -+++ b/pengine/test10/quorum-5.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/quorum-6.exp b/pengine/test10/quorum-6.exp -index 00baad3..61b1154 100644 ---- a/pengine/test10/quorum-6.exp -+++ b/pengine/test10/quorum-6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -92,7 +92,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-1.exp b/pengine/test10/rec-node-1.exp -index 6bc78c1..abae4db 100644 ---- a/pengine/test10/rec-node-1.exp -+++ b/pengine/test10/rec-node-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-10.exp b/pengine/test10/rec-node-10.exp -index 554694d..309764a 100644 ---- a/pengine/test10/rec-node-10.exp -+++ b/pengine/test10/rec-node-10.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-11.exp b/pengine/test10/rec-node-11.exp -index 40b59af..473c1a7 100644 ---- a/pengine/test10/rec-node-11.exp -+++ b/pengine/test10/rec-node-11.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -195,7 +195,7 @@ - - - -- -+ - - - -@@ -211,7 +211,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-12.exp b/pengine/test10/rec-node-12.exp -index 9204f66..d503232 100644 ---- a/pengine/test10/rec-node-12.exp -+++ b/pengine/test10/rec-node-12.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -@@ -162,7 +162,7 @@ - - - -- -+ - - - -@@ -171,7 +171,7 @@ - - - -- -+ - - - -@@ -180,7 +180,7 @@ - - - -- -+ - - - -@@ -189,7 +189,7 @@ - - - -- -+ - - - -@@ -202,7 +202,7 @@ - - - -- -+ - - - -@@ -224,7 +224,7 @@ - - - -- -+ - - - -@@ -233,7 +233,7 @@ - - - -- -+ - - - -@@ -242,7 +242,7 @@ - - - -- -+ - - - -@@ -251,7 +251,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -286,7 +286,7 @@ - - - -- -+ - - - -@@ -295,7 +295,7 @@ - - - -- -+ - - - -@@ -304,7 +304,7 @@ - - - -- -+ - - - -@@ -313,7 +313,7 @@ - - - -- -+ - - - -@@ -326,7 +326,7 @@ - - - -- -+ - - - -@@ -339,7 +339,7 @@ - - - -- -+ - - - -@@ -348,7 +348,7 @@ - - - -- -+ - - - -@@ -357,7 +357,7 @@ - - - -- -+ - - - -@@ -366,7 +366,7 @@ - - - -- -+ - - - -@@ -379,7 +379,7 @@ - - - -- -+ - - - -@@ -392,7 +392,7 @@ - - - -- -+ - - - -@@ -401,7 +401,7 @@ - - - -- -+ - - - -@@ -410,7 +410,7 @@ - - - -- -+ - - - -@@ -419,7 +419,7 @@ - - - -- -+ - - - -@@ -432,7 +432,7 @@ - - - -- -+ - - - -@@ -445,7 +445,7 @@ - - - -- -+ - - - -@@ -454,7 +454,7 @@ - - - -- -+ - - - -@@ -463,7 +463,7 @@ - - - -- -+ - - - -@@ -472,7 +472,7 @@ - - - -- -+ - - - -@@ -481,7 +481,7 @@ - - - -- -+ - - - -@@ -490,7 +490,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-15.exp b/pengine/test10/rec-node-15.exp -index c01afff..3810636 100644 ---- a/pengine/test10/rec-node-15.exp -+++ b/pengine/test10/rec-node-15.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -115,7 +115,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -@@ -150,7 +150,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -185,7 +185,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -214,7 +214,7 @@ - - - -- -+ - - - -@@ -236,7 +236,7 @@ - - - -- -+ - - - -@@ -284,7 +284,7 @@ - - - -- -+ - - - -@@ -297,7 +297,7 @@ - - - -- -+ - - - -@@ -313,7 +313,7 @@ - - - -- -+ - - - -@@ -326,7 +326,7 @@ - - - -- -+ - - - -@@ -345,7 +345,7 @@ - - - -- -+ - - - -@@ -358,7 +358,7 @@ - - - -- -+ - - - -@@ -377,7 +377,7 @@ - - - -- -+ - - - -@@ -390,7 +390,7 @@ - - - -- -+ - - - -@@ -409,7 +409,7 @@ - - - -- -+ - - - -@@ -422,7 +422,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-2.exp b/pengine/test10/rec-node-2.exp -index d96ade7..6b4f86e 100644 ---- a/pengine/test10/rec-node-2.exp -+++ b/pengine/test10/rec-node-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -44,7 +44,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -104,7 +104,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -@@ -189,7 +189,7 @@ - - - -- -+ - - - -@@ -208,7 +208,7 @@ - - - -- -+ - - - -@@ -217,7 +217,7 @@ - - - -- -+ - - - -@@ -239,7 +239,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-3.exp b/pengine/test10/rec-node-3.exp -index 6bc78c1..abae4db 100644 ---- a/pengine/test10/rec-node-3.exp -+++ b/pengine/test10/rec-node-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-4.exp b/pengine/test10/rec-node-4.exp -index f3d14d9..00f975e 100644 ---- a/pengine/test10/rec-node-4.exp -+++ b/pengine/test10/rec-node-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-5.exp b/pengine/test10/rec-node-5.exp -index 6bc78c1..abae4db 100644 ---- a/pengine/test10/rec-node-5.exp -+++ b/pengine/test10/rec-node-5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-6.exp b/pengine/test10/rec-node-6.exp -index f3d14d9..00f975e 100644 ---- a/pengine/test10/rec-node-6.exp -+++ b/pengine/test10/rec-node-6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-7.exp b/pengine/test10/rec-node-7.exp -index f3d14d9..00f975e 100644 ---- a/pengine/test10/rec-node-7.exp -+++ b/pengine/test10/rec-node-7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-8.exp b/pengine/test10/rec-node-8.exp -index d7800a1..78a972c 100644 ---- a/pengine/test10/rec-node-8.exp -+++ b/pengine/test10/rec-node-8.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-9.exp b/pengine/test10/rec-node-9.exp -index cd96028..24f965b 100644 ---- a/pengine/test10/rec-node-9.exp -+++ b/pengine/test10/rec-node-9.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-rsc-0.exp b/pengine/test10/rec-rsc-0.exp -index d429199..23f4fee 100644 ---- a/pengine/test10/rec-rsc-0.exp -+++ b/pengine/test10/rec-rsc-0.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-rsc-1.exp b/pengine/test10/rec-rsc-1.exp -index a649f99..f3db70c 100644 ---- a/pengine/test10/rec-rsc-1.exp -+++ b/pengine/test10/rec-rsc-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-rsc-2.exp b/pengine/test10/rec-rsc-2.exp -index 2ce0098..192b1ec 100644 ---- a/pengine/test10/rec-rsc-2.exp -+++ b/pengine/test10/rec-rsc-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-rsc-3.exp b/pengine/test10/rec-rsc-3.exp -index 3c8e178..5eff1fc 100644 ---- a/pengine/test10/rec-rsc-3.exp -+++ b/pengine/test10/rec-rsc-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-rsc-4.exp b/pengine/test10/rec-rsc-4.exp -index f6d318b..cf21fe1 100644 ---- a/pengine/test10/rec-rsc-4.exp -+++ b/pengine/test10/rec-rsc-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-rsc-5.exp b/pengine/test10/rec-rsc-5.exp -index bf03d79..a690d68 100644 ---- a/pengine/test10/rec-rsc-5.exp -+++ b/pengine/test10/rec-rsc-5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-rsc-6.exp b/pengine/test10/rec-rsc-6.exp -index a359f1b..6648e00 100644 ---- a/pengine/test10/rec-rsc-6.exp -+++ b/pengine/test10/rec-rsc-6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-rsc-7.exp b/pengine/test10/rec-rsc-7.exp -index 5fb49cf..721d346 100644 ---- a/pengine/test10/rec-rsc-7.exp -+++ b/pengine/test10/rec-rsc-7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-rsc-9.exp b/pengine/test10/rec-rsc-9.exp -index ba67acb..805a981 100644 ---- a/pengine/test10/rec-rsc-9.exp -+++ b/pengine/test10/rec-rsc-9.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-disable.exp b/pengine/test10/remote-disable.exp -index b2a9afc..817c5ba 100644 ---- a/pengine/test10/remote-disable.exp -+++ b/pengine/test10/remote-disable.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-fence-before-reconnect.exp b/pengine/test10/remote-fence-before-reconnect.exp -index 3217e08..2c9ee6c 100644 ---- a/pengine/test10/remote-fence-before-reconnect.exp -+++ b/pengine/test10/remote-fence-before-reconnect.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -15,7 +15,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-fence-unclean.exp b/pengine/test10/remote-fence-unclean.exp -index fad2a93..125366e 100644 ---- a/pengine/test10/remote-fence-unclean.exp -+++ b/pengine/test10/remote-fence-unclean.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -44,7 +44,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -85,7 +85,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -136,7 +136,7 @@ - - - -- -+ - - - -@@ -152,7 +152,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-move.exp b/pengine/test10/remote-move.exp -index 830169f..ca12109 100644 ---- a/pengine/test10/remote-move.exp -+++ b/pengine/test10/remote-move.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-orphaned.exp b/pengine/test10/remote-orphaned.exp -index 9b6e5ce..4ac6bf9 100644 ---- a/pengine/test10/remote-orphaned.exp -+++ b/pengine/test10/remote-orphaned.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-partial-migrate.exp b/pengine/test10/remote-partial-migrate.exp -index 7f3f902..9a4a723 100644 ---- a/pengine/test10/remote-partial-migrate.exp -+++ b/pengine/test10/remote-partial-migrate.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -69,7 +69,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -95,7 +95,7 @@ - - - -- -+ - - - -@@ -108,7 +108,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -178,7 +178,7 @@ - - - -- -+ - - - -@@ -187,7 +187,7 @@ - - - -- -+ - - - -@@ -203,7 +203,7 @@ - - - -- -+ - - - -@@ -219,7 +219,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -241,7 +241,7 @@ - - - -- -+ - - - -@@ -250,7 +250,7 @@ - - - -- -+ - - - -@@ -263,7 +263,7 @@ - - - -- -+ - - - -@@ -276,7 +276,7 @@ - - - -- -+ - - - -@@ -285,7 +285,7 @@ - - - -- -+ - - - -@@ -298,7 +298,7 @@ - - - -- -+ - - - -@@ -307,7 +307,7 @@ - - - -- -+ - - - -@@ -320,7 +320,7 @@ - - - -- -+ - - - -@@ -329,7 +329,7 @@ - - - -- -+ - - - -@@ -342,7 +342,7 @@ - - - -- -+ - - - -@@ -355,7 +355,7 @@ - - - -- -+ - - - -@@ -364,7 +364,7 @@ - - - -- -+ - - - -@@ -377,7 +377,7 @@ - - - -- -+ - - - -@@ -386,7 +386,7 @@ - - - -- -+ - - - -@@ -399,7 +399,7 @@ - - - -- -+ - - - -@@ -412,7 +412,7 @@ - - - -- -+ - - - -@@ -421,7 +421,7 @@ - - - -- -+ - - - -@@ -434,7 +434,7 @@ - - - -- -+ - - - -@@ -443,7 +443,7 @@ - - - -- -+ - - - -@@ -456,7 +456,7 @@ - - - -- -+ - - - -@@ -469,7 +469,7 @@ - - - -- -+ - - - -@@ -478,7 +478,7 @@ - - - -- -+ - - - -@@ -491,7 +491,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-partial-migrate2.exp b/pengine/test10/remote-partial-migrate2.exp -index e2afeae..54d1ded 100644 ---- a/pengine/test10/remote-partial-migrate2.exp -+++ b/pengine/test10/remote-partial-migrate2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -86,7 +86,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -@@ -172,7 +172,7 @@ - - - -- -+ - - - -@@ -191,7 +191,7 @@ - - - -- -+ - - - -@@ -200,7 +200,7 @@ - - - -- -+ - - - -@@ -216,7 +216,7 @@ - - - -- -+ - - - -@@ -235,7 +235,7 @@ - - - -- -+ - - - -@@ -244,7 +244,7 @@ - - - -- -+ - - - -@@ -257,7 +257,7 @@ - - - -- -+ - - - -@@ -273,7 +273,7 @@ - - - -- -+ - - - -@@ -282,7 +282,7 @@ - - - -- -+ - - - -@@ -295,7 +295,7 @@ - - - -- -+ - - - -@@ -311,7 +311,7 @@ - - - -- -+ - - - -@@ -320,7 +320,7 @@ - - - -- -+ - - - -@@ -336,7 +336,7 @@ - - - -- -+ - - - -@@ -355,7 +355,7 @@ - - - -- -+ - - - -@@ -364,7 +364,7 @@ - - - -- -+ - - - -@@ -380,7 +380,7 @@ - - - -- -+ - - - -@@ -399,7 +399,7 @@ - - - -- -+ - - - -@@ -408,7 +408,7 @@ - - - -- -+ - - - -@@ -421,7 +421,7 @@ - - - -- -+ - - - -@@ -437,7 +437,7 @@ - - - -- -+ - - - -@@ -446,7 +446,7 @@ - - - -- -+ - - - -@@ -459,7 +459,7 @@ - - - -- -+ - - - -@@ -475,7 +475,7 @@ - - - -- -+ - - - -@@ -484,7 +484,7 @@ - - - -- -+ - - - -@@ -500,7 +500,7 @@ - - - -- -+ - - - -@@ -519,7 +519,7 @@ - - - -- -+ - - - -@@ -528,7 +528,7 @@ - - - -- -+ - - - -@@ -541,7 +541,7 @@ - - - -- -+ - - - -@@ -557,7 +557,7 @@ - - - -- -+ - - - -@@ -566,7 +566,7 @@ - - - -- -+ - - - -@@ -582,7 +582,7 @@ - - - -- -+ - - - -@@ -601,7 +601,7 @@ - - - -- -+ - - - -@@ -610,7 +610,7 @@ - - - -- -+ - - - -@@ -626,7 +626,7 @@ - - - -- -+ - - - -@@ -645,7 +645,7 @@ - - - -- -+ - - - -@@ -658,7 +658,7 @@ - - - -- -+ - - - -@@ -674,7 +674,7 @@ - - - -- -+ - - - -@@ -693,7 +693,7 @@ - - - -- -+ - - - -@@ -702,7 +702,7 @@ - - - -- -+ - - - -@@ -715,7 +715,7 @@ - - - -- -+ - - - -@@ -731,7 +731,7 @@ - - - -- -+ - - - -@@ -740,7 +740,7 @@ - - - -- -+ - - - -@@ -756,7 +756,7 @@ - - - -- -+ - - - -@@ -775,7 +775,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-recover-fail.exp b/pengine/test10/remote-recover-fail.exp -index 95a3fd2..1daa510 100644 ---- a/pengine/test10/remote-recover-fail.exp -+++ b/pengine/test10/remote-recover-fail.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -44,7 +44,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -142,7 +142,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-recover.exp b/pengine/test10/remote-recover.exp -index ea8ad17..3936c51 100644 ---- a/pengine/test10/remote-recover.exp -+++ b/pengine/test10/remote-recover.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-stale-node-entry.exp b/pengine/test10/remote-stale-node-entry.exp -index bba8f5a..892f68a 100644 ---- a/pengine/test10/remote-stale-node-entry.exp -+++ b/pengine/test10/remote-stale-node-entry.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -35,7 +35,7 @@ - - - -- -+ - - - -@@ -44,7 +44,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -108,7 +108,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -@@ -149,7 +149,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -@@ -180,7 +180,7 @@ - - - -- -+ - - - -@@ -199,7 +199,7 @@ - - - -- -+ - - - -@@ -208,7 +208,7 @@ - - - -- -+ - - - -@@ -217,7 +217,7 @@ - - - -- -+ - - - -@@ -226,7 +226,7 @@ - - - -- -+ - - - -@@ -239,7 +239,7 @@ - - - -- -+ - - - -@@ -258,7 +258,7 @@ - - - -- -+ - - - -@@ -267,7 +267,7 @@ - - - -- -+ - - - -@@ -276,7 +276,7 @@ - - - -- -+ - - - -@@ -285,7 +285,7 @@ - - - -- -+ - - - -@@ -298,7 +298,7 @@ - - - -- -+ - - - -@@ -317,7 +317,7 @@ - - - -- -+ - - - -@@ -326,7 +326,7 @@ - - - -- -+ - - - -@@ -335,7 +335,7 @@ - - - -- -+ - - - -@@ -344,7 +344,7 @@ - - - -- -+ - - - -@@ -357,7 +357,7 @@ - - - -- -+ - - - -@@ -370,7 +370,7 @@ - - - -- -+ - - - -@@ -379,7 +379,7 @@ - - - -- -+ - - - -@@ -392,7 +392,7 @@ - - - -- -+ - - - -@@ -405,7 +405,7 @@ - - - -- -+ - - - -@@ -414,7 +414,7 @@ - - - -- -+ - - - -@@ -427,7 +427,7 @@ - - - -- -+ - - - -@@ -440,7 +440,7 @@ - - - -- -+ - - - -@@ -488,7 +488,7 @@ - - - -- -+ - - - -@@ -497,7 +497,7 @@ - - - -- -+ - - - -@@ -506,7 +506,7 @@ - - - -- -+ - - - -@@ -515,7 +515,7 @@ - - - -- -+ - - - -@@ -524,7 +524,7 @@ - - - -- -+ - - - -@@ -533,7 +533,7 @@ - - - -- -+ - - - -@@ -542,7 +542,7 @@ - - - -- -+ - - - -@@ -551,7 +551,7 @@ - - - -- -+ - - - -@@ -560,7 +560,7 @@ - - - -- -+ - - - -@@ -569,7 +569,7 @@ - - - -- -+ - - - -@@ -578,7 +578,7 @@ - - - -- -+ - - - -@@ -587,7 +587,7 @@ - - - -- -+ - - - -@@ -596,7 +596,7 @@ - - - -- -+ - - - -@@ -605,7 +605,7 @@ - - - -- -+ - - - -@@ -614,7 +614,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-start-fail.exp b/pengine/test10/remote-start-fail.exp -index 0874c17..1be99e6 100644 ---- a/pengine/test10/remote-start-fail.exp -+++ b/pengine/test10/remote-start-fail.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-startup-probes.exp b/pengine/test10/remote-startup-probes.exp -index a914fbc..497e481 100644 ---- a/pengine/test10/remote-startup-probes.exp -+++ b/pengine/test10/remote-startup-probes.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -115,7 +115,7 @@ - - - -- -+ - - - -@@ -128,7 +128,7 @@ - - - -- -+ - - - -@@ -141,7 +141,7 @@ - - - -- -+ - - - -@@ -154,7 +154,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-startup.exp b/pengine/test10/remote-startup.exp -index 911ac1a..ac26ece 100644 ---- a/pengine/test10/remote-startup.exp -+++ b/pengine/test10/remote-startup.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -113,7 +113,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -141,7 +141,7 @@ - - - -- -+ - - - -@@ -150,7 +150,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-unclean2.exp b/pengine/test10/remote-unclean2.exp -index c8c2fcc..045e976 100644 ---- a/pengine/test10/remote-unclean2.exp -+++ b/pengine/test10/remote-unclean2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/reprobe-target_rc.exp b/pengine/test10/reprobe-target_rc.exp -index 363aca8..9b1b6a0 100644 ---- a/pengine/test10/reprobe-target_rc.exp -+++ b/pengine/test10/reprobe-target_rc.exp -@@ -2,7 +2,7 @@ - - - -- -+ - - - -@@ -10,7 +10,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/resource-discovery.exp b/pengine/test10/resource-discovery.exp -index 07908ca..365c9e5 100644 ---- a/pengine/test10/resource-discovery.exp -+++ b/pengine/test10/resource-discovery.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -136,7 +136,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -171,7 +171,7 @@ - - - -- -+ - - - -@@ -180,7 +180,7 @@ - - - -- -+ - - - -@@ -193,7 +193,7 @@ - - - -- -+ - - - -@@ -209,7 +209,7 @@ - - - -- -+ - - - -@@ -218,7 +218,7 @@ - - - -- -+ - - - -@@ -227,7 +227,7 @@ - - - -- -+ - - - -@@ -240,7 +240,7 @@ - - - -- -+ - - - -@@ -253,7 +253,7 @@ - - - -- -+ - - - -@@ -262,7 +262,7 @@ - - - -- -+ - - - -@@ -275,7 +275,7 @@ - - - -- -+ - - - -@@ -288,7 +288,7 @@ - - - -- -+ - - - -@@ -297,7 +297,7 @@ - - - -- -+ - - - -@@ -313,7 +313,7 @@ - - - -- -+ - - - -@@ -341,7 +341,7 @@ - - - -- -+ - - - -@@ -354,7 +354,7 @@ - - - -- -+ - - - -@@ -363,7 +363,7 @@ - - - -- -+ - - - -@@ -372,7 +372,7 @@ - - - -- -+ - - - -@@ -381,7 +381,7 @@ - - - -- -+ - - - -@@ -390,7 +390,7 @@ - - - -- -+ - - - -@@ -403,7 +403,7 @@ - - - -- -+ - - - -@@ -416,7 +416,7 @@ - - - -- -+ - - - -@@ -425,7 +425,7 @@ - - - -- -+ - - - -@@ -441,7 +441,7 @@ - - - -- -+ - - - -@@ -457,7 +457,7 @@ - - - -- -+ - - - -@@ -503,7 +503,7 @@ - - - -- -+ - - - -@@ -516,7 +516,7 @@ - - - -- -+ - - - -@@ -529,7 +529,7 @@ - - - -- -+ - - - -@@ -538,7 +538,7 @@ - - - -- -+ - - - -@@ -551,7 +551,7 @@ - - - -- -+ - - - -@@ -564,7 +564,7 @@ - - - -- -+ - - - -@@ -573,7 +573,7 @@ - - - -- -+ - - - -@@ -586,7 +586,7 @@ - - - -- -+ - - - -@@ -599,7 +599,7 @@ - - - -- -+ - - - -@@ -612,7 +612,7 @@ - - - -- -+ - - - -@@ -625,7 +625,7 @@ - - - -- -+ - - - -@@ -634,7 +634,7 @@ - - - -- -+ - - - -@@ -650,7 +650,7 @@ - - - -- -+ - - - -@@ -666,7 +666,7 @@ - - - -- -+ - - - -@@ -753,7 +753,7 @@ - - - -- -+ - - - -@@ -766,7 +766,7 @@ - - - -- -+ - - - -@@ -785,7 +785,7 @@ - - - -- -+ - - - -@@ -794,7 +794,7 @@ - - - -- -+ - - - -@@ -803,7 +803,7 @@ - - - -- -+ - - - -@@ -816,7 +816,7 @@ - - - -- -+ - - - -@@ -838,7 +838,7 @@ - - - -- -+ - - - -@@ -847,7 +847,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc-discovery-per-node.exp b/pengine/test10/rsc-discovery-per-node.exp -index 9252839..a429298 100644 ---- a/pengine/test10/rsc-discovery-per-node.exp -+++ b/pengine/test10/rsc-discovery-per-node.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -115,7 +115,7 @@ - - - -- -+ - - - -@@ -124,7 +124,7 @@ - - - -- -+ - - - -@@ -133,7 +133,7 @@ - - - -- -+ - - - -@@ -142,7 +142,7 @@ - - - -- -+ - - - -@@ -151,7 +151,7 @@ - - - -- -+ - - - -@@ -164,7 +164,7 @@ - - - -- -+ - - - -@@ -183,7 +183,7 @@ - - - -- -+ - - - -@@ -199,7 +199,7 @@ - - - -- -+ - - - -@@ -208,7 +208,7 @@ - - - -- -+ - - - -@@ -217,7 +217,7 @@ - - - -- -+ - - - -@@ -230,7 +230,7 @@ - - - -- -+ - - - -@@ -249,7 +249,7 @@ - - - -- -+ - - - -@@ -265,7 +265,7 @@ - - - -- -+ - - - -@@ -274,7 +274,7 @@ - - - -- -+ - - - -@@ -283,7 +283,7 @@ - - - -- -+ - - - -@@ -299,7 +299,7 @@ - - - -- -+ - - - -@@ -321,7 +321,7 @@ - - - -- -+ - - - -@@ -337,7 +337,7 @@ - - - -- -+ - - - -@@ -346,7 +346,7 @@ - - - -- -+ - - - -@@ -355,7 +355,7 @@ - - - -- -+ - - - -@@ -368,7 +368,7 @@ - - - -- -+ - - - -@@ -393,7 +393,7 @@ - - - -- -+ - - - -@@ -402,7 +402,7 @@ - - - -- -+ - - - -@@ -411,7 +411,7 @@ - - - -- -+ - - - -@@ -420,7 +420,7 @@ - - - -- -+ - - - -@@ -429,7 +429,7 @@ - - - -- -+ - - - -@@ -438,7 +438,7 @@ - - - -- -+ - - - -@@ -451,7 +451,7 @@ - - - -- -+ - - - -@@ -464,7 +464,7 @@ - - - -- -+ - - - -@@ -473,7 +473,7 @@ - - - -- -+ - - - -@@ -486,7 +486,7 @@ - - - -- -+ - - - -@@ -499,7 +499,7 @@ - - - -- -+ - - - -@@ -508,7 +508,7 @@ - - - -- -+ - - - -@@ -521,7 +521,7 @@ - - - -- -+ - - - -@@ -534,7 +534,7 @@ - - - -- -+ - - - -@@ -543,7 +543,7 @@ - - - -- -+ - - - -@@ -556,7 +556,7 @@ - - - -- -+ - - - -@@ -569,7 +569,7 @@ - - - -- -+ - - - -@@ -578,7 +578,7 @@ - - - -- -+ - - - -@@ -594,7 +594,7 @@ - - - -- -+ - - - -@@ -610,7 +610,7 @@ - - - -- -+ - - - -@@ -623,7 +623,7 @@ - - - -- -+ - - - -@@ -636,7 +636,7 @@ - - - -- -+ - - - -@@ -699,7 +699,7 @@ - - - -- -+ - - - -@@ -712,7 +712,7 @@ - - - -- -+ - - - -@@ -725,7 +725,7 @@ - - - -- -+ - - - -@@ -734,7 +734,7 @@ - - - -- -+ - - - -@@ -747,7 +747,7 @@ - - - -- -+ - - - -@@ -760,7 +760,7 @@ - - - -- -+ - - - -@@ -769,7 +769,7 @@ - - - -- -+ - - - -@@ -782,7 +782,7 @@ - - - -- -+ - - - -@@ -795,7 +795,7 @@ - - - -- -+ - - - -@@ -804,7 +804,7 @@ - - - -- -+ - - - -@@ -817,7 +817,7 @@ - - - -- -+ - - - -@@ -830,7 +830,7 @@ - - - -- -+ - - - -@@ -839,7 +839,7 @@ - - - -- -+ - - - -@@ -855,7 +855,7 @@ - - - -- -+ - - - -@@ -871,7 +871,7 @@ - - - -- -+ - - - -@@ -884,7 +884,7 @@ - - - -- -+ - - - -@@ -897,7 +897,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc-maintenance.exp b/pengine/test10/rsc-maintenance.exp -index b8404df..ede1171 100644 ---- a/pengine/test10/rsc-maintenance.exp -+++ b/pengine/test10/rsc-maintenance.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc-sets-clone-1.exp b/pengine/test10/rsc-sets-clone-1.exp -index 75d765c..decabce 100644 ---- a/pengine/test10/rsc-sets-clone-1.exp -+++ b/pengine/test10/rsc-sets-clone-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -61,7 +61,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -151,7 +151,7 @@ - - - -- -+ - - - -@@ -164,7 +164,7 @@ - - - -- -+ - - - -@@ -173,7 +173,7 @@ - - - -- -+ - - - -@@ -189,7 +189,7 @@ - - - -- -+ - - - -@@ -198,7 +198,7 @@ - - - -- -+ - - - -@@ -214,7 +214,7 @@ - - - -- -+ - - - -@@ -223,7 +223,7 @@ - - - -- -+ - - - -@@ -236,7 +236,7 @@ - - - -- -+ - - - -@@ -252,7 +252,7 @@ - - - -- -+ - - - -@@ -261,7 +261,7 @@ - - - -- -+ - - - -@@ -274,7 +274,7 @@ - - - -- -+ - - - -@@ -290,7 +290,7 @@ - - - -- -+ - - - -@@ -299,7 +299,7 @@ - - - -- -+ - - - -@@ -315,7 +315,7 @@ - - - -- -+ - - - -@@ -324,7 +324,7 @@ - - - -- -+ - - - -@@ -340,7 +340,7 @@ - - - -- -+ - - - -@@ -349,7 +349,7 @@ - - - -- -+ - - - -@@ -362,7 +362,7 @@ - - - -- -+ - - - -@@ -378,7 +378,7 @@ - - - -- -+ - - - -@@ -435,7 +435,7 @@ - - - -- -+ - - - -@@ -444,7 +444,7 @@ - - - -- -+ - - - -@@ -457,7 +457,7 @@ - - - -- -+ - - - -@@ -470,7 +470,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc-sets-clone.exp b/pengine/test10/rsc-sets-clone.exp -index 1b8bbbf..7a36e97 100644 ---- a/pengine/test10/rsc-sets-clone.exp -+++ b/pengine/test10/rsc-sets-clone.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,7 +47,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc-sets-master.exp b/pengine/test10/rsc-sets-master.exp -index 160ad52..efedf4b 100644 ---- a/pengine/test10/rsc-sets-master.exp -+++ b/pengine/test10/rsc-sets-master.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -157,7 +157,7 @@ - - - -- -+ - - - -@@ -173,7 +173,7 @@ - - - -- -+ - - - -@@ -182,7 +182,7 @@ - - - -- -+ - - - -@@ -198,7 +198,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc-sets-seq-false.exp b/pengine/test10/rsc-sets-seq-false.exp -index a2e21ff..33a15af 100644 ---- a/pengine/test10/rsc-sets-seq-false.exp -+++ b/pengine/test10/rsc-sets-seq-false.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -159,7 +159,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc-sets-seq-true.exp b/pengine/test10/rsc-sets-seq-true.exp -index d80925b..a4fbb0c 100644 ---- a/pengine/test10/rsc-sets-seq-true.exp -+++ b/pengine/test10/rsc-sets-seq-true.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -103,7 +103,7 @@ - - - -- -+ - - - -@@ -116,7 +116,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -161,7 +161,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc_dep1.exp b/pengine/test10/rsc_dep1.exp -index 5148303..bf2e393 100644 ---- a/pengine/test10/rsc_dep1.exp -+++ b/pengine/test10/rsc_dep1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc_dep10.exp b/pengine/test10/rsc_dep10.exp -index e9be881..a15eb0b 100644 ---- a/pengine/test10/rsc_dep10.exp -+++ b/pengine/test10/rsc_dep10.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc_dep2.exp b/pengine/test10/rsc_dep2.exp -index e0b8d78..a363d82 100644 ---- a/pengine/test10/rsc_dep2.exp -+++ b/pengine/test10/rsc_dep2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc_dep3.exp b/pengine/test10/rsc_dep3.exp -index 352e733..e9fdede 100644 ---- a/pengine/test10/rsc_dep3.exp -+++ b/pengine/test10/rsc_dep3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc_dep4.exp b/pengine/test10/rsc_dep4.exp -index 744a803..cd326d5 100644 ---- a/pengine/test10/rsc_dep4.exp -+++ b/pengine/test10/rsc_dep4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -75,7 +75,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc_dep5.exp b/pengine/test10/rsc_dep5.exp -index 5214410..51ed0ff 100644 ---- a/pengine/test10/rsc_dep5.exp -+++ b/pengine/test10/rsc_dep5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc_dep7.exp b/pengine/test10/rsc_dep7.exp -index ef24d20..056defe 100644 ---- a/pengine/test10/rsc_dep7.exp -+++ b/pengine/test10/rsc_dep7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rsc_dep8.exp b/pengine/test10/rsc_dep8.exp -index e0b8d78..a363d82 100644 ---- a/pengine/test10/rsc_dep8.exp -+++ b/pengine/test10/rsc_dep8.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/simple11.exp b/pengine/test10/simple11.exp -index 2b829cd..496952f 100644 ---- a/pengine/test10/simple11.exp -+++ b/pengine/test10/simple11.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/simple12.exp b/pengine/test10/simple12.exp -index b5f2595..1d7c816 100644 ---- a/pengine/test10/simple12.exp -+++ b/pengine/test10/simple12.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/simple2.exp b/pengine/test10/simple2.exp -index 52309b8..d86378f 100644 ---- a/pengine/test10/simple2.exp -+++ b/pengine/test10/simple2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/simple3.exp b/pengine/test10/simple3.exp -index 442370d..6b04dbe 100644 ---- a/pengine/test10/simple3.exp -+++ b/pengine/test10/simple3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/simple4.exp b/pengine/test10/simple4.exp -index 1252710..080bd96 100644 ---- a/pengine/test10/simple4.exp -+++ b/pengine/test10/simple4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/simple6.exp b/pengine/test10/simple6.exp -index 4f34059..555a61e 100644 ---- a/pengine/test10/simple6.exp -+++ b/pengine/test10/simple6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/simple7.exp b/pengine/test10/simple7.exp -index 34546c4..1e0a6a8 100644 ---- a/pengine/test10/simple7.exp -+++ b/pengine/test10/simple7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -11,7 +11,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/simple8.exp b/pengine/test10/simple8.exp -index f087d38..5479c0f 100644 ---- a/pengine/test10/simple8.exp -+++ b/pengine/test10/simple8.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/site-specific-params.exp b/pengine/test10/site-specific-params.exp -index c2bd587..445167a 100644 ---- a/pengine/test10/site-specific-params.exp -+++ b/pengine/test10/site-specific-params.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -35,7 +35,7 @@ - - - -- -+ - - - -@@ -44,7 +44,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/standby.exp b/pengine/test10/standby.exp -index 922193f..820331a 100644 ---- a/pengine/test10/standby.exp -+++ b/pengine/test10/standby.exp -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -142,7 +142,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -171,7 +171,7 @@ - - - -- -+ - - - -@@ -190,7 +190,7 @@ - - - -- -+ - - - -@@ -277,7 +277,7 @@ - - - -- -+ - - - -@@ -290,7 +290,7 @@ - - - -- -+ - - - -@@ -306,7 +306,7 @@ - - - -- -+ - - - -@@ -322,7 +322,7 @@ - - - -- -+ - - - -@@ -335,7 +335,7 @@ - - - -- -+ - - - -@@ -354,7 +354,7 @@ - - - -- -+ - - - -@@ -370,7 +370,7 @@ - - - -- -+ - - - -@@ -383,7 +383,7 @@ - - - -- -+ - - - -@@ -402,7 +402,7 @@ - - - -- -+ - - - -@@ -418,7 +418,7 @@ - - - -- -+ - - - -@@ -431,7 +431,7 @@ - - - -- -+ - - - -@@ -450,7 +450,7 @@ - - - -- -+ - - - -@@ -466,7 +466,7 @@ - - - -- -+ - - - -@@ -479,7 +479,7 @@ - - - -- -+ - - - -@@ -498,7 +498,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/start-then-stop-with-unfence.exp b/pengine/test10/start-then-stop-with-unfence.exp -index aeee1fc..359f25b 100644 ---- a/pengine/test10/start-then-stop-with-unfence.exp -+++ b/pengine/test10/start-then-stop-with-unfence.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stonith-0.exp b/pengine/test10/stonith-0.exp -index 2acce04..2a830b7 100644 ---- a/pengine/test10/stonith-0.exp -+++ b/pengine/test10/stonith-0.exp -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -149,7 +149,7 @@ - - - -- -+ - - - -@@ -164,7 +164,7 @@ - - - -- -+ - - - -@@ -211,7 +211,7 @@ - - - -- -+ - - - -@@ -224,7 +224,7 @@ - - - -- -+ - - - -@@ -279,7 +279,7 @@ - - - -- -+ - - - -@@ -292,7 +292,7 @@ - - - -- -+ - - - -@@ -320,7 +320,7 @@ - - - -- -+ - - - -@@ -333,7 +333,7 @@ - - - -- -+ - - - -@@ -361,7 +361,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stonith-1.exp b/pengine/test10/stonith-1.exp -index cb4f8b2..f7499ad 100644 ---- a/pengine/test10/stonith-1.exp -+++ b/pengine/test10/stonith-1.exp -@@ -26,7 +26,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -75,7 +75,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -116,7 +116,7 @@ - - - -- -+ - - - -@@ -125,7 +125,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -166,7 +166,7 @@ - - - -- -+ - - - -@@ -175,7 +175,7 @@ - - - -- -+ - - - -@@ -188,7 +188,7 @@ - - - -- -+ - - - -@@ -266,7 +266,7 @@ - - - -- -+ - - - -@@ -279,7 +279,7 @@ - - - -- -+ - - - -@@ -295,7 +295,7 @@ - - - -- -+ - - - -@@ -308,7 +308,7 @@ - - - -- -+ - - - -@@ -324,7 +324,7 @@ - - - -- -+ - - - -@@ -337,7 +337,7 @@ - - - -- -+ - - - -@@ -371,7 +371,7 @@ - - - -- -+ - - - -@@ -384,7 +384,7 @@ - - - -- -+ - - - -@@ -400,7 +400,7 @@ - - - -- -+ - - - -@@ -413,7 +413,7 @@ - - - -- -+ - - - -@@ -429,7 +429,7 @@ - - - -- -+ - - - -@@ -442,7 +442,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stonith-2.exp b/pengine/test10/stonith-2.exp -index 77fd9d8..1828377 100644 ---- a/pengine/test10/stonith-2.exp -+++ b/pengine/test10/stonith-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stonith-3.exp b/pengine/test10/stonith-3.exp -index 0ed288b..de58694 100644 ---- a/pengine/test10/stonith-3.exp -+++ b/pengine/test10/stonith-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stop-failure-with-fencing.exp b/pengine/test10/stop-failure-with-fencing.exp -index 1556a1e..3d8b34a 100644 ---- a/pengine/test10/stop-failure-with-fencing.exp -+++ b/pengine/test10/stop-failure-with-fencing.exp -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-00.exp b/pengine/test10/stopped-monitor-00.exp -index 9c42ed4..007e9f7 100644 ---- a/pengine/test10/stopped-monitor-00.exp -+++ b/pengine/test10/stopped-monitor-00.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-01.exp b/pengine/test10/stopped-monitor-01.exp -index d27c95a..34e19ae 100644 ---- a/pengine/test10/stopped-monitor-01.exp -+++ b/pengine/test10/stopped-monitor-01.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-02.exp b/pengine/test10/stopped-monitor-02.exp -index 5a7a1d1..849b20d 100644 ---- a/pengine/test10/stopped-monitor-02.exp -+++ b/pengine/test10/stopped-monitor-02.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-03.exp b/pengine/test10/stopped-monitor-03.exp -index cde66f7..44a6c68 100644 ---- a/pengine/test10/stopped-monitor-03.exp -+++ b/pengine/test10/stopped-monitor-03.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-08.exp b/pengine/test10/stopped-monitor-08.exp -index 1af3cc3..4673b82 100644 ---- a/pengine/test10/stopped-monitor-08.exp -+++ b/pengine/test10/stopped-monitor-08.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-20.exp b/pengine/test10/stopped-monitor-20.exp -index dff6a3f..2a2bc81 100644 ---- a/pengine/test10/stopped-monitor-20.exp -+++ b/pengine/test10/stopped-monitor-20.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-21.exp b/pengine/test10/stopped-monitor-21.exp -index 0ec964c..36ce99e 100644 ---- a/pengine/test10/stopped-monitor-21.exp -+++ b/pengine/test10/stopped-monitor-21.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-22.exp b/pengine/test10/stopped-monitor-22.exp -index 0d9b5d5..d4b3a48 100644 ---- a/pengine/test10/stopped-monitor-22.exp -+++ b/pengine/test10/stopped-monitor-22.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-23.exp b/pengine/test10/stopped-monitor-23.exp -index 7a10c24..fb85ef9 100644 ---- a/pengine/test10/stopped-monitor-23.exp -+++ b/pengine/test10/stopped-monitor-23.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-25.exp b/pengine/test10/stopped-monitor-25.exp -index 700cb77..059e808 100644 ---- a/pengine/test10/stopped-monitor-25.exp -+++ b/pengine/test10/stopped-monitor-25.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-27.exp b/pengine/test10/stopped-monitor-27.exp -index 700cb77..059e808 100644 ---- a/pengine/test10/stopped-monitor-27.exp -+++ b/pengine/test10/stopped-monitor-27.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-30.exp b/pengine/test10/stopped-monitor-30.exp -index fdf5d9e..ae89df6 100644 ---- a/pengine/test10/stopped-monitor-30.exp -+++ b/pengine/test10/stopped-monitor-30.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/stopped-monitor-31.exp b/pengine/test10/stopped-monitor-31.exp -index 138f5a9..036be84 100644 ---- a/pengine/test10/stopped-monitor-31.exp -+++ b/pengine/test10/stopped-monitor-31.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/systemhealth2.exp b/pengine/test10/systemhealth2.exp -index d0467ec..774f831 100644 ---- a/pengine/test10/systemhealth2.exp -+++ b/pengine/test10/systemhealth2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -95,7 +95,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/systemhealth3.exp b/pengine/test10/systemhealth3.exp -index d0467ec..774f831 100644 ---- a/pengine/test10/systemhealth3.exp -+++ b/pengine/test10/systemhealth3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -95,7 +95,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/systemhealthm2.exp b/pengine/test10/systemhealthm2.exp -index d0467ec..774f831 100644 ---- a/pengine/test10/systemhealthm2.exp -+++ b/pengine/test10/systemhealthm2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -95,7 +95,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/systemhealthm3.exp b/pengine/test10/systemhealthm3.exp -index fefc587..9eb5366 100644 ---- a/pengine/test10/systemhealthm3.exp -+++ b/pengine/test10/systemhealthm3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/systemhealthn2.exp b/pengine/test10/systemhealthn2.exp -index d0467ec..774f831 100644 ---- a/pengine/test10/systemhealthn2.exp -+++ b/pengine/test10/systemhealthn2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -95,7 +95,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/systemhealthn3.exp b/pengine/test10/systemhealthn3.exp -index d0467ec..774f831 100644 ---- a/pengine/test10/systemhealthn3.exp -+++ b/pengine/test10/systemhealthn3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -95,7 +95,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/systemhealtho2.exp b/pengine/test10/systemhealtho2.exp -index fefc587..9eb5366 100644 ---- a/pengine/test10/systemhealtho2.exp -+++ b/pengine/test10/systemhealtho2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/systemhealtho3.exp b/pengine/test10/systemhealtho3.exp -index fefc587..9eb5366 100644 ---- a/pengine/test10/systemhealtho3.exp -+++ b/pengine/test10/systemhealtho3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/systemhealthp2.exp b/pengine/test10/systemhealthp2.exp -index 871600e..f9d92e8 100644 ---- a/pengine/test10/systemhealthp2.exp -+++ b/pengine/test10/systemhealthp2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/systemhealthp3.exp b/pengine/test10/systemhealthp3.exp -index fefc587..9eb5366 100644 ---- a/pengine/test10/systemhealthp3.exp -+++ b/pengine/test10/systemhealthp3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/tags-coloc-order-1.exp b/pengine/test10/tags-coloc-order-1.exp -index 692886e..88f7a77 100644 ---- a/pengine/test10/tags-coloc-order-1.exp -+++ b/pengine/test10/tags-coloc-order-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/tags-coloc-order-2.exp b/pengine/test10/tags-coloc-order-2.exp -index 5ae7dab..385e758 100644 ---- a/pengine/test10/tags-coloc-order-2.exp -+++ b/pengine/test10/tags-coloc-order-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -@@ -176,7 +176,7 @@ - - - -- -+ - - - -@@ -185,7 +185,7 @@ - - - -- -+ - - - -@@ -204,7 +204,7 @@ - - - -- -+ - - - -@@ -213,7 +213,7 @@ - - - -- -+ - - - -@@ -222,7 +222,7 @@ - - - -- -+ - - - -@@ -241,7 +241,7 @@ - - - -- -+ - - - -@@ -250,7 +250,7 @@ - - - -- -+ - - - -@@ -259,7 +259,7 @@ - - - -- -+ - - - -@@ -278,7 +278,7 @@ - - - -- -+ - - - -@@ -287,7 +287,7 @@ - - - -- -+ - - - -@@ -296,7 +296,7 @@ - - - -- -+ - - - -@@ -315,7 +315,7 @@ - - - -- -+ - - - -@@ -324,7 +324,7 @@ - - - -- -+ - - - -@@ -333,7 +333,7 @@ - - - -- -+ - - - -@@ -352,7 +352,7 @@ - - - -- -+ - - - -@@ -361,7 +361,7 @@ - - - -- -+ - - - -@@ -370,7 +370,7 @@ - - - -- -+ - - - -@@ -389,7 +389,7 @@ - - - -- -+ - - - -@@ -398,7 +398,7 @@ - - - -- -+ - - - -@@ -407,7 +407,7 @@ - - - -- -+ - - - -@@ -426,7 +426,7 @@ - - - -- -+ - - - -@@ -435,7 +435,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/tags-location.exp b/pengine/test10/tags-location.exp -index 2590c53..ad8ea50 100644 ---- a/pengine/test10/tags-location.exp -+++ b/pengine/test10/tags-location.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -155,7 +155,7 @@ - - - -- -+ - - - -@@ -164,7 +164,7 @@ - - - -- -+ - - - -@@ -173,7 +173,7 @@ - - - -- -+ - - - -@@ -189,7 +189,7 @@ - - - -- -+ - - - -@@ -198,7 +198,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/tags-ticket.exp b/pengine/test10/tags-ticket.exp -index 3fd8737..d2b6b6d 100644 ---- a/pengine/test10/tags-ticket.exp -+++ b/pengine/test10/tags-ticket.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/target-0.exp b/pengine/test10/target-0.exp -index 889f37c..9b2e65d 100644 ---- a/pengine/test10/target-0.exp -+++ b/pengine/test10/target-0.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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/target-1.exp b/pengine/test10/target-1.exp -index 48358af..70d7f75 100644 ---- a/pengine/test10/target-1.exp -+++ b/pengine/test10/target-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -49,7 +49,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -76,7 +76,7 @@ - - - -- -+ - - - -@@ -85,7 +85,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -103,7 +103,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/target-2.exp b/pengine/test10/target-2.exp -index 878db83..63a8eec 100644 ---- a/pengine/test10/target-2.exp -+++ b/pengine/test10/target-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -49,7 +49,7 @@ - - - -- -+ - - - -@@ -58,7 +58,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -76,7 +76,7 @@ - - - -- -+ - - - -@@ -85,7 +85,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -@@ -103,7 +103,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-1.exp b/pengine/test10/template-1.exp -index 3596e80..5d54900 100644 ---- a/pengine/test10/template-1.exp -+++ b/pengine/test10/template-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-2.exp b/pengine/test10/template-2.exp -index 4707262..712b6e3 100644 ---- a/pengine/test10/template-2.exp -+++ b/pengine/test10/template-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-3.exp b/pengine/test10/template-3.exp -index bdff87f..63f880b 100644 ---- a/pengine/test10/template-3.exp -+++ b/pengine/test10/template-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -48,7 +48,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -92,7 +92,7 @@ - - - -- -+ - - - -@@ -111,7 +111,7 @@ - - - -- -+ - - - -@@ -120,7 +120,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-clone-group.exp b/pengine/test10/template-clone-group.exp -index 985256b..ee137e4 100644 ---- a/pengine/test10/template-clone-group.exp -+++ b/pengine/test10/template-clone-group.exp -@@ -33,7 +33,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-clone-primitive.exp b/pengine/test10/template-clone-primitive.exp -index ee7607b..5e1d6aa 100644 ---- a/pengine/test10/template-clone-primitive.exp -+++ b/pengine/test10/template-clone-primitive.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-coloc-1.exp b/pengine/test10/template-coloc-1.exp -index 7978164..2a0bda5 100644 ---- a/pengine/test10/template-coloc-1.exp -+++ b/pengine/test10/template-coloc-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-coloc-2.exp b/pengine/test10/template-coloc-2.exp -index 7978164..2a0bda5 100644 ---- a/pengine/test10/template-coloc-2.exp -+++ b/pengine/test10/template-coloc-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-coloc-3.exp b/pengine/test10/template-coloc-3.exp -index 143c330..d71f9c3 100644 ---- a/pengine/test10/template-coloc-3.exp -+++ b/pengine/test10/template-coloc-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -155,7 +155,7 @@ - - - -- -+ - - - -@@ -164,7 +164,7 @@ - - - -- -+ - - - -@@ -173,7 +173,7 @@ - - - -- -+ - - - -@@ -189,7 +189,7 @@ - - - -- -+ - - - -@@ -198,7 +198,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-order-1.exp b/pengine/test10/template-order-1.exp -index b7e5e81..1346296 100644 ---- a/pengine/test10/template-order-1.exp -+++ b/pengine/test10/template-order-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-order-2.exp b/pengine/test10/template-order-2.exp -index e556f05..0fbdce8 100644 ---- a/pengine/test10/template-order-2.exp -+++ b/pengine/test10/template-order-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-order-3.exp b/pengine/test10/template-order-3.exp -index e040ddb..482bc17 100644 ---- a/pengine/test10/template-order-3.exp -+++ b/pengine/test10/template-order-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -157,7 +157,7 @@ - - - -- -+ - - - -@@ -166,7 +166,7 @@ - - - -- -+ - - - -@@ -182,7 +182,7 @@ - - - -- -+ - - - -@@ -191,7 +191,7 @@ - - - -- -+ - - - -@@ -200,7 +200,7 @@ - - - -- -+ - - - -@@ -216,7 +216,7 @@ - - - -- -+ - - - -@@ -225,7 +225,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-rsc-sets-1.exp b/pengine/test10/template-rsc-sets-1.exp -index 3e8b72d..8626e4d 100644 ---- a/pengine/test10/template-rsc-sets-1.exp -+++ b/pengine/test10/template-rsc-sets-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -@@ -176,7 +176,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-rsc-sets-2.exp b/pengine/test10/template-rsc-sets-2.exp -index 6f5f762..6e17f4b 100644 ---- a/pengine/test10/template-rsc-sets-2.exp -+++ b/pengine/test10/template-rsc-sets-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -173,7 +173,7 @@ - - - -- -+ - - - -@@ -182,7 +182,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-rsc-sets-3.exp b/pengine/test10/template-rsc-sets-3.exp -index 3e8b72d..8626e4d 100644 ---- a/pengine/test10/template-rsc-sets-3.exp -+++ b/pengine/test10/template-rsc-sets-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -59,7 +59,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -148,7 +148,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -@@ -176,7 +176,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-rsc-sets-4.exp b/pengine/test10/template-rsc-sets-4.exp -index 5ae9909..fc7ef83 100644 ---- a/pengine/test10/template-rsc-sets-4.exp -+++ b/pengine/test10/template-rsc-sets-4.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 @@ - - - -- -+ - - - -diff --git a/pengine/test10/template-ticket.exp b/pengine/test10/template-ticket.exp -index 5ae9909..fc7ef83 100644 ---- a/pengine/test10/template-ticket.exp -+++ b/pengine/test10/template-ticket.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 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-1.exp b/pengine/test10/ticket-clone-1.exp -index 2f99893..030cd37 100644 ---- a/pengine/test10/ticket-clone-1.exp -+++ b/pengine/test10/ticket-clone-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-10.exp b/pengine/test10/ticket-clone-10.exp -index 2f99893..030cd37 100644 ---- a/pengine/test10/ticket-clone-10.exp -+++ b/pengine/test10/ticket-clone-10.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-11.exp b/pengine/test10/ticket-clone-11.exp -index c05e84d..1a0ddf0 100644 ---- a/pengine/test10/ticket-clone-11.exp -+++ b/pengine/test10/ticket-clone-11.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-14.exp b/pengine/test10/ticket-clone-14.exp -index 00153d1..c2fcb25 100644 ---- a/pengine/test10/ticket-clone-14.exp -+++ b/pengine/test10/ticket-clone-14.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-15.exp b/pengine/test10/ticket-clone-15.exp -index 00153d1..c2fcb25 100644 ---- a/pengine/test10/ticket-clone-15.exp -+++ b/pengine/test10/ticket-clone-15.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-17.exp b/pengine/test10/ticket-clone-17.exp -index 00153d1..c2fcb25 100644 ---- a/pengine/test10/ticket-clone-17.exp -+++ b/pengine/test10/ticket-clone-17.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-18.exp b/pengine/test10/ticket-clone-18.exp -index 00153d1..c2fcb25 100644 ---- a/pengine/test10/ticket-clone-18.exp -+++ b/pengine/test10/ticket-clone-18.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-2.exp b/pengine/test10/ticket-clone-2.exp -index c05e84d..1a0ddf0 100644 ---- a/pengine/test10/ticket-clone-2.exp -+++ b/pengine/test10/ticket-clone-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-20.exp b/pengine/test10/ticket-clone-20.exp -index 00153d1..c2fcb25 100644 ---- a/pengine/test10/ticket-clone-20.exp -+++ b/pengine/test10/ticket-clone-20.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-23.exp b/pengine/test10/ticket-clone-23.exp -index 00153d1..c2fcb25 100644 ---- a/pengine/test10/ticket-clone-23.exp -+++ b/pengine/test10/ticket-clone-23.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-3.exp b/pengine/test10/ticket-clone-3.exp -index 00153d1..c2fcb25 100644 ---- a/pengine/test10/ticket-clone-3.exp -+++ b/pengine/test10/ticket-clone-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-4.exp b/pengine/test10/ticket-clone-4.exp -index 2f99893..030cd37 100644 ---- a/pengine/test10/ticket-clone-4.exp -+++ b/pengine/test10/ticket-clone-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-5.exp b/pengine/test10/ticket-clone-5.exp -index c05e84d..1a0ddf0 100644 ---- a/pengine/test10/ticket-clone-5.exp -+++ b/pengine/test10/ticket-clone-5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-6.exp b/pengine/test10/ticket-clone-6.exp -index 00153d1..c2fcb25 100644 ---- a/pengine/test10/ticket-clone-6.exp -+++ b/pengine/test10/ticket-clone-6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-7.exp b/pengine/test10/ticket-clone-7.exp -index 2f99893..030cd37 100644 ---- a/pengine/test10/ticket-clone-7.exp -+++ b/pengine/test10/ticket-clone-7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-clone-8.exp b/pengine/test10/ticket-clone-8.exp -index c05e84d..1a0ddf0 100644 ---- a/pengine/test10/ticket-clone-8.exp -+++ b/pengine/test10/ticket-clone-8.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-1.exp b/pengine/test10/ticket-group-1.exp -index e23553a..4283891 100644 ---- a/pengine/test10/ticket-group-1.exp -+++ b/pengine/test10/ticket-group-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-10.exp b/pengine/test10/ticket-group-10.exp -index e23553a..4283891 100644 ---- a/pengine/test10/ticket-group-10.exp -+++ b/pengine/test10/ticket-group-10.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-11.exp b/pengine/test10/ticket-group-11.exp -index 0253118..e019e1b 100644 ---- a/pengine/test10/ticket-group-11.exp -+++ b/pengine/test10/ticket-group-11.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-14.exp b/pengine/test10/ticket-group-14.exp -index b6c6b02..173635c 100644 ---- a/pengine/test10/ticket-group-14.exp -+++ b/pengine/test10/ticket-group-14.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-15.exp b/pengine/test10/ticket-group-15.exp -index b6c6b02..173635c 100644 ---- a/pengine/test10/ticket-group-15.exp -+++ b/pengine/test10/ticket-group-15.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-17.exp b/pengine/test10/ticket-group-17.exp -index b6c6b02..173635c 100644 ---- a/pengine/test10/ticket-group-17.exp -+++ b/pengine/test10/ticket-group-17.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-18.exp b/pengine/test10/ticket-group-18.exp -index b6c6b02..173635c 100644 ---- a/pengine/test10/ticket-group-18.exp -+++ b/pengine/test10/ticket-group-18.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-2.exp b/pengine/test10/ticket-group-2.exp -index 0253118..e019e1b 100644 ---- a/pengine/test10/ticket-group-2.exp -+++ b/pengine/test10/ticket-group-2.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-20.exp b/pengine/test10/ticket-group-20.exp -index b6c6b02..173635c 100644 ---- a/pengine/test10/ticket-group-20.exp -+++ b/pengine/test10/ticket-group-20.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-23.exp b/pengine/test10/ticket-group-23.exp -index b6c6b02..173635c 100644 ---- a/pengine/test10/ticket-group-23.exp -+++ b/pengine/test10/ticket-group-23.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-3.exp b/pengine/test10/ticket-group-3.exp -index b6c6b02..173635c 100644 ---- a/pengine/test10/ticket-group-3.exp -+++ b/pengine/test10/ticket-group-3.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-4.exp b/pengine/test10/ticket-group-4.exp -index e23553a..4283891 100644 ---- a/pengine/test10/ticket-group-4.exp -+++ b/pengine/test10/ticket-group-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-5.exp b/pengine/test10/ticket-group-5.exp -index 0253118..e019e1b 100644 ---- a/pengine/test10/ticket-group-5.exp -+++ b/pengine/test10/ticket-group-5.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-6.exp b/pengine/test10/ticket-group-6.exp -index b6c6b02..173635c 100644 ---- a/pengine/test10/ticket-group-6.exp -+++ b/pengine/test10/ticket-group-6.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-7.exp b/pengine/test10/ticket-group-7.exp -index e23553a..4283891 100644 ---- a/pengine/test10/ticket-group-7.exp -+++ b/pengine/test10/ticket-group-7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -21,7 +21,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-group-8.exp b/pengine/test10/ticket-group-8.exp -index 0253118..e019e1b 100644 ---- a/pengine/test10/ticket-group-8.exp -+++ b/pengine/test10/ticket-group-8.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -68,7 +68,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-1.exp b/pengine/test10/ticket-master-1.exp -index ac2599e..89db25b 100644 ---- a/pengine/test10/ticket-master-1.exp -+++ b/pengine/test10/ticket-master-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-10.exp b/pengine/test10/ticket-master-10.exp -index 0678771..959cf2e 100644 ---- a/pengine/test10/ticket-master-10.exp -+++ b/pengine/test10/ticket-master-10.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-11.exp b/pengine/test10/ticket-master-11.exp -index 5206041..e0286fd 100644 ---- a/pengine/test10/ticket-master-11.exp -+++ b/pengine/test10/ticket-master-11.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-14.exp b/pengine/test10/ticket-master-14.exp -index a80e0b9..1b83773 100644 ---- a/pengine/test10/ticket-master-14.exp -+++ b/pengine/test10/ticket-master-14.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-15.exp b/pengine/test10/ticket-master-15.exp -index a80e0b9..1b83773 100644 ---- a/pengine/test10/ticket-master-15.exp -+++ b/pengine/test10/ticket-master-15.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-17.exp b/pengine/test10/ticket-master-17.exp -index 298a9b7..860a37e 100644 ---- a/pengine/test10/ticket-master-17.exp -+++ b/pengine/test10/ticket-master-17.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-18.exp b/pengine/test10/ticket-master-18.exp -index 298a9b7..860a37e 100644 ---- a/pengine/test10/ticket-master-18.exp -+++ b/pengine/test10/ticket-master-18.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-2.exp b/pengine/test10/ticket-master-2.exp -index e9f030b..847adfd 100644 ---- a/pengine/test10/ticket-master-2.exp -+++ b/pengine/test10/ticket-master-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-20.exp b/pengine/test10/ticket-master-20.exp -index 298a9b7..860a37e 100644 ---- a/pengine/test10/ticket-master-20.exp -+++ b/pengine/test10/ticket-master-20.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-21.exp b/pengine/test10/ticket-master-21.exp -index bab7e54..71e57be 100644 ---- a/pengine/test10/ticket-master-21.exp -+++ b/pengine/test10/ticket-master-21.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-23.exp b/pengine/test10/ticket-master-23.exp -index 298a9b7..860a37e 100644 ---- a/pengine/test10/ticket-master-23.exp -+++ b/pengine/test10/ticket-master-23.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-3.exp b/pengine/test10/ticket-master-3.exp -index a80e0b9..1b83773 100644 ---- a/pengine/test10/ticket-master-3.exp -+++ b/pengine/test10/ticket-master-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-4.exp b/pengine/test10/ticket-master-4.exp -index 0678771..959cf2e 100644 ---- a/pengine/test10/ticket-master-4.exp -+++ b/pengine/test10/ticket-master-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-5.exp b/pengine/test10/ticket-master-5.exp -index 5206041..e0286fd 100644 ---- a/pengine/test10/ticket-master-5.exp -+++ b/pengine/test10/ticket-master-5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-6.exp b/pengine/test10/ticket-master-6.exp -index 298a9b7..860a37e 100644 ---- a/pengine/test10/ticket-master-6.exp -+++ b/pengine/test10/ticket-master-6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-7.exp b/pengine/test10/ticket-master-7.exp -index 0678771..959cf2e 100644 ---- a/pengine/test10/ticket-master-7.exp -+++ b/pengine/test10/ticket-master-7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-8.exp b/pengine/test10/ticket-master-8.exp -index 5206041..e0286fd 100644 ---- a/pengine/test10/ticket-master-8.exp -+++ b/pengine/test10/ticket-master-8.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-master-9.exp b/pengine/test10/ticket-master-9.exp -index bab7e54..71e57be 100644 ---- a/pengine/test10/ticket-master-9.exp -+++ b/pengine/test10/ticket-master-9.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-1.exp b/pengine/test10/ticket-primitive-1.exp -index a18f6bc..2266d73 100644 ---- a/pengine/test10/ticket-primitive-1.exp -+++ b/pengine/test10/ticket-primitive-1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-10.exp b/pengine/test10/ticket-primitive-10.exp -index a18f6bc..2266d73 100644 ---- a/pengine/test10/ticket-primitive-10.exp -+++ b/pengine/test10/ticket-primitive-10.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-11.exp b/pengine/test10/ticket-primitive-11.exp -index 4a0b8e9..8d65f90 100644 ---- a/pengine/test10/ticket-primitive-11.exp -+++ b/pengine/test10/ticket-primitive-11.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-14.exp b/pengine/test10/ticket-primitive-14.exp -index 0627756..9f9d84f 100644 ---- a/pengine/test10/ticket-primitive-14.exp -+++ b/pengine/test10/ticket-primitive-14.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-15.exp b/pengine/test10/ticket-primitive-15.exp -index 0627756..9f9d84f 100644 ---- a/pengine/test10/ticket-primitive-15.exp -+++ b/pengine/test10/ticket-primitive-15.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-17.exp b/pengine/test10/ticket-primitive-17.exp -index 0627756..9f9d84f 100644 ---- a/pengine/test10/ticket-primitive-17.exp -+++ b/pengine/test10/ticket-primitive-17.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-18.exp b/pengine/test10/ticket-primitive-18.exp -index 0627756..9f9d84f 100644 ---- a/pengine/test10/ticket-primitive-18.exp -+++ b/pengine/test10/ticket-primitive-18.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-2.exp b/pengine/test10/ticket-primitive-2.exp -index 4a0b8e9..8d65f90 100644 ---- a/pengine/test10/ticket-primitive-2.exp -+++ b/pengine/test10/ticket-primitive-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-20.exp b/pengine/test10/ticket-primitive-20.exp -index 0627756..9f9d84f 100644 ---- a/pengine/test10/ticket-primitive-20.exp -+++ b/pengine/test10/ticket-primitive-20.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-23.exp b/pengine/test10/ticket-primitive-23.exp -index 0627756..9f9d84f 100644 ---- a/pengine/test10/ticket-primitive-23.exp -+++ b/pengine/test10/ticket-primitive-23.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-3.exp b/pengine/test10/ticket-primitive-3.exp -index 0627756..9f9d84f 100644 ---- a/pengine/test10/ticket-primitive-3.exp -+++ b/pengine/test10/ticket-primitive-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-4.exp b/pengine/test10/ticket-primitive-4.exp -index a18f6bc..2266d73 100644 ---- a/pengine/test10/ticket-primitive-4.exp -+++ b/pengine/test10/ticket-primitive-4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-5.exp b/pengine/test10/ticket-primitive-5.exp -index 4a0b8e9..8d65f90 100644 ---- a/pengine/test10/ticket-primitive-5.exp -+++ b/pengine/test10/ticket-primitive-5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-6.exp b/pengine/test10/ticket-primitive-6.exp -index 0627756..9f9d84f 100644 ---- a/pengine/test10/ticket-primitive-6.exp -+++ b/pengine/test10/ticket-primitive-6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-7.exp b/pengine/test10/ticket-primitive-7.exp -index a18f6bc..2266d73 100644 ---- a/pengine/test10/ticket-primitive-7.exp -+++ b/pengine/test10/ticket-primitive-7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-primitive-8.exp b/pengine/test10/ticket-primitive-8.exp -index 4a0b8e9..8d65f90 100644 ---- a/pengine/test10/ticket-primitive-8.exp -+++ b/pengine/test10/ticket-primitive-8.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-rsc-sets-1.exp b/pengine/test10/ticket-rsc-sets-1.exp -index dd91506..08397eb 100644 ---- a/pengine/test10/ticket-rsc-sets-1.exp -+++ b/pengine/test10/ticket-rsc-sets-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 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-rsc-sets-10.exp b/pengine/test10/ticket-rsc-sets-10.exp -index a1925a6..faf7fa8 100644 ---- a/pengine/test10/ticket-rsc-sets-10.exp -+++ b/pengine/test10/ticket-rsc-sets-10.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-rsc-sets-12.exp b/pengine/test10/ticket-rsc-sets-12.exp -index 2411c8e..da58df0 100644 ---- a/pengine/test10/ticket-rsc-sets-12.exp -+++ b/pengine/test10/ticket-rsc-sets-12.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-rsc-sets-13.exp b/pengine/test10/ticket-rsc-sets-13.exp -index a1925a6..faf7fa8 100644 ---- a/pengine/test10/ticket-rsc-sets-13.exp -+++ b/pengine/test10/ticket-rsc-sets-13.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-rsc-sets-14.exp b/pengine/test10/ticket-rsc-sets-14.exp -index a1925a6..faf7fa8 100644 ---- a/pengine/test10/ticket-rsc-sets-14.exp -+++ b/pengine/test10/ticket-rsc-sets-14.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-rsc-sets-2.exp b/pengine/test10/ticket-rsc-sets-2.exp -index f7d13b5..fd16839 100644 ---- a/pengine/test10/ticket-rsc-sets-2.exp -+++ b/pengine/test10/ticket-rsc-sets-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -106,7 +106,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -145,7 +145,7 @@ - - - -- -+ - - - -@@ -184,7 +184,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-rsc-sets-3.exp b/pengine/test10/ticket-rsc-sets-3.exp -index a1925a6..faf7fa8 100644 ---- a/pengine/test10/ticket-rsc-sets-3.exp -+++ b/pengine/test10/ticket-rsc-sets-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-rsc-sets-4.exp b/pengine/test10/ticket-rsc-sets-4.exp -index dd91506..08397eb 100644 ---- a/pengine/test10/ticket-rsc-sets-4.exp -+++ b/pengine/test10/ticket-rsc-sets-4.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 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -110,7 +110,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-rsc-sets-5.exp b/pengine/test10/ticket-rsc-sets-5.exp -index 5453cab..c5dfec2 100644 ---- a/pengine/test10/ticket-rsc-sets-5.exp -+++ b/pengine/test10/ticket-rsc-sets-5.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-rsc-sets-6.exp b/pengine/test10/ticket-rsc-sets-6.exp -index f806a77..d356a7e 100644 ---- a/pengine/test10/ticket-rsc-sets-6.exp -+++ b/pengine/test10/ticket-rsc-sets-6.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-rsc-sets-7.exp b/pengine/test10/ticket-rsc-sets-7.exp -index a1925a6..faf7fa8 100644 ---- a/pengine/test10/ticket-rsc-sets-7.exp -+++ b/pengine/test10/ticket-rsc-sets-7.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/ticket-rsc-sets-9.exp b/pengine/test10/ticket-rsc-sets-9.exp -index a1925a6..faf7fa8 100644 ---- a/pengine/test10/ticket-rsc-sets-9.exp -+++ b/pengine/test10/ticket-rsc-sets-9.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -119,7 +119,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/unfence-definition.exp b/pengine/test10/unfence-definition.exp -index 64b9735..46d5883 100644 ---- a/pengine/test10/unfence-definition.exp -+++ b/pengine/test10/unfence-definition.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -86,7 +86,7 @@ - - - -- -+ - - - -@@ -102,7 +102,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -190,7 +190,7 @@ - - - -- -+ - - - -@@ -215,7 +215,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -247,7 +247,7 @@ - - - -- -+ - - - -@@ -256,7 +256,7 @@ - - - -- -+ - - - -@@ -281,7 +281,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/unfence-parameters.exp b/pengine/test10/unfence-parameters.exp -index 16aa30d..ffc20c0 100644 ---- a/pengine/test10/unfence-parameters.exp -+++ b/pengine/test10/unfence-parameters.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -48,7 +48,7 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -89,7 +89,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -149,7 +149,7 @@ - - - -- -+ - - - -@@ -224,7 +224,7 @@ - - - -- -+ - - - -@@ -249,7 +249,7 @@ - - - -- -+ - - - -@@ -262,7 +262,7 @@ - - - -- -+ - - - -@@ -287,7 +287,7 @@ - - - -- -+ - - - -@@ -296,7 +296,7 @@ - - - -- -+ - - - -@@ -321,7 +321,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/unfence-startup.exp b/pengine/test10/unfence-startup.exp -index 569fd12..a13ffca 100644 ---- a/pengine/test10/unfence-startup.exp -+++ b/pengine/test10/unfence-startup.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -35,7 +35,7 @@ - - - -- -+ - - - -@@ -71,7 +71,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/unmanaged-block-restart.exp b/pengine/test10/unmanaged-block-restart.exp -index 4bac47f..56d357e 100644 ---- a/pengine/test10/unmanaged-block-restart.exp -+++ b/pengine/test10/unmanaged-block-restart.exp -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/unmanaged-master.exp b/pengine/test10/unmanaged-master.exp -index ed078c2..8463211 100644 ---- a/pengine/test10/unmanaged-master.exp -+++ b/pengine/test10/unmanaged-master.exp -@@ -2,7 +2,7 @@ - - - -- -+ - - - -@@ -13,7 +13,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/unrunnable-1.exp b/pengine/test10/unrunnable-1.exp -index 1e6fa47..56fb4c0 100644 ---- a/pengine/test10/unrunnable-1.exp -+++ b/pengine/test10/unrunnable-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 @@ - - - -- -+ - - - -@@ -84,7 +84,7 @@ - - - -- -+ - - - -@@ -93,7 +93,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/use-after-free-merge.exp b/pengine/test10/use-after-free-merge.exp -index 2981f6d..f50713e 100644 ---- a/pengine/test10/use-after-free-merge.exp -+++ b/pengine/test10/use-after-free-merge.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -86,7 +86,7 @@ - - - -- -+ - - - -@@ -95,7 +95,7 @@ - - - -- -+ - - - -@@ -108,7 +108,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/utilization-check-allowed-nodes.exp b/pengine/test10/utilization-check-allowed-nodes.exp -index c91fb33..df6a80b 100644 ---- a/pengine/test10/utilization-check-allowed-nodes.exp -+++ b/pengine/test10/utilization-check-allowed-nodes.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/utilization-order1.exp b/pengine/test10/utilization-order1.exp -index c5b32bf..e1bc784 100644 ---- a/pengine/test10/utilization-order1.exp -+++ b/pengine/test10/utilization-order1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/utilization-order2.exp b/pengine/test10/utilization-order2.exp -index a37582b..74abbbd 100644 ---- a/pengine/test10/utilization-order2.exp -+++ b/pengine/test10/utilization-order2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/utilization-order3.exp b/pengine/test10/utilization-order3.exp -index 11c2937..bef1f82 100644 ---- a/pengine/test10/utilization-order3.exp -+++ b/pengine/test10/utilization-order3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/utilization-order4.exp b/pengine/test10/utilization-order4.exp -index 39a30d0..22bbf83 100644 ---- a/pengine/test10/utilization-order4.exp -+++ b/pengine/test10/utilization-order4.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -60,7 +60,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -115,7 +115,7 @@ - - - -- -+ - - - -@@ -131,7 +131,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -190,7 +190,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/utilization-shuffle.exp b/pengine/test10/utilization-shuffle.exp -index bb99a9e..75f6477 100644 ---- a/pengine/test10/utilization-shuffle.exp -+++ b/pengine/test10/utilization-shuffle.exp -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -128,7 +128,7 @@ - - - -- -+ - - - -@@ -141,7 +141,7 @@ - - - -- -+ - - - -@@ -157,7 +157,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -199,7 +199,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/utilization.exp b/pengine/test10/utilization.exp -index c028e6c..6b6232c 100644 ---- a/pengine/test10/utilization.exp -+++ b/pengine/test10/utilization.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -49,7 +49,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-asymmetric.exp b/pengine/test10/whitebox-asymmetric.exp -index 5149fa3..67d6c76 100644 ---- a/pengine/test10/whitebox-asymmetric.exp -+++ b/pengine/test10/whitebox-asymmetric.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-fail1.exp b/pengine/test10/whitebox-fail1.exp -index 03e83c3..7ac3a19 100644 ---- a/pengine/test10/whitebox-fail1.exp -+++ b/pengine/test10/whitebox-fail1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -48,7 +48,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -155,7 +155,7 @@ - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -205,7 +205,7 @@ - - - -- -+ - - - -@@ -217,7 +217,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-fail2.exp b/pengine/test10/whitebox-fail2.exp -index 03e83c3..7ac3a19 100644 ---- a/pengine/test10/whitebox-fail2.exp -+++ b/pengine/test10/whitebox-fail2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -48,7 +48,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -155,7 +155,7 @@ - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -205,7 +205,7 @@ - - - -- -+ - - - -@@ -217,7 +217,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-fail3.exp b/pengine/test10/whitebox-fail3.exp -index 388e73c..1cbd24a 100644 ---- a/pengine/test10/whitebox-fail3.exp -+++ b/pengine/test10/whitebox-fail3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -92,7 +92,7 @@ - - - -- -+ - - - -@@ -108,7 +108,7 @@ - - - -- -+ - - - -@@ -147,7 +147,7 @@ - - - -- -+ - - - -@@ -160,7 +160,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.exp b/pengine/test10/whitebox-imply-stop-on-fence.exp -index e38f4ea..d248d8d 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.exp -+++ b/pengine/test10/whitebox-imply-stop-on-fence.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -184,7 +184,7 @@ - - - -- -+ - - - -@@ -197,7 +197,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -241,7 +241,7 @@ - - - -- -+ - - - -@@ -272,7 +272,7 @@ - - - -- -+ - - - -@@ -288,7 +288,7 @@ - - - -- -+ - - - -@@ -319,7 +319,7 @@ - - - -- -+ - - - -@@ -332,7 +332,7 @@ - - - -- -+ - - - -@@ -363,7 +363,7 @@ - - - -- -+ - - - -@@ -376,7 +376,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-migrate1.exp b/pengine/test10/whitebox-migrate1.exp -index f650c46..6ce29eb 100644 ---- a/pengine/test10/whitebox-migrate1.exp -+++ b/pengine/test10/whitebox-migrate1.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -86,7 +86,7 @@ - - - -- -+ - - - -@@ -95,7 +95,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -139,7 +139,7 @@ - - - -- -+ - - - -@@ -152,7 +152,7 @@ - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -196,7 +196,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-move.exp b/pengine/test10/whitebox-move.exp -index a3c5aa8..d72a767 100644 ---- a/pengine/test10/whitebox-move.exp -+++ b/pengine/test10/whitebox-move.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -48,7 +48,7 @@ - - - -- -+ - - - -@@ -61,7 +61,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -152,7 +152,7 @@ - - - -- -+ - - - -@@ -168,7 +168,7 @@ - - - -- -+ - - - -@@ -181,7 +181,7 @@ - - - -- -+ - - - -@@ -197,7 +197,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-ms-ordering-move.exp b/pengine/test10/whitebox-ms-ordering-move.exp -index c2a4f54..54067f0 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.exp -+++ b/pengine/test10/whitebox-ms-ordering-move.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -80,7 +80,7 @@ - - - -- -+ - - - -@@ -209,7 +209,7 @@ - - - -- -+ - - - -@@ -222,7 +222,7 @@ - - - -- -+ - - - -@@ -238,7 +238,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-ms-ordering.exp b/pengine/test10/whitebox-ms-ordering.exp -index 7aecfba..5d32d6f 100644 ---- a/pengine/test10/whitebox-ms-ordering.exp -+++ b/pengine/test10/whitebox-ms-ordering.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -34,7 +34,7 @@ - - - -- -+ - - - -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -92,7 +92,7 @@ - - - -- -+ - - - -@@ -101,7 +101,7 @@ - - - -- -+ - - - -@@ -126,7 +126,7 @@ - - - -- -+ - - - -@@ -190,7 +190,7 @@ - - - -- -+ - - - -@@ -199,7 +199,7 @@ - - - -- -+ - - - -@@ -208,7 +208,7 @@ - - - -- -+ - - - -@@ -217,7 +217,7 @@ - - - -- -+ - - - -@@ -233,7 +233,7 @@ - - - -- -+ - - - -@@ -401,7 +401,7 @@ - - - -- -+ - - - -@@ -414,7 +414,7 @@ - - - -- -+ - - - -@@ -430,7 +430,7 @@ - - - -- -+ - - - -@@ -443,7 +443,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-nested-group.exp b/pengine/test10/whitebox-nested-group.exp -index ef80271..67767d3 100644 ---- a/pengine/test10/whitebox-nested-group.exp -+++ b/pengine/test10/whitebox-nested-group.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -35,7 +35,7 @@ - - - -- -+ - - - -@@ -44,7 +44,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -100,7 +100,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -118,7 +118,7 @@ - - - -- -+ - - - -@@ -127,7 +127,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -@@ -159,7 +159,7 @@ - - - -- -+ - - - -@@ -168,7 +168,7 @@ - - - -- -+ - - - -@@ -177,7 +177,7 @@ - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -199,7 +199,7 @@ - - - -- -+ - - - -@@ -218,7 +218,7 @@ - - - -- -+ - - - -@@ -227,7 +227,7 @@ - - - -- -+ - - - -@@ -236,7 +236,7 @@ - - - -- -+ - - - -@@ -245,7 +245,7 @@ - - - -- -+ - - - -@@ -261,7 +261,7 @@ - - - -- -+ - - - -@@ -283,7 +283,7 @@ - - - -- -+ - - - -@@ -292,7 +292,7 @@ - - - -- -+ - - - -@@ -301,7 +301,7 @@ - - - -- -+ - - - -@@ -310,7 +310,7 @@ - - - -- -+ - - - -@@ -323,7 +323,7 @@ - - - -- -+ - - - -@@ -336,7 +336,7 @@ - - - -- -+ - - - -@@ -345,7 +345,7 @@ - - - -- -+ - - - -@@ -358,7 +358,7 @@ - - - -- -+ - - - -@@ -371,7 +371,7 @@ - - - -- -+ - - - -@@ -380,7 +380,7 @@ - - - -- -+ - - - -@@ -396,7 +396,7 @@ - - - -- -+ - - - -@@ -412,7 +412,7 @@ - - - -- -+ - - - -@@ -425,7 +425,7 @@ - - - -- -+ - - - -@@ -438,7 +438,7 @@ - - - -- -+ - - - -@@ -515,7 +515,7 @@ - - - -- -+ - - - -@@ -528,7 +528,7 @@ - - - -- -+ - - - -@@ -550,7 +550,7 @@ - - - -- -+ - - - -@@ -559,7 +559,7 @@ - - - -- -+ - - - -@@ -568,7 +568,7 @@ - - - -- -+ - - - -@@ -577,7 +577,7 @@ - - - -- -+ - - - -@@ -590,7 +590,7 @@ - - - -- -+ - - - -@@ -606,7 +606,7 @@ - - - -- -+ - - - -@@ -619,7 +619,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-orphan-ms.exp b/pengine/test10/whitebox-orphan-ms.exp -index 00accd7..6df1b8d 100644 ---- a/pengine/test10/whitebox-orphan-ms.exp -+++ b/pengine/test10/whitebox-orphan-ms.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -77,7 +77,7 @@ - - - -- -+ - - - -@@ -96,7 +96,7 @@ - - - -- -+ - - - -@@ -109,7 +109,7 @@ - - - -- -+ - - - -@@ -122,7 +122,7 @@ - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -151,7 +151,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -@@ -176,7 +176,7 @@ - - - -- -+ - - - -@@ -185,7 +185,7 @@ - - - -- -+ - - - -@@ -201,7 +201,7 @@ - - - -- -+ - - - -@@ -217,7 +217,7 @@ - - - -- -+ - - - -@@ -233,7 +233,7 @@ - - - -- -+ - - - -@@ -252,7 +252,7 @@ - - - -- -+ - - - -@@ -265,7 +265,7 @@ - - - -- -+ - - - -@@ -278,7 +278,7 @@ - - - -- -+ - - - -@@ -291,7 +291,7 @@ - - - -- -+ - - - -@@ -304,7 +304,7 @@ - - - -- -+ - - - -@@ -317,7 +317,7 @@ - - - -- -+ - - - -@@ -330,7 +330,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-orphaned.exp b/pengine/test10/whitebox-orphaned.exp -index ccb85b3..2d70aed 100644 ---- a/pengine/test10/whitebox-orphaned.exp -+++ b/pengine/test10/whitebox-orphaned.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -74,7 +74,7 @@ - - - -- -+ - - - -@@ -90,7 +90,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -112,7 +112,7 @@ - - - -- -+ - - - -@@ -125,7 +125,7 @@ - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -160,7 +160,7 @@ - - - -- -+ - - - -@@ -169,7 +169,7 @@ - - - -- -+ - - - -@@ -182,7 +182,7 @@ - - - -- -+ - - - -@@ -195,7 +195,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-start.exp b/pengine/test10/whitebox-start.exp -index 4027c22..3f28d9e 100644 ---- a/pengine/test10/whitebox-start.exp -+++ b/pengine/test10/whitebox-start.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -@@ -99,7 +99,7 @@ - - - -- -+ - - - -@@ -108,7 +108,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -134,7 +134,7 @@ - - - -- -+ - - - -@@ -143,7 +143,7 @@ - - - -- -+ - - - -@@ -156,7 +156,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-stop.exp b/pengine/test10/whitebox-stop.exp -index 66bc03b..a1aa3ba 100644 ---- a/pengine/test10/whitebox-stop.exp -+++ b/pengine/test10/whitebox-stop.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -87,7 +87,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-unexpectedly-running.exp b/pengine/test10/whitebox-unexpectedly-running.exp -index c5272f2..17606ce 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.exp -+++ b/pengine/test10/whitebox-unexpectedly-running.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - --- -1.8.3.1 - diff --git a/SOURCES/020-libservices.patch b/SOURCES/020-libservices.patch deleted file mode 100644 index 2a10837..0000000 --- a/SOURCES/020-libservices.patch +++ /dev/null @@ -1,594 +0,0 @@ -From ef711f968ba143b12fb0654b6d75045a04f83d37 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Thu, 9 Feb 2017 22:30:17 +0100 -Subject: [PATCH 1/6] Refactor: lib/services: unify/add include guards for *.h - -(wild guess has it that MH stood for long-dead Matahari project) ---- - lib/services/pcmk-dbus.h | 8 ++++---- - lib/services/services_private.h | 6 +++--- - lib/services/systemd.h | 5 +++++ - lib/services/upstart.h | 7 +++---- - 4 files changed, 15 insertions(+), 11 deletions(-) - -diff --git a/lib/services/pcmk-dbus.h b/lib/services/pcmk-dbus.h -index c575dda..31bcf0e 100644 ---- a/lib/services/pcmk-dbus.h -+++ b/lib/services/pcmk-dbus.h -@@ -8,9 +8,9 @@ - #ifndef PCMK_DBUS__H - # define PCMK_DBUS__H - --#ifndef DBUS_TIMEOUT_USE_DEFAULT --# define DBUS_TIMEOUT_USE_DEFAULT -1 --#endif -+# ifndef DBUS_TIMEOUT_USE_DEFAULT -+# define DBUS_TIMEOUT_USE_DEFAULT -1 -+# endif - - DBusConnection *pcmk_dbus_connect(void); - void pcmk_dbus_connection_setup_with_select(DBusConnection *c); -@@ -28,4 +28,4 @@ char *pcmk_dbus_get_property( - bool pcmk_dbus_find_error(DBusPendingCall *pending, DBusMessage *reply, - DBusError *error); - --#endif /* PCMK_DBUS__H */ -+#endif /* PCMK_DBUS__H */ -diff --git a/lib/services/services_private.h b/lib/services/services_private.h -index 43aedc6..0e12d18 100644 ---- a/lib/services/services_private.h -+++ b/lib/services/services_private.h -@@ -16,8 +16,8 @@ - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - --#ifndef __MH_SERVICES_PRIVATE_H__ --# define __MH_SERVICES_PRIVATE_H__ -+#ifndef SERVICES_PRIVATE__H -+# define SERVICES_PRIVATE__H - - #if SUPPORT_DBUS - # include -@@ -69,4 +69,4 @@ gboolean is_op_blocked(const char *rsc); - void services_set_op_pending(svc_action_t *op, DBusPendingCall *pending); - #endif - --#endif /* __MH_SERVICES_PRIVATE_H__ */ -+#endif /* SERVICES_PRIVATE__H */ -diff --git a/lib/services/systemd.h b/lib/services/systemd.h -index acd832e..17e654e 100644 ---- a/lib/services/systemd.h -+++ b/lib/services/systemd.h -@@ -16,8 +16,13 @@ - * Copyright (C) 2012 Andrew Beekhof - */ - -+#ifndef SYSTEMD__H -+# define SYSTEMD__H -+ - G_GNUC_INTERNAL GList *systemd_unit_listall(void); - G_GNUC_INTERNAL int systemd_unit_exec(svc_action_t * op); - G_GNUC_INTERNAL gboolean systemd_unit_exists(const gchar * name); - G_GNUC_INTERNAL gboolean systemd_unit_running(const gchar * name); - G_GNUC_INTERNAL void systemd_cleanup(void); -+ -+#endif /* SYSTEMD__H */ -diff --git a/lib/services/upstart.h b/lib/services/upstart.h -index a837226..523d208 100644 ---- a/lib/services/upstart.h -+++ b/lib/services/upstart.h -@@ -13,12 +13,11 @@ - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * -- * File: upstart-dbus.c - * Copyright (C) 2010 Senko Rasic - * Copyright (c) 2010 Ante Karamatic - */ --#ifndef _UPSTART_DBUS_H_ --# define _UPSTART_DBUS_H_ -+#ifndef UPSTART__H -+# define UPSTART__H - - # include - # include "crm/services.h" -@@ -29,4 +28,4 @@ G_GNUC_INTERNAL gboolean upstart_job_exists(const gchar * name); - G_GNUC_INTERNAL gboolean upstart_job_running(const gchar * name); - G_GNUC_INTERNAL void upstart_cleanup(void); - --#endif /* _UPSTART_DBUS_H_ */ -+#endif /* UPSTART__H */ --- -1.8.3.1 - - -From 5dc4937b9588b3fb1d4297eedd7c433aafd8cc81 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Thu, 9 Feb 2017 22:40:39 +0100 -Subject: [PATCH 2/6] Refactor: lib/services: make *.h self-sufficient wrt. - other includes - -Also make function declaration follow the actual definitions. ---- - lib/services/pcmk-dbus.h | 2 ++ - lib/services/services_private.h | 3 +++ - lib/services/systemd.h | 5 ++++- - lib/services/upstart.h | 2 +- - 4 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/lib/services/pcmk-dbus.h b/lib/services/pcmk-dbus.h -index 31bcf0e..e071349 100644 ---- a/lib/services/pcmk-dbus.h -+++ b/lib/services/pcmk-dbus.h -@@ -8,6 +8,8 @@ - #ifndef PCMK_DBUS__H - # define PCMK_DBUS__H - -+# include -+ - # ifndef DBUS_TIMEOUT_USE_DEFAULT - # define DBUS_TIMEOUT_USE_DEFAULT -1 - # endif -diff --git a/lib/services/services_private.h b/lib/services/services_private.h -index 0e12d18..60b1b14 100644 ---- a/lib/services/services_private.h -+++ b/lib/services/services_private.h -@@ -19,6 +19,9 @@ - #ifndef SERVICES_PRIVATE__H - # define SERVICES_PRIVATE__H - -+# include -+# include "crm/services.h" -+ - #if SUPPORT_DBUS - # include - #endif -diff --git a/lib/services/systemd.h b/lib/services/systemd.h -index 17e654e..98150dd 100644 ---- a/lib/services/systemd.h -+++ b/lib/services/systemd.h -@@ -19,8 +19,11 @@ - #ifndef SYSTEMD__H - # define SYSTEMD__H - -+# include -+# include "crm/services.h" -+ - G_GNUC_INTERNAL GList *systemd_unit_listall(void); --G_GNUC_INTERNAL int systemd_unit_exec(svc_action_t * op); -+G_GNUC_INTERNAL gboolean systemd_unit_exec(svc_action_t * op); - G_GNUC_INTERNAL gboolean systemd_unit_exists(const gchar * name); - G_GNUC_INTERNAL gboolean systemd_unit_running(const gchar * name); - G_GNUC_INTERNAL void systemd_cleanup(void); -diff --git a/lib/services/upstart.h b/lib/services/upstart.h -index 523d208..8d41c11 100644 ---- a/lib/services/upstart.h -+++ b/lib/services/upstart.h -@@ -23,7 +23,7 @@ - # include "crm/services.h" - - G_GNUC_INTERNAL GList *upstart_job_listall(void); --G_GNUC_INTERNAL int upstart_job_exec(svc_action_t * op, gboolean synchronous); -+G_GNUC_INTERNAL gboolean upstart_job_exec(svc_action_t * op, gboolean synchronous); - G_GNUC_INTERNAL gboolean upstart_job_exists(const gchar * name); - G_GNUC_INTERNAL gboolean upstart_job_running(const gchar * name); - G_GNUC_INTERNAL void upstart_cleanup(void); --- -1.8.3.1 - - -From 6b12e0d1284cac96e66780aa4aeb7c32619089fc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Thu, 9 Feb 2017 22:46:42 +0100 -Subject: [PATCH 3/6] Refactor: lib/services: ensure *.h declare externally - hidden functions - -...following the precedent of {upstart,systemd}.h. Note also that -since hardening-related commit 658fff944 [$LD -z now], it's even more -desirable to limit "symbol smog" as much as possible and symbols only -used within the library like these are trivially expendable (assuming -suitable toolchain). - -As we use G_GNU_C_INTERNAL macro from glib2, we should care to require -at least that version that introduced it, i.e., 2.6 per documentation. ---- - lib/services/pcmk-dbus.h | 13 +++++++++++++ - lib/services/services_private.h | 14 ++++++++++++++ - pacemaker.spec.in | 4 +++- - 3 files changed, 30 insertions(+), 1 deletion(-) - -diff --git a/lib/services/pcmk-dbus.h b/lib/services/pcmk-dbus.h -index e071349..3f3547e 100644 ---- a/lib/services/pcmk-dbus.h -+++ b/lib/services/pcmk-dbus.h -@@ -14,19 +14,32 @@ - # define DBUS_TIMEOUT_USE_DEFAULT -1 - # endif - -+G_GNUC_INTERNAL - DBusConnection *pcmk_dbus_connect(void); -+ -+G_GNUC_INTERNAL - void pcmk_dbus_connection_setup_with_select(DBusConnection *c); -+ -+G_GNUC_INTERNAL - void pcmk_dbus_disconnect(DBusConnection *connection); - -+G_GNUC_INTERNAL - DBusPendingCall *pcmk_dbus_send(DBusMessage *msg, DBusConnection *connection, - void(*done)(DBusPendingCall *pending, void *user_data), void *user_data, int timeout); -+ -+G_GNUC_INTERNAL - DBusMessage *pcmk_dbus_send_recv(DBusMessage *msg, DBusConnection *connection, DBusError *error, int timeout); -+ -+G_GNUC_INTERNAL - bool pcmk_dbus_type_check(DBusMessage *msg, DBusMessageIter *field, int expected, const char *function, int line); -+ -+G_GNUC_INTERNAL - char *pcmk_dbus_get_property( - DBusConnection *connection, const char *target, const char *obj, const gchar * iface, const char *name, - void (*callback)(const char *name, const char *value, void *userdata), void *userdata, - DBusPendingCall **pending, int timeout); - -+G_GNUC_INTERNAL - bool pcmk_dbus_find_error(DBusPendingCall *pending, DBusMessage *reply, - DBusError *error); - -diff --git a/lib/services/services_private.h b/lib/services/services_private.h -index 60b1b14..41895a9 100644 ---- a/lib/services/services_private.h -+++ b/lib/services/services_private.h -@@ -45,30 +45,44 @@ struct svc_action_private_s { - #endif - }; - -+G_GNUC_INTERNAL - GList *services_os_get_directory_list(const char *root, gboolean files, gboolean executable); - -+G_GNUC_INTERNAL - gboolean services_os_action_execute(svc_action_t * op, gboolean synchronous); - -+G_GNUC_INTERNAL - GList *resources_os_list_lsb_agents(void); - -+G_GNUC_INTERNAL - GList *resources_os_list_ocf_providers(void); - -+G_GNUC_INTERNAL - GList *resources_os_list_ocf_agents(const char *provider); - -+G_GNUC_INTERNAL - GList *resources_os_list_nagios_agents(void); - -+G_GNUC_INTERNAL - gboolean cancel_recurring_action(svc_action_t * op); - -+G_GNUC_INTERNAL - gboolean recurring_action_timer(gpointer data); -+ -+G_GNUC_INTERNAL - gboolean operation_finalize(svc_action_t * op); - -+G_GNUC_INTERNAL - void services_add_inflight_op(svc_action_t *op); - -+G_GNUC_INTERNAL - void handle_blocked_ops(void); - -+G_GNUC_INTERNAL - gboolean is_op_blocked(const char *rsc); - - #if SUPPORT_DBUS -+G_GNUC_INTERNAL - void services_set_op_pending(svc_action_t *op, DBusPendingCall *pending); - #endif - -diff --git a/pacemaker.spec.in b/pacemaker.spec.in -index 34a1076..6385350 100644 ---- a/pacemaker.spec.in -+++ b/pacemaker.spec.in -@@ -190,7 +190,9 @@ BuildRequires: coreutils findutils grep sed - - # Required for core functionality - BuildRequires: automake autoconf libtool pkgconfig libtool-ltdl-devel --BuildRequires: pkgconfig(glib-2.0) libxml2-devel libxslt-devel libuuid-devel -+## version lower bound for: G_GNUC_INTERNAL -+BuildRequires: pkgconfig(glib-2.0) >= 2.6 -+BuildRequires: libxml2-devel libxslt-devel libuuid-devel - BuildRequires: bzip2-devel pam-devel - - # Required for agent_config.h which specifies the correct scratch directory --- -1.8.3.1 - - -From 31adceb587c1beb90a0d61bb3bf1b634e5516d54 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Fri, 10 Feb 2017 10:50:59 +0100 -Subject: [PATCH 4/6] Refactor: lib/services: ensure some objects not exported - accidentally - -They are not tracked by neither public nor private API anyway. -See also a note about "symbol smog" in the previous commit. ---- - lib/services/services.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/lib/services/services.c b/lib/services/services.c -index 4be425c..b1e3b26 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -37,11 +37,11 @@ - /* TODO: Develop a rollover strategy */ - - static int operations = 0; --GHashTable *recurring_actions = NULL; -+static GHashTable *recurring_actions = NULL; - - /* ops waiting to run async because of conflicting active -- * pending ops*/ --GList *blocked_ops = NULL; -+ * pending ops */ -+static GList *blocked_ops = NULL; - - /* ops currently active (in-flight) */ - GList *inflight_ops = NULL; --- -1.8.3.1 - - -From eeeabd732b67d478bb50101e1bb30324ca2c3d9a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Thu, 9 Feb 2017 23:06:36 +0100 -Subject: [PATCH 5/6] Refactor: lib/services: unify on single source of - "synchronous" flag - -Forerunner systemd.[ch] is followed by the rest of squad in decision -based merely on svc_action_t operand with suitably flipped member item -and no more on redundant extraneous parameter that in turn is dropped. -It was (for the former) and is possible because both a/synchronous paths -leading to such decision contains a priori setting of the flag as -expected (in services_action_async/services_action_sync, respectively). ---- - lib/services/services.c | 8 ++++---- - lib/services/services_linux.c | 16 ++++++++-------- - lib/services/services_private.h | 2 +- - lib/services/upstart.c | 2 +- - lib/services/upstart.h | 2 +- - 5 files changed, 15 insertions(+), 15 deletions(-) - -diff --git a/lib/services/services.c b/lib/services/services.c -index b1e3b26..decb2cb 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -573,14 +573,14 @@ action_async_helper(svc_action_t * op) - { - if (op->standard && strcasecmp(op->standard, "upstart") == 0) { - #if SUPPORT_UPSTART -- return upstart_job_exec(op, FALSE); -+ return upstart_job_exec(op); - #endif - } else if (op->standard && strcasecmp(op->standard, "systemd") == 0) { - #if SUPPORT_SYSTEMD - return systemd_unit_exec(op); - #endif - } else { -- return services_os_action_execute(op, FALSE); -+ return services_os_action_execute(op); - } - /* The 'op' has probably been freed if the execution functions return TRUE. */ - /* Avoid using the 'op' in here. */ -@@ -701,14 +701,14 @@ services_action_sync(svc_action_t * op) - op->synchronous = true; - if (op->standard && strcasecmp(op->standard, "upstart") == 0) { - #if SUPPORT_UPSTART -- rc = upstart_job_exec(op, TRUE); -+ rc = upstart_job_exec(op); - #endif - } else if (op->standard && strcasecmp(op->standard, "systemd") == 0) { - #if SUPPORT_SYSTEMD - rc = systemd_unit_exec(op); - #endif - } else { -- rc = services_os_action_execute(op, TRUE); -+ rc = services_os_action_execute(op); - } - crm_trace(" > %s_%s_%d: %s = %d", op->rsc, op->action, op->interval, op->opaque->exec, op->rc); - if (op->stdout_data) { -diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c -index 16f25f3..adfefaa 100644 ---- a/lib/services/services_linux.c -+++ b/lib/services/services_linux.c -@@ -606,7 +606,7 @@ action_synced_wait(svc_action_t * op, sigset_t *mask) - /* For an asynchronous 'op', returns FALSE if 'op' should be free'd by the caller */ - /* For a synchronous 'op', returns FALSE if 'op' fails */ - gboolean --services_os_action_execute(svc_action_t * op, gboolean synchronous) -+services_os_action_execute(svc_action_t * op) - { - int stdout_fd[2]; - int stderr_fd[2]; -@@ -641,7 +641,7 @@ services_os_action_execute(svc_action_t * op, gboolean synchronous) - int rc = errno; - crm_warn("Cannot execute '%s': %s (%d)", op->opaque->exec, pcmk_strerror(rc), rc); - services_handle_exec_error(op, rc); -- if (!synchronous) { -+ if (!op->synchronous) { - return operation_finalize(op); - } - return FALSE; -@@ -653,7 +653,7 @@ services_os_action_execute(svc_action_t * op, gboolean synchronous) - crm_err("pipe(stdout_fd) failed. '%s': %s (%d)", op->opaque->exec, pcmk_strerror(rc), rc); - - services_handle_exec_error(op, rc); -- if (!synchronous) { -+ if (!op->synchronous) { - return operation_finalize(op); - } - return FALSE; -@@ -668,13 +668,13 @@ services_os_action_execute(svc_action_t * op, gboolean synchronous) - crm_err("pipe(stderr_fd) failed. '%s': %s (%d)", op->opaque->exec, pcmk_strerror(rc), rc); - - services_handle_exec_error(op, rc); -- if (!synchronous) { -+ if (!op->synchronous) { - return operation_finalize(op); - } - return FALSE; - } - -- if (synchronous) { -+ if (op->synchronous) { - #ifdef HAVE_SYS_SIGNALFD_H - sigemptyset(&mask); - sigaddset(&mask, SIGCHLD); -@@ -717,7 +717,7 @@ services_os_action_execute(svc_action_t * op, gboolean synchronous) - - crm_err("Could not execute '%s': %s (%d)", op->opaque->exec, pcmk_strerror(rc), rc); - services_handle_exec_error(op, rc); -- if (!synchronous) { -+ if (!op->synchronous) { - return operation_finalize(op); - } - -@@ -740,7 +740,7 @@ services_os_action_execute(svc_action_t * op, gboolean synchronous) - close(stderr_fd[1]); - } - -- if (synchronous) { -+ if (op->synchronous) { - sigchld_cleanup(); - } - -@@ -758,7 +758,7 @@ services_os_action_execute(svc_action_t * op, gboolean synchronous) - op->opaque->stderr_fd = stderr_fd[0]; - set_fd_opts(op->opaque->stderr_fd, O_NONBLOCK); - -- if (synchronous) { -+ if (op->synchronous) { - action_synced_wait(op, pmask); - sigchld_cleanup(); - } else { -diff --git a/lib/services/services_private.h b/lib/services/services_private.h -index 41895a9..ec9e1c4 100644 ---- a/lib/services/services_private.h -+++ b/lib/services/services_private.h -@@ -49,7 +49,7 @@ G_GNUC_INTERNAL - GList *services_os_get_directory_list(const char *root, gboolean files, gboolean executable); - - G_GNUC_INTERNAL --gboolean services_os_action_execute(svc_action_t * op, gboolean synchronous); -+gboolean services_os_action_execute(svc_action_t * op); - - G_GNUC_INTERNAL - GList *resources_os_list_lsb_agents(void); -diff --git a/lib/services/upstart.c b/lib/services/upstart.c -index 5651a14..a17c2bf 100644 ---- a/lib/services/upstart.c -+++ b/lib/services/upstart.c -@@ -414,7 +414,7 @@ upstart_async_dispatch(DBusPendingCall *pending, void *user_data) - /* For an asynchronous 'op', returns FALSE if 'op' should be free'd by the caller */ - /* For a synchronous 'op', returns FALSE if 'op' fails */ - gboolean --upstart_job_exec(svc_action_t * op, gboolean synchronous) -+upstart_job_exec(svc_action_t * op) - { - char *job = NULL; - int arg_wait = TRUE; -diff --git a/lib/services/upstart.h b/lib/services/upstart.h -index 8d41c11..6954943 100644 ---- a/lib/services/upstart.h -+++ b/lib/services/upstart.h -@@ -23,7 +23,7 @@ - # include "crm/services.h" - - G_GNUC_INTERNAL GList *upstart_job_listall(void); --G_GNUC_INTERNAL gboolean upstart_job_exec(svc_action_t * op, gboolean synchronous); -+G_GNUC_INTERNAL gboolean upstart_job_exec(svc_action_t * op); - G_GNUC_INTERNAL gboolean upstart_job_exists(const gchar * name); - G_GNUC_INTERNAL gboolean upstart_job_running(const gchar * name); - G_GNUC_INTERNAL void upstart_cleanup(void); --- -1.8.3.1 - - -From 6e64b585ba628ef93d99fc17a6a880a76505e27d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Thu, 9 Feb 2017 23:28:24 +0100 -Subject: [PATCH 6/6] Refactor: lib/services: async_helper -> versatile - exec_helper - -Also mark it inline just in case the compiler won't get it that it's -just another form of up-to-singly-nested ternary operator making for -a tail call. ---- - lib/services/services.c | 24 ++++++++---------------- - 1 file changed, 8 insertions(+), 16 deletions(-) - -diff --git a/lib/services/services.c b/lib/services/services.c -index decb2cb..0b535e6 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -568,9 +568,10 @@ handle_duplicate_recurring(svc_action_t * op, void (*action_callback) (svc_actio - return FALSE; - } - --static gboolean --action_async_helper(svc_action_t * op) -+inline static gboolean -+action_exec_helper(svc_action_t * op) - { -+ /* Whether a/synchronous must be decided (op->synchronous) beforehand. */ - if (op->standard && strcasecmp(op->standard, "upstart") == 0) { - #if SUPPORT_UPSTART - return upstart_job_exec(op); -@@ -582,7 +583,8 @@ action_async_helper(svc_action_t * op) - } else { - return services_os_action_execute(op); - } -- /* The 'op' has probably been freed if the execution functions return TRUE. */ -+ /* The 'op' has probably been freed if the execution functions return TRUE -+ for the asynchronous 'op'. */ - /* Avoid using the 'op' in here. */ - - return FALSE; -@@ -625,7 +627,7 @@ services_action_async(svc_action_t * op, void (*action_callback) (svc_action_t * - return TRUE; - } - -- return action_async_helper(op); -+ return action_exec_helper(op); - } - - -@@ -670,7 +672,7 @@ handle_blocked_ops(void) - continue; - } - executed_ops = g_list_append(executed_ops, op); -- res = action_async_helper(op); -+ res = action_exec_helper(op); - if (res == FALSE) { - op->status = PCMK_LRM_OP_ERROR; - /* this can cause this function to be called recursively -@@ -699,17 +701,7 @@ services_action_sync(svc_action_t * op) - } - - op->synchronous = true; -- if (op->standard && strcasecmp(op->standard, "upstart") == 0) { --#if SUPPORT_UPSTART -- rc = upstart_job_exec(op); --#endif -- } else if (op->standard && strcasecmp(op->standard, "systemd") == 0) { --#if SUPPORT_SYSTEMD -- rc = systemd_unit_exec(op); --#endif -- } else { -- rc = services_os_action_execute(op); -- } -+ rc = action_exec_helper(op); - crm_trace(" > %s_%s_%d: %s = %d", op->rsc, op->action, op->interval, op->opaque->exec, op->rc); - if (op->stdout_data) { - crm_trace(" > stdout: %s", op->stdout_data); --- -1.8.3.1 - diff --git a/SOURCES/021-xml-comments.patch b/SOURCES/021-xml-comments.patch deleted file mode 100644 index 478e586..0000000 --- a/SOURCES/021-xml-comments.patch +++ /dev/null @@ -1,448 +0,0 @@ -From c509cd07008b1f9b3402eeb7d7f3f6d504aa4fdb Mon Sep 17 00:00:00 2001 -From: "Gao,Yan" -Date: Fri, 10 Feb 2017 15:44:16 +0100 -Subject: [PATCH 1/2] Fix: libcrmcommon: Correctly compare XML comments to - prevent crmd from getting into infinite election loop - -With b7fa323, crmd could still get into an infinite election loop when -there was more than one comment with the exactly same text at the same -level within a CIB XML element. For example: - -''' - - - - - - - - -''' - -Basically, it'd produce big messes if using the diff operation "move" -for XML comments in such a case. - -With this commit, it strictly tries to match the XML comments at the -exactly same offsets when comparing v2 patchset, so that only the diff -operations "create" and "delete" will be used for XML comments. ---- - lib/common/xml.c | 46 ++++++++++++++++++++++++++++++++-------------- - 1 file changed, 32 insertions(+), 14 deletions(-) - -diff --git a/lib/common/xml.c b/lib/common/xml.c -index 65237c8..fd80fe1 100644 ---- a/lib/common/xml.c -+++ b/lib/common/xml.c -@@ -98,7 +98,7 @@ static filter_t filter[] = { - /* *INDENT-ON* */ - - static xmlNode *subtract_xml_comment(xmlNode * parent, xmlNode * left, xmlNode * right, gboolean * changed); --static xmlNode *find_xml_comment(xmlNode * root, xmlNode * search_comment); -+static xmlNode *find_xml_comment(xmlNode * root, xmlNode * search_comment, gboolean exact); - static int add_xml_comment(xmlNode * parent, xmlNode * target, xmlNode * update); - static bool __xml_acl_check(xmlNode *xml, const char *name, enum xml_private_flags mode); - const char *__xml_acl_to_text(enum xml_private_flags flags); -@@ -1555,11 +1555,11 @@ xml_accept_changes(xmlNode * xml) - } - - static xmlNode * --find_element(xmlNode *haystack, xmlNode *needle) -+find_element(xmlNode *haystack, xmlNode *needle, gboolean exact) - { - CRM_CHECK(needle != NULL, return NULL); - return (needle->type == XML_COMMENT_NODE)? -- find_xml_comment(haystack, needle) -+ find_xml_comment(haystack, needle, exact) - : find_entity(haystack, crm_element_name(needle), ID(needle)); - } - -@@ -1615,7 +1615,7 @@ __subtract_xml_object(xmlNode * target, xmlNode * patch) - xmlNode *target_child = cIter; - - cIter = __xml_next(cIter); -- patch_child = find_element(patch, target_child); -+ patch_child = find_element(patch, target_child, FALSE); - __subtract_xml_object(target_child, patch_child); - } - free(id); -@@ -1677,7 +1677,7 @@ __add_xml_object(xmlNode * parent, xmlNode * target, xmlNode * patch) - for (patch_child = __xml_first_child(patch); patch_child != NULL; - patch_child = __xml_next(patch_child)) { - -- target_child = find_element(target, patch_child); -+ target_child = find_element(target, patch_child, FALSE); - __add_xml_object(target, target_child, patch_child); - } - } -@@ -4026,7 +4026,7 @@ __xml_diff_object(xmlNode * old, xmlNode * new) - - for (cIter = __xml_first_child(old); cIter != NULL; ) { - xmlNode *old_child = cIter; -- xmlNode *new_child = find_element(new, cIter); -+ xmlNode *new_child = find_element(new, cIter, TRUE); - - cIter = __xml_next(cIter); - if(new_child) { -@@ -4041,7 +4041,7 @@ __xml_diff_object(xmlNode * old, xmlNode * new) - __xml_acl_apply(top); /* Make sure any ACLs are applied to 'candidate' */ - free_xml(candidate); - -- if (find_element(new, old_child) == NULL) { -+ if (find_element(new, old_child, TRUE) == NULL) { - xml_private_t *p = old_child->_private; - - p->flags |= xpf_skip; -@@ -4051,7 +4051,7 @@ __xml_diff_object(xmlNode * old, xmlNode * new) - - for (cIter = __xml_first_child(new); cIter != NULL; ) { - xmlNode *new_child = cIter; -- xmlNode *old_child = find_element(old, cIter); -+ xmlNode *old_child = find_element(old, cIter, TRUE); - - cIter = __xml_next(cIter); - if(old_child == NULL) { -@@ -4226,18 +4226,36 @@ in_upper_context(int depth, int context, xmlNode * xml_node) - } - - static xmlNode * --find_xml_comment(xmlNode * root, xmlNode * search_comment) -+find_xml_comment(xmlNode * root, xmlNode * search_comment, gboolean exact) - { - xmlNode *a_child = NULL; -+ int search_offset = __xml_offset(search_comment); - - CRM_CHECK(search_comment->type == XML_COMMENT_NODE, return NULL); - - for (a_child = __xml_first_child(root); a_child != NULL; a_child = __xml_next(a_child)) { -- if (a_child->type != XML_COMMENT_NODE) { -- continue; -+ if (exact) { -+ int offset = __xml_offset(a_child); -+ xml_private_t *p = a_child->_private; -+ -+ if (offset < search_offset) { -+ continue; -+ -+ } else if (offset > search_offset) { -+ return NULL; -+ } -+ -+ if (is_set(p->flags, xpf_skip)) { -+ continue; -+ } - } -- if (safe_str_eq((const char *)a_child->content, (const char *)search_comment->content)) { -+ -+ if (a_child->type == XML_COMMENT_NODE -+ && safe_str_eq((const char *)a_child->content, (const char *)search_comment->content)) { - return a_child; -+ -+ } else if (exact) { -+ return NULL; - } - } - -@@ -4332,7 +4350,7 @@ subtract_xml_object(xmlNode * parent, xmlNode * left, xmlNode * right, - left_child = __xml_next(left_child)) { - gboolean child_changed = FALSE; - -- right_child = find_element(right, left_child); -+ right_child = find_element(right, left_child, FALSE); - subtract_xml_object(diff, left_child, right_child, full, &child_changed, marker); - if (child_changed) { - *changed = TRUE; -@@ -4458,7 +4476,7 @@ add_xml_comment(xmlNode * parent, xmlNode * target, xmlNode * update) - CRM_CHECK(update->type == XML_COMMENT_NODE, return 0); - - if (target == NULL) { -- target = find_xml_comment(parent, update); -+ target = find_xml_comment(parent, update, FALSE); - } - - if (target == NULL) { --- -1.8.3.1 - - -From 362f02874b6be46bf2648fb45ebc6bc636d48965 Mon Sep 17 00:00:00 2001 -From: "Gao,Yan" -Date: Mon, 13 Feb 2017 17:47:23 +0100 -Subject: [PATCH 2/2] Fix: libcrmcommon: Correctly delete XML comments - according to their positions - -Previously, v2 patchset was not able to define which exact XML comments were -expected to be deleted in a CIB XML element. It was a problem if there -was more than one comment at the same level within a CIB XML element. - -This commit resolves it by adding and handling a "position" field in the -diff operation "delete" for XML comments. ---- - lib/common/xml.c | 121 +++++++++++++++++++++++++++++++++++++++++++++---------- - 1 file changed, 100 insertions(+), 21 deletions(-) - -diff --git a/lib/common/xml.c b/lib/common/xml.c -index fd80fe1..6dce4cb 100644 ---- a/lib/common/xml.c -+++ b/lib/common/xml.c -@@ -78,7 +78,7 @@ typedef struct xml_private_s - uint32_t flags; - char *user; - GListPtr acls; -- GListPtr deleted_paths; -+ GListPtr deleted_objs; - } xml_private_t; - - typedef struct xml_acl_s { -@@ -86,6 +86,11 @@ typedef struct xml_acl_s { - char *xpath; - } xml_acl_t; - -+typedef struct xml_deleted_obj_s { -+ char *path; -+ int position; -+} xml_deleted_obj_t; -+ - /* *INDENT-OFF* */ - - static filter_t filter[] = { -@@ -275,6 +280,17 @@ __xml_acl_free(void *data) - } - - static void -+__xml_deleted_obj_free(void *data) -+{ -+ if(data) { -+ xml_deleted_obj_t *deleted_obj = data; -+ -+ free(deleted_obj->path); -+ free(deleted_obj); -+ } -+} -+ -+static void - __xml_private_clean(xml_private_t *p) - { - if(p) { -@@ -288,9 +304,9 @@ __xml_private_clean(xml_private_t *p) - p->acls = NULL; - } - -- if(p->deleted_paths) { -- g_list_free_full(p->deleted_paths, free); -- p->deleted_paths = NULL; -+ if(p->deleted_objs) { -+ g_list_free_full(p->deleted_objs, __xml_deleted_obj_free); -+ p->deleted_objs = NULL; - } - } - } -@@ -1094,10 +1110,10 @@ is_config_change(xmlNode *xml) - - if(xml->doc && xml->doc->_private) { - p = xml->doc->_private; -- for(gIter = p->deleted_paths; gIter; gIter = gIter->next) { -- char *path = gIter->data; -+ for(gIter = p->deleted_objs; gIter; gIter = gIter->next) { -+ xml_deleted_obj_t *deleted_obj = gIter->data; - -- if(strstr(path, "/"XML_TAG_CIB"/"XML_CIB_TAG_CONFIGURATION) != NULL) { -+ if(strstr(deleted_obj->path, "/"XML_TAG_CIB"/"XML_CIB_TAG_CONFIGURATION) != NULL) { - return TRUE; - } - } -@@ -1241,11 +1257,15 @@ xml_create_patchset_v2(xmlNode *source, xmlNode *target) - crm_xml_add(v, vfields[lpc], value); - } - -- for(gIter = doc->deleted_paths; gIter; gIter = gIter->next) { -+ for(gIter = doc->deleted_objs; gIter; gIter = gIter->next) { -+ xml_deleted_obj_t *deleted_obj = gIter->data; - xmlNode *change = create_xml_node(patchset, XML_DIFF_CHANGE); - - crm_xml_add(change, XML_DIFF_OP, "delete"); -- crm_xml_add(change, XML_DIFF_PATH, gIter->data); -+ crm_xml_add(change, XML_DIFF_PATH, deleted_obj->path); -+ if (deleted_obj->position >= 0) { -+ crm_xml_add_int(change, XML_DIFF_POSITION, deleted_obj->position); -+ } - } - - __xml_build_changes(target, patchset); -@@ -1473,7 +1493,15 @@ xml_log_patchset(uint8_t log_level, const char *function, xmlNode * patchset) - } - - } else if(strcmp(op, "delete") == 0) { -- do_crm_log_alias(log_level, __FILE__, function, __LINE__, "-- %s", xpath); -+ int position = -1; -+ -+ crm_element_value_int(change, XML_DIFF_POSITION, &position); -+ if (position >= 0) { -+ do_crm_log_alias(log_level, __FILE__, function, __LINE__, "-- %s (%d)", xpath, position); -+ -+ } else { -+ do_crm_log_alias(log_level, __FILE__, function, __LINE__, "-- %s", xpath); -+ } - } - } - return; -@@ -1521,8 +1549,17 @@ xml_log_changes(uint8_t log_level, const char *function, xmlNode * xml) - return; - } - -- for(gIter = doc->deleted_paths; gIter; gIter = gIter->next) { -- do_crm_log_alias(log_level, __FILE__, function, __LINE__, "-- %s", (char*)gIter->data); -+ for(gIter = doc->deleted_objs; gIter; gIter = gIter->next) { -+ xml_deleted_obj_t *deleted_obj = gIter->data; -+ -+ if (deleted_obj->position >= 0) { -+ do_crm_log_alias(log_level, __FILE__, function, __LINE__, "-- %s (%d)", -+ deleted_obj->path, deleted_obj->position); -+ -+ } else { -+ do_crm_log_alias(log_level, __FILE__, function, __LINE__, "-- %s", -+ deleted_obj->path); -+ } - } - - log_data_element(log_level, __FILE__, function, __LINE__, "+ ", xml, 0, -@@ -1881,7 +1918,7 @@ xml_apply_patchset_v1(xmlNode *xml, xmlNode *patchset, bool check_version) - } - - static xmlNode * --__first_xml_child_match(xmlNode *parent, const char *name, const char *id) -+__first_xml_child_match(xmlNode *parent, const char *name, const char *id, int position) - { - xmlNode *cIter = NULL; - -@@ -1894,13 +1931,21 @@ __first_xml_child_match(xmlNode *parent, const char *name, const char *id) - continue; - } - } -+ -+ /* The "position" makes sense only for XML comments for now */ -+ if (cIter->type == XML_COMMENT_NODE -+ && position >= 0 -+ && __xml_offset(cIter) != position) { -+ continue; -+ } -+ - return cIter; - } - return NULL; - } - - static xmlNode * --__xml_find_path(xmlNode *top, const char *key) -+__xml_find_path(xmlNode *top, const char *key, int target_position) - { - xmlNode *target = (xmlNode*)top->doc; - char *id = malloc(XML_BUFFER_SIZE); -@@ -1923,13 +1968,19 @@ __xml_find_path(xmlNode *top, const char *key) - - } else if(tag && section) { - int f = sscanf (section, "%[^[][@id='%[^']", tag, id); -+ int current_position = -1; -+ -+ /* The "target_position" is for the target tag */ -+ if (rc == 1 && target_position >= 0) { -+ current_position = target_position; -+ } - - switch(f) { - case 1: -- target = __first_xml_child_match(target, tag, NULL); -+ target = __first_xml_child_match(target, tag, NULL, current_position); - break; - case 2: -- target = __first_xml_child_match(target, tag, id); -+ target = __first_xml_child_match(target, tag, id, current_position); - break; - default: - crm_trace("Aborting on %s", section); -@@ -1975,16 +2026,20 @@ xml_apply_patchset_v2(xmlNode *xml, xmlNode *patchset, bool check_version) - xmlNode *match = NULL; - const char *op = crm_element_value(change, XML_DIFF_OP); - const char *xpath = crm_element_value(change, XML_DIFF_PATH); -+ int position = -1; - - crm_trace("Processing %s %s", change->name, op); - if(op == NULL) { - continue; - } - -+ if(strcmp(op, "delete") == 0) { -+ crm_element_value_int(change, XML_DIFF_POSITION, &position); -+ } - #if 0 - match = get_xpath_object(xpath, xml, LOG_TRACE); - #else -- match = __xml_find_path(xml, xpath); -+ match = __xml_find_path(xml, xpath, position); - #endif - crm_trace("Performing %s on %s with %p", op, xpath, match); - -@@ -2583,8 +2638,8 @@ xml_get_path(xmlNode *xml) - return NULL; - } - --void --free_xml(xmlNode * child) -+static void -+free_xml_with_position(xmlNode * child, int position) - { - if (child != NULL) { - xmlNode *top = NULL; -@@ -2613,9 +2668,25 @@ free_xml(xmlNode * child) - char buffer[XML_BUFFER_SIZE]; - - if(__get_prefix(NULL, child, buffer, offset) > 0) { -+ xml_deleted_obj_t *deleted_obj = calloc(1, sizeof(xml_deleted_obj_t)); -+ - crm_trace("Deleting %s %p from %p", buffer, child, doc); -+ -+ deleted_obj->path = strdup(buffer); -+ -+ deleted_obj->position = -1; -+ /* Record the "position" only for XML comments for now */ -+ if (child->type == XML_COMMENT_NODE) { -+ if (position >= 0) { -+ deleted_obj->position = position; -+ -+ } else { -+ deleted_obj->position = __xml_offset(child); -+ } -+ } -+ - p = doc->_private; -- p->deleted_paths = g_list_append(p->deleted_paths, strdup(buffer)); -+ p->deleted_objs = g_list_append(p->deleted_objs, deleted_obj); - set_doc_flag(child, xpf_dirty); - } - } -@@ -2629,6 +2700,13 @@ free_xml(xmlNode * child) - } - } - -+ -+void -+free_xml(xmlNode * child) -+{ -+ free_xml_with_position(child, -1); -+} -+ - xmlNode * - copy_xml(xmlNode * src) - { -@@ -4039,7 +4117,8 @@ __xml_diff_object(xmlNode * old, xmlNode * new) - - __xml_node_clean(candidate); - __xml_acl_apply(top); /* Make sure any ACLs are applied to 'candidate' */ -- free_xml(candidate); -+ /* Record the old position */ -+ free_xml_with_position(candidate, __xml_offset(old_child)); - - if (find_element(new, old_child, TRUE) == NULL) { - xml_private_t *p = old_child->_private; --- -1.8.3.1 - diff --git a/SOURCES/022-crm_attribute-ra.patch b/SOURCES/022-crm_attribute-ra.patch deleted file mode 100644 index ef223dd..0000000 --- a/SOURCES/022-crm_attribute-ra.patch +++ /dev/null @@ -1,259 +0,0 @@ -From cdd4419d08654d91cd8b72cca11e1d1cc51f1056 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 16 Feb 2017 10:23:12 -0600 -Subject: [PATCH 1/2] Fix: tools: crm_attribute should prefer node name from - environment - -Same behavior as was done for crm_node in e0eb9e76 ---- - tools/crm_attribute.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/tools/crm_attribute.c b/tools/crm_attribute.c -index 7cb2774..60ded8d 100644 ---- a/tools/crm_attribute.c -+++ b/tools/crm_attribute.c -@@ -44,7 +44,7 @@ - gboolean BE_QUIET = FALSE; - char command = 'G'; - --char *dest_uname = NULL; -+const char *dest_uname = NULL; - char *dest_node = NULL; - char *set_name = NULL; - char *attr_id = NULL; -@@ -247,7 +247,14 @@ main(int argc, char **argv) - } else if (safe_str_eq(type, XML_CIB_TAG_CRMCONFIG)) { - } else if (safe_str_neq(type, XML_CIB_TAG_TICKETS)) { - if (dest_uname == NULL) { -- dest_uname = get_node_name(0); -+ /* If we are being called from a resource agent via the cluster, -+ * the correct local node name will be passed as an environment -+ * variable. Otherwise, we have to ask the cluster. -+ */ -+ dest_uname = getenv("OCF_RESKEY_" CRM_META "_" XML_LRM_ATTR_TARGET); -+ if (dest_uname == NULL) { -+ dest_uname = get_local_node_name(); -+ } - } - - rc = query_node_uuid(the_cib, dest_uname, &dest_node, &is_remote_node); --- -1.8.3.1 - - -From 56e89a47eff249306765d95d246783e691e8ce11 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 16 Feb 2017 11:35:11 -0600 -Subject: [PATCH 2/2] Log: cib,libcrmcommon,lrmd: handle IP addresses better in - messages - -This exposes lib/common/remote.c:get_ip_str() as a new internal API -crm_sockaddr2str(), and uses it wherever inet_ntoa() and inet_ntop() -were used previously. - -Mainly, this reduces code duplication. It also takes cib/remote.c -one step towards supporting IPv6 addresses. ---- - cib/remote.c | 12 +++++++----- - include/crm_internal.h | 1 + - lib/ais/plugin.c | 16 ---------------- - lib/common/remote.c | 48 ++++++++++++++++++++++++------------------------ - lrmd/tls_backend.c | 12 ++---------- - 5 files changed, 34 insertions(+), 55 deletions(-) - -diff --git a/cib/remote.c b/cib/remote.c -index 9c2b972..9011552 100644 ---- a/cib/remote.c -+++ b/cib/remote.c -@@ -285,7 +285,8 @@ cib_remote_listen(gpointer data) - { - int csock = 0; - unsigned laddr; -- struct sockaddr_in addr; -+ struct sockaddr_storage addr; -+ char ipstr[INET6_ADDRSTRLEN]; - int ssock = *(int *)data; - int flag; - -@@ -300,14 +301,15 @@ cib_remote_listen(gpointer data) - laddr = sizeof(addr); - memset(&addr, 0, sizeof(addr)); - csock = accept(ssock, (struct sockaddr *)&addr, &laddr); -- crm_debug("New %s connection from %s", -- ssock == remote_tls_fd ? "secure" : "clear-text", inet_ntoa(addr.sin_addr)); -- - if (csock == -1) { -- crm_err("accept socket failed"); -+ crm_perror(LOG_ERR, "Could not accept socket connection"); - return TRUE; - } - -+ crm_sockaddr2str(&addr, ipstr); -+ crm_debug("New %s connection from %s", -+ ((ssock == remote_tls_fd)? "secure" : "clear-text"), ipstr); -+ - if ((flag = fcntl(csock, F_GETFL)) >= 0) { - if (fcntl(csock, F_SETFL, flag | O_NONBLOCK) < 0) { - crm_err("fcntl() write failed"); -diff --git a/include/crm_internal.h b/include/crm_internal.h -index a8fee47..96a68bd 100644 ---- a/include/crm_internal.h -+++ b/include/crm_internal.h -@@ -204,6 +204,7 @@ int crm_remote_tcp_connect(const char *host, int port); - int crm_remote_tcp_connect_async(const char *host, int port, int timeout, /*ms */ - int *timer_id, void *userdata, void (*callback) (void *userdata, int sock)); - int crm_remote_accept(int ssock); -+void crm_sockaddr2str(void *sa, char *s); - - # ifdef HAVE_GNUTLS_GNUTLS_H - /*! -diff --git a/lib/ais/plugin.c b/lib/ais/plugin.c -index b8a2b96..fe89f03 100644 ---- a/lib/ais/plugin.c -+++ b/lib/ais/plugin.c -@@ -674,22 +674,6 @@ pcmk_startup(struct corosync_api_v1 *init_with) - return 0; - } - --/* -- static void ais_print_node(const char *prefix, struct totem_ip_address *host) -- { -- int len = 0; -- char *buffer = NULL; -- -- ais_malloc0(buffer, INET6_ADDRSTRLEN+1); -- -- inet_ntop(host->family, host->addr, buffer, INET6_ADDRSTRLEN); -- -- len = strlen(buffer); -- ais_info("%s: %.*s", prefix, len, buffer); -- ais_free(buffer); -- } --*/ -- - #if 0 - /* copied here for reference from exec/totempg.c */ - char * -diff --git a/lib/common/remote.c b/lib/common/remote.c -index 2042f78..80a7581 100644 ---- a/lib/common/remote.c -+++ b/lib/common/remote.c -@@ -837,7 +837,7 @@ int - crm_remote_tcp_connect_async(const char *host, int port, int timeout, /*ms */ - int *timer_id, void *userdata, void (*callback) (void *userdata, int sock)) - { -- char buffer[256]; -+ char buffer[INET6_ADDRSTRLEN]; - struct addrinfo *res = NULL; - struct addrinfo *rp = NULL; - struct addrinfo hints; -@@ -882,20 +882,16 @@ crm_remote_tcp_connect_async(const char *host, int port, int timeout, /*ms */ - continue; - } - -- memset(buffer, 0, DIMOF(buffer)); -+ /* Set port appropriately for address family */ -+ /* (void*) casts avoid false-positive compiler alignment warnings */ - if (addr->sa_family == AF_INET6) { -- struct sockaddr_in6 *addr_in = (struct sockaddr_in6 *)(void*)addr; -- -- addr_in->sin6_port = htons(port); -- inet_ntop(addr->sa_family, &addr_in->sin6_addr, buffer, DIMOF(buffer)); -- -+ ((struct sockaddr_in6 *)(void*)addr)->sin6_port = htons(port); - } else { -- struct sockaddr_in *addr_in = (struct sockaddr_in *)(void*)addr; -- -- addr_in->sin_port = htons(port); -- inet_ntop(addr->sa_family, &addr_in->sin_addr, buffer, DIMOF(buffer)); -+ ((struct sockaddr_in *)(void*)addr)->sin_port = htons(port); - } - -+ memset(buffer, 0, DIMOF(buffer)); -+ crm_sockaddr2str(addr, buffer); - crm_info("Attempting to connect to remote server at %s:%d", buffer, port); - - if (callback) { -@@ -928,29 +924,33 @@ crm_remote_tcp_connect(const char *host, int port) - return crm_remote_tcp_connect_async(host, port, -1, NULL, NULL, NULL); - } - -- --/* Convert a struct sockaddr address to a string, IPv4 and IPv6: */ -- --static char * --get_ip_str(const struct sockaddr_storage * sa, char * s, size_t maxlen) -+/*! -+ * \brief Convert an IP address (IPv4 or IPv6) to a string for logging -+ * -+ * \param[in] sa Socket address for IP -+ * \param[out] s Storage for at least INET6_ADDRSTRLEN bytes -+ * -+ * \note sa The socket address can be a pointer to struct sockaddr_in (IPv4), -+ * struct sockaddr_in6 (IPv6) or struct sockaddr_storage (either), -+ * as long as its sa_family member is set correctly. -+ */ -+void -+crm_sockaddr2str(void *sa, char *s) - { -- switch(((struct sockaddr *)sa)->sa_family) { -+ switch (((struct sockaddr*)sa)->sa_family) { - case AF_INET: - inet_ntop(AF_INET, &(((struct sockaddr_in *)sa)->sin_addr), -- s, maxlen); -+ s, INET6_ADDRSTRLEN); - break; - - case AF_INET6: - inet_ntop(AF_INET6, &(((struct sockaddr_in6 *)sa)->sin6_addr), -- s, maxlen); -+ s, INET6_ADDRSTRLEN); - break; - - default: -- strncpy(s, "Unknown AF", maxlen); -- return NULL; -+ strcpy(s, ""); - } -- -- return s; - } - - int -@@ -971,7 +971,7 @@ crm_remote_accept(int ssock) - laddr = sizeof(addr); - memset(&addr, 0, sizeof(addr)); - csock = accept(ssock, (struct sockaddr *)&addr, &laddr); -- get_ip_str(&addr, addr_str, INET6_ADDRSTRLEN); -+ crm_sockaddr2str(&addr, addr_str); - crm_info("New remote connection from %s", addr_str); - - if (csock == -1) { -diff --git a/lrmd/tls_backend.c b/lrmd/tls_backend.c -index 552b1d2..8c36434 100644 ---- a/lrmd/tls_backend.c -+++ b/lrmd/tls_backend.c -@@ -248,17 +248,9 @@ bind_and_listen(struct addrinfo *addr) - int optval; - int fd; - int rc; -- char buffer[256] = { 0, }; -- -- if (addr->ai_family == AF_INET6) { -- struct sockaddr_in6 *addr_in = (struct sockaddr_in6 *)(void*)addr->ai_addr; -- inet_ntop(addr->ai_family, &addr_in->sin6_addr, buffer, DIMOF(buffer)); -- -- } else { -- struct sockaddr_in *addr_in = (struct sockaddr_in *)(void*)addr->ai_addr; -- inet_ntop(addr->ai_family, &addr_in->sin_addr, buffer, DIMOF(buffer)); -- } -+ char buffer[INET6_ADDRSTRLEN] = { 0, }; - -+ crm_sockaddr2str(addr->ai_addr, buffer); - crm_trace("Attempting to bind on address %s", buffer); - - fd = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol); --- -1.8.3.1 - diff --git a/SOURCES/023-use-of-null.patch b/SOURCES/023-use-of-null.patch deleted file mode 100644 index 6ef24f5..0000000 --- a/SOURCES/023-use-of-null.patch +++ /dev/null @@ -1,43 +0,0 @@ -From e45670bd14bd2e9b7e108aed647050b69887e312 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 16 Feb 2017 15:04:13 -0600 -Subject: [PATCH] Fix: tools: avoid NULL dereference in crm_resource debug - message - -Also clarify crm_resource --cleanup help text ---- - tools/crm_resource.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/tools/crm_resource.c b/tools/crm_resource.c -index c4ee78e..aee2e03 100644 ---- a/tools/crm_resource.c -+++ b/tools/crm_resource.c -@@ -128,7 +128,12 @@ static struct crm_option long_options[] = { - {"constraints",0, 0, 'a', "\tDisplay the (co)location constraints that apply to a resource"}, - - {"-spacer-", 1, 0, '-', "\nCommands:"}, -- {"cleanup", 0, 0, 'C', "\t\tDelete the resource history and re-check the current state. Optional: --resource"}, -+ {"cleanup", 0, 0, 'C', -+ "\t\tDelete resource's history and re-check its current state. " -+ "Optional: --resource (if not specified, all resources), " -+ "--node (if not specified, all nodes), " -+ "--force (if not specified, resource's group or clone will also be cleaned)" -+ }, - {"set-parameter", 1, 0, 'p', "Set the named parameter for a resource. See also -m, --meta"}, - {"get-parameter", 1, 0, 'g', "Display the named parameter for a resource. See also -m, --meta"}, - {"delete-parameter",1, 0, 'd', "Delete the named parameter for a resource. See also -m, --meta"}, -@@ -943,8 +948,9 @@ main(int argc, char **argv) - rsc = uber_parent(rsc); - } - -- crm_debug("Re-checking the state of %s for %s on %s", rsc->id, rsc_id, host_uname); - if(rsc) { -+ crm_debug("Re-checking the state of %s (%s requested) on %s", -+ rsc->id, rsc_id, host_uname); - crmd_replies_needed = 0; - rc = cli_resource_delete(cib_conn, crmd_channel, host_uname, rsc, &data_set); - } else { --- -1.8.3.1 - diff --git a/SOURCES/024-failcount-clear-fix.patch b/SOURCES/024-failcount-clear-fix.patch deleted file mode 100644 index e4f8289..0000000 --- a/SOURCES/024-failcount-clear-fix.patch +++ /dev/null @@ -1,168 +0,0 @@ -From 357cd703e99fbcf1a371f34966accaf5322b1c50 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 22 Feb 2017 14:14:48 -0600 -Subject: [PATCH 1/2] Fix: pengine,libpe_status: don't clear same fail-count - twice - -Previously, pengine and libpe_status were inconsistent when generating -a key to use for a fail-count op. This could lead to two identical ops -being scheduled, one of which would timeout (during which time the resource -would not be recovered). Now, they consistently use generate_op_key(). ---- - lib/pengine/unpack.c | 6 +++--- - pengine/allocate.c | 9 ++++----- - 2 files changed, 7 insertions(+), 8 deletions(-) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 6737273..a357643 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -2934,10 +2934,10 @@ static bool check_operation_expiry(resource_t *rsc, node_t *node, int rc, xmlNod - } - - if (clear_failcount) { -- action_t *clear_op = NULL; -+ char *key = generate_op_key(rsc->id, CRM_OP_CLEAR_FAILCOUNT, 0); -+ action_t *clear_op = custom_action(rsc, key, CRM_OP_CLEAR_FAILCOUNT, -+ node, FALSE, TRUE, data_set); - -- clear_op = custom_action(rsc, crm_concat(rsc->id, CRM_OP_CLEAR_FAILCOUNT, '_'), -- CRM_OP_CLEAR_FAILCOUNT, node, FALSE, TRUE, data_set); - add_hash_param(clear_op->meta, XML_ATTR_TE_NOWAIT, XML_BOOLEAN_TRUE); - } - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 74b57fb..4e8d68d 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -596,7 +596,7 @@ static gboolean - failcount_clear_action_exists(node_t * node, resource_t * rsc) - { - gboolean rc = FALSE; -- char *key = crm_concat(rsc->id, CRM_OP_CLEAR_FAILCOUNT, '_'); -+ char *key = generate_op_key(rsc->id, CRM_OP_CLEAR_FAILCOUNT, 0); - GListPtr list = find_actions_exact(rsc->actions, key, node); - - if (list) { -@@ -1195,10 +1195,9 @@ cleanup_orphans(resource_t * rsc, pe_working_set_t * data_set) - node_t *node = (node_t *) gIter->data; - - if (node->details->online && get_failcount(node, rsc, NULL, data_set)) { -- action_t *clear_op = NULL; -- -- clear_op = custom_action(rsc, crm_concat(rsc->id, CRM_OP_CLEAR_FAILCOUNT, '_'), -- CRM_OP_CLEAR_FAILCOUNT, node, FALSE, TRUE, data_set); -+ char *key = generate_op_key(rsc->id, CRM_OP_CLEAR_FAILCOUNT, 0); -+ action_t *clear_op = custom_action(rsc, key, CRM_OP_CLEAR_FAILCOUNT, -+ node, FALSE, TRUE, data_set); - - add_hash_param(clear_op->meta, XML_ATTR_TE_NOWAIT, XML_BOOLEAN_TRUE); - pe_rsc_info(rsc, "Clearing failcount (%d) for orphaned resource %s on %s (%s)", --- -1.8.3.1 - - -From da8f425a37b844676ca468676b07e61c05ff2843 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 22 Feb 2017 14:33:28 -0600 -Subject: [PATCH 2/2] Log: pengine,libpe_status: make failcount clearing - messages more helpful - ---- - lib/pengine/unpack.c | 17 ++++++++--------- - pengine/allocate.c | 12 +++++++++--- - 2 files changed, 17 insertions(+), 12 deletions(-) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index a357643..e0a3452 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -2851,11 +2851,11 @@ static bool check_operation_expiry(resource_t *rsc, node_t *node, int rc, xmlNod - { - bool expired = FALSE; - time_t last_failure = 0; -- int clear_failcount = 0; - int interval = 0; - int failure_timeout = rsc->failure_timeout; - const char *key = get_op_key(xml_op); - const char *task = crm_element_value(xml_op, XML_LRM_ATTR_TASK); -+ const char *clear_reason = NULL; - - /* clearing recurring monitor operation failures automatically - * needs to be carefully considered */ -@@ -2903,15 +2903,14 @@ static bool check_operation_expiry(resource_t *rsc, node_t *node, int rc, xmlNod - int fc = get_failcount_full(node, rsc, &last_failure, FALSE, xml_op, data_set); - if(fc) { - if (get_failcount_full(node, rsc, &last_failure, TRUE, xml_op, data_set) == 0) { -- clear_failcount = 1; -- crm_notice("Clearing expired failcount for %s on %s", rsc->id, node->details->uname); -+ clear_reason = "it expired"; - - } else { - expired = FALSE; - } - } else if (rsc->remote_reconnect_interval && strstr(ID(xml_op), "last_failure")) { - /* always clear last failure when reconnect interval is set */ -- clear_failcount = 1; -+ clear_reason = "reconnect interval is set"; - } - } - -@@ -2926,19 +2925,19 @@ static bool check_operation_expiry(resource_t *rsc, node_t *node, int rc, xmlNod - crm_trace("rsc op %s/%s on node %s does not have a op digest to compare against", rsc->id, - key, node->details->id); - } else if (digest_data->rc != RSC_DIGEST_MATCH) { -- clear_failcount = 1; -- crm_info -- ("Clearing failcount for %s on %s, %s failed and now resource parameters have changed.", -- task, rsc->id, node->details->uname); -+ clear_reason = "resource parameters have changed"; - } - } - -- if (clear_failcount) { -+ if (clear_reason != NULL) { - char *key = generate_op_key(rsc->id, CRM_OP_CLEAR_FAILCOUNT, 0); - action_t *clear_op = custom_action(rsc, key, CRM_OP_CLEAR_FAILCOUNT, - node, FALSE, TRUE, data_set); - - add_hash_param(clear_op->meta, XML_ATTR_TE_NOWAIT, XML_BOOLEAN_TRUE); -+ -+ crm_notice("Clearing failure of %s on %s because %s " CRM_XS " %s", -+ rsc->id, node->details->uname, clear_reason, clear_op->uuid); - } - - crm_element_value_int(xml_op, XML_LRM_ATTR_INTERVAL, &interval); -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 4e8d68d..9a87816 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -449,6 +449,10 @@ check_actions_for(xmlNode * rsc_entry, resource_t * rsc, node_t * node, pe_worki - action_clear = - custom_action(rsc, key, CRM_OP_CLEAR_FAILCOUNT, node, FALSE, TRUE, data_set); - set_bit(action_clear->flags, pe_action_runnable); -+ -+ crm_notice("Clearing failure of %s on %s " -+ "because action definition changed " CRM_XS " %s", -+ rsc->id, node->details->uname, action_clear->uuid); - } - } - -@@ -1200,9 +1204,11 @@ cleanup_orphans(resource_t * rsc, pe_working_set_t * data_set) - node, FALSE, TRUE, data_set); - - add_hash_param(clear_op->meta, XML_ATTR_TE_NOWAIT, XML_BOOLEAN_TRUE); -- pe_rsc_info(rsc, "Clearing failcount (%d) for orphaned resource %s on %s (%s)", -- get_failcount(node, rsc, NULL, data_set), rsc->id, node->details->uname, -- clear_op->uuid); -+ -+ pe_rsc_info(rsc, -+ "Clearing failure of %s on %s because it is orphaned " -+ 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, --- -1.8.3.1 - diff --git a/SOURCES/025-pe-test.patch b/SOURCES/025-pe-test.patch deleted file mode 100644 index 4a63006..0000000 --- a/SOURCES/025-pe-test.patch +++ /dev/null @@ -1,327 +0,0 @@ -From a762df8a8c64f8a197014ace5d65ca756a2adc9d Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 24 Feb 2017 11:21:21 -0600 -Subject: [PATCH] Test: pengine: update regression tests for new operation name - ---- - pengine/test10/bug-5025-4.dot | 2 +- - pengine/test10/bug-5025-4.exp | 2 +- - pengine/test10/bug-lf-2106.dot | 2 +- - pengine/test10/bug-lf-2106.exp | 4 ++-- - pengine/test10/expire-non-blocked-failure.dot | 2 +- - pengine/test10/expire-non-blocked-failure.exp | 2 +- - pengine/test10/failcount-block.dot | 6 +++--- - pengine/test10/failcount-block.exp | 6 +++--- - pengine/test10/failcount.dot | 4 ++-- - pengine/test10/failcount.exp | 4 ++-- - pengine/test10/orphan-2.dot | 8 ++++---- - pengine/test10/orphan-2.exp | 8 ++++---- - pengine/test10/whitebox-orphan-ms.dot | 6 +++--- - pengine/test10/whitebox-orphaned.dot | 8 ++++---- - pengine/test10/whitebox-orphaned.exp | 8 ++++---- - 15 files changed, 36 insertions(+), 36 deletions(-) - -diff --git a/pengine/test10/bug-5025-4.dot b/pengine/test10/bug-5025-4.dot -index 20a526f..95e65f5 100644 ---- a/pengine/test10/bug-5025-4.dot -+++ b/pengine/test10/bug-5025-4.dot -@@ -1,5 +1,5 @@ - digraph "g" { --"remote-node_clear_failcount 18builder" [ style=bold color="green" fontcolor="black"] -+"remote-node_clear_failcount_0 18builder" [ style=bold color="green" fontcolor="black"] - "remote-node_delete_0 18builder" -> "remote-node_start_0 18builder" [ style = bold] - "remote-node_delete_0 18builder" [ style=bold color="green" fontcolor="black"] - "remote-node_monitor_30000 18builder" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bug-5025-4.exp b/pengine/test10/bug-5025-4.exp -index a51c888..586c540 100644 ---- a/pengine/test10/bug-5025-4.exp -+++ b/pengine/test10/bug-5025-4.exp -@@ -36,7 +36,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-lf-2106.dot b/pengine/test10/bug-lf-2106.dot -index dc36dcf..9799892 100644 ---- a/pengine/test10/bug-lf-2106.dot -+++ b/pengine/test10/bug-lf-2106.dot -@@ -1,6 +1,6 @@ - digraph "g" { - "all_stopped" [ style=bold color="green" fontcolor="orange" ] --"pingd:0_clear_failcount cl-virt-1" [ style=bold color="green" fontcolor="black" ] -+"pingd:0_clear_failcount_0 cl-virt-1" [ style=bold color="green" fontcolor="black"] - "pingd:0_clear_failcount_0 cl-virt-2" [ style=bold color="green" fontcolor="black"] - "pingd:0_monitor_30000 cl-virt-1" [ style=bold color="green" fontcolor="black" ] - "pingd:0_monitor_30000 cl-virt-2" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bug-lf-2106.exp b/pengine/test10/bug-lf-2106.exp -index f7d4900..18b6673 100644 ---- a/pengine/test10/bug-lf-2106.exp -+++ b/pengine/test10/bug-lf-2106.exp -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -94,7 +94,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/expire-non-blocked-failure.dot b/pengine/test10/expire-non-blocked-failure.dot -index d449c7e..8de80a5 100644 ---- a/pengine/test10/expire-non-blocked-failure.dot -+++ b/pengine/test10/expire-non-blocked-failure.dot -@@ -1,3 +1,3 @@ - digraph "g" { --"rsc2_clear_failcount node1" [ style=bold color="green" fontcolor="black"] -+"rsc2_clear_failcount_0 node1" [ style=bold color="green" fontcolor="black"] - } -diff --git a/pengine/test10/expire-non-blocked-failure.exp b/pengine/test10/expire-non-blocked-failure.exp -index c21fb9d..32bedc8 100644 ---- a/pengine/test10/expire-non-blocked-failure.exp -+++ b/pengine/test10/expire-non-blocked-failure.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/failcount-block.dot b/pengine/test10/failcount-block.dot -index c45ebad..7101861 100644 ---- a/pengine/test10/failcount-block.dot -+++ b/pengine/test10/failcount-block.dot -@@ -1,12 +1,12 @@ - digraph "g" { --"rsc_pcmk-1_clear_failcount pcmk-1" [ style=bold color="green" fontcolor="black"] -+"rsc_pcmk-1_clear_failcount_0 pcmk-1" [ style=bold color="green" fontcolor="black"] - "rsc_pcmk-1_monitor_5000 pcmk-1" [ style=bold color="green" fontcolor="black"] --"rsc_pcmk-3_clear_failcount pcmk-1" [ style=bold color="green" fontcolor="black"] -+"rsc_pcmk-3_clear_failcount_0 pcmk-1" [ style=bold color="green" fontcolor="black"] - "rsc_pcmk-3_monitor_5000 pcmk-1" [ style=bold color="green" fontcolor="black"] - "rsc_pcmk-3_start_0 pcmk-1" -> "rsc_pcmk-3_monitor_5000 pcmk-1" [ style = bold] - "rsc_pcmk-3_start_0 pcmk-1" [ style=bold color="green" fontcolor="black"] - "rsc_pcmk-4_monitor_5000 pcmk-1" [ style=bold color="green" fontcolor="black"] - "rsc_pcmk-4_start_0 pcmk-1" -> "rsc_pcmk-4_monitor_5000 pcmk-1" [ style = bold] - "rsc_pcmk-4_start_0 pcmk-1" [ style=bold color="green" fontcolor="black"] --"rsc_pcmk-5_clear_failcount pcmk-1" [ style=bold color="green" fontcolor="black"] -+"rsc_pcmk-5_clear_failcount_0 pcmk-1" [ style=bold color="green" fontcolor="black"] - } -diff --git a/pengine/test10/failcount-block.exp b/pengine/test10/failcount-block.exp -index ca27afa..dd6b8c7 100644 ---- a/pengine/test10/failcount-block.exp -+++ b/pengine/test10/failcount-block.exp -@@ -10,7 +10,7 @@ - - - -- -+ - - - -@@ -41,7 +41,7 @@ - - - -- -+ - - - -@@ -72,7 +72,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/failcount.dot b/pengine/test10/failcount.dot -index 41966ad..10ef996 100644 ---- a/pengine/test10/failcount.dot -+++ b/pengine/test10/failcount.dot -@@ -1,6 +1,6 @@ - digraph "g" { - "re-named-lsb:0_monitor_10000 dresproddns02" [ style=bold color="green" fontcolor="black"] - "re-named-lsb:1_monitor_10000 dresproddns01" [ style=bold color="green" fontcolor="black"] --"re-openfire-lsb:0_clear_failcount dresproddns01" [ style=bold color="green" fontcolor="black"] --"re-openfire-lsb:1_clear_failcount dresproddns02" [ style=bold color="green" fontcolor="black"] -+"re-openfire-lsb:0_clear_failcount_0 dresproddns01" [ style=bold color="green" fontcolor="black"] -+"re-openfire-lsb:1_clear_failcount_0 dresproddns02" [ style=bold color="green" fontcolor="black"] - } -diff --git a/pengine/test10/failcount.exp b/pengine/test10/failcount.exp -index d64c632..e3d7c40 100644 ---- a/pengine/test10/failcount.exp -+++ b/pengine/test10/failcount.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -10,7 +10,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/orphan-2.dot b/pengine/test10/orphan-2.dot -index 2fc1e43..1a4e057 100644 ---- a/pengine/test10/orphan-2.dot -+++ b/pengine/test10/orphan-2.dot -@@ -15,10 +15,10 @@ digraph "g" { - "rsc_c001n03_monitor_0 c001n02" [ style=bold color="green" fontcolor="black"] - "rsc_c001n03_monitor_0 c001n08" [ style=bold color="green" fontcolor="black"] - "rsc_c001n03_monitor_6000 c001n03" [ style=bold color="green" fontcolor="black"] --"rsc_c001n08_clear_failcount c001n02" -> "rsc_c001n08_stop_0 c001n08" [ style = bold] --"rsc_c001n08_clear_failcount c001n02" [ style=bold color="green" fontcolor="black"] --"rsc_c001n08_clear_failcount c001n08" -> "rsc_c001n08_stop_0 c001n08" [ style = bold] --"rsc_c001n08_clear_failcount c001n08" [ style=bold color="green" fontcolor="black"] -+"rsc_c001n08_clear_failcount_0 c001n02" -> "rsc_c001n08_stop_0 c001n08" [ style = bold] -+"rsc_c001n08_clear_failcount_0 c001n02" [ style=bold color="green" fontcolor="black"] -+"rsc_c001n08_clear_failcount_0 c001n08" -> "rsc_c001n08_stop_0 c001n08" [ style = bold] -+"rsc_c001n08_clear_failcount_0 c001n08" [ style=bold color="green" fontcolor="black"] - "rsc_c001n08_delete_0 c001n08" [ style=bold color="green" fontcolor="black"] - "rsc_c001n08_stop_0 c001n08" -> "all_stopped" [ style = bold] - "rsc_c001n08_stop_0 c001n08" -> "rsc_c001n08_delete_0 c001n08" [ style = bold] -diff --git a/pengine/test10/orphan-2.exp b/pengine/test10/orphan-2.exp -index a0ad50e..90042e7 100644 ---- a/pengine/test10/orphan-2.exp -+++ b/pengine/test10/orphan-2.exp -@@ -143,16 +143,16 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -161,7 +161,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-orphan-ms.dot b/pengine/test10/whitebox-orphan-ms.dot -index 5ef3919..46b6cda 100644 ---- a/pengine/test10/whitebox-orphan-ms.dot -+++ b/pengine/test10/whitebox-orphan-ms.dot -@@ -25,9 +25,9 @@ - "container2_stop_0 18node1" -> "container2_delete_0 18node2" [ style = bold] - "container2_stop_0 18node1" -> "container2_delete_0 18node3" [ style = bold] - "container2_stop_0 18node1" [ style=bold color="green" fontcolor="black"] --"lxc-ms_clear_failcount lxc1" -> "lxc-ms_stop_0 lxc1" [ style = dashed] --"lxc-ms_clear_failcount lxc1" -> "lxc-ms_stop_0 lxc2" [ style = dashed] --"lxc-ms_clear_failcount lxc1" [ style=dashed color="red" fontcolor="black"] -+"lxc-ms_clear_failcount_0 lxc1" -> "lxc-ms_stop_0 lxc1" [ style = dashed] -+"lxc-ms_clear_failcount_0 lxc1" -> "lxc-ms_stop_0 lxc2" [ style = dashed] -+"lxc-ms_clear_failcount_0 lxc1" [ style=dashed color="red" fontcolor="black"] - "lxc-ms_delete_0 18node1" [ style=bold color="green" fontcolor="black"] - "lxc-ms_delete_0 18node2" [ style=bold color="green" fontcolor="black"] - "lxc-ms_delete_0 18node3" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/whitebox-orphaned.dot b/pengine/test10/whitebox-orphaned.dot -index 9405fe7..e50252d 100644 ---- a/pengine/test10/whitebox-orphaned.dot -+++ b/pengine/test10/whitebox-orphaned.dot -@@ -15,8 +15,8 @@ - "M_stop_0 lxc1" -> "lxc1_stop_0 18node2" [ style = bold] - "M_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] - "all_stopped" [ style=bold color="green" fontcolor="orange"] --"container1_clear_failcount 18node2" -> "container1_stop_0 18node2" [ style = bold] --"container1_clear_failcount 18node2" [ style=bold color="green" fontcolor="black"] -+"container1_clear_failcount_0 18node2" -> "container1_stop_0 18node2" [ style = bold] -+"container1_clear_failcount_0 18node2" [ style=bold color="green" fontcolor="black"] - "container1_delete_0 18node1" [ style=bold color="green" fontcolor="black"] - "container1_delete_0 18node2" [ style=bold color="green" fontcolor="black"] - "container1_delete_0 18node3" [ style=bold color="green" fontcolor="black"] -@@ -25,8 +25,8 @@ - "container1_stop_0 18node2" -> "container1_delete_0 18node2" [ style = bold] - "container1_stop_0 18node2" -> "container1_delete_0 18node3" [ style = bold] - "container1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] --"lxc1_clear_failcount 18node2" -> "lxc1_stop_0 18node2" [ style = bold] --"lxc1_clear_failcount 18node2" [ style=bold color="green" fontcolor="black"] -+"lxc1_clear_failcount_0 18node2" -> "lxc1_stop_0 18node2" [ style = bold] -+"lxc1_clear_failcount_0 18node2" [ style=bold color="green" fontcolor="black"] - "lxc1_delete_0 18node1" [ style=bold color="green" fontcolor="black"] - "lxc1_delete_0 18node2" [ style=bold color="green" fontcolor="black"] - "lxc1_delete_0 18node3" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/whitebox-orphaned.exp b/pengine/test10/whitebox-orphaned.exp -index 2d70aed..32f8141 100644 ---- a/pengine/test10/whitebox-orphaned.exp -+++ b/pengine/test10/whitebox-orphaned.exp -@@ -79,7 +79,7 @@ - - - -- -+ - - - -@@ -88,7 +88,7 @@ - - - -- -+ - - - -@@ -146,7 +146,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - --- -1.8.3.1 - diff --git a/SOURCES/026-cts.patch b/SOURCES/026-cts.patch deleted file mode 100644 index a9b1c21..0000000 --- a/SOURCES/026-cts.patch +++ /dev/null @@ -1,39 +0,0 @@ -From fc14818a01f544b552a1284155544b37c439dd13 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 24 Feb 2017 13:45:59 -0600 -Subject: [PATCH] Test: CTS: update patterns for recent log message changes - ---- - cts/CTStests.py | 2 +- - cts/patterns.py | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/cts/CTStests.py b/cts/CTStests.py -index a48c54b..8e3e3fa 100644 ---- a/cts/CTStests.py -+++ b/cts/CTStests.py -@@ -1824,7 +1824,7 @@ class Reattach(CTSTest): - def errorstoignore(self): - '''Return list of errors which should be ignored''' - return [ -- r"resources were active at shutdown", -+ r"resource( was|s were) active at shutdown", - ] - - def is_applicable(self): -diff --git a/cts/patterns.py b/cts/patterns.py -index 3f9ac6f..89492b4 100644 ---- a/cts/patterns.py -+++ b/cts/patterns.py -@@ -255,7 +255,7 @@ class crm_cs_v0(BasePatterns): - self.components["common-ignore"] = [ - "Pending action:", - "error: crm_log_message_adv:", -- "resources were active at shutdown", -+ r"resource( was|s were) active at shutdown", - "pending LRM operations at shutdown", - "Lost connection to the CIB service", - "Connection to the CIB terminated...", --- -1.8.3.1 - diff --git a/SOURCES/027-crm_report-drbd.patch b/SOURCES/027-crm_report-drbd.patch deleted file mode 100644 index 6b7158d..0000000 --- a/SOURCES/027-crm_report-drbd.patch +++ /dev/null @@ -1,77 +0,0 @@ -From fd59ef09fbaaabe2763eb9c5524de47e5662de86 Mon Sep 17 00:00:00 2001 -From: Hayley Swimelar -Date: Tue, 28 Feb 2017 08:40:02 -0800 -Subject: [PATCH] collect drbd status information into drbd_info.txt - ---- - tools/report.collector | 34 ++++++++++++++++++++++++++++++++++ - tools/report.common.in | 1 + - 2 files changed, 35 insertions(+) - -diff --git a/tools/report.collector b/tools/report.collector -index 83218ee..0130a2b 100644 ---- a/tools/report.collector -+++ b/tools/report.collector -@@ -543,6 +543,39 @@ dlm_dump() { - fi - } - -+drbd_info() { -+ test -f /proc/drbd && { -+ echo "--- /proc/drbd:" -+ cat /proc/drbd 2>&1 -+ echo -+ } -+ -+ if which drbd-overview >/dev/null 2>&1; then -+ echo "--- drbd-overview:" -+ drbd-overview 2>&1 -+ echo -+ fi -+ -+ if which drbdsetup >/dev/null 2>&1; then -+ echo "--- drbdsetup status:" -+ drbdsetup status --verbose --statistics 2>&1 -+ echo -+ -+ echo "--- drbdsetup events2:" -+ drbdsetup events2 --timestamps --statistics --now 2>&1 -+ echo -+ fi -+ -+ if which drbdadm >/dev/null 2>&1; then -+ echo "--- drbdadm show-gi:" -+ for res in $(drbdsetup status | grep -e ^\\S | awk '{ print $1 }'); do -+ echo "$res:" -+ drbdadm show-gi $res 2>&1 -+ echo -+ done -+ fi -+} -+ - iscfvarset() { - test "`getcfvar $1 $2`" - } -@@ -730,6 +763,7 @@ fi - - dlm_dump > $DLM_DUMP_F 2>&1 - sys_stats > $SYSSTATS_F 2>&1 -+drbd_info > $DRBD_INFO_F 2>&1 - - debug "Sanitizing files: $SANITIZE" - # -diff --git a/tools/report.common.in b/tools/report.common.in -index 70c920c..4682da5 100644 ---- a/tools/report.common.in -+++ b/tools/report.common.in -@@ -42,6 +42,7 @@ CRM_VERIFY_F=crm_verify.txt - PERMISSIONS_F=permissions.txt - CIB_F=cib.xml - CIB_TXT_F=cib.txt -+DRBD_INFO_F=drbd_info.txt - - EVENT_PATTERNS=" - state do_state_transition --- -1.8.3.1 - diff --git a/SOURCES/028-libservices-memory-issues.patch b/SOURCES/028-libservices-memory-issues.patch deleted file mode 100644 index 7f9c937..0000000 --- a/SOURCES/028-libservices-memory-issues.patch +++ /dev/null @@ -1,1482 +0,0 @@ -From 94a4c58f675d163085a055f59fd6c3a2c9f57c43 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 27 Feb 2017 14:17:01 -0600 -Subject: [PATCH 01/10] Fix: libservices: ensure completed ops aren't on - blocked ops list - -This refactors removal of a completed operation from the in-flight ops list -into a new internal function services_untrack_op(), which allows the -in-flight ops list and handle_blocked_ops() to be static to services.c. - -The new function also ensures the op isn't on the blocked ops list, -which could otherwise result in a use-after-free bug. ---- - lib/services/services.c | 23 +++++++++++++++++++++-- - lib/services/services_linux.c | 7 +------ - lib/services/services_private.h | 2 +- - 3 files changed, 23 insertions(+), 9 deletions(-) - -diff --git a/lib/services/services.c b/lib/services/services.c -index 0b535e6..90a2181 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -44,7 +44,9 @@ static GHashTable *recurring_actions = NULL; - static GList *blocked_ops = NULL; - - /* ops currently active (in-flight) */ --GList *inflight_ops = NULL; -+static GList *inflight_ops = NULL; -+ -+static void handle_blocked_ops(void); - - svc_action_t * - services_action_create(const char *name, const char *action, int interval, int timeout) -@@ -605,6 +607,23 @@ services_add_inflight_op(svc_action_t * op) - } - } - -+/*! -+ * \internal -+ * \brief Stop tracking an operation that completed -+ * -+ * \param[in] op Operation to stop tracking -+ */ -+void -+services_untrack_op(svc_action_t *op) -+{ -+ /* Op is no longer in-flight or blocked */ -+ inflight_ops = g_list_remove(inflight_ops, op); -+ blocked_ops = g_list_remove(blocked_ops, op); -+ -+ /* Op is no longer blocking other ops, so check if any need to run */ -+ handle_blocked_ops(); -+} -+ - gboolean - services_action_async(svc_action_t * op, void (*action_callback) (svc_action_t *)) - { -@@ -649,7 +668,7 @@ is_op_blocked(const char *rsc) - return FALSE; - } - --void -+static void - handle_blocked_ops(void) - { - GList *executed_ops = NULL; -diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c -index adfefaa..1fe3ec1 100644 ---- a/lib/services/services_linux.c -+++ b/lib/services/services_linux.c -@@ -36,9 +36,6 @@ - # include "crm/common/cib_secrets.h" - #endif - --/* ops currently active (in-flight) */ --extern GList *inflight_ops; -- - static inline void - set_fd_opts(int fd, int opts) - { -@@ -248,9 +245,7 @@ operation_finalize(svc_action_t * op) - - op->pid = 0; - -- inflight_ops = g_list_remove(inflight_ops, op); -- -- handle_blocked_ops(); -+ services_untrack_op(op); - - if (!recurring && op->synchronous == FALSE) { - /* -diff --git a/lib/services/services_private.h b/lib/services/services_private.h -index ec9e1c4..a949592 100644 ---- a/lib/services/services_private.h -+++ b/lib/services/services_private.h -@@ -76,7 +76,7 @@ G_GNUC_INTERNAL - void services_add_inflight_op(svc_action_t *op); - - G_GNUC_INTERNAL --void handle_blocked_ops(void); -+void services_untrack_op(svc_action_t *op); - - G_GNUC_INTERNAL - gboolean is_op_blocked(const char *rsc); --- -1.8.3.1 - - -From b938c47740a456d0057438e4f5e6029d0e084587 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 27 Feb 2017 14:20:05 -0600 -Subject: [PATCH 02/10] Refactor: libservices: dynamically allocate operation - key - -reduces code duplication, and avoids memory over-allocation ---- - lib/services/services.c | 18 ++++++------------ - 1 file changed, 6 insertions(+), 12 deletions(-) - -diff --git a/lib/services/services.c b/lib/services/services.c -index 90a2181..4020b7d 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -149,10 +149,7 @@ resources_action_create(const char *name, const char *standard, const char *prov - op->agent = strdup(agent); - op->sequence = ++operations; - op->flags = flags; -- -- if (asprintf(&op->id, "%s_%s_%d", name, action, interval) == -1) { -- goto return_error; -- } -+ op->id = generate_op_key(name, action, interval); - - if (strcasecmp(op->standard, "service") == 0) { - const char *expanded = resources_find_service_class(op->agent); -@@ -467,11 +464,10 @@ gboolean - services_action_cancel(const char *name, const char *action, int interval) - { - svc_action_t *op = NULL; -- char id[512]; -- -- snprintf(id, sizeof(id), "%s_%s_%d", name, action, interval); -+ char *id = generate_op_key(name, action, interval); - - if (!(op = g_hash_table_lookup(recurring_actions, id))) { -+ free(id); - return FALSE; - } - -@@ -494,10 +490,12 @@ services_action_cancel(const char *name, const char *action, int interval) - /* even though the early termination failed, - * the op will be marked as cancelled once it completes. */ - crm_err("Termination of %s (pid=%d) failed", id, op->pid); -+ free(id); - return FALSE; - } - } - -+ free(id); - return TRUE; - } - -@@ -505,11 +503,7 @@ gboolean - services_action_kick(const char *name, const char *action, int interval /* ms */) - { - svc_action_t * op = NULL; -- char *id = NULL; -- -- if (asprintf(&id, "%s_%s_%d", name, action, interval) == -1) { -- return FALSE; -- } -+ char *id = generate_op_key(name, action, interval); - - op = g_hash_table_lookup(recurring_actions, id); - free(id); --- -1.8.3.1 - - -From 933d46ef20591757301784773a37e06b78906584 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 27 Feb 2017 14:28:36 -0600 -Subject: [PATCH 03/10] Fix: libservices: prevent use-after-free when freeing - an operation - ---- - lib/services/services.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/lib/services/services.c b/lib/services/services.c -index 4020b7d..78a0781 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -410,6 +410,16 @@ services_action_free(svc_action_t * op) - return; - } - -+ /* The operation should be removed from all tracking lists by this point. -+ * If it's not, we have a bug somewhere, so bail. That may lead to a -+ * memory leak, but it's better than a use-after-free segmentation fault. -+ */ -+ CRM_CHECK(g_list_find(inflight_ops, op) == NULL, return); -+ CRM_CHECK(g_list_find(blocked_ops, op) == NULL, return); -+ CRM_CHECK((recurring_actions == NULL) -+ || (g_hash_table_lookup(recurring_actions, op->id) == NULL), -+ return); -+ - services_action_cleanup(op); - - if (op->opaque->repeat_timer) { --- -1.8.3.1 - - -From dc36d4375c049024a6f9e4d2277a3e6444fad05b Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 28 Feb 2017 15:41:10 -0600 -Subject: [PATCH 04/10] Refactor: libservices: handle in-flight case first when - cancelling an operation - -will make next bugfix easier ---- - lib/services/services.c | 65 ++++++++++++++++++++++++++++++++----------------- - 1 file changed, 42 insertions(+), 23 deletions(-) - -diff --git a/lib/services/services.c b/lib/services/services.c -index 78a0781..dba4e66 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -470,43 +470,62 @@ cancel_recurring_action(svc_action_t * op) - return TRUE; - } - -+/*! -+ * \brief Cancel a recurring action -+ * -+ * \param[in] name Name of resource that operation is for -+ * \param[in] action Name of operation to cancel -+ * \param[in] interval Interval of operation to cancel -+ * -+ * \return TRUE if action was successfully cancelled, FALSE otherwise -+ */ - gboolean - services_action_cancel(const char *name, const char *action, int interval) - { -- svc_action_t *op = NULL; -+ gboolean cancelled = FALSE; - char *id = generate_op_key(name, action, interval); -+ svc_action_t *op = g_hash_table_lookup(recurring_actions, id); - -- if (!(op = g_hash_table_lookup(recurring_actions, id))) { -- free(id); -- return FALSE; -+ /* We can only cancel a recurring action */ -+ if (op == NULL) { -+ goto done; - } - -- /* Always kill the recurring timer */ -+ /* Tell operation_finalize() not to reschedule the operation */ -+ op->cancel = TRUE; -+ -+ /* Stop tracking it as a recurring operation, and stop its timer */ - cancel_recurring_action(op); - -- if (op->pid == 0) { -- op->status = PCMK_LRM_OP_CANCELLED; -- if (op->opaque->callback) { -- op->opaque->callback(op); -+ /* If the op has a PID, it's an in-flight child process, so kill it. -+ * -+ * Whether the kill succeeds or fails, the main loop will send the op to -+ * operation_finished() (and thus operation_finalize()) when the process -+ * goes away. -+ */ -+ if (op->pid != 0) { -+ crm_info("Terminating in-flight op %s (pid %d) early because it was cancelled", -+ id, op->pid); -+ cancelled = mainloop_child_kill(op->pid); -+ if (cancelled == FALSE) { -+ crm_err("Termination of %s (pid %d) failed", id, op->pid); - } -+ goto done; -+ } - -- blocked_ops = g_list_remove(blocked_ops, op); -- services_action_free(op); -- -- } else { -- crm_info("Cancelling in-flight op: performing early termination of %s (pid=%d)", id, op->pid); -- op->cancel = 1; -- if (mainloop_child_kill(op->pid) == FALSE) { -- /* even though the early termination failed, -- * the op will be marked as cancelled once it completes. */ -- crm_err("Termination of %s (pid=%d) failed", id, op->pid); -- free(id); -- return FALSE; -- } -+ /* Otherwise, operation is not in-flight, just report as cancelled */ -+ op->status = PCMK_LRM_OP_CANCELLED; -+ if (op->opaque->callback) { -+ op->opaque->callback(op); - } - -+ blocked_ops = g_list_remove(blocked_ops, op); -+ services_action_free(op); -+ cancelled = TRUE; -+ -+done: - free(id); -- return TRUE; -+ return cancelled; - } - - gboolean --- -1.8.3.1 - - -From deabcc5a6aa93dadf0b20364715b559a5b9848ac Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 28 Feb 2017 15:48:11 -0600 -Subject: [PATCH 05/10] Fix: libservices: properly cancel in-flight - systemd/upstart op - ---- - lib/services/services.c | 27 +++++++++++++++++++++++++++ - 1 file changed, 27 insertions(+) - -diff --git a/lib/services/services.c b/lib/services/services.c -index dba4e66..4aa4c01 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -89,6 +89,21 @@ resources_find_service_class(const char *agent) - return NULL; - } - -+/*! -+ * \internal -+ * \brief Check whether op is in-flight systemd or upstart op -+ * -+ * \param[in] op Operation to check -+ * -+ * \return TRUE if op is in-flight systemd or upstart op -+ */ -+static inline gboolean -+inflight_systemd_or_upstart(svc_action_t *op) -+{ -+ return (safe_str_eq(op->standard, "systemd") -+ || safe_str_eq(op->standard, "upstart")) -+ && (g_list_find(inflight_ops, op) != NULL); -+} - - svc_action_t * - resources_action_create(const char *name, const char *standard, const char *provider, -@@ -513,6 +528,18 @@ services_action_cancel(const char *name, const char *action, int interval) - goto done; - } - -+ /* In-flight systemd and upstart ops don't have a pid. The relevant handlers -+ * will call operation_finalize() when the operation completes. -+ * @TODO: Can we request early termination, maybe using -+ * dbus_pending_call_cancel()? -+ */ -+ if (inflight_systemd_or_upstart(op)) { -+ crm_info("Will cancel %s op %s when in-flight instance completes", -+ op->standard, op->id); -+ cancelled = FALSE; -+ goto done; -+ } -+ - /* Otherwise, operation is not in-flight, just report as cancelled */ - op->status = PCMK_LRM_OP_CANCELLED; - if (op->opaque->callback) { --- -1.8.3.1 - - -From b85037b75255061a41d0ec3fd9b64f271351b43e Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 28 Feb 2017 16:43:52 -0600 -Subject: [PATCH 06/10] Fix: libservices: properly detect in-flight - systemd/upstart ops when kicking - ---- - lib/services/services.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/lib/services/services.c b/lib/services/services.c -index 4aa4c01..b41517d 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -568,7 +568,8 @@ services_action_kick(const char *name, const char *action, int interval /* ms */ - return FALSE; - } - -- if (op->pid) { -+ -+ if (op->pid || inflight_systemd_or_upstart(op)) { - return TRUE; - } else { - if (op->opaque->repeat_timer) { --- -1.8.3.1 - - -From 55be77356d9253c46a1ddebefd6f403366209281 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 28 Feb 2017 18:37:23 -0600 -Subject: [PATCH 07/10] Log: libservices: improve error messages when creating - operation - ---- - lib/services/services.c | 21 +++++++++++---------- - 1 file changed, 11 insertions(+), 10 deletions(-) - -diff --git a/lib/services/services.c b/lib/services/services.c -index b41517d..e089717 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -118,27 +118,27 @@ resources_action_create(const char *name, const char *standard, const char *prov - */ - - if (crm_strlen_zero(name)) { -- crm_err("A service or resource action must have a name."); -+ crm_err("Cannot create operation without resource name"); - goto return_error; - } - - if (crm_strlen_zero(standard)) { -- crm_err("A service action must have a valid standard."); -+ crm_err("Cannot create operation for %s without resource class", name); - goto return_error; - } - - if (!strcasecmp(standard, "ocf") && crm_strlen_zero(provider)) { -- crm_err("An OCF resource action must have a provider."); -+ crm_err("Cannot create OCF operation for %s without provider", name); - goto return_error; - } - - if (crm_strlen_zero(agent)) { -- crm_err("A service or resource action must have an agent."); -+ crm_err("Cannot create operation for %s without agent name", name); - goto return_error; - } - - if (crm_strlen_zero(action)) { -- crm_err("A service or resource action must specify an action."); -+ crm_err("Cannot create operation for %s without operation name", name); - goto return_error; - } - -@@ -170,12 +170,13 @@ resources_action_create(const char *name, const char *standard, const char *prov - const char *expanded = resources_find_service_class(op->agent); - - if(expanded) { -- crm_debug("Found a %s agent for %s/%s", expanded, op->rsc, op->agent); -+ crm_debug("Found %s agent %s for %s", expanded, op->agent, op->rsc); - free(op->standard); - op->standard = strdup(expanded); - - } else { -- crm_info("Cannot determine the standard for %s (%s)", op->rsc, op->agent); -+ crm_info("Assuming resource class lsb for agent %s for %s", -+ op->agent, op->rsc); - free(op->standard); - op->standard = strdup("lsb"); - } -@@ -226,7 +227,7 @@ resources_action_create(const char *name, const char *standard, const char *prov - /* The "heartbeat" agent class only has positional arguments, - * which we keyed by their decimal position number. */ - param_num = 1; -- for (index = 1; index <= MAX_ARGC - 3; index++ ) { -+ for (index = 1; index <= MAX_ARGC - 3; index++ ) { - snprintf(buf_tmp, sizeof(buf_tmp), "%d", index); - value_tmp = g_hash_table_lookup(params, buf_tmp); - if (value_tmp == NULL) { -@@ -237,8 +238,8 @@ resources_action_create(const char *name, const char *standard, const char *prov - op->opaque->args[param_num++] = strdup(value_tmp); - } - -- /* Add operation code as the last argument, */ -- /* and the teminating NULL pointer */ -+ /* Add operation code as the last argument, */ -+ /* and the teminating NULL pointer */ - op->opaque->args[param_num++] = strdup(op->action); - op->opaque->args[param_num] = NULL; - #endif --- -1.8.3.1 - - -From 121a3f219ff5a9ea07e271cb03d9c55af2d2ad1f Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 28 Feb 2017 18:55:11 -0600 -Subject: [PATCH 08/10] Refactor: libservices: functionize expanding resource - class, and remove dead code - ---- - include/crm/services.h | 1 + - lib/services/services.c | 75 ++++++++++++++++++++++++++++--------------------- - 2 files changed, 44 insertions(+), 32 deletions(-) - -diff --git a/include/crm/services.h b/include/crm/services.h -index 05c8ebf..28bb76a 100644 ---- a/include/crm/services.h -+++ b/include/crm/services.h -@@ -47,6 +47,7 @@ extern "C" { - # define SYSTEMCTL "/bin/systemctl" - # endif - -+/* Deprecated and unused by Pacemaker, kept for API backward compatibility */ - # ifndef SERVICE_SCRIPT - # define SERVICE_SCRIPT "/sbin/service" - # endif -diff --git a/lib/services/services.c b/lib/services/services.c -index e089717..3ffaeb6 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -105,6 +105,41 @@ inflight_systemd_or_upstart(svc_action_t *op) - && (g_list_find(inflight_ops, op) != NULL); - } - -+/*! -+ * \internal -+ * \brief Expand "service" alias to an actual resource class -+ * -+ * \param[in] rsc Resource name (for logging only) -+ * \param[in] standard Resource class as configured -+ * \param[in] agent Agent name to look for -+ * -+ * \return Newly allocated string with actual resource class -+ * -+ * \note The caller is responsible for calling free() on the result. -+ */ -+static char * -+expand_resource_class(const char *rsc, const char *standard, const char *agent) -+{ -+ char *expanded_class = NULL; -+ -+ if (strcasecmp(standard, "service") == 0) { -+ const char *found_class = resources_find_service_class(agent); -+ -+ if (found_class) { -+ crm_debug("Found %s agent %s for %s", found_class, agent, rsc); -+ expanded_class = strdup(found_class); -+ } else { -+ crm_info("Assuming resource class lsb for agent %s for %s", -+ agent, rsc); -+ expanded_class = strdup("lsb"); -+ } -+ } else { -+ expanded_class = strdup(standard); -+ } -+ CRM_ASSERT(expanded_class); -+ return expanded_class; -+} -+ - svc_action_t * - resources_action_create(const char *name, const char *standard, const char *provider, - const char *agent, const char *action, int interval, int timeout, -@@ -142,14 +177,6 @@ resources_action_create(const char *name, const char *standard, const char *prov - goto return_error; - } - -- if (safe_str_eq(action, "monitor") && ( --#if SUPPORT_HEARTBEAT -- safe_str_eq(standard, "heartbeat") || --#endif -- safe_str_eq(standard, "lsb") || safe_str_eq(standard, "service"))) { -- action = "status"; -- } -- - /* - * Sanity checks passed, proceed! - */ -@@ -157,31 +184,22 @@ resources_action_create(const char *name, const char *standard, const char *prov - op = calloc(1, sizeof(svc_action_t)); - op->opaque = calloc(1, sizeof(svc_action_private_t)); - op->rsc = strdup(name); -- op->action = strdup(action); - op->interval = interval; - op->timeout = timeout; -- op->standard = strdup(standard); -+ op->standard = expand_resource_class(name, standard, agent); - op->agent = strdup(agent); - op->sequence = ++operations; - op->flags = flags; - op->id = generate_op_key(name, action, interval); - -- if (strcasecmp(op->standard, "service") == 0) { -- const char *expanded = resources_find_service_class(op->agent); -- -- if(expanded) { -- crm_debug("Found %s agent %s for %s", expanded, op->agent, op->rsc); -- free(op->standard); -- op->standard = strdup(expanded); -- -- } else { -- crm_info("Assuming resource class lsb for agent %s for %s", -- op->agent, op->rsc); -- free(op->standard); -- op->standard = strdup("lsb"); -- } -- CRM_ASSERT(op->standard); -+ if (safe_str_eq(action, "monitor") && ( -+#if SUPPORT_HEARTBEAT -+ safe_str_eq(op->standard, "heartbeat") || -+#endif -+ safe_str_eq(op->standard, "lsb"))) { -+ action = "status"; - } -+ op->action = strdup(action); - - if (strcasecmp(op->standard, "ocf") == 0) { - op->provider = strdup(provider); -@@ -251,12 +269,6 @@ resources_action_create(const char *name, const char *standard, const char *prov - } else if (strcasecmp(op->standard, "upstart") == 0) { - op->opaque->exec = strdup("upstart-dbus"); - #endif -- } else if (strcasecmp(op->standard, "service") == 0) { -- op->opaque->exec = strdup(SERVICE_SCRIPT); -- op->opaque->args[0] = strdup(SERVICE_SCRIPT); -- op->opaque->args[1] = strdup(agent); -- op->opaque->args[2] = strdup(action); -- - #if SUPPORT_NAGIOS - } else if (strcasecmp(op->standard, "nagios") == 0) { - int index = 0; -@@ -308,7 +320,6 @@ resources_action_create(const char *name, const char *standard, const char *prov - } - op->opaque->args[index] = NULL; - #endif -- - } else { - crm_err("Unknown resource standard: %s", op->standard); - services_action_free(op); --- -1.8.3.1 - - -From 46c07e23d48806140cf12393b7867063630cdf30 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 28 Feb 2017 19:30:16 -0600 -Subject: [PATCH 09/10] Refactor: various: use defined constants for resource - classes - -ensures a typo won't compile ---- - crmd/remote_lrmd_ra.c | 2 +- - fencing/main.c | 6 ++-- - include/crm/services.h | 9 +++++ - lib/lrmd/lrmd_client.c | 23 +++++++------ - lib/pengine/complex.c | 2 +- - lib/pengine/native.c | 8 ++--- - lib/pengine/remote.c | 3 +- - lib/pengine/unpack.c | 2 +- - lib/services/services.c | 79 ++++++++++++++++++++++++------------------- - lib/services/services_linux.c | 9 +++-- - lrmd/lrmd.c | 44 +++++++++++++----------- - pengine/native.c | 2 +- - tools/crm_resource_print.c | 2 +- - tools/crm_resource_runtime.c | 2 +- - tools/fake_transition.c | 17 +++++----- - 15 files changed, 119 insertions(+), 91 deletions(-) - -diff --git a/crmd/remote_lrmd_ra.c b/crmd/remote_lrmd_ra.c -index eb995ea..e68d784 100644 ---- a/crmd/remote_lrmd_ra.c -+++ b/crmd/remote_lrmd_ra.c -@@ -841,7 +841,7 @@ remote_ra_get_rsc_info(lrm_state_t * lrm_state, const char *rsc_id) - - info->id = strdup(rsc_id); - info->type = strdup(REMOTE_LRMD_RA); -- info->class = strdup("ocf"); -+ info->class = strdup(PCMK_RESOURCE_CLASS_OCF); - info->provider = strdup("pacemaker"); - } - -diff --git a/fencing/main.c b/fencing/main.c -index 95a1408..e6eb087 100644 ---- a/fencing/main.c -+++ b/fencing/main.c -@@ -455,7 +455,7 @@ remove_cib_device(xmlXPathObjectPtr xpathObj) - standard = crm_element_value(match, XML_AGENT_ATTR_CLASS); - } - -- if (safe_str_neq(standard, "stonith")) { -+ if (safe_str_neq(standard, PCMK_RESOURCE_CLASS_STONITH)) { - continue; - } - -@@ -630,7 +630,7 @@ static void cib_device_update(resource_t *rsc, pe_working_set_t *data_set) - - /* We only care about STONITH resources. */ - rclass = crm_element_value(rsc->xml, XML_AGENT_ATTR_CLASS); -- if(safe_str_neq(rclass, "stonith")) { -+ if (safe_str_neq(rclass, PCMK_RESOURCE_CLASS_STONITH)) { - return; - } - -@@ -848,7 +848,7 @@ update_cib_stonith_devices_v1(const char *event, xmlNode * msg) - rsc_id = crm_element_value(match, XML_ATTR_ID); - standard = crm_element_value(match, XML_AGENT_ATTR_CLASS); - -- if (safe_str_neq(standard, "stonith")) { -+ if (safe_str_neq(standard, PCMK_RESOURCE_CLASS_STONITH)) { - continue; - } - -diff --git a/include/crm/services.h b/include/crm/services.h -index 28bb76a..e1fae9b 100644 ---- a/include/crm/services.h -+++ b/include/crm/services.h -@@ -52,6 +52,15 @@ extern "C" { - # define SERVICE_SCRIPT "/sbin/service" - # endif - -+/* Known resource classes */ -+#define PCMK_RESOURCE_CLASS_OCF "ocf" -+#define PCMK_RESOURCE_CLASS_SERVICE "service" -+#define PCMK_RESOURCE_CLASS_LSB "lsb" -+#define PCMK_RESOURCE_CLASS_SYSTEMD "systemd" -+#define PCMK_RESOURCE_CLASS_UPSTART "upstart" -+#define PCMK_RESOURCE_CLASS_HB "heartbeat" -+#define PCMK_RESOURCE_CLASS_NAGIOS "nagios" -+#define PCMK_RESOURCE_CLASS_STONITH "stonith" - - /* This is the string passed in the OCF_EXIT_REASON_PREFIX - * environment variable. The stderr output that occurs -diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c -index e009078..64b66b1 100644 ---- a/lib/lrmd/lrmd_client.c -+++ b/lib/lrmd/lrmd_client.c -@@ -1438,7 +1438,7 @@ lrmd_api_register_rsc(lrmd_t * lrmd, - if (!class || !type || !rsc_id) { - return -EINVAL; - } -- if (safe_str_eq(class, "ocf") && !provider) { -+ if (safe_str_eq(class, PCMK_RESOURCE_CLASS_OCF) && !provider) { - return -EINVAL; - } - -@@ -1525,7 +1525,7 @@ lrmd_api_get_rsc_info(lrmd_t * lrmd, const char *rsc_id, enum lrmd_call_options - if (!class || !type) { - free_xml(output); - return NULL; -- } else if (safe_str_eq(class, "ocf") && !provider) { -+ } else if (safe_str_eq(class, PCMK_RESOURCE_CLASS_OCF) && !provider) { - free_xml(output); - return NULL; - } -@@ -1969,20 +1969,20 @@ lrmd_api_get_metadata(lrmd_t * lrmd, - return -EINVAL; - } - -- if (safe_str_eq(class, "service")) { -+ if (safe_str_eq(class, PCMK_RESOURCE_CLASS_SERVICE)) { - class = resources_find_service_class(type); - } - -- if (safe_str_eq(class, "stonith")) { -+ if (safe_str_eq(class, PCMK_RESOURCE_CLASS_STONITH)) { - return stonith_get_metadata(provider, type, output); -- } else if (safe_str_eq(class, "lsb")) { -+ } else if (safe_str_eq(class, PCMK_RESOURCE_CLASS_LSB)) { - return lsb_get_metadata(type, output); - #if SUPPORT_NAGIOS -- } else if (safe_str_eq(class, "nagios")) { -+ } else if (safe_str_eq(class, PCMK_RESOURCE_CLASS_NAGIOS)) { - return nagios_get_metadata(type, output); - #endif - #if SUPPORT_HEARTBEAT -- } else if (safe_str_eq(class, "heartbeat")) { -+ } else if (safe_str_eq(class, PCMK_RESOURCE_CLASS_HB)) { - return heartbeat_get_metadata(type, output); - #endif - } -@@ -2073,7 +2073,7 @@ lrmd_api_list_agents(lrmd_t * lrmd, lrmd_list_t ** resources, const char *class, - { - int rc = 0; - -- if (safe_str_eq(class, "stonith")) { -+ if (safe_str_eq(class, PCMK_RESOURCE_CLASS_STONITH)) { - rc += list_stonith_agents(resources); - - } else { -@@ -2124,11 +2124,12 @@ lrmd_api_list_ocf_providers(lrmd_t * lrmd, const char *agent, lrmd_list_t ** pro - GList *ocf_providers = NULL; - GListPtr gIter = NULL; - -- ocf_providers = resources_list_providers("ocf"); -+ ocf_providers = resources_list_providers(PCMK_RESOURCE_CLASS_OCF); - - for (gIter = ocf_providers; gIter != NULL; gIter = gIter->next) { - provider = gIter->data; -- if (!agent || does_provider_have_agent(agent, provider, "ocf")) { -+ if (!agent || does_provider_have_agent(agent, provider, -+ PCMK_RESOURCE_CLASS_OCF)) { - *providers = lrmd_list_add(*providers, (const char *)gIter->data); - rc++; - } -@@ -2153,7 +2154,7 @@ lrmd_api_list_standards(lrmd_t * lrmd, lrmd_list_t ** supported) - } - - if (list_stonith_agents(NULL) > 0) { -- *supported = lrmd_list_add(*supported, "stonith"); -+ *supported = lrmd_list_add(*supported, PCMK_RESOURCE_CLASS_STONITH); - rc++; - } - -diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c -index 7fe622f..a83929d 100644 ---- a/lib/pengine/complex.c -+++ b/lib/pengine/complex.c -@@ -651,7 +651,7 @@ common_unpack(xmlNode * xml_obj, resource_t ** rsc, - } - } - -- if (safe_str_eq(rclass, "stonith")) { -+ if (safe_str_eq(rclass, PCMK_RESOURCE_CLASS_STONITH)) { - set_bit(data_set->flags, pe_flag_have_stonith_resource); - set_bit((*rsc)->flags, pe_rsc_fence_device); - } -diff --git a/lib/pengine/native.c b/lib/pengine/native.c -index 11febf4..5f3cfc3 100644 ---- a/lib/pengine/native.c -+++ b/lib/pengine/native.c -@@ -136,14 +136,14 @@ native_unpack(resource_t * rsc, pe_working_set_t * data_set) - - if (is_set(rsc->flags, pe_rsc_unique) && rsc->parent) { - -- if (safe_str_eq(class, "lsb")) { -+ if (safe_str_eq(class, PCMK_RESOURCE_CLASS_LSB)) { - resource_t *top = uber_parent(rsc); - - force_non_unique_clone(top, rsc->id, data_set); - } - } - -- if (safe_str_eq(class, "ocf") == FALSE) { -+ if (safe_str_eq(class, PCMK_RESOURCE_CLASS_OCF) == FALSE) { - const char *stateful = g_hash_table_lookup(parent->meta, "stateful"); - - if (safe_str_eq(stateful, XML_BOOLEAN_TRUE)) { -@@ -533,7 +533,7 @@ native_print(resource_t * rsc, const char *pre_text, long options, void *print_d - } - offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", rsc_printable_id(rsc)); - offset += snprintf(buffer + offset, LINE_MAX - offset, "\t(%s", class); -- if (safe_str_eq(class, "ocf")) { -+ if (safe_str_eq(class, PCMK_RESOURCE_CLASS_OCF)) { - const char *prov = crm_element_value(rsc->xml, XML_AGENT_ATTR_PROVIDER); - offset += snprintf(buffer + offset, LINE_MAX - offset, "::%s", prov); - } -@@ -799,7 +799,7 @@ get_rscs_brief(GListPtr rsc_list, GHashTable * rsc_table, GHashTable * active_ta - } - - offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", class); -- if (safe_str_eq(class, "ocf")) { -+ if (safe_str_eq(class, PCMK_RESOURCE_CLASS_OCF)) { - const char *prov = crm_element_value(rsc->xml, XML_AGENT_ATTR_PROVIDER); - offset += snprintf(buffer + offset, LINE_MAX - offset, "::%s", prov); - } -diff --git a/lib/pengine/remote.c b/lib/pengine/remote.c -index e8d9bab..c5a3eec 100644 ---- a/lib/pengine/remote.c -+++ b/lib/pengine/remote.c -@@ -94,7 +94,8 @@ xml_contains_remote_node(xmlNode *xml) - const char *provider = crm_element_value(xml, XML_AGENT_ATTR_PROVIDER); - const char *agent = crm_element_value(xml, XML_ATTR_TYPE); - -- if (safe_str_eq(agent, "remote") && safe_str_eq(provider, "pacemaker") && safe_str_eq(class, "ocf")) { -+ if (safe_str_eq(agent, "remote") && safe_str_eq(provider, "pacemaker") -+ && safe_str_eq(class, PCMK_RESOURCE_CLASS_OCF)) { - return TRUE; - } - return FALSE; -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index e0a3452..e6a8f58 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -422,7 +422,7 @@ expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, GHashTable **rsc_name_ - xml_rsc = create_xml_node(parent, XML_CIB_TAG_RESOURCE); - - crm_xml_add(xml_rsc, XML_ATTR_ID, remote_name); -- crm_xml_add(xml_rsc, XML_AGENT_ATTR_CLASS, "ocf"); -+ crm_xml_add(xml_rsc, XML_AGENT_ATTR_CLASS, PCMK_RESOURCE_CLASS_OCF); - crm_xml_add(xml_rsc, XML_AGENT_ATTR_PROVIDER, "pacemaker"); - crm_xml_add(xml_rsc, XML_ATTR_TYPE, "remote"); - -diff --git a/lib/services/services.c b/lib/services/services.c -index 3ffaeb6..52d3b55 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -51,7 +51,8 @@ static void handle_blocked_ops(void); - svc_action_t * - services_action_create(const char *name, const char *action, int interval, int timeout) - { -- return resources_action_create(name, "lsb", NULL, name, action, interval, timeout, NULL, 0); -+ return resources_action_create(name, PCMK_RESOURCE_CLASS_LSB, NULL, name, -+ action, interval, timeout, NULL, 0); - } - - const char * -@@ -70,20 +71,20 @@ resources_find_service_class(const char *agent) - rc = asprintf(&path, "%s/%s", LSB_ROOT_DIR, agent); - if (rc > 0 && stat(path, &st) == 0) { - free(path); -- return "lsb"; -+ return PCMK_RESOURCE_CLASS_LSB; - } - free(path); - #endif - - #if SUPPORT_SYSTEMD - if (systemd_unit_exists(agent)) { -- return "systemd"; -+ return PCMK_RESOURCE_CLASS_SYSTEMD; - } - #endif - - #if SUPPORT_UPSTART - if (upstart_job_exists(agent)) { -- return "upstart"; -+ return PCMK_RESOURCE_CLASS_UPSTART; - } - #endif - return NULL; -@@ -100,8 +101,8 @@ resources_find_service_class(const char *agent) - static inline gboolean - inflight_systemd_or_upstart(svc_action_t *op) - { -- return (safe_str_eq(op->standard, "systemd") -- || safe_str_eq(op->standard, "upstart")) -+ return (safe_str_eq(op->standard, PCMK_RESOURCE_CLASS_SYSTEMD) -+ || safe_str_eq(op->standard, PCMK_RESOURCE_CLASS_UPSTART)) - && (g_list_find(inflight_ops, op) != NULL); - } - -@@ -122,7 +123,7 @@ expand_resource_class(const char *rsc, const char *standard, const char *agent) - { - char *expanded_class = NULL; - -- if (strcasecmp(standard, "service") == 0) { -+ if (strcasecmp(standard, PCMK_RESOURCE_CLASS_SERVICE) == 0) { - const char *found_class = resources_find_service_class(agent); - - if (found_class) { -@@ -131,7 +132,7 @@ expand_resource_class(const char *rsc, const char *standard, const char *agent) - } else { - crm_info("Assuming resource class lsb for agent %s for %s", - agent, rsc); -- expanded_class = strdup("lsb"); -+ expanded_class = strdup(PCMK_RESOURCE_CLASS_LSB); - } - } else { - expanded_class = strdup(standard); -@@ -162,7 +163,8 @@ resources_action_create(const char *name, const char *standard, const char *prov - goto return_error; - } - -- if (!strcasecmp(standard, "ocf") && crm_strlen_zero(provider)) { -+ if (!strcasecmp(standard, PCMK_RESOURCE_CLASS_OCF) -+ && crm_strlen_zero(provider)) { - crm_err("Cannot create OCF operation for %s without provider", name); - goto return_error; - } -@@ -194,14 +196,14 @@ resources_action_create(const char *name, const char *standard, const char *prov - - if (safe_str_eq(action, "monitor") && ( - #if SUPPORT_HEARTBEAT -- safe_str_eq(op->standard, "heartbeat") || -+ safe_str_eq(op->standard, PCMK_RESOURCE_CLASS_HB) || - #endif -- safe_str_eq(op->standard, "lsb"))) { -+ safe_str_eq(op->standard, PCMK_RESOURCE_CLASS_LSB))) { - action = "status"; - } - op->action = strdup(action); - -- if (strcasecmp(op->standard, "ocf") == 0) { -+ if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_OCF) == 0) { - op->provider = strdup(provider); - op->params = params; - params = NULL; -@@ -213,7 +215,7 @@ resources_action_create(const char *name, const char *standard, const char *prov - op->opaque->args[0] = strdup(op->opaque->exec); - op->opaque->args[1] = strdup(action); - -- } else if (strcasecmp(op->standard, "lsb") == 0) { -+ } else if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_LSB) == 0) { - if (op->agent[0] == '/') { - /* if given an absolute path, use that instead - * of tacking on the LSB_ROOT_DIR path to the front */ -@@ -226,7 +228,7 @@ resources_action_create(const char *name, const char *standard, const char *prov - op->opaque->args[1] = strdup(op->action); - op->opaque->args[2] = NULL; - #if SUPPORT_HEARTBEAT -- } else if (strcasecmp(op->standard, "heartbeat") == 0) { -+ } else if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_HB) == 0) { - int index; - int param_num; - char buf_tmp[20]; -@@ -262,15 +264,15 @@ resources_action_create(const char *name, const char *standard, const char *prov - op->opaque->args[param_num] = NULL; - #endif - #if SUPPORT_SYSTEMD -- } else if (strcasecmp(op->standard, "systemd") == 0) { -+ } else if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_SYSTEMD) == 0) { - op->opaque->exec = strdup("systemd-dbus"); - #endif - #if SUPPORT_UPSTART -- } else if (strcasecmp(op->standard, "upstart") == 0) { -+ } else if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_UPSTART) == 0) { - op->opaque->exec = strdup("upstart-dbus"); - #endif - #if SUPPORT_NAGIOS -- } else if (strcasecmp(op->standard, "nagios") == 0) { -+ } else if (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_NAGIOS) == 0) { - int index = 0; - - if (op->agent[0] == '/') { -@@ -637,11 +639,13 @@ inline static gboolean - action_exec_helper(svc_action_t * op) - { - /* Whether a/synchronous must be decided (op->synchronous) beforehand. */ -- if (op->standard && strcasecmp(op->standard, "upstart") == 0) { -+ if (op->standard -+ && (strcasecmp(op->standard, PCMK_RESOURCE_CLASS_UPSTART) == 0)) { - #if SUPPORT_UPSTART - return upstart_job_exec(op); - #endif -- } else if (op->standard && strcasecmp(op->standard, "systemd") == 0) { -+ } else if (op->standard && strcasecmp(op->standard, -+ PCMK_RESOURCE_CLASS_SYSTEMD) == 0) { - #if SUPPORT_SYSTEMD - return systemd_unit_exec(op); - #endif -@@ -803,7 +807,7 @@ get_directory_list(const char *root, gboolean files, gboolean executable) - GList * - services_list(void) - { -- return resources_list_agents("lsb", NULL); -+ return resources_list_agents(PCMK_RESOURCE_CLASS_LSB, NULL); - } - - #if SUPPORT_HEARTBEAT -@@ -820,14 +824,15 @@ resources_list_standards(void) - GList *standards = NULL; - GList *agents = NULL; - -- standards = g_list_append(standards, strdup("ocf")); -- standards = g_list_append(standards, strdup("lsb")); -- standards = g_list_append(standards, strdup("service")); -+ standards = g_list_append(standards, strdup(PCMK_RESOURCE_CLASS_OCF)); -+ standards = g_list_append(standards, strdup(PCMK_RESOURCE_CLASS_LSB)); -+ standards = g_list_append(standards, strdup(PCMK_RESOURCE_CLASS_SERVICE)); - - #if SUPPORT_SYSTEMD - agents = systemd_unit_listall(); - if (agents) { -- standards = g_list_append(standards, strdup("systemd")); -+ standards = g_list_append(standards, -+ strdup(PCMK_RESOURCE_CLASS_SYSTEMD)); - g_list_free_full(agents, free); - } - #endif -@@ -835,7 +840,8 @@ resources_list_standards(void) - #if SUPPORT_UPSTART - agents = upstart_job_listall(); - if (agents) { -- standards = g_list_append(standards, strdup("upstart")); -+ standards = g_list_append(standards, -+ strdup(PCMK_RESOURCE_CLASS_UPSTART)); - g_list_free_full(agents, free); - } - #endif -@@ -843,13 +849,14 @@ resources_list_standards(void) - #if SUPPORT_NAGIOS - agents = resources_os_list_nagios_agents(); - if (agents) { -- standards = g_list_append(standards, strdup("nagios")); -+ standards = g_list_append(standards, -+ strdup(PCMK_RESOURCE_CLASS_NAGIOS)); - g_list_free_full(agents, free); - } - #endif - - #if SUPPORT_HEARTBEAT -- standards = g_list_append(standards, strdup("heartbeat")); -+ standards = g_list_append(standards, strdup(PCMK_RESOURCE_CLASS_HB)); - #endif - - return standards; -@@ -858,7 +865,7 @@ resources_list_standards(void) - GList * - resources_list_providers(const char *standard) - { -- if (strcasecmp(standard, "ocf") == 0) { -+ if (strcasecmp(standard, PCMK_RESOURCE_CLASS_OCF) == 0) { - return resources_os_list_ocf_providers(); - } - -@@ -868,7 +875,9 @@ resources_list_providers(const char *standard) - GList * - resources_list_agents(const char *standard, const char *provider) - { -- if (standard == NULL || strcasecmp(standard, "service") == 0) { -+ if ((standard == NULL) -+ || (strcasecmp(standard, PCMK_RESOURCE_CLASS_SERVICE) == 0)) { -+ - GList *tmp1; - GList *tmp2; - GList *result = resources_os_list_lsb_agents(); -@@ -898,24 +907,24 @@ resources_list_agents(const char *standard, const char *provider) - - return result; - -- } else if (strcasecmp(standard, "ocf") == 0) { -+ } else if (strcasecmp(standard, PCMK_RESOURCE_CLASS_OCF) == 0) { - return resources_os_list_ocf_agents(provider); -- } else if (strcasecmp(standard, "lsb") == 0) { -+ } else if (strcasecmp(standard, PCMK_RESOURCE_CLASS_LSB) == 0) { - return resources_os_list_lsb_agents(); - #if SUPPORT_HEARTBEAT -- } else if (strcasecmp(standard, "heartbeat") == 0) { -+ } else if (strcasecmp(standard, PCMK_RESOURCE_CLASS_HB) == 0) { - return resources_os_list_hb_agents(); - #endif - #if SUPPORT_SYSTEMD -- } else if (strcasecmp(standard, "systemd") == 0) { -+ } else if (strcasecmp(standard, PCMK_RESOURCE_CLASS_SYSTEMD) == 0) { - return systemd_unit_listall(); - #endif - #if SUPPORT_UPSTART -- } else if (strcasecmp(standard, "upstart") == 0) { -+ } else if (strcasecmp(standard, PCMK_RESOURCE_CLASS_UPSTART) == 0) { - return upstart_job_listall(); - #endif - #if SUPPORT_NAGIOS -- } else if (strcasecmp(standard, "nagios") == 0) { -+ } else if (strcasecmp(standard, PCMK_RESOURCE_CLASS_NAGIOS) == 0) { - return resources_os_list_nagios_agents(); - #endif - } -diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c -index 1fe3ec1..c2ac43d 100644 ---- a/lib/services/services_linux.c -+++ b/lib/services/services_linux.c -@@ -177,7 +177,8 @@ set_ocf_env_with_prefix(gpointer key, gpointer value, gpointer user_data) - static void - add_OCF_env_vars(svc_action_t * op) - { -- if (!op->standard || strcasecmp("ocf", op->standard) != 0) { -+ if ((op->standard == NULL) -+ || (strcasecmp(PCMK_RESOURCE_CLASS_OCF, op->standard) != 0)) { - return; - } - -@@ -338,13 +339,15 @@ services_handle_exec_error(svc_action_t * op, int error) - int rc_not_installed, rc_insufficient_priv, rc_exec_error; - - /* Mimic the return codes for each standard as that's what we'll convert back from in get_uniform_rc() */ -- if (safe_str_eq(op->standard, "lsb") && safe_str_eq(op->action, "status")) { -+ if (safe_str_eq(op->standard, PCMK_RESOURCE_CLASS_LSB) -+ && safe_str_eq(op->action, "status")) { -+ - rc_not_installed = PCMK_LSB_STATUS_NOT_INSTALLED; - rc_insufficient_priv = PCMK_LSB_STATUS_INSUFFICIENT_PRIV; - rc_exec_error = PCMK_LSB_STATUS_UNKNOWN; - - #if SUPPORT_NAGIOS -- } else if (safe_str_eq(op->standard, "nagios")) { -+ } else if (safe_str_eq(op->standard, PCMK_RESOURCE_CLASS_NAGIOS)) { - rc_not_installed = NAGIOS_NOT_INSTALLED; - rc_insufficient_priv = NAGIOS_INSUFFICIENT_PRIV; - rc_exec_error = PCMK_OCF_EXEC_ERROR; -diff --git a/lrmd/lrmd.c b/lrmd/lrmd.c -index 724edb7..5669d34 100644 ---- a/lrmd/lrmd.c -+++ b/lrmd/lrmd.c -@@ -139,8 +139,9 @@ static const char * - normalize_action_name(lrmd_rsc_t * rsc, const char *action) - { - if (safe_str_eq(action, "monitor") && -- (safe_str_eq(rsc->class, "lsb") || -- safe_str_eq(rsc->class, "service") || safe_str_eq(rsc->class, "systemd"))) { -+ (safe_str_eq(rsc->class, PCMK_RESOURCE_CLASS_LSB) || -+ safe_str_eq(rsc->class, PCMK_RESOURCE_CLASS_SERVICE) -+ || safe_str_eq(rsc->class, PCMK_RESOURCE_CLASS_SYSTEMD))) { - return "status"; - } - return action; -@@ -435,7 +436,7 @@ merge_dup: - cmd->userdata_str = NULL; - dup->call_id = cmd->call_id; - -- if (safe_str_eq(rsc->class, "stonith")) { -+ if (safe_str_eq(rsc->class, PCMK_RESOURCE_CLASS_STONITH)) { - /* if we are waiting for the next interval, kick it off now */ - if (dup_pending == TRUE) { - g_source_remove(cmd->stonith_recurring_id); -@@ -854,16 +855,16 @@ nagios2uniform_rc(const char *action, int rc) - static int - get_uniform_rc(const char *standard, const char *action, int rc) - { -- if (safe_str_eq(standard, "ocf")) { -+ if (safe_str_eq(standard, PCMK_RESOURCE_CLASS_OCF)) { - return ocf2uniform_rc(rc); -- } else if (safe_str_eq(standard, "stonith")) { -+ } else if (safe_str_eq(standard, PCMK_RESOURCE_CLASS_STONITH)) { - return stonith2uniform_rc(action, rc); -- } else if (safe_str_eq(standard, "systemd")) { -+ } else if (safe_str_eq(standard, PCMK_RESOURCE_CLASS_SYSTEMD)) { - return rc; -- } else if (safe_str_eq(standard, "upstart")) { -+ } else if (safe_str_eq(standard, PCMK_RESOURCE_CLASS_UPSTART)) { - return rc; - #if SUPPORT_NAGIOS -- } else if (safe_str_eq(standard, "nagios")) { -+ } else if (safe_str_eq(standard, PCMK_RESOURCE_CLASS_NAGIOS)) { - return nagios2uniform_rc(action, rc); - #endif - } else { -@@ -876,7 +877,7 @@ action_get_uniform_rc(svc_action_t * action) - { - lrmd_cmd_t *cmd = action->cb_data; - #if SUPPORT_HEARTBEAT -- if (safe_str_eq(action->standard, "heartbeat")) { -+ if (safe_str_eq(action->standard, PCMK_RESOURCE_CLASS_HB)) { - return hb2uniform_rc(cmd->action, action->rc, action->stdout_data); - } - #endif -@@ -991,13 +992,13 @@ action_complete(svc_action_t * action) - cmd->lrmd_op_status = action->status; - rsc = cmd->rsc_id ? g_hash_table_lookup(rsc_list, cmd->rsc_id) : NULL; - -- if(rsc && safe_str_eq(rsc->class, "service")) { -+ if (rsc && safe_str_eq(rsc->class, PCMK_RESOURCE_CLASS_SERVICE)) { - rclass = resources_find_service_class(rsc->class); - } else if(rsc) { - rclass = rsc->class; - } - -- if (safe_str_eq(rclass, "systemd")) { -+ if (safe_str_eq(rclass, PCMK_RESOURCE_CLASS_SYSTEMD)) { - if(cmd->exec_rc == PCMK_OCF_OK && safe_str_eq(cmd->action, "start")) { - /* systemd I curse thee! - * -@@ -1042,7 +1043,7 @@ action_complete(svc_action_t * action) - } - - #if SUPPORT_NAGIOS -- if (rsc && safe_str_eq(rsc->class, "nagios")) { -+ if (rsc && safe_str_eq(rsc->class, PCMK_RESOURCE_CLASS_NAGIOS)) { - if (safe_str_eq(cmd->action, "monitor") && - cmd->interval == 0 && cmd->exec_rc == PCMK_OCF_OK) { - /* Successfully executed --version for the nagios plugin */ -@@ -1123,7 +1124,7 @@ stonith_action_complete(lrmd_cmd_t * cmd, int rc) - int recurring = cmd->interval; - lrmd_rsc_t *rsc = NULL; - -- cmd->exec_rc = get_uniform_rc("stonith", cmd->action, rc); -+ cmd->exec_rc = get_uniform_rc(PCMK_RESOURCE_CLASS_STONITH, cmd->action, rc); - - rsc = g_hash_table_lookup(rsc_list, cmd->rsc_id); - -@@ -1184,7 +1185,7 @@ stonith_connection_failed(void) - - g_hash_table_iter_init(&iter, rsc_list); - while (g_hash_table_iter_next(&iter, (gpointer *) & key, (gpointer *) & rsc)) { -- if (safe_str_eq(rsc->class, "stonith")) { -+ if (safe_str_eq(rsc->class, PCMK_RESOURCE_CLASS_STONITH)) { - if (rsc->active) { - cmd_list = g_list_append(cmd_list, rsc->active); - } -@@ -1219,7 +1220,8 @@ lrmd_rsc_execute_stonith(lrmd_rsc_t * rsc, lrmd_cmd_t * cmd) - stonith_t *stonith_api = get_stonith_connection(); - - if (!stonith_api) { -- cmd->exec_rc = get_uniform_rc("stonith", cmd->action, -ENOTCONN); -+ cmd->exec_rc = get_uniform_rc(PCMK_RESOURCE_CLASS_STONITH, cmd->action, -+ -ENOTCONN); - cmd->lrmd_op_status = PCMK_LRM_OP_ERROR; - cmd_finalize(cmd, rsc); - return -EUNATCH; -@@ -1302,7 +1304,9 @@ lrmd_rsc_execute_service_lib(lrmd_rsc_t * rsc, lrmd_cmd_t * cmd) - - #if SUPPORT_NAGIOS - /* Recurring operations are cancelled anyway for a stop operation */ -- if (safe_str_eq(rsc->class, "nagios") && safe_str_eq(cmd->action, "stop")) { -+ if (safe_str_eq(rsc->class, PCMK_RESOURCE_CLASS_NAGIOS) -+ && safe_str_eq(cmd->action, "stop")) { -+ - cmd->exec_rc = PCMK_OCF_OK; - goto exec_done; - } -@@ -1320,7 +1324,7 @@ lrmd_rsc_execute_service_lib(lrmd_rsc_t * rsc, lrmd_cmd_t * cmd) - if (cmd->isolation_wrapper) { - g_hash_table_remove(params_copy, "CRM_meta_isolation_wrapper"); - action = resources_action_create(rsc->rsc_id, -- "ocf", -+ PCMK_RESOURCE_CLASS_OCF, - LRMD_ISOLATION_PROVIDER, - cmd->isolation_wrapper, - cmd->action, /*action will be normalized in wrapper*/ -@@ -1417,7 +1421,7 @@ lrmd_rsc_execute(lrmd_rsc_t * rsc) - - log_execute(cmd); - -- if (safe_str_eq(rsc->class, "stonith")) { -+ if (safe_str_eq(rsc->class, PCMK_RESOURCE_CLASS_STONITH)) { - lrmd_rsc_execute_stonith(rsc, cmd); - } else { - lrmd_rsc_execute_service_lib(rsc, cmd); -@@ -1437,7 +1441,7 @@ free_rsc(gpointer data) - { - GListPtr gIter = NULL; - lrmd_rsc_t *rsc = data; -- int is_stonith = safe_str_eq(rsc->class, "stonith"); -+ int is_stonith = safe_str_eq(rsc->class, PCMK_RESOURCE_CLASS_STONITH); - - gIter = rsc->pending_ops; - while (gIter != NULL) { -@@ -1679,7 +1683,7 @@ cancel_op(const char *rsc_id, const char *action, int interval) - } - } - -- if (safe_str_eq(rsc->class, "stonith")) { -+ if (safe_str_eq(rsc->class, PCMK_RESOURCE_CLASS_STONITH)) { - /* The service library does not handle stonith operations. - * We have to handle recurring stonith operations ourselves. */ - for (gIter = rsc->recurring_ops; gIter != NULL; gIter = gIter->next) { -diff --git a/pengine/native.c b/pengine/native.c -index 0c972ea..52eba4f 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -2701,7 +2701,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - if (is_remote_node(node)) { - const char *class = crm_element_value(rsc->xml, XML_AGENT_ATTR_CLASS); - -- if (safe_str_eq(class, "stonith")) { -+ if (safe_str_eq(class, PCMK_RESOURCE_CLASS_STONITH)) { - pe_rsc_trace(rsc, "Skipping probe for %s on node %s, remote-nodes do not run stonith agents.", rsc->id, node->details->id); - return FALSE; - } else if (rsc_contains_remote_node(data_set, rsc)) { -diff --git a/tools/crm_resource_print.c b/tools/crm_resource_print.c -index 5e84723..65841e5 100644 ---- a/tools/crm_resource_print.c -+++ b/tools/crm_resource_print.c -@@ -69,7 +69,7 @@ cli_resource_print_cts(resource_t * rsc) - const char *rprov = crm_element_value(rsc->xml, XML_AGENT_ATTR_PROVIDER); - const char *rclass = crm_element_value(rsc->xml, XML_AGENT_ATTR_CLASS); - -- if (safe_str_eq(rclass, "stonith")) { -+ if (safe_str_eq(rclass, PCMK_RESOURCE_CLASS_STONITH)) { - xmlNode *op = NULL; - - needs_quorum = FALSE; -diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c -index 7a64bc9..61aabe9 100644 ---- a/tools/crm_resource_runtime.c -+++ b/tools/crm_resource_runtime.c -@@ -1496,7 +1496,7 @@ cli_resource_execute(const char *rsc_id, const char *rsc_action, GHashTable *ove - rprov = crm_element_value(rsc->xml, XML_AGENT_ATTR_PROVIDER); - rtype = crm_element_value(rsc->xml, XML_ATTR_TYPE); - -- if(safe_str_eq(rclass, "stonith")){ -+ if (safe_str_eq(rclass, PCMK_RESOURCE_CLASS_STONITH)) { - CMD_ERR("Sorry, --%s doesn't support %s resources yet", rsc_action, rclass); - crm_exit(EOPNOTSUPP); - } -diff --git a/tools/fake_transition.c b/tools/fake_transition.c -index c45349f..6448c14 100644 ---- a/tools/fake_transition.c -+++ b/tools/fake_transition.c -@@ -298,17 +298,18 @@ inject_resource(xmlNode * cib_node, const char *resource, const char *rclass, co - " Please supply the class and type to continue\n", resource, ID(cib_node)); - return NULL; - -- } else if (safe_str_neq(rclass, "ocf") -- && safe_str_neq(rclass, "stonith") -- && safe_str_neq(rclass, "heartbeat") -- && safe_str_neq(rclass, "service") -- && safe_str_neq(rclass, "upstart") -- && safe_str_neq(rclass, "systemd") -- && safe_str_neq(rclass, "lsb")) { -+ } else if (safe_str_neq(rclass, PCMK_RESOURCE_CLASS_OCF) -+ && safe_str_neq(rclass, PCMK_RESOURCE_CLASS_STONITH) -+ && safe_str_neq(rclass, PCMK_RESOURCE_CLASS_HB) -+ && safe_str_neq(rclass, PCMK_RESOURCE_CLASS_SERVICE) -+ && safe_str_neq(rclass, PCMK_RESOURCE_CLASS_UPSTART) -+ && safe_str_neq(rclass, PCMK_RESOURCE_CLASS_SYSTEMD) -+ && safe_str_neq(rclass, PCMK_RESOURCE_CLASS_LSB)) { - fprintf(stderr, "Invalid class for %s: %s\n", resource, rclass); - return NULL; - -- } else if (safe_str_eq(rclass, "ocf") && rprovider == NULL) { -+ } else if (safe_str_eq(rclass, PCMK_RESOURCE_CLASS_OCF) -+ && rprovider == NULL) { - fprintf(stderr, "Please specify the provider for resource %s\n", resource); - return NULL; - } --- -1.8.3.1 - - -From 1c534b5a773df5b62aeb8a46842d1e2d4d2266ef Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 1 Mar 2017 15:04:35 -0600 -Subject: [PATCH 10/10] Fix: libservices: ensure recurring actions table is - created before using - ---- - lib/services/services.c | 20 ++++++++++++++------ - 1 file changed, 14 insertions(+), 6 deletions(-) - -diff --git a/lib/services/services.c b/lib/services/services.c -index 52d3b55..679f8e7 100644 ---- a/lib/services/services.c -+++ b/lib/services/services.c -@@ -90,6 +90,15 @@ resources_find_service_class(const char *agent) - return NULL; - } - -+static inline void -+init_recurring_actions(void) -+{ -+ if (recurring_actions == NULL) { -+ recurring_actions = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, -+ NULL); -+ } -+} -+ - /*! - * \internal - * \brief Check whether op is in-flight systemd or upstart op -@@ -513,9 +522,11 @@ services_action_cancel(const char *name, const char *action, int interval) - { - gboolean cancelled = FALSE; - char *id = generate_op_key(name, action, interval); -- svc_action_t *op = g_hash_table_lookup(recurring_actions, id); -+ svc_action_t *op = NULL; - - /* We can only cancel a recurring action */ -+ init_recurring_actions(); -+ op = g_hash_table_lookup(recurring_actions, id); - if (op == NULL) { - goto done; - } -@@ -575,6 +586,7 @@ services_action_kick(const char *name, const char *action, int interval /* ms */ - svc_action_t * op = NULL; - char *id = generate_op_key(name, action, interval); - -+ init_recurring_actions(); - op = g_hash_table_lookup(recurring_actions, id); - free(id); - -@@ -604,11 +616,6 @@ handle_duplicate_recurring(svc_action_t * op, void (*action_callback) (svc_actio - { - svc_action_t * dup = NULL; - -- if (recurring_actions == NULL) { -- recurring_actions = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL); -- return FALSE; -- } -- - /* check for duplicates */ - dup = g_hash_table_lookup(recurring_actions, op->id); - -@@ -700,6 +707,7 @@ services_action_async(svc_action_t * op, void (*action_callback) (svc_action_t * - } - - if (op->interval > 0) { -+ init_recurring_actions(); - if (handle_duplicate_recurring(op, action_callback) == TRUE) { - /* entry rescheduled, dup freed */ - /* exit early */ --- -1.8.3.1 - diff --git a/SOURCES/029-stonith-action-param.patch b/SOURCES/029-stonith-action-param.patch deleted file mode 100644 index d86a8b3..0000000 --- a/SOURCES/029-stonith-action-param.patch +++ /dev/null @@ -1,239 +0,0 @@ -From 9c0c3d60b4df3076ff27dd176af9b8d131254337 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 2 Mar 2017 13:52:47 -0600 -Subject: [PATCH] Fix: libfencing,fencing: properly remap "action" in - configuration - -"action" should never be specified in fence device configuration. - -Previously, this was handled by re-inserting the proper action when creating a -fence command, if the proper action were on a "safe" list (list, monitor, -status, or meta-data). - -However, that was insufficient, partly because "on" should have been on the -list, but also because action="reboot" would interfere with reboots that were -remapped to off or off+on. - -Now, stonithd intelligently maps any action parameter to pcmk_off_action and/or -pcmk_reboot_action as appropriate when the device configuration is registered, -and libfencing ignores any action parameter that makes it that far. ---- - fencing/commands.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++- - lib/fencing/st_client.c | 52 ++++++++++++++------------------------ - 2 files changed, 83 insertions(+), 35 deletions(-) - -diff --git a/fencing/commands.c b/fencing/commands.c -index e7fce78..b4e6eb5 100644 ---- a/fencing/commands.c -+++ b/fencing/commands.c -@@ -783,6 +783,70 @@ read_action_metadata(stonith_device_t *device) - freeXpathObject(xpath); - } - -+/*! -+ * \internal -+ * \brief Set a pcmk_*_action parameter if not already set -+ * -+ * \param[in,out] params Device parameters -+ * \param[in] action Name of action -+ * \param[in] value Value to use if action is not already set -+ */ -+static void -+map_action(GHashTable *params, const char *action, const char *value) -+{ -+ char *key = crm_strdup_printf("pcmk_%s_action", action); -+ -+ if (g_hash_table_lookup(params, key)) { -+ crm_warn("Ignoring %s='%s', see %s instead", -+ STONITH_ATTR_ACTION_OP, value, key); -+ free(key); -+ } else { -+ crm_warn("Mapping %s='%s' to %s='%s'", -+ STONITH_ATTR_ACTION_OP, value, key, value); -+ g_hash_table_insert(params, key, strdup(value)); -+ } -+} -+ -+/*! -+ * \internal -+ * \brief Create device parameter table from XML -+ * -+ * \param[in] name Device name (used for logging only) -+ * \param[in,out] params Device parameters -+ */ -+static GHashTable * -+xml2device_params(const char *name, xmlNode *dev) -+{ -+ GHashTable *params = xml2list(dev); -+ const char *value; -+ -+ /* Action should never be specified in the device configuration, -+ * but we support it for users who are familiar with other software -+ * that worked that way. -+ */ -+ value = g_hash_table_lookup(params, STONITH_ATTR_ACTION_OP); -+ if (value != NULL) { -+ crm_warn("%s has '%s' parameter, which should never be specified in configuration", -+ name, STONITH_ATTR_ACTION_OP); -+ -+ if (strcmp(value, "reboot") == 0) { -+ crm_warn("Ignoring %s='reboot' (see stonith-action cluster property instead)", -+ STONITH_ATTR_ACTION_OP); -+ -+ } else if (strcmp(value, "off") == 0) { -+ map_action(params, "reboot", value); -+ -+ } else { -+ map_action(params, "off", value); -+ map_action(params, "reboot", value); -+ } -+ -+ g_hash_table_remove(params, STONITH_ATTR_ACTION_OP); -+ } -+ -+ return params; -+} -+ - static stonith_device_t * - build_device_from_xml(xmlNode * msg) - { -@@ -794,7 +858,7 @@ build_device_from_xml(xmlNode * msg) - device->id = crm_element_value_copy(dev, XML_ATTR_ID); - device->agent = crm_element_value_copy(dev, "agent"); - device->namespace = crm_element_value_copy(dev, "namespace"); -- device->params = xml2list(dev); -+ device->params = xml2device_params(device->id, dev); - - value = g_hash_table_lookup(device->params, STONITH_ATTR_HOSTLIST); - if (value) { -diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c -index c7f4079..34bba88 100644 ---- a/lib/fencing/st_client.c -+++ b/lib/fencing/st_client.c -@@ -394,11 +394,10 @@ stonith_api_register_level(stonith_t * st, int options, const char *node, int le - } - - static void --append_arg(gpointer key, gpointer value, gpointer user_data) -+append_arg(const char *key, const char *value, char **args) - { - int len = 3; /* =, \n, \0 */ - int last = 0; -- char **args = user_data; - - CRM_CHECK(key != NULL, return); - CRM_CHECK(value != NULL, return); -@@ -418,22 +417,20 @@ append_arg(gpointer key, gpointer value, gpointer user_data) - } - - *args = realloc_safe(*args, last + len); -- crm_trace("Appending: %s=%s", (char *)key, (char *)value); -- sprintf((*args) + last, "%s=%s\n", (char *)key, (char *)value); -+ crm_trace("Appending: %s=%s", key, value); -+ sprintf((*args) + last, "%s=%s\n", key, value); - } - - static void --append_const_arg(const char *key, const char *value, char **arg_list) -+append_config_arg(gpointer key, gpointer value, gpointer user_data) - { -- CRM_LOG_ASSERT(key && value); -- if(key && value) { -- char *glib_sucks_key = strdup(key); -- char *glib_sucks_value = strdup(value); -- -- append_arg(glib_sucks_key, glib_sucks_value, arg_list); -- -- free(glib_sucks_value); -- free(glib_sucks_key); -+ /* stonithd will filter action out when it registers the device, -+ * but ignore it here just in case any other library callers -+ * fail to do so. -+ */ -+ if (safe_str_neq(key, STONITH_ATTR_ACTION_OP)) { -+ append_arg(key, value, user_data); -+ return; - } - } - -@@ -446,7 +443,7 @@ append_host_specific_args(const char *victim, const char *map, GHashTable * para - if (map == NULL) { - /* The best default there is for now... */ - crm_debug("Using default arg map: port=uname"); -- append_const_arg("port", victim, arg_list); -+ append_arg("port", victim, arg_list); - return; - } - -@@ -489,7 +486,7 @@ append_host_specific_args(const char *victim, const char *map, GHashTable * para - - if (value) { - crm_debug("Setting '%s'='%s' (%s) for %s", name, value, param, victim); -- append_const_arg(name, value, arg_list); -+ append_arg(name, value, arg_list); - - } else { - crm_err("No node attribute '%s' for '%s'", name, victim); -@@ -516,7 +513,6 @@ make_args(const char *agent, const char *action, const char *victim, uint32_t vi - char buffer[512]; - char *arg_list = NULL; - const char *value = NULL; -- const char *_action = action; - - CRM_CHECK(action != NULL, return NULL); - -@@ -542,7 +538,7 @@ make_args(const char *agent, const char *action, const char *victim, uint32_t vi - action = value; - } - -- append_const_arg(STONITH_ATTR_ACTION_OP, action, &arg_list); -+ append_arg(STONITH_ATTR_ACTION_OP, action, &arg_list); - if (victim && device_args) { - const char *alias = victim; - const char *param = g_hash_table_lookup(device_args, STONITH_ATTR_HOSTARG); -@@ -554,13 +550,13 @@ make_args(const char *agent, const char *action, const char *victim, uint32_t vi - /* Always supply the node's name too: - * https://fedorahosted.org/cluster/wiki/FenceAgentAPI - */ -- append_const_arg("nodename", victim, &arg_list); -+ append_arg("nodename", victim, &arg_list); - if (victim_nodeid) { - char nodeid_str[33] = { 0, }; - if (snprintf(nodeid_str, 33, "%u", (unsigned int)victim_nodeid)) { - crm_info("For stonith action (%s) for victim %s, adding nodeid (%s) to parameters", - action, victim, nodeid_str); -- append_const_arg("nodeid", nodeid_str, &arg_list); -+ append_arg("nodeid", nodeid_str, &arg_list); - } - } - -@@ -592,24 +588,12 @@ make_args(const char *agent, const char *action, const char *victim, uint32_t vi - if (value == NULL || safe_str_eq(value, "dynamic")) { - crm_debug("Performing %s action for node '%s' as '%s=%s'", action, victim, param, - alias); -- append_const_arg(param, alias, &arg_list); -+ append_arg(param, alias, &arg_list); - } - } - - if (device_args) { -- g_hash_table_foreach(device_args, append_arg, &arg_list); -- } -- -- if(device_args && g_hash_table_lookup(device_args, STONITH_ATTR_ACTION_OP)) { -- if(safe_str_eq(_action,"list") -- || safe_str_eq(_action,"status") -- || safe_str_eq(_action,"monitor") -- || safe_str_eq(_action,"metadata")) { -- /* Force use of the calculated command for support ops -- * We don't want list or monitor ops initiating fencing, regardless of what the admin configured -- */ -- append_const_arg(STONITH_ATTR_ACTION_OP, action, &arg_list); -- } -+ g_hash_table_foreach(device_args, append_config_arg, &arg_list); - } - - return arg_list; --- -1.8.3.1 - diff --git a/SOURCES/030-crm_resource.patch b/SOURCES/030-crm_resource.patch deleted file mode 100644 index 4abf67e..0000000 --- a/SOURCES/030-crm_resource.patch +++ /dev/null @@ -1,99 +0,0 @@ -From aa584a7cf34a0e740f6d8249a7adabf358d66e41 Mon Sep 17 00:00:00 2001 -From: Jehan-Guillaume de Rorthais -Date: Fri, 10 Mar 2017 14:31:33 +0100 -Subject: [PATCH 1/2] Low: tools: crm_resource should set - OCF_RESKEY_crm_feature_set - -Some resource agent relies on this environment variable during their -validate-all action to check the CRM feature set compatibility. - -Without this environment variable, most of the --force-ACTION are -failing. - -At least the Linbit/drbd and PAF (pgsqlms) agents are using it. ---- - tools/crm_resource_runtime.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c -index ee7523f..e6a186a 100644 ---- a/tools/crm_resource_runtime.c -+++ b/tools/crm_resource_runtime.c -@@ -1508,6 +1508,10 @@ cli_resource_execute(const char *rsc_id, const char *rsc_action, GHashTable *ove - } - - params = generate_resource_params(rsc, data_set); -+ -+ /* add crm_feature_set env needed by some resource agents */ -+ g_hash_table_insert(params, strdup(XML_ATTR_CRM_VERSION), strdup(CRM_FEATURE_SET)); -+ - op = resources_action_create(rsc->id, rclass, rprov, rtype, action, 0, -1, params, 0); - - if(do_trace) { --- -1.8.3.1 - - -From 02a737976d34d41da65fa25a64e5708a1269cef7 Mon Sep 17 00:00:00 2001 -From: Jehan-Guillaume de Rorthais -Date: Fri, 10 Mar 2017 14:50:43 +0100 -Subject: [PATCH 2/2] Feature: tools: Add "--validate" command to crm_resource - -This command calls the validate-all action from the resource agent. It -allows admins to check their resource is setup correctly in a shadow -environment before pushing their setup to the cluster. ---- - tools/crm_resource.c | 6 ++++-- - tools/crm_resource_runtime.c | 5 ++++- - 2 files changed, 8 insertions(+), 3 deletions(-) - -diff --git a/tools/crm_resource.c b/tools/crm_resource.c -index 45dfd4a..e8cd80e 100644 ---- a/tools/crm_resource.c -+++ b/tools/crm_resource.c -@@ -128,6 +128,7 @@ static struct crm_option long_options[] = { - {"constraints",0, 0, 'a', "\tDisplay the (co)location constraints that apply to a resource"}, - - {"-spacer-", 1, 0, '-', "\nCommands:"}, -+ {"validate", 0, 0, 0, "\t\tCall the validate-all action of the local given resource"}, - {"cleanup", 0, 0, 'C', - "\t\tDelete resource's history and re-check its current state. " - "Optional: --resource (if not specified, all resources), " -@@ -303,7 +304,8 @@ main(int argc, char **argv) - require_dataset = FALSE; - - } else if ( -- safe_str_eq("restart", longname) -+ safe_str_eq("validate", longname) -+ || safe_str_eq("restart", longname) - || safe_str_eq("force-demote", longname) - || safe_str_eq("force-stop", longname) - || safe_str_eq("force-start", longname) -@@ -687,7 +689,7 @@ main(int argc, char **argv) - } else if (rsc_cmd == 0 && rsc_long_cmd && safe_str_eq(rsc_long_cmd, "wait")) { - rc = wait_till_stable(timeout_ms, cib_conn); - -- } else if (rsc_cmd == 0 && rsc_long_cmd) { /* force-(stop|start|check) */ -+ } else if (rsc_cmd == 0 && rsc_long_cmd) { /* validate or force-(stop|start|check) */ - rc = cli_resource_execute(rsc_id, rsc_long_cmd, override_params, cib_conn, &data_set); - - } else if (rsc_cmd == 'A' || rsc_cmd == 'a') { -diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c -index e6a186a..ca38aea 100644 ---- a/tools/crm_resource_runtime.c -+++ b/tools/crm_resource_runtime.c -@@ -1467,7 +1467,10 @@ cli_resource_execute(const char *rsc_id, const char *rsc_action, GHashTable *ove - return -ENXIO; - } - -- if (safe_str_eq(rsc_action, "force-check")) { -+ if (safe_str_eq(rsc_action, "validate")) { -+ action = "validate-all"; -+ -+ } else if (safe_str_eq(rsc_action, "force-check")) { - action = "monitor"; - - } else if (safe_str_eq(rsc_action, "force-stop")) { --- -1.8.3.1 - diff --git a/SOURCES/031-crm_resource-validate.patch b/SOURCES/031-crm_resource-validate.patch deleted file mode 100644 index 2f15961..0000000 --- a/SOURCES/031-crm_resource-validate.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 6e1d73f3e88f60b21173bb1129b6c0508a0c0268 Mon Sep 17 00:00:00 2001 -From: Jehan-Guillaume de Rorthais -Date: Fri, 10 Mar 2017 15:17:44 +0100 -Subject: [PATCH] Low: tools: disable agent stdout/stderr for crm_resource - --validate - -Argument --verbose is required to show the stderr/stdout output of the -command. ---- - tools/crm_resource_runtime.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c -index ca38aea..5414b94 100644 ---- a/tools/crm_resource_runtime.c -+++ b/tools/crm_resource_runtime.c -@@ -1552,6 +1552,10 @@ cli_resource_execute(const char *rsc_id, const char *rsc_action, GHashTable *ove - action, rsc->id, rclass, rprov ? rprov : "", rtype, op->status); - } - -+ /* hide output for validate-all if not in verbose */ -+ if (!do_trace && safe_str_eq(action, "validate-all")) -+ goto done; -+ - if (op->stdout_data) { - local_copy = strdup(op->stdout_data); - more = strlen(local_copy); -@@ -1581,6 +1585,7 @@ cli_resource_execute(const char *rsc_id, const char *rsc_action, GHashTable *ove - free(local_copy); - } - } -+ done: - rc = op->rc; - services_action_free(op); - return rc; --- -1.8.3.1 - diff --git a/SOURCES/032-demote-recovery.patch b/SOURCES/032-demote-recovery.patch deleted file mode 100644 index c4b969a..0000000 --- a/SOURCES/032-demote-recovery.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 93af2f90fd6687c892c9580b5b6dbedb3a6fb6f7 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 4 Nov 2016 14:08:23 +1100 -Subject: [PATCH] Fix: Improve recovery when demote fails with OCF_NOT_RUNNING - -If combined with on-fail=restart, this patch allows the resource to -stop+start+promote in a single transition. - -Related: rhbz#1391671 ---- - lib/pengine/unpack.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index a4d6845..2b5bdf6 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -2640,13 +2640,17 @@ unpack_rsc_op_failure(resource_t * rsc, node_t * node, int rc, xmlNode * xml_op, - * setting role=slave is not dangerous because no master will be - * promoted until the failed resource has been fully stopped - */ -- rsc->next_role = RSC_ROLE_STOPPED; - if (action->on_fail == action_fail_block) { - rsc->role = RSC_ROLE_MASTER; -+ rsc->next_role = RSC_ROLE_STOPPED; -+ -+ } else if(rc == PCMK_OCF_NOT_RUNNING) { -+ rsc->role = RSC_ROLE_STOPPED; - - } else { - crm_warn("Forcing %s to stop after a failed demote action", rsc->id); - rsc->role = RSC_ROLE_SLAVE; -+ rsc->next_role = RSC_ROLE_STOPPED; - } - - } else if (compare_version("2.0", op_version) > 0 && safe_str_eq(task, CRMD_ACTION_START)) { -@@ -3051,6 +3055,7 @@ update_resource_state(resource_t * rsc, node_t * node, xmlNode * xml_op, const c - } - } - -+ - gboolean - unpack_rsc_op(resource_t * rsc, node_t * node, xmlNode * xml_op, xmlNode ** last_failure, - enum action_fail_response * on_fail, pe_working_set_t * data_set) -@@ -3265,7 +3270,7 @@ unpack_rsc_op(resource_t * rsc, node_t * node, xmlNode * xml_op, xmlNode ** last - } - - done: -- pe_rsc_trace(rsc, "Resource %s after %s: role=%s", rsc->id, task, role2text(rsc->role)); -+ pe_rsc_trace(rsc, "Resource %s after %s: role=%s, next=%s", rsc->id, task, role2text(rsc->role), role2text(rsc->next_role)); - return TRUE; - } - --- -1.8.3.1 - diff --git a/SOURCES/033-logging-spelling.patch b/SOURCES/033-logging-spelling.patch deleted file mode 100644 index 6bc370c..0000000 --- a/SOURCES/033-logging-spelling.patch +++ /dev/null @@ -1,296 +0,0 @@ -From be2e6b14f019e1e7f109fb5e7e4391edc42062cb Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 6 Dec 2016 12:04:10 -0600 -Subject: [PATCH] Log: various: fix spelling errors in log messages and - comments - ---- - BasicSanity.sh | 2 +- - cib/messages.c | 2 +- - fencing/commands.c | 2 +- - include/crm/pengine/status.h | 8 +++++--- - lib/ais/plugin.c | 4 ++-- - lib/cluster/cpg.c | 2 +- - lib/cluster/heartbeat.c | 4 ++-- - lib/pengine/unpack.c | 14 +++++++------- - lib/pengine/utils.c | 6 +++--- - mcp/pacemaker.c | 4 ++-- - pengine/graph.c | 4 ++-- - pengine/native.c | 4 ++-- - pengine/regression.sh | 2 +- - 13 files changed, 30 insertions(+), 28 deletions(-) - -diff --git a/BasicSanity.sh b/BasicSanity.sh -index d00f337..fb687ad 100755 ---- a/BasicSanity.sh -+++ b/BasicSanity.sh -@@ -31,7 +31,7 @@ function run_as_root() { - $CMD - - elif [ -z $TRAVIS ]; then -- # sudo doesn't work in builtbot, su doesn't work in travis -+ # sudo doesn't work in buildbot, su doesn't work in travis - echo "Enter the root password..." - su root -c "$CMD" - -diff --git a/cib/messages.c b/cib/messages.c -index ff149f7..4e704dc 100644 ---- a/cib/messages.c -+++ b/cib/messages.c -@@ -544,7 +544,7 @@ sync_our_cib(xmlNode * request, gboolean all) - - /* remove the "all == FALSE" condition - * -- * sync_from was failing, the local client wasnt being notified -+ * sync_from was failing, the local client wasn't being notified - * because it didn't know it was a reply - * setting this does not prevent the other nodes from applying it - * if all == TRUE -diff --git a/fencing/commands.c b/fencing/commands.c -index d21e5a8..e7fce78 100644 ---- a/fencing/commands.c -+++ b/fencing/commands.c -@@ -988,7 +988,7 @@ dynamic_list_search_cb(GPid pid, int rc, const char *output, gpointer user_data) - - /*! - * \internal -- * \brief Returns true if any key in first is not is second or second has a different value for key -+ * \brief Returns true if any key in first is not in second or second has a different value for key - */ - static int - device_params_diff(GHashTable *first, GHashTable *second) { -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index 5e3b191..79e4572 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -232,9 +232,11 @@ enum pe_action_flags { - pe_action_clear = 0x00400, - pe_action_dangle = 0x00800, - -- pe_action_requires_any = 0x01000, /* This action requires one or mre of its dependencies to be runnable -- * We use this to clear the runnable flag before checking dependencies -- */ -+ /* This action requires one or more of its dependencies to be runnable. -+ * We use this to clear the runnable flag before checking dependencies. -+ */ -+ pe_action_requires_any = 0x01000, -+ - pe_action_reschedule = 0x02000, - pe_action_tracking = 0x04000, - }; -diff --git a/lib/ais/plugin.c b/lib/ais/plugin.c -index 007fc24..b8a2b96 100644 ---- a/lib/ais/plugin.c -+++ b/lib/ais/plugin.c -@@ -663,7 +663,7 @@ pcmk_startup(struct corosync_api_v1 *init_with) - if (use_mcp == FALSE) { - pthread_create(&pcmk_wait_thread, NULL, pcmk_wait_dispatch, NULL); - for (start_seq = 1; start_seq < max; start_seq++) { -- /* dont start anything with start_seq < 1 */ -+ /* don't start anything with start_seq < 1 */ - for (lpc = 0; lpc < max; lpc++) { - if (start_seq == pcmk_children[lpc].start_seq) { - spawn_child(&(pcmk_children[lpc])); -@@ -1108,7 +1108,7 @@ pcmk_shutdown(void) - wait_active = FALSE; /* stop the wait loop */ - - for (; phase > 0; phase--) { -- /* dont stop anything with start_seq < 1 */ -+ /* don't stop anything with start_seq < 1 */ - - for (lpc = max - 1; lpc >= 0; lpc--) { - if (phase != pcmk_children[lpc].start_seq) { -diff --git a/lib/cluster/cpg.c b/lib/cluster/cpg.c -index 5efafc8..aef3583 100644 ---- a/lib/cluster/cpg.c -+++ b/lib/cluster/cpg.c -@@ -637,7 +637,7 @@ send_cluster_text(int class, const char *data, - free(target); - - #if SUPPORT_PLUGIN -- /* The plugin is the only time we dont use CPG messaging */ -+ /* The plugin is the only time we don't use CPG messaging */ - if(get_cluster_type() == pcmk_cluster_classic_ais) { - return send_plugin_text(class, iov); - } -diff --git a/lib/cluster/heartbeat.c b/lib/cluster/heartbeat.c -index a471402..8414602 100644 ---- a/lib/cluster/heartbeat.c -+++ b/lib/cluster/heartbeat.c -@@ -117,7 +117,7 @@ convert_ha_field(xmlNode * parent, void *msg_v, int lpc) - - if (rc == BZ_OUTBUFF_FULL) { - size = size * 2; -- /* dont try to allocate more memory than we have */ -+ /* don't try to allocate more memory than we have */ - if (size > 0) { - goto retry; - } -@@ -489,7 +489,7 @@ ha_msg_dispatch(ll_cluster_t * cluster_conn, gpointer user_data) - if (cluster_conn->llc_ops->msgready(cluster_conn) == 0) { - crm_trace("no message ready yet"); - } -- /* invoke the callbacks but dont block. -+ /* invoke the callbacks but don't block. - * cluster_conn->llc_ops->rcvmsg(cluster_conn, 0); */ - msg = cluster_conn->llc_ops->readmsg(cluster_conn, 0); - if (msg) { -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index a4d6845..a9fbcc0 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -1494,7 +1494,7 @@ determine_online_status(xmlNode * node_state, node_t * this_node, pe_working_set - } - - if (online && this_node->details->shutdown) { -- /* dont run resources here */ -+ /* don't run resources here */ - this_node->fixed = TRUE; - this_node->weight = -INFINITY; - } -@@ -2381,14 +2381,14 @@ find_lrm_op(const char *resource, const char *op, const char *node, const char * - } - - static void --unpack_rsc_migration(resource_t *rsc, node_t *node, xmlNode *xml_op, pe_working_set_t * data_set) -+unpack_rsc_migration(resource_t *rsc, node_t *node, xmlNode *xml_op, pe_working_set_t * data_set) - { -- -+ - /* - * The normal sequence is (now): migrate_to(Src) -> migrate_from(Tgt) -> stop(Src) - * -- * So if a migrate_to is followed by a stop, then we dont need to care what -- * happended on the target node -+ * So if a migrate_to is followed by a stop, then we don't need to care what -+ * happened on the target node - * - * Without the stop, we need to look for a successful migrate_from. - * This would also imply we're no longer running on the source -@@ -3096,13 +3096,13 @@ unpack_rsc_op(resource_t * rsc, node_t * node, xmlNode * xml_op, xmlNode ** last - if (is_not_set(rsc->flags, pe_rsc_unique)) { - parent = uber_parent(rsc); - } -- -+ - pe_rsc_trace(rsc, "Unpacking task %s/%s (call_id=%d, status=%d, rc=%d) on %s (role=%s)", - task_key, task, task_id, status, rc, node->details->uname, role2text(rsc->role)); - - if (node->details->unclean) { - pe_rsc_trace(rsc, "Node %s (where %s is running) is unclean." -- " Further action depends on the value of the stop's on-fail attribue", -+ " Further action depends on the value of the stop's on-fail attribute", - node->details->uname, rsc->id); - } - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 2e43623..cc97db1 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -516,7 +516,7 @@ custom_action(resource_t * rsc, char *key, const char *task, - #if 0 - /* - * No point checking this -- * - if we dont have quorum we can't stonith anyway -+ * - if we don't have quorum we can't stonith anyway - */ - } else if (action->needs == rsc_req_stonith) { - crm_trace("Action %s requires only stonith", action->uuid); -@@ -1418,7 +1418,7 @@ sort_op_by_callid(gconstpointer a, gconstpointer b) - * - * if the UUID from the TE doesn't match then one better - * be a pending operation. -- * pending operations dont survive between elections and joins -+ * pending operations don't survive between elections and joins - * because we query the LRM directly - */ - -@@ -2098,7 +2098,7 @@ trigger_unfencing( - return; - - } else if (rsc != NULL && is_not_set(rsc->flags, pe_rsc_fence_device)) { -- /* Wasnt a stonith device */ -+ /* Wasn't a stonith device */ - return; - - } else if(node -diff --git a/mcp/pacemaker.c b/mcp/pacemaker.c -index c5898c9..292e28c 100644 ---- a/mcp/pacemaker.c -+++ b/mcp/pacemaker.c -@@ -384,7 +384,7 @@ pcmk_shutdown_worker(gpointer user_data) - } - - for (; phase > 0; phase--) { -- /* dont stop anything with start_seq < 1 */ -+ /* Don't stop anything with start_seq < 1 */ - - for (lpc = max - 1; lpc >= 0; lpc--) { - pcmk_child_t *child = &(pcmk_children[lpc]); -@@ -782,7 +782,7 @@ init_children_processes(void) - - /* start any children that have not been detected */ - for (start_seq = 1; start_seq < max; start_seq++) { -- /* dont start anything with start_seq < 1 */ -+ /* don't start anything with start_seq < 1 */ - for (lpc = 0; lpc < max; lpc++) { - if (pcmk_children[lpc].pid) { - /* we are already tracking it */ -diff --git a/pengine/graph.c b/pengine/graph.c -index 645150b..ee7c7c8 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -363,13 +363,13 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - && (flags & pe_action_optional) == 0) { - processed = TRUE; - crm_trace("%s implies %s printed", first->uuid, then->uuid); -- update_action_flags(then, pe_action_print_always, __FUNCTION__); /* dont care about changed */ -+ update_action_flags(then, pe_action_print_always, __FUNCTION__); /* don't care about changed */ - } - - if ((type & pe_order_implies_first_printed) && (flags & pe_action_optional) == 0) { - processed = TRUE; - crm_trace("%s implies %s printed", then->uuid, first->uuid); -- update_action_flags(first, pe_action_print_always, __FUNCTION__); /* dont care about changed */ -+ update_action_flags(first, pe_action_print_always, __FUNCTION__); /* don't care about changed */ - } - - if ((type & pe_order_implies_then -diff --git a/pengine/native.c b/pengine/native.c -index b24e3fd..56a1434 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -2879,7 +2879,7 @@ native_start_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set - - } else if (safe_str_eq(action->task, RSC_START) - && NULL == pe_hash_table_lookup(rsc->known_on, target->details->id)) { -- /* if known == NULL, then we dont know if -+ /* if known == NULL, then we don't know if - * the resource is active on the node - * we're about to shoot - * -@@ -2891,7 +2891,7 @@ native_start_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set - * it's analogous to waiting for all the probes - * for rscX to complete before starting rscX - * -- * the most likely explaination is that the -+ * the most likely explanation is that the - * DC died and took its status with it - */ - -diff --git a/pengine/regression.sh b/pengine/regression.sh -index 4fea356..be1734b 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -138,7 +138,7 @@ do_test clone-require-all-7 "clone A and B both start at the same time. all inst - do_test clone-require-all-no-interleave-1 "C starts everywhere after A and B" - do_test clone-require-all-no-interleave-2 "C starts on nodes 1, 2, and 4 with only one active instance of B" - do_test clone-require-all-no-interleave-3 "C remains active when instance of B is stopped on one node and started on another." --do_test one-or-more-unrunnnable-instances "Avoid dependencies on instances that wont ever be started" -+do_test one-or-more-unrunnnable-instances "Avoid dependencies on instances that won't ever be started" - - echo "" - do_test order1 "Order start 1 " --- -1.8.3.1 - diff --git a/SOURCES/034-bundle.patch b/SOURCES/034-bundle.patch deleted file mode 100644 index 992e1e2..0000000 --- a/SOURCES/034-bundle.patch +++ /dev/null @@ -1,8756 +0,0 @@ -From 82a1a82b1245e97cb1b2f66ab03ed1d0df08a63e Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 21 Feb 2017 11:58:53 +1100 -Subject: [PATCH] Combined commit for bundle feature - -Includes upstream commits: - -Remote: extract common functionality -PE: Correctly test for clone functionality -PE: Basic container parsing and expansion -xml: Correctly find the first child element -Core: Track the line number of callers of crm_(set|clear)_bit -PE: Basic allocation of containers -PE: Force node scores for containerized resources -PE: Allow the graph to assume container nodes will come up and schedule actions for it -PE: container: Parse network and mount options -PE: Containers: Move the storage and network blocks up -PE: Containers: Add support for nic and netmask parameters -PE: Containers: Correctly create IP resources -PE: Correctly expose peer ports within the replica set -PE: Containers: Force a sane hostname -PE: Containers: Allow specifiying the maximum number of peers per host -PE: Container: Add support for non-default docker networks and supplying external IPs to container resources -XML: Remove unnecessary container mount option -PE: Containers: Remove containers on termination by default -PE: Containers: Use an autoconf variable for the location of pacemaker remote -PE: Containers: Switch to comma separated directory lists -PE: Containers: Fix crash, climbing the parent tree should never reach the container -PE: Containers: Filter external IP from parameter digests -PE: Containers: Prevent invalid recovery graphs -PE: Containers: The clone placement functions require the parent to be set -PE: Preferred nodes are only accepted if their scores are equal to the otherwise best candidate -PE: Contaienrs: Better checks when assuming a container will start -PE: Clone: Simplified allocation function -PE: Update tests for simplified clone allocation function -PE: Extract common print functionality so that containers can re-use most of it -PE: Containers: Default to a short-form print output -PE: Containers: Correctly set globally unique based on replicas-per-host -PE: Containers: Correctly find the right anonymous child resource running in a container -PE: Containers: Default 'replicas' to the same number of 'masters' ---- - configure.ac | 1 + - crmd/lrm_state.c | 229 ++---- - include/crm/common/xml.h | 26 +- - include/crm/msg_xml.h | 1 + - include/crm/pengine/complex.h | 5 +- - include/crm/pengine/internal.h | 16 +- - include/crm_internal.h | 44 +- - lib/common/utils.c | 1 + - lib/lrmd/proxy_common.c | 201 +++++- - lib/pengine/Makefile.am | 2 +- - lib/pengine/complex.c | 26 +- - lib/pengine/container.c | 800 +++++++++++++++++++++ - lib/pengine/native.c | 25 +- - lib/pengine/unpack.c | 57 +- - lib/pengine/utils.c | 3 +- - lib/pengine/variant.h | 52 ++ - lrmd/remote_ctl.c | 151 +--- - pengine/Makefile.am | 2 +- - pengine/allocate.c | 26 +- - pengine/allocate.h | 27 +- - pengine/clone.c | 309 ++++---- - pengine/constraints.c | 6 +- - pengine/container.c | 345 +++++++++ - pengine/graph.c | 23 +- - pengine/master.c | 20 +- - pengine/native.c | 53 +- - pengine/notif.c | 28 +- - pengine/test10/1360.scores | 2 + - pengine/test10/662.scores | 4 +- - pengine/test10/696.scores | 4 +- - pengine/test10/anti-colocation-slave.scores | 4 +- - pengine/test10/asymmetric.scores | 4 +- - pengine/test10/bnc-515172.scores | 8 +- - pengine/test10/bug-1685.scores | 4 +- - pengine/test10/bug-1765.scores | 4 +- - pengine/test10/bug-5143-ms-shuffle.scores | 28 +- - pengine/test10/bug-5186-partial-migrate.scores | 12 +- - pengine/test10/bug-cl-5168.scores | 3 + - pengine/test10/bug-cl-5213.scores | 4 +- - pengine/test10/bug-cl-5219.scores | 12 +- - pengine/test10/bug-lf-2106.scores | 4 +- - pengine/test10/bug-lf-2317.scores | 4 +- - pengine/test10/bug-lf-2358.scores | 4 +- - pengine/test10/bug-lf-2422.scores | 24 +- - pengine/test10/bug-lf-2453.scores | 4 +- - pengine/test10/bug-lf-2508.scores | 32 +- - pengine/test10/bug-pm-11.scores | 16 +- - pengine/test10/bug-pm-12.scores | 16 +- - pengine/test10/bug-rh-1097457.scores | 8 +- - pengine/test10/clone-interleave-2.scores | 8 +- - pengine/test10/clone-interleave-3.scores | 16 +- - pengine/test10/clone-order-16instances.scores | 4 +- - pengine/test10/clone-require-all-1.scores | 4 +- - pengine/test10/clone-require-all-3.scores | 4 +- - pengine/test10/clone-require-all-5.scores | 4 +- - pengine/test10/clone-require-all-6.scores | 8 +- - .../clone-require-all-no-interleave-3.scores | 4 +- - .../test10/clone_min_interleave_stop_one.scores | 12 +- - .../test10/clone_min_interleave_stop_two.scores | 16 +- - pengine/test10/clone_min_stop_one.scores | 4 +- - pengine/test10/cloned_stop_one.scores | 4 +- - pengine/test10/colo_slave_w_native.scores | 4 +- - pengine/test10/coloc-clone-stays-active.scores | 100 +-- - .../test10/colocate-primitive-with-clone.scores | 16 +- - pengine/test10/complex_enforce_colo.scores | 68 +- - pengine/test10/container-is-remote-node.scores | 4 +- - pengine/test10/group-dependents.scores | 4 +- - pengine/test10/group10.scores | 12 +- - pengine/test10/history-1.scores | 4 +- - pengine/test10/inc10.scores | 8 +- - pengine/test10/interleave-restart.scores | 12 +- - pengine/test10/load-stopped-loop-2.scores | 4 +- - pengine/test10/load-stopped-loop.scores | 120 ++-- - pengine/test10/master-12.scores | 4 +- - pengine/test10/master-13.scores | 4 +- - pengine/test10/master-4.scores | 58 +- - pengine/test10/master-5.scores | 58 +- - pengine/test10/master-6.scores | 58 +- - pengine/test10/master-7.scores | 22 +- - pengine/test10/master-8.scores | 16 +- - pengine/test10/master-demote-2.scores | 12 +- - pengine/test10/master-demote.scores | 4 +- - pengine/test10/master-dependent-ban.scores | 3 - - pengine/test10/master-notify.scores | 12 +- - pengine/test10/master-role.scores | 4 +- - pengine/test10/master-unmanaged-monitor.scores | 16 +- - pengine/test10/migrate-begin.scores | 4 +- - pengine/test10/migrate-both-vms.scores | 12 +- - pengine/test10/migrate-fail-2.scores | 4 +- - pengine/test10/migrate-fail-4.scores | 4 +- - pengine/test10/migrate-fail-5.scores | 4 +- - pengine/test10/migrate-fail-6.scores | 4 +- - pengine/test10/migrate-fail-8.scores | 4 +- - pengine/test10/migrate-fail-9.scores | 4 +- - pengine/test10/migrate-fencing.scores | 20 +- - pengine/test10/migrate-partial-2.scores | 4 +- - pengine/test10/migrate-partial-3.scores | 4 +- - .../test10/not-reschedule-unneeded-monitor.scores | 20 +- - pengine/test10/novell-251689.scores | 20 +- - .../one-or-more-unrunnnable-instances.scores | 56 +- - pengine/test10/params-6.scores | 84 +-- - pengine/test10/probe-0.scores | 8 +- - pengine/test10/probe-3.scores | 16 +- - pengine/test10/probe-4.scores | 16 +- - pengine/test10/rec-node-13.scores | 18 +- - pengine/test10/remote-orphaned.scores | 8 +- - pengine/test10/stonith-0.scores | 84 +-- - pengine/test10/stonith-1.scores | 4 +- - pengine/test10/stonith-2.scores | 48 +- - pengine/test10/ticket-clone-12.scores | 4 +- - pengine/test10/ticket-clone-24.scores | 4 +- - pengine/test10/ticket-master-11.scores | 4 +- - pengine/test10/ticket-master-12.scores | 4 +- - pengine/test10/ticket-master-16.scores | 4 +- - pengine/test10/ticket-master-17.scores | 4 +- - pengine/test10/ticket-master-18.scores | 4 +- - pengine/test10/ticket-master-19.scores | 4 +- - pengine/test10/ticket-master-20.scores | 4 +- - pengine/test10/ticket-master-22.scores | 4 +- - pengine/test10/ticket-master-23.scores | 4 +- - pengine/test10/ticket-master-24.scores | 4 +- - pengine/test10/ticket-master-5.scores | 4 +- - pengine/test10/ticket-master-6.scores | 4 +- - pengine/test10/ticket-master-8.scores | 4 +- - pengine/test10/ticket-rsc-sets-10.scores | 4 +- - pengine/test10/ticket-rsc-sets-11.scores | 4 +- - pengine/test10/ticket-rsc-sets-12.scores | 4 +- - pengine/test10/ticket-rsc-sets-13.scores | 4 +- - pengine/test10/ticket-rsc-sets-14.scores | 4 +- - pengine/test10/ticket-rsc-sets-2.scores | 4 +- - pengine/test10/ticket-rsc-sets-3.scores | 4 +- - pengine/test10/ticket-rsc-sets-5.scores | 4 +- - pengine/test10/ticket-rsc-sets-6.scores | 4 +- - pengine/test10/ticket-rsc-sets-7.scores | 4 +- - pengine/test10/ticket-rsc-sets-8.scores | 4 +- - pengine/test10/ticket-rsc-sets-9.scores | 4 +- - pengine/test10/unfence-definition.scores | 4 +- - pengine/test10/unfence-parameters.scores | 4 +- - pengine/test10/unfence-startup.scores | 4 +- - pengine/test10/unrunnable-2.scores | 68 +- - pengine/test10/whitebox-fail1.scores | 12 +- - pengine/test10/whitebox-fail2.scores | 12 +- - pengine/test10/whitebox-move.scores | 20 +- - pengine/test10/whitebox-ms-ordering-move.scores | 24 +- - pengine/test10/whitebox-orphan-ms.scores | 16 +- - pengine/test10/whitebox-orphaned.scores | 12 +- - pengine/test10/whitebox-start.scores | 20 +- - pengine/test10/whitebox-stop.scores | 12 +- - pengine/utilization.c | 2 +- - pengine/utils.c | 31 +- - tools/crm_resource_runtime.c | 4 +- - xml/resources-2.8.rng | 300 ++++++++ - 152 files changed, 3033 insertions(+), 1469 deletions(-) - create mode 100644 lib/pengine/container.c - create mode 100644 pengine/container.c - create mode 100644 xml/resources-2.8.rng - -diff --git a/configure.ac b/configure.ac -index b1465a3..db2e948 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1137,6 +1137,7 @@ AC_SUBST(OCF_RA_DIR) - - RH_STONITH_DIR="$sbindir" - AC_DEFINE_UNQUOTED(RH_STONITH_DIR,"$RH_STONITH_DIR", Location for Red Hat Stonith agents) -+AC_DEFINE_UNQUOTED(SBIN_DIR,"$sbindir", Location for system binaries) - - RH_STONITH_PREFIX="fence_" - AC_DEFINE_UNQUOTED(RH_STONITH_PREFIX,"$RH_STONITH_PREFIX", Prefix for Red Hat Stonith agents) -diff --git a/crmd/lrm_state.c b/crmd/lrm_state.c -index 7b4379b..9c22683 100644 ---- a/crmd/lrm_state.c -+++ b/crmd/lrm_state.c -@@ -401,83 +401,18 @@ lrm_state_ipc_connect(lrm_state_t * lrm_state) - return ret; - } - --static int --remote_proxy_dispatch_internal(const char *buffer, ssize_t length, gpointer userdata) --{ -- /* Async responses from cib and friends back to clients via pacemaker_remoted */ -- xmlNode *xml = NULL; -- remote_proxy_t *proxy = userdata; -- lrm_state_t *lrm_state = lrm_state_find(proxy->node_name); -- uint32_t flags; -- -- if (lrm_state == NULL) { -- return 0; -- } -- -- xml = string2xml(buffer); -- if (xml == NULL) { -- crm_warn("Received a NULL msg from IPC service."); -- return 1; -- } -- -- flags = crm_ipc_buffer_flags(proxy->ipc); -- if (flags & crm_ipc_proxied_relay_response) { -- crm_trace("Passing response back to %.8s on %s: %.200s - request id: %d", proxy->session_id, proxy->node_name, buffer, proxy->last_request_id); -- remote_proxy_relay_response(lrm_state->conn, proxy->session_id, xml, proxy->last_request_id); -- proxy->last_request_id = 0; -- -- } else { -- crm_trace("Passing event back to %.8s on %s: %.200s", proxy->session_id, proxy->node_name, buffer); -- remote_proxy_relay_event(lrm_state->conn, proxy->session_id, xml); -- } -- free_xml(xml); -- return 1; --} -- --static void --remote_proxy_disconnected(void *userdata) --{ -- remote_proxy_t *proxy = userdata; -- lrm_state_t *lrm_state = lrm_state_find(proxy->node_name); -- -- crm_trace("Destroying %s (%p)", lrm_state->node_name, userdata); -- -- proxy->source = NULL; -- proxy->ipc = NULL; -- -- if (lrm_state && lrm_state->conn) { -- remote_proxy_notify_destroy(lrm_state->conn, proxy->session_id); -- } -- g_hash_table_remove(proxy_table, proxy->session_id); --} -- - static remote_proxy_t * --remote_proxy_new(const char *node_name, const char *session_id, const char *channel) -+crmd_remote_proxy_new(lrmd_t *lrmd, const char *node_name, const char *session_id, const char *channel) - { - static struct ipc_client_callbacks proxy_callbacks = { -- .dispatch = remote_proxy_dispatch_internal, -+ .dispatch = remote_proxy_dispatch, - .destroy = remote_proxy_disconnected - }; -- remote_proxy_t *proxy = calloc(1, sizeof(remote_proxy_t)); -- -- proxy->node_name = strdup(node_name); -- proxy->session_id = strdup(session_id); -+ remote_proxy_t *proxy = remote_proxy_new(lrmd, proxy_callbacks, node_name, session_id, channel); - - if (safe_str_eq(channel, CRM_SYSTEM_CRMD)) { - proxy->is_local = TRUE; -- } else { -- proxy->source = mainloop_add_ipc_client(channel, G_PRIORITY_LOW, 0, proxy, &proxy_callbacks); -- proxy->ipc = mainloop_get_ipc_client(proxy->source); -- -- if (proxy->source == NULL) { -- remote_proxy_free(proxy); -- return NULL; -- } - } -- -- crm_trace("created proxy session ID %s", proxy->session_id); -- g_hash_table_insert(proxy_table, proxy->session_id, proxy); -- - return proxy; - } - -@@ -500,7 +435,7 @@ crmd_proxy_send(const char *session, xmlNode *msg) - lrm_state = lrm_state_find(proxy->node_name); - if (lrm_state) { - crm_trace("Sending event to %.8s on %s", proxy->session_id, proxy->node_name); -- remote_proxy_relay_event(lrm_state->conn, session, msg); -+ remote_proxy_relay_event(proxy, msg); - } - } - -@@ -535,7 +470,7 @@ remote_config_check(xmlNode * msg, int call_id, int rc, xmlNode * output, void * - crm_str_hash, g_str_equal, g_hash_destroy_str, g_hash_destroy_str); - - crm_debug("Call %d : Parsing CIB options", call_id); -- -+ - unpack_instance_attributes( - output, output, XML_CIB_TAG_PROPSET, NULL, config_hash, CIB_OPTIONS_FIRST, FALSE, now); - -@@ -548,24 +483,25 @@ remote_config_check(xmlNode * msg, int call_id, int rc, xmlNode * output, void * - } - - static void --remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) -+crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) - { - lrm_state_t *lrm_state = userdata; -- const char *op = crm_element_value(msg, F_LRMD_IPC_OP); - const char *session = crm_element_value(msg, F_LRMD_IPC_SESSION); -- int msg_id = 0; -- -- /* sessions are raw ipc connections to IPC, -- * all we do is proxy requests/responses exactly -- * like they are given to us at the ipc level. */ -+ remote_proxy_t *proxy = g_hash_table_lookup(proxy_table, session); - -- CRM_CHECK(op != NULL, return); -- CRM_CHECK(session != NULL, return); -+ const char *op = crm_element_value(msg, F_LRMD_IPC_OP); -+ if (safe_str_eq(op, LRMD_IPC_OP_NEW)) { -+ const char *channel = crm_element_value(msg, F_LRMD_IPC_IPC_SERVER); - -- crm_element_value_int(msg, F_LRMD_IPC_MSG_ID, &msg_id); -- /* This is msg from remote ipc client going to real ipc server */ -+ proxy = crmd_remote_proxy_new(lrmd, lrm_state->node_name, session, channel); -+ if (proxy != NULL) { -+ /* Look up stonith-watchdog-timeout and send to the remote peer for validation */ -+ int rc = fsa_cib_conn->cmds->query(fsa_cib_conn, XML_CIB_TAG_CRMCONFIG, NULL, cib_scope_local); -+ fsa_cib_conn->cmds->register_callback_full(fsa_cib_conn, rc, 10, FALSE, lrmd, -+ "remote_config_check", remote_config_check, NULL); -+ } - -- if (safe_str_eq(op, LRMD_IPC_OP_SHUTDOWN_REQ)) { -+ } else if (safe_str_eq(op, LRMD_IPC_OP_SHUTDOWN_REQ)) { - char *now_s = NULL; - time_t now = time(NULL); - -@@ -580,122 +516,37 @@ remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) - - crm_warn("Reconnection attempts to %s may result in failures that must be cleared", - lrm_state->node_name); -- return; - -- } else if (safe_str_eq(op, LRMD_IPC_OP_NEW)) { -- int rc; -- const char *channel = crm_element_value(msg, F_LRMD_IPC_IPC_SERVER); -+ } else if (safe_str_eq(op, LRMD_IPC_OP_REQUEST) && proxy->is_local) { -+ /* this is for the crmd, which we are, so don't try -+ * and connect/send to ourselves over ipc. instead -+ * do it directly. -+ */ -+ int flags = 0; -+ xmlNode *request = get_message_xml(msg, F_LRMD_IPC_MSG); - -- CRM_CHECK(channel != NULL, return); -+ crmd_proxy_dispatch(session, request); -+ crm_element_value_int(msg, F_LRMD_IPC_MSG_FLAGS, &flags); - -- if (remote_proxy_new(lrm_state->node_name, session, channel) == NULL) { -- remote_proxy_notify_destroy(lrmd, session); -- } -- crm_trace("new remote proxy client established to %s, session id %s", channel, session); -+ if (flags & crm_ipc_client_response) { -+ int msg_id = 0; -+ xmlNode *op_reply = create_xml_node(NULL, "ack"); - -- /* Look up stonith-watchdog-timeout and send to the remote peer for validation */ -- rc = fsa_cib_conn->cmds->query(fsa_cib_conn, XML_CIB_TAG_CRMCONFIG, NULL, cib_scope_local); -- fsa_cib_conn->cmds->register_callback_full(fsa_cib_conn, rc, 10, FALSE, lrmd, "remote_config_check", remote_config_check, NULL); -- -- } else if (safe_str_eq(op, LRMD_IPC_OP_DESTROY)) { -- remote_proxy_end_session(session); -+ crm_xml_add(op_reply, "function", __FUNCTION__); -+ crm_xml_add_int(op_reply, "line", __LINE__); - -- } else if (safe_str_eq(op, LRMD_IPC_OP_REQUEST)) { -- int flags = 0; -- xmlNode *request = get_message_xml(msg, F_LRMD_IPC_MSG); -- const char *name = crm_element_value(msg, F_LRMD_IPC_CLIENT); -- remote_proxy_t *proxy = g_hash_table_lookup(proxy_table, session); -- -- CRM_CHECK(request != NULL, return); -- -- if (proxy == NULL) { -- /* proxy connection no longer exists */ -- remote_proxy_notify_destroy(lrmd, session); -- return; -- } else if ((proxy->is_local == FALSE) && (crm_ipc_connected(proxy->ipc) == FALSE)) { -- remote_proxy_end_session(session); -- return; -- } -- proxy->last_request_id = 0; -- crm_element_value_int(msg, F_LRMD_IPC_MSG_FLAGS, &flags); -- crm_xml_add(request, XML_ACL_TAG_ROLE, "pacemaker-remote"); -- --#if ENABLE_ACL -- CRM_ASSERT(lrm_state->node_name); -- crm_acl_get_set_user(request, F_LRMD_IPC_USER, lrm_state->node_name); --#endif -- -- if (proxy->is_local) { -- /* this is for the crmd, which we are, so don't try -- * and connect/send to ourselves over ipc. instead -- * do it directly. */ -- crmd_proxy_dispatch(session, request); -- if (flags & crm_ipc_client_response) { -- xmlNode *op_reply = create_xml_node(NULL, "ack"); -- -- crm_xml_add(op_reply, "function", __FUNCTION__); -- crm_xml_add_int(op_reply, "line", __LINE__); -- remote_proxy_relay_response(lrmd, session, op_reply, msg_id); -- free_xml(op_reply); -- } -- -- } else if(is_set(flags, crm_ipc_proxied)) { -- const char *type = crm_element_value(request, F_TYPE); -- int rc = 0; -- -- if (safe_str_eq(type, T_ATTRD) -- && crm_element_value(request, F_ATTRD_HOST) == NULL) { -- crm_xml_add(request, F_ATTRD_HOST, proxy->node_name); -- } -- -- rc = crm_ipc_send(proxy->ipc, request, flags, 5000, NULL); -- -- if(rc < 0) { -- xmlNode *op_reply = create_xml_node(NULL, "nack"); -- -- crm_err("Could not relay %s request %d from %s to %s for %s: %s (%d)", -- op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc); -- -- /* Send a n'ack so the caller doesn't block */ -- crm_xml_add(op_reply, "function", __FUNCTION__); -- crm_xml_add_int(op_reply, "line", __LINE__); -- crm_xml_add_int(op_reply, "rc", rc); -- remote_proxy_relay_response(lrmd, session, op_reply, msg_id); -- free_xml(op_reply); -- -- } else { -- crm_trace("Relayed %s request %d from %s to %s for %s", -- op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name); -- proxy->last_request_id = msg_id; -- } -- -- } else { -- int rc = pcmk_ok; -- xmlNode *op_reply = NULL; -- /* For backwards compatibility with pacemaker_remoted <= 1.1.10 */ -- -- crm_trace("Relaying %s request %d from %s to %s for %s", -- op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name); -- -- rc = crm_ipc_send(proxy->ipc, request, flags, 10000, &op_reply); -- if(rc < 0) { -- crm_err("Could not relay %s request %d from %s to %s for %s: %s (%d)", -- op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc); -- } else { -- crm_trace("Relayed %s request %d from %s to %s for %s", -- op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name); -- } -- -- if(op_reply) { -- remote_proxy_relay_response(lrmd, session, op_reply, msg_id); -- free_xml(op_reply); -- } -+ crm_element_value_int(msg, F_LRMD_IPC_MSG_ID, &msg_id); -+ remote_proxy_relay_response(proxy, op_reply, msg_id); -+ -+ free_xml(op_reply); - } -+ - } else { -- crm_err("Unknown proxy operation: %s", op); -+ remote_proxy_cb(lrmd, lrm_state->node_name, msg); - } - } - -+ - int - lrm_state_remote_connect_async(lrm_state_t * lrm_state, const char *server, int port, - int timeout_ms) -@@ -708,7 +559,7 @@ lrm_state_remote_connect_async(lrm_state_t * lrm_state, const char *server, int - return -1; - } - ((lrmd_t *) lrm_state->conn)->cmds->set_callback(lrm_state->conn, remote_lrm_op_callback); -- lrmd_internal_set_proxy_callback(lrm_state->conn, lrm_state, remote_proxy_cb); -+ lrmd_internal_set_proxy_callback(lrm_state->conn, lrm_state, crmd_remote_proxy_cb); - } - - crm_trace("initiating remote connection to %s at %d with timeout %d", server, port, timeout_ms); -diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h -index a948915..9d9118a 100644 ---- a/include/crm/common/xml.h -+++ b/include/crm/common/xml.h -@@ -316,15 +316,33 @@ __xml_next(xmlNode * child) - } - - static inline xmlNode * -+__xml_first_child_element(xmlNode * parent) -+{ -+ xmlNode *child = NULL; -+ -+ if (parent) { -+ child = parent->children; -+ } -+ -+ while (child) { -+ if(child->type == XML_ELEMENT_NODE) { -+ return child; -+ } -+ child = child->next; -+ } -+ return NULL; -+} -+ -+static inline xmlNode * - __xml_next_element(xmlNode * child) - { -- if (child) { -+ while (child) { - child = child->next; -- while (child && child->type != XML_ELEMENT_NODE) { -- child = child->next; -+ if(child && child->type == XML_ELEMENT_NODE) { -+ return child; - } - } -- return child; -+ return NULL; - } - - void free_xml(xmlNode * child); -diff --git a/include/crm/msg_xml.h b/include/crm/msg_xml.h -index 6ec796a..3c67a98 100644 ---- a/include/crm/msg_xml.h -+++ b/include/crm/msg_xml.h -@@ -186,6 +186,7 @@ - # define XML_CIB_TAG_GROUP "group" - # define XML_CIB_TAG_INCARNATION "clone" - # define XML_CIB_TAG_MASTER "master" -+# define XML_CIB_TAG_CONTAINER "bucket" - - # define XML_CIB_TAG_RSC_TEMPLATE "template" - -diff --git a/include/crm/pengine/complex.h b/include/crm/pengine/complex.h -index 69da80f..92829f9 100644 ---- a/include/crm/pengine/complex.h -+++ b/include/crm/pengine/complex.h -@@ -31,8 +31,9 @@ enum pe_obj_types { - pe_unknown = -1, - pe_native = 0, - pe_group = 1, -- pe_clone = 2, -- pe_master = 3 -+ pe_container = 2, -+ pe_clone = 3, -+ pe_master = 4 - }; - - enum pe_obj_types get_resource_type(const char *name); -diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h -index 6b25da1..adafefd 100644 ---- a/include/crm/pengine/internal.h -+++ b/include/crm/pengine/internal.h -@@ -28,8 +28,8 @@ - # define pe_warn(fmt...) { was_processing_warning = TRUE; crm_config_warning = TRUE; crm_warn(fmt); } - # define pe_proc_err(fmt...) { was_processing_error = TRUE; crm_err(fmt); } - # define pe_proc_warn(fmt...) { was_processing_warning = TRUE; crm_warn(fmt); } --# define pe_set_action_bit(action, bit) action->flags = crm_set_bit(__FUNCTION__, action->uuid, action->flags, bit) --# define pe_clear_action_bit(action, bit) action->flags = crm_clear_bit(__FUNCTION__, action->uuid, action->flags, bit) -+# define pe_set_action_bit(action, bit) action->flags = crm_set_bit(__FUNCTION__, __LINE__, action->uuid, action->flags, bit) -+# define pe_clear_action_bit(action, bit) action->flags = crm_clear_bit(__FUNCTION__, __LINE__, action->uuid, action->flags, bit) - - typedef struct notify_data_s { - GHashTable *keys; -@@ -74,6 +74,7 @@ gboolean native_unpack(resource_t * rsc, pe_working_set_t * data_set); - gboolean group_unpack(resource_t * rsc, pe_working_set_t * data_set); - gboolean clone_unpack(resource_t * rsc, pe_working_set_t * data_set); - gboolean master_unpack(resource_t * rsc, pe_working_set_t * data_set); -+gboolean container_unpack(resource_t * rsc, pe_working_set_t * data_set); - - resource_t *native_find_rsc(resource_t * rsc, const char *id, node_t * node, int flags); - -@@ -81,25 +82,28 @@ gboolean native_active(resource_t * rsc, gboolean all); - gboolean group_active(resource_t * rsc, gboolean all); - gboolean clone_active(resource_t * rsc, gboolean all); - gboolean master_active(resource_t * rsc, gboolean all); -+gboolean container_active(resource_t * rsc, gboolean all); - - void native_print(resource_t * rsc, const char *pre_text, long options, void *print_data); - void group_print(resource_t * rsc, const char *pre_text, long options, void *print_data); - void clone_print(resource_t * rsc, const char *pre_text, long options, void *print_data); - void master_print(resource_t * rsc, const char *pre_text, long options, void *print_data); -+void container_print(resource_t * rsc, const char *pre_text, long options, void *print_data); - - void native_free(resource_t * rsc); - void group_free(resource_t * rsc); - void clone_free(resource_t * rsc); - void master_free(resource_t * rsc); -+void container_free(resource_t * rsc); - - enum rsc_role_e native_resource_state(const resource_t * rsc, gboolean current); - enum rsc_role_e group_resource_state(const resource_t * rsc, gboolean current); - enum rsc_role_e clone_resource_state(const resource_t * rsc, gboolean current); - enum rsc_role_e master_resource_state(const resource_t * rsc, gboolean current); -+enum rsc_role_e container_resource_state(const resource_t * rsc, gboolean current); - - gboolean common_unpack(xmlNode * xml_obj, resource_t ** rsc, resource_t * parent, - pe_working_set_t * data_set); --void common_print(resource_t * rsc, const char *pre_text, long options, void *print_data); - void common_free(resource_t * rsc); - - extern pe_working_set_t *pe_dataset; -@@ -282,4 +286,10 @@ void print_rscs_brief(GListPtr rsc_list, const char * pre_text, long options, - void * print_data, gboolean print_all); - void pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason); - -+node_t *create_node(const char *id, const char *uname, const char *type, const char *score, pe_working_set_t * data_set); -+bool remote_id_conflict(const char *remote_name, pe_working_set_t *data); -+void common_print(resource_t * rsc, const char *pre_text, const char *name, node_t *node, long options, void *print_data); -+resource_t *find_container_child(const char *stem, resource_t * rsc, node_t *node); -+ -+ - #endif -diff --git a/include/crm_internal.h b/include/crm_internal.h -index a8fee47..46eef45 100644 ---- a/include/crm_internal.h -+++ b/include/crm_internal.h -@@ -157,39 +157,47 @@ char *generate_transition_magic(const char *transition_key, int op_status, int o - char *generate_transition_key(int action, int transition_id, int target_rc, const char *node); - - static inline long long --crm_clear_bit(const char *function, const char *target, long long word, long long bit) -+crm_clear_bit(const char *function, int line, const char *target, long long word, long long bit) - { - long long rc = (word & ~bit); - -+ /* if(bit == 0x00002) { */ -+ /* crm_err("Bit 0x%.8llx for %s cleared by %s:%d", bit, target, function, line); */ -+ /* } */ -+ - if (rc == word) { - /* Unchanged */ - } else if (target) { -- crm_trace("Bit 0x%.8llx for %s cleared by %s", bit, target, function); -+ crm_trace("Bit 0x%.8llx for %s cleared by %s:%d", bit, target, function, line); - } else { -- crm_trace("Bit 0x%.8llx cleared by %s", bit, function); -+ crm_trace("Bit 0x%.8llx cleared by %s:%d", bit, function, line); - } - - return rc; - } - - static inline long long --crm_set_bit(const char *function, const char *target, long long word, long long bit) -+crm_set_bit(const char *function, int line, const char *target, long long word, long long bit) - { - long long rc = (word | bit); - -+ /* if(bit == 0x00002) { */ -+ /* crm_err("Bit 0x%.8llx for %s set by %s:%d", bit, target, function, line); */ -+ /* } */ -+ - if (rc == word) { - /* Unchanged */ - } else if (target) { -- crm_trace("Bit 0x%.8llx for %s set by %s", bit, target, function); -+ crm_trace("Bit 0x%.8llx for %s set by %s:%d", bit, target, function, line); - } else { -- crm_trace("Bit 0x%.8llx set by %s", bit, function); -+ crm_trace("Bit 0x%.8llx set by %s:%d", bit, function, line); - } - - return rc; - } - --# define set_bit(word, bit) word = crm_set_bit(__FUNCTION__, NULL, word, bit) --# define clear_bit(word, bit) word = crm_clear_bit(__FUNCTION__, NULL, word, bit) -+# define set_bit(word, bit) word = crm_set_bit(__FUNCTION__, __LINE__, NULL, word, bit) -+# define clear_bit(word, bit) word = crm_clear_bit(__FUNCTION__, __LINE__, NULL, word, bit) - - char *generate_hash_key(const char *crm_msg_reference, const char *sys); - -@@ -361,14 +369,24 @@ typedef struct remote_proxy_s { - crm_ipc_t *ipc; - mainloop_io_t *source; - uint32_t last_request_id; -+ lrmd_t *lrm; - - } remote_proxy_t; --void remote_proxy_notify_destroy(lrmd_t *lrmd, const char *session_id); -+ -+remote_proxy_t *remote_proxy_new( -+ lrmd_t *lrmd, struct ipc_client_callbacks proxy_callbacks, -+ const char *node_name, const char *session_id, const char *channel); -+ -+int remote_proxy_check(lrmd_t *lrmd, GHashTable *hash); -+void remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg); - void remote_proxy_ack_shutdown(lrmd_t *lrmd); --void remote_proxy_relay_event(lrmd_t *lrmd, const char *session_id, xmlNode *msg); --void remote_proxy_relay_response(lrmd_t *lrmd, const char *session_id, xmlNode *msg, int msg_id); --void remote_proxy_end_session(const char *session); -+ -+int remote_proxy_dispatch(const char *buffer, ssize_t length, gpointer userdata); -+void remote_proxy_disconnected(gpointer data); - void remote_proxy_free(gpointer data); --int remote_proxy_check(lrmd_t * lrmd, GHashTable *hash); -+ -+void remote_proxy_end_session(remote_proxy_t *proxy); -+void remote_proxy_relay_event(remote_proxy_t *proxy, xmlNode *msg); -+void remote_proxy_relay_response(remote_proxy_t *proxy, xmlNode *msg, int msg_id); - - #endif /* CRM_INTERNAL__H */ -diff --git a/lib/common/utils.c b/lib/common/utils.c -index 83072c5..51ba77a 100644 ---- a/lib/common/utils.c -+++ b/lib/common/utils.c -@@ -896,6 +896,7 @@ filter_action_parameters(xmlNode * param_set, const char *version) - XML_LRM_ATTR_OP_DIGEST, - XML_LRM_ATTR_TARGET, - XML_LRM_ATTR_TARGET_UUID, -+ "pcmk_external_ip" - }; - - gboolean do_delete = FALSE; -diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c -index eb17e4e..a250bae 100644 ---- a/lib/lrmd/proxy_common.c -+++ b/lib/lrmd/proxy_common.c -@@ -34,7 +34,7 @@ - int lrmd_internal_proxy_send(lrmd_t * lrmd, xmlNode *msg); - GHashTable *proxy_table = NULL; - --void -+static void - remote_proxy_notify_destroy(lrmd_t *lrmd, const char *session_id) - { - /* sending to the remote node that an ipc connection has been destroyed */ -@@ -60,36 +60,34 @@ remote_proxy_ack_shutdown(lrmd_t *lrmd) - } - - void --remote_proxy_relay_event(lrmd_t *lrmd, const char *session_id, xmlNode *msg) -+remote_proxy_relay_event(remote_proxy_t *proxy, xmlNode *msg) - { - /* sending to the remote node an event msg. */ - xmlNode *event = create_xml_node(NULL, T_LRMD_IPC_PROXY); - crm_xml_add(event, F_LRMD_IPC_OP, LRMD_IPC_OP_EVENT); -- crm_xml_add(event, F_LRMD_IPC_SESSION, session_id); -+ crm_xml_add(event, F_LRMD_IPC_SESSION, proxy->session_id); - add_message_xml(event, F_LRMD_IPC_MSG, msg); - crm_log_xml_explicit(event, "EventForProxy"); -- lrmd_internal_proxy_send(lrmd, event); -+ lrmd_internal_proxy_send(proxy->lrm, event); - free_xml(event); - } - - void --remote_proxy_relay_response(lrmd_t *lrmd, const char *session_id, xmlNode *msg, int msg_id) -+remote_proxy_relay_response(remote_proxy_t *proxy, xmlNode *msg, int msg_id) - { - /* sending to the remote node a response msg. */ - xmlNode *response = create_xml_node(NULL, T_LRMD_IPC_PROXY); - crm_xml_add(response, F_LRMD_IPC_OP, LRMD_IPC_OP_RESPONSE); -- crm_xml_add(response, F_LRMD_IPC_SESSION, session_id); -+ crm_xml_add(response, F_LRMD_IPC_SESSION, proxy->session_id); - crm_xml_add_int(response, F_LRMD_IPC_MSG_ID, msg_id); - add_message_xml(response, F_LRMD_IPC_MSG, msg); -- lrmd_internal_proxy_send(lrmd, response); -+ lrmd_internal_proxy_send(proxy->lrm, response); - free_xml(response); - } - --void --remote_proxy_end_session(const char *session) -+void -+remote_proxy_end_session(remote_proxy_t *proxy) - { -- remote_proxy_t *proxy = g_hash_table_lookup(proxy_table, session); -- - if (proxy == NULL) { - return; - } -@@ -111,4 +109,185 @@ remote_proxy_free(gpointer data) - free(proxy); - } - -+int -+remote_proxy_dispatch(const char *buffer, ssize_t length, gpointer userdata) -+{ -+ /* Async responses from cib and friends back to clients via pacemaker_remoted */ -+ xmlNode *xml = NULL; -+ uint32_t flags = 0; -+ remote_proxy_t *proxy = userdata; -+ -+ xml = string2xml(buffer); -+ if (xml == NULL) { -+ crm_warn("Received a NULL msg from IPC service."); -+ return 1; -+ } -+ -+ flags = crm_ipc_buffer_flags(proxy->ipc); -+ if (flags & crm_ipc_proxied_relay_response) { -+ crm_trace("Passing response back to %.8s on %s: %.200s - request id: %d", proxy->session_id, proxy->node_name, buffer, proxy->last_request_id); -+ remote_proxy_relay_response(proxy, xml, proxy->last_request_id); -+ proxy->last_request_id = 0; -+ -+ } else { -+ crm_trace("Passing event back to %.8s on %s: %.200s", proxy->session_id, proxy->node_name, buffer); -+ remote_proxy_relay_event(proxy, xml); -+ } -+ free_xml(xml); -+ return 1; -+} -+ -+ -+void -+remote_proxy_disconnected(gpointer userdata) -+{ -+ remote_proxy_t *proxy = userdata; - -+ crm_trace("destroying %p", proxy); -+ -+ proxy->source = NULL; -+ proxy->ipc = NULL; -+ -+ if(proxy->lrm) { -+ remote_proxy_notify_destroy(proxy->lrm, proxy->session_id); -+ proxy->lrm = NULL; -+ } -+ -+ g_hash_table_remove(proxy_table, proxy->session_id); -+} -+ -+remote_proxy_t * -+remote_proxy_new(lrmd_t *lrmd, struct ipc_client_callbacks proxy_callbacks, -+ const char *node_name, const char *session_id, const char *channel) -+{ -+ remote_proxy_t *proxy = NULL; -+ -+ if(channel == NULL) { -+ crm_err("No channel specified to proxy"); -+ remote_proxy_notify_destroy(lrmd, session_id); -+ return NULL; -+ } -+ -+ proxy = calloc(1, sizeof(remote_proxy_t)); -+ -+ proxy->node_name = strdup(node_name); -+ proxy->session_id = strdup(session_id); -+ -+ proxy->source = mainloop_add_ipc_client(channel, G_PRIORITY_LOW, 0, proxy, &proxy_callbacks); -+ proxy->ipc = mainloop_get_ipc_client(proxy->source); -+ proxy->lrm = lrmd; -+ -+ if (proxy->source == NULL) { -+ remote_proxy_free(proxy); -+ remote_proxy_notify_destroy(lrmd, session_id); -+ return NULL; -+ } -+ -+ crm_trace("new remote proxy client established to %s on %s, session id %s", -+ channel, node_name, session_id); -+ g_hash_table_insert(proxy_table, proxy->session_id, proxy); -+ -+ return proxy; -+} -+ -+void -+remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) -+{ -+ const char *op = crm_element_value(msg, F_LRMD_IPC_OP); -+ const char *session = crm_element_value(msg, F_LRMD_IPC_SESSION); -+ remote_proxy_t *proxy = g_hash_table_lookup(proxy_table, session); -+ int msg_id = 0; -+ -+ /* sessions are raw ipc connections to IPC, -+ * all we do is proxy requests/responses exactly -+ * like they are given to us at the ipc level. */ -+ -+ CRM_CHECK(op != NULL, return); -+ CRM_CHECK(session != NULL, return); -+ -+ crm_element_value_int(msg, F_LRMD_IPC_MSG_ID, &msg_id); -+ /* This is msg from remote ipc client going to real ipc server */ -+ -+ if (safe_str_eq(op, LRMD_IPC_OP_DESTROY)) { -+ remote_proxy_end_session(proxy); -+ -+ } else if (safe_str_eq(op, LRMD_IPC_OP_REQUEST)) { -+ int flags = 0; -+ xmlNode *request = get_message_xml(msg, F_LRMD_IPC_MSG); -+ const char *name = crm_element_value(msg, F_LRMD_IPC_CLIENT); -+ -+ CRM_CHECK(request != NULL, return); -+ -+ if (proxy == NULL) { -+ /* proxy connection no longer exists */ -+ remote_proxy_notify_destroy(lrmd, session); -+ return; -+ } else if ((proxy->is_local == FALSE) && (crm_ipc_connected(proxy->ipc) == FALSE)) { -+ remote_proxy_end_session(proxy); -+ return; -+ } -+ proxy->last_request_id = 0; -+ crm_element_value_int(msg, F_LRMD_IPC_MSG_FLAGS, &flags); -+ crm_xml_add(request, XML_ACL_TAG_ROLE, "pacemaker-remote"); -+ -+#if ENABLE_ACL -+ CRM_ASSERT(node_name); -+ crm_acl_get_set_user(request, F_LRMD_IPC_USER, node_name); -+#endif -+ -+ if(is_set(flags, crm_ipc_proxied)) { -+ const char *type = crm_element_value(request, F_TYPE); -+ int rc = 0; -+ -+ if (safe_str_eq(type, T_ATTRD) -+ && crm_element_value(request, F_ATTRD_HOST) == NULL) { -+ crm_xml_add(request, F_ATTRD_HOST, proxy->node_name); -+ } -+ -+ rc = crm_ipc_send(proxy->ipc, request, flags, 5000, NULL); -+ -+ if(rc < 0) { -+ xmlNode *op_reply = create_xml_node(NULL, "nack"); -+ -+ crm_err("Could not relay %s request %d from %s to %s for %s: %s (%d)", -+ op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc); -+ -+ /* Send a n'ack so the caller doesn't block */ -+ crm_xml_add(op_reply, "function", __FUNCTION__); -+ crm_xml_add_int(op_reply, "line", __LINE__); -+ crm_xml_add_int(op_reply, "rc", rc); -+ remote_proxy_relay_response(proxy, op_reply, msg_id); -+ free_xml(op_reply); -+ -+ } else { -+ crm_trace("Relayed %s request %d from %s to %s for %s", -+ op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name); -+ proxy->last_request_id = msg_id; -+ } -+ -+ } else { -+ int rc = pcmk_ok; -+ xmlNode *op_reply = NULL; -+ /* For backwards compatibility with pacemaker_remoted <= 1.1.10 */ -+ -+ crm_trace("Relaying %s request %d from %s to %s for %s", -+ op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name); -+ -+ rc = crm_ipc_send(proxy->ipc, request, flags, 10000, &op_reply); -+ if(rc < 0) { -+ crm_err("Could not relay %s request %d from %s to %s for %s: %s (%d)", -+ op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc); -+ } else { -+ crm_trace("Relayed %s request %d from %s to %s for %s", -+ op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name); -+ } -+ -+ if(op_reply) { -+ remote_proxy_relay_response(proxy, op_reply, msg_id); -+ free_xml(op_reply); -+ } -+ } -+ } else { -+ crm_err("Unknown proxy operation: %s", op); -+ } -+} -diff --git a/lib/pengine/Makefile.am b/lib/pengine/Makefile.am -index 59aa383..40188f9 100644 ---- a/lib/pengine/Makefile.am -+++ b/lib/pengine/Makefile.am -@@ -37,7 +37,7 @@ libpe_status_la_CFLAGS = $(CFLAGS_HARDENED_LIB) - libpe_status_la_LDFLAGS += $(LDFLAGS_HARDENED_LIB) - - libpe_status_la_LIBADD = @CURSESLIBS@ $(top_builddir)/lib/common/libcrmcommon.la --libpe_status_la_SOURCES = status.c unpack.c utils.c complex.c native.c \ -+libpe_status_la_SOURCES = status.c unpack.c utils.c complex.c native.c container.c \ - group.c clone.c rules.c common.c remote.c - - clean-generic: -diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c -index 7fe622f..9fa8bf0 100644 ---- a/lib/pengine/complex.c -+++ b/lib/pengine/complex.c -@@ -33,7 +33,8 @@ resource_object_functions_t resource_class_functions[] = { - native_active, - native_resource_state, - native_location, -- native_free}, -+ native_free -+ }, - { - group_unpack, - native_find_rsc, -@@ -42,7 +43,18 @@ resource_object_functions_t resource_class_functions[] = { - group_active, - group_resource_state, - native_location, -- group_free}, -+ group_free -+ }, -+ { -+ container_unpack, -+ native_find_rsc, -+ native_parameter, -+ container_print, -+ container_active, -+ container_resource_state, -+ native_location, -+ container_free -+ }, - { - clone_unpack, - native_find_rsc, -@@ -51,7 +63,8 @@ resource_object_functions_t resource_class_functions[] = { - clone_active, - clone_resource_state, - native_location, -- clone_free}, -+ clone_free -+ }, - { - master_unpack, - native_find_rsc, -@@ -77,6 +90,9 @@ get_resource_type(const char *name) - - } else if (safe_str_eq(name, XML_CIB_TAG_MASTER)) { - return pe_master; -+ -+ } else if (safe_str_eq(name, XML_CIB_TAG_CONTAINER)) { -+ return pe_container; - } - - return pe_unknown; -@@ -94,6 +110,8 @@ get_resource_typename(enum pe_obj_types type) - return XML_CIB_TAG_INCARNATION; - case pe_master: - return XML_CIB_TAG_MASTER; -+ case pe_container: -+ return XML_CIB_TAG_CONTAINER; - case pe_unknown: - return "unknown"; - } -@@ -816,7 +834,7 @@ uber_parent(resource_t * rsc) - if (parent == NULL) { - return NULL; - } -- while (parent->parent != NULL) { -+ while (parent->parent != NULL && parent->parent->variant != pe_container) { - parent = parent->parent; - } - return parent; -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -new file mode 100644 -index 0000000..d7d47ad ---- /dev/null -+++ b/lib/pengine/container.c -@@ -0,0 +1,800 @@ -+/* -+ * Copyright (C) 2004 Andrew Beekhof -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#include -+ -+#include -+#include -+#include -+#include -+#include -+ -+#define VARIANT_CONTAINER 1 -+#include "./variant.h" -+ -+void tuple_free(container_grouping_t *tuple); -+ -+static char * -+next_ip(const char *last_ip) -+{ -+ int oct1 = 0; -+ int oct2 = 0; -+ int oct3 = 0; -+ int oct4 = 0; -+ -+ int rc = sscanf(last_ip, "%d.%d.%d.%d", &oct1, &oct2, &oct3, &oct4); -+ if (rc != 4) { -+ return NULL; -+ -+ } else if(oct4 > 255) { -+ return NULL; -+ } -+ -+ return crm_strdup_printf("%d.%d.%d.%d", oct1, oct2, oct3, oct4+1); -+} -+ -+static int -+allocate_ip(container_variant_data_t *data, container_grouping_t *tuple, char *buffer, int max) -+{ -+ if(data->ip_range_start == NULL) { -+ return 0; -+ -+ } else if(data->ip_last) { -+ tuple->ipaddr = next_ip(data->ip_last); -+ -+ } else { -+ tuple->ipaddr = strdup(data->ip_range_start); -+ } -+ -+ data->ip_last = tuple->ipaddr; -+#if 0 -+ return snprintf(buffer, max, " --add-host=%s-%d:%s --link %s-docker-%d:%s-link-%d", -+ data->prefix, tuple->offset, tuple->ipaddr, -+ data->prefix, tuple->offset, data->prefix, tuple->offset); -+#else -+ return snprintf(buffer, max, " --add-host=%s-%d:%s", -+ data->prefix, tuple->offset, tuple->ipaddr); -+#endif -+} -+ -+static xmlNode * -+create_resource(const char *name, const char *provider, const char *kind) -+{ -+ xmlNode *rsc = create_xml_node(NULL, XML_CIB_TAG_RESOURCE); -+ -+ crm_xml_add(rsc, XML_ATTR_ID, name); -+ crm_xml_add(rsc, XML_AGENT_ATTR_CLASS, "ocf"); -+ crm_xml_add(rsc, XML_AGENT_ATTR_PROVIDER, provider); -+ crm_xml_add(rsc, "type", kind); -+ -+ return rsc; -+} -+ -+static void -+create_nvp(xmlNode *parent, const char *name, const char *value) -+{ -+ char *id = crm_strdup_printf("%s-%s", ID(parent), name); -+ xmlNode *xml_nvp = create_xml_node(parent, XML_CIB_TAG_NVPAIR); -+ -+ crm_xml_add(xml_nvp, XML_ATTR_ID, id); free(id); -+ crm_xml_add(xml_nvp, XML_NVPAIR_ATTR_NAME, name); -+ crm_xml_add(xml_nvp, XML_NVPAIR_ATTR_VALUE, value); -+} -+ -+static void -+create_op(xmlNode *parent, const char *prefix, const char *task, const char *interval) -+{ -+ char *id = crm_strdup_printf("%s-%s-%s", prefix, task, interval); -+ xmlNode *xml_op = create_xml_node(parent, "op"); -+ -+ crm_xml_add(xml_op, XML_ATTR_ID, id); free(id); -+ crm_xml_add(xml_op, XML_LRM_ATTR_INTERVAL, interval); -+ crm_xml_add(xml_op, "name", task); -+} -+ -+static bool -+create_ip_resource( -+ resource_t *parent, container_variant_data_t *data, container_grouping_t *tuple, -+ pe_working_set_t * data_set) -+{ -+ if(data->ip_range_start) { -+ char *id = crm_strdup_printf("%s-ip-%s", data->prefix, tuple->ipaddr); -+ xmlNode *xml_ip = create_resource(id, "heartbeat", "IPaddr2"); -+ xmlNode *xml_obj = NULL; -+ -+ id = crm_strdup_printf("%s-attributes-%d", data->prefix, tuple->offset); -+ xml_obj = create_xml_node(xml_ip, XML_TAG_ATTR_SETS); -+ crm_xml_add(xml_obj, XML_ATTR_ID, id); free(id); -+ -+ create_nvp(xml_obj, "ip", tuple->ipaddr); -+ if(data->host_network) { -+ create_nvp(xml_obj, "nic", data->host_network); -+ } -+ -+ if(data->host_netmask) { -+ create_nvp(xml_obj, "cidr_netmask", data->host_netmask); -+ -+ } else { -+ create_nvp(xml_obj, "cidr_netmask", "32"); -+ } -+ -+ xml_obj = create_xml_node(xml_ip, "operations"); -+ create_op(xml_obj, ID(xml_ip), "monitor", "60s"); -+ -+ // TODO: Other ops? Timeouts and intervals from underlying resource? -+ -+ if (common_unpack(xml_ip, &tuple->ip, NULL, data_set) == false) { -+ return FALSE; -+ } -+ -+ parent->children = g_list_append(parent->children, tuple->ip); -+ } -+ return TRUE; -+} -+ -+static bool -+create_docker_resource( -+ resource_t *parent, container_variant_data_t *data, container_grouping_t *tuple, -+ pe_working_set_t * data_set) -+{ -+ int offset = 0, max = 4096; -+ char *buffer = calloc(1, max+1); -+ -+ int doffset = 0, dmax = 1024; -+ char *dbuffer = calloc(1, dmax+1); -+ -+ char *id = crm_strdup_printf("%s-docker-%d", data->prefix, tuple->offset); -+ xmlNode *xml_docker = create_resource(id, "heartbeat", "docker"); -+ xmlNode *xml_obj = NULL; -+ -+ id = crm_strdup_printf("%s-attributes-%d", data->prefix, tuple->offset); -+ xml_obj = create_xml_node(xml_docker, XML_TAG_ATTR_SETS); -+ crm_xml_add(xml_obj, XML_ATTR_ID, id); free(id); -+ -+ create_nvp(xml_obj, "image", data->image); -+ create_nvp(xml_obj, "allow_pull", "true"); -+ create_nvp(xml_obj, "force_kill", "false"); -+ create_nvp(xml_obj, "reuse", "false"); -+ -+ offset += snprintf(buffer+offset, max-offset, "-h %s-%d --restart=no ", -+ data->prefix, tuple->offset); -+ -+ if(data->docker_network) { -+// offset += snprintf(buffer+offset, max-offset, " --link-local-ip=%s", tuple->ipaddr); -+ offset += snprintf(buffer+offset, max-offset, " --net=%s", data->docker_network); -+ } -+ -+ for(GListPtr pIter = data->mounts; pIter != NULL; pIter = pIter->next) { -+ container_mount_t *mount = pIter->data; -+ -+ if(mount->flags) { -+ char *source = crm_strdup_printf( -+ "%s/%s-%d", mount->source, data->prefix, tuple->offset); -+ -+ if(doffset > 0) { -+ doffset += snprintf(dbuffer+doffset, dmax-doffset, ","); -+ } -+ doffset += snprintf(dbuffer+doffset, dmax-doffset, "%s", source); -+ offset += snprintf(buffer+offset, max-offset, " -v %s:%s", source, mount->target); -+ -+ } else { -+ offset += snprintf(buffer+offset, max-offset, " -v %s:%s", mount->source, mount->target); -+ } -+ if(mount->options) { -+ offset += snprintf(buffer+offset, max-offset, ":%s", mount->options); -+ } -+ } -+ -+ for(GListPtr pIter = data->ports; pIter != NULL; pIter = pIter->next) { -+ char *port = pIter->data; -+ -+ offset += snprintf(buffer+offset, max-offset, " -p %s:%s:%s", -+ tuple->ipaddr, port, port); -+ } -+ -+ if(data->docker_run_options) { -+ offset += snprintf(buffer+offset, max-offset, " %s", data->docker_run_options); -+ } -+ -+ if(data->docker_host_options) { -+ offset += snprintf(buffer+offset, max-offset, " %s", data->docker_host_options); -+ } -+ -+ create_nvp(xml_obj, "run_opts", buffer); -+ free(buffer); -+ -+ create_nvp(xml_obj, "mount_points", dbuffer); -+ free(dbuffer); -+ -+ if(tuple->child) { -+ create_nvp(xml_obj, "run_cmd", SBIN_DIR"/pacemaker_remoted"); -+ -+ /* TODO: Allow users to specify their own? -+ * -+ * We just want to know if the container is alive, we'll -+ * monitor the child independantly -+ */ -+ create_nvp(xml_obj, "monitor_cmd", "/bin/true"); -+ /* } else if(child && data->untrusted) { -+ * Support this use-case? -+ * -+ * The ability to have resources started/stopped by us, but -+ * unable to set attributes, etc. -+ * -+ * Arguably better to control API access this with ACLs like -+ * "normal" remote nodes -+ * -+ * create_nvp(xml_obj, "run_cmd", "/usr/libexec/pacemaker/lrmd"); -+ * create_nvp(xml_obj, "monitor_cmd", "/usr/libexec/pacemaker/lrmd_internal_ctl -c poke"); -+ */ -+ } else { -+ /* TODO: Allow users to specify their own? -+ * -+ * We don't know what's in the container, so we just want -+ * to know if it is alive -+ */ -+ create_nvp(xml_obj, "monitor_cmd", "/bin/true"); -+ } -+ -+ -+ xml_obj = create_xml_node(xml_docker, "operations"); -+ create_op(xml_obj, ID(xml_docker), "monitor", "60s"); -+ -+ // TODO: Other ops? Timeouts and intervals from underlying resource? -+ -+ if (common_unpack(xml_docker, &tuple->docker, NULL, data_set) == FALSE) { -+ return FALSE; -+ } -+ parent->children = g_list_append(parent->children, tuple->docker); -+ tuple->docker->parent = parent; -+ return TRUE; -+} -+ -+static bool -+create_remote_resource( -+ resource_t *parent, container_variant_data_t *data, container_grouping_t *tuple, -+ pe_working_set_t * data_set) -+{ -+ if(tuple->ip && tuple->child) { -+ node_t *node = NULL; -+ xmlNode *xml_obj = NULL; -+ xmlNode *xml_remote = NULL; -+ char *nodeid = crm_strdup_printf("%s-%d", data->prefix, tuple->offset); -+ char *id = strdup(nodeid); -+ -+ if(remote_id_conflict(id, data_set)) { -+ // The biggest hammer we have -+ id = crm_strdup_printf("pcmk-internal-%s-remote-%d", tuple->child->id, tuple->offset); -+ } -+ -+ CRM_ASSERT(remote_id_conflict(id, data_set) == FALSE); -+ -+ xml_remote = create_resource(id, "pacemaker", "remote"); -+ xml_obj = create_xml_node(xml_remote, "operations"); -+ create_op(xml_obj, ID(xml_remote), "monitor", "60s"); -+ -+ id = crm_strdup_printf("%s-attributes-%d", data->prefix, tuple->offset); -+ xml_obj = create_xml_node(xml_remote, XML_TAG_ATTR_SETS); -+ crm_xml_add(xml_obj, XML_ATTR_ID, id); free(id); -+ -+ create_nvp(xml_obj, "addr", tuple->ipaddr); -+ create_nvp(xml_obj, "port", crm_itoa(DEFAULT_REMOTE_PORT)); -+ -+ id = crm_strdup_printf("%s-meta-%d", data->prefix, tuple->offset); -+ xml_obj = create_xml_node(xml_remote, XML_TAG_META_SETS); -+ crm_xml_add(xml_obj, XML_ATTR_ID, id); free(id); -+ -+ create_nvp(xml_obj, XML_OP_ATTR_ALLOW_MIGRATE, "false"); -+ -+ // Sets up node->details->remote_rsc->container == tuple->docker -+ create_nvp(xml_obj, XML_RSC_ATTR_CONTAINER, tuple->docker->id); -+ -+ // TODO: Do this generically, eg with rsc->flags -+ // create_nvp(xml_obj, XML_RSC_ATTR_INTERNAL_RSC, "true"); // Suppress printing -+ -+ // tuple->docker->fillers = g_list_append(tuple->docker->fillers, child); -+ -+ // -INFINITY prevents anyone else from running here -+ node = create_node(strdup(nodeid), nodeid, "remote", "-INFINITY", data_set); -+ tuple->node = node_copy(node); -+ tuple->node->weight = 500; -+ nodeid = NULL; -+ id = NULL; -+ -+ if (common_unpack(xml_remote, &tuple->remote, NULL, data_set) == FALSE) { -+ return FALSE; -+ } -+ -+ tuple->node->details->remote_rsc = tuple->remote; -+ parent->children = g_list_append(parent->children, tuple->remote); -+ } -+ return TRUE; -+} -+ -+static bool -+create_container( -+ resource_t *parent, container_variant_data_t *data, container_grouping_t *tuple, -+ pe_working_set_t * data_set) -+{ -+ -+ if(create_docker_resource(parent, data, tuple, data_set) == FALSE) { -+ return TRUE; -+ } -+ if(create_ip_resource(parent, data, tuple, data_set) == FALSE) { -+ return TRUE; -+ } -+ if(create_remote_resource(parent, data, tuple, data_set) == FALSE) { -+ return TRUE; -+ } -+ if(tuple->child && tuple->ipaddr) { -+ add_hash_param(tuple->child->meta, "external-ip", tuple->ipaddr); -+ } -+ -+ return FALSE; -+} -+ -+static void mount_free(container_mount_t *mount) -+{ -+ free(mount->source); -+ free(mount->target); -+ free(mount->options); -+ free(mount); -+} -+ -+gboolean -+container_unpack(resource_t * rsc, pe_working_set_t * data_set) -+{ -+ const char *value = NULL; -+ xmlNode *xml_obj = NULL; -+ xmlNode *xml_resource = NULL; -+ container_variant_data_t *container_data = NULL; -+ -+ pe_rsc_trace(rsc, "Processing resource %s...", rsc->id); -+ -+ container_data = calloc(1, sizeof(container_variant_data_t)); -+ rsc->variant_opaque = container_data; -+ container_data->prefix = strdup(rsc->id); -+ -+ xml_obj = first_named_child(rsc->xml, "docker"); -+ if(xml_obj == NULL) { -+ return FALSE; -+ } -+ -+ value = crm_element_value(xml_obj, "replicas"); -+ if(value == NULL) { -+ value = crm_element_value(xml_obj, "masters"); -+ } -+ container_data->replicas = crm_parse_int(value, "1"); -+ -+ /* -+ * Communication between containers on the same host via the -+ * floating IPs only works if docker is started with: -+ * --userland-proxy=false --ip-masq=false -+ */ -+ value = crm_element_value(xml_obj, "replicas-per-host"); -+ container_data->replicas_per_host = crm_parse_int(value, "1"); -+ -+ if(container_data->replicas_per_host == 1) { -+ clear_bit(rsc->flags, pe_rsc_unique); -+ } -+ -+ value = crm_element_value(xml_obj, "masters"); -+ container_data->masters = crm_parse_int(value, "1"); -+ -+ container_data->docker_run_options = crm_element_value_copy(xml_obj, "options"); -+ container_data->image = crm_element_value_copy(xml_obj, "image"); -+ -+ xml_obj = first_named_child(rsc->xml, "network"); -+ if(xml_obj) { -+ -+ container_data->ip_range_start = crm_element_value_copy(xml_obj, "ip-range-start"); -+ container_data->host_netmask = crm_element_value_copy(xml_obj, "host-netmask"); -+ container_data->host_network = crm_element_value_copy(xml_obj, "host-network"); -+ container_data->docker_network = crm_element_value_copy(xml_obj, "docker-network"); -+ -+ for (xmlNode *xml_child = __xml_first_child_element(xml_obj); xml_child != NULL; -+ xml_child = __xml_next_element(xml_child)) { -+ -+ char *port = crm_element_value_copy(xml_child, "port"); -+ -+ if(port == NULL) { -+ port = crm_element_value_copy(xml_child, "range"); -+ } -+ -+ if(port != NULL) { -+ container_data->ports = g_list_append(container_data->ports, port); -+ } else { -+ pe_err("Invalid port directive %s", ID(xml_child)); -+ } -+ } -+ } -+ -+ xml_obj = first_named_child(rsc->xml, "storage"); -+ for (xmlNode *xml_child = __xml_first_child_element(xml_obj); xml_child != NULL; -+ xml_child = __xml_next_element(xml_child)) { -+ -+ container_mount_t *mount = calloc(1, sizeof(container_mount_t)); -+ mount->source = crm_element_value_copy(xml_child, "source-dir"); -+ -+ if(mount->source == NULL) { -+ mount->source = crm_element_value_copy(xml_child, "source-dir-root"); -+ mount->flags = 1; -+ } -+ mount->target = crm_element_value_copy(xml_child, "target-dir"); -+ mount->options = crm_element_value_copy(xml_child, "options"); -+ -+ if(mount->source && mount->target) { -+ container_data->mounts = g_list_append(container_data->mounts, mount); -+ } else { -+ pe_err("Invalid mount directive %s", ID(xml_child)); -+ mount_free(mount); -+ } -+ } -+ -+ xml_obj = first_named_child(rsc->xml, "primitive"); -+ if(xml_obj && container_data->ip_range_start && container_data->replicas > 0) { -+ char *value = NULL; -+ xmlNode *xml_set = NULL; -+ -+ if(container_data->masters > 0) { -+ xml_resource = create_xml_node(NULL, XML_CIB_TAG_MASTER); -+ -+ } else { -+ xml_resource = create_xml_node(NULL, XML_CIB_TAG_INCARNATION); -+ } -+ -+ value = crm_strdup_printf("%s-%s", container_data->prefix, xml_resource->name); -+ crm_xml_add(xml_resource, XML_ATTR_ID, value); -+ free(value); -+ -+ value = crm_strdup_printf("%s-%s-meta", container_data->prefix, xml_resource->name); -+ xml_set = create_xml_node(xml_resource, XML_TAG_META_SETS); -+ free(value); -+ -+ create_nvp(xml_set, XML_RSC_ATTR_ORDERED, "true"); -+ -+ value = crm_itoa(container_data->replicas); -+ create_nvp(xml_set, XML_RSC_ATTR_INCARNATION_MAX, value); -+ free(value); -+ -+ value = crm_itoa(container_data->replicas_per_host); -+ create_nvp(xml_set, XML_RSC_ATTR_INCARNATION_NODEMAX, value); -+ free(value); -+ -+ if(container_data->replicas_per_host > 1) { -+ create_nvp(xml_set, XML_RSC_ATTR_UNIQUE, "true"); -+ } else { -+ create_nvp(xml_set, XML_RSC_ATTR_UNIQUE, "false"); -+ } -+ -+ if(container_data->masters) { -+ value = crm_itoa(container_data->masters); -+ create_nvp(xml_set, XML_RSC_ATTR_MASTER_MAX, value); -+ free(value); -+ } -+ -+ //crm_xml_add(xml_obj, XML_ATTR_ID, container_data->prefix); -+ add_node_copy(xml_resource, xml_obj); -+ -+ /* } else if(xml_obj && container_data->ip_range_start) { */ -+ /* xml_resource = copy_xml(xml_resource); */ -+ -+ } else if(xml_obj) { -+ pe_err("Cannot control %s inside container %s without a value for ip-range-start", -+ rsc->id, ID(xml_obj)); -+ return FALSE; -+ } -+ -+ if(xml_resource) { -+ int lpc = 0; -+ GListPtr childIter = NULL; -+ resource_t *new_rsc = NULL; -+ container_mount_t *mount = NULL; -+ -+ int offset = 0, max = 1024; -+ char *buffer = calloc(1, max+1); -+ -+ mount = calloc(1, sizeof(container_mount_t)); -+ mount->source = strdup(DEFAULT_REMOTE_KEY_LOCATION); -+ mount->target = strdup(DEFAULT_REMOTE_KEY_LOCATION); -+ mount->options = NULL; -+ mount->flags = 0; -+ container_data->mounts = g_list_append(container_data->mounts, mount); -+ -+ mount = calloc(1, sizeof(container_mount_t)); -+ mount->source = strdup("/var/log/containers"); -+ mount->target = strdup("/var/log"); -+ mount->options = NULL; -+ mount->flags = 1; -+ container_data->mounts = g_list_append(container_data->mounts, mount); -+ -+ container_data->ports = g_list_append(container_data->ports, crm_itoa(DEFAULT_REMOTE_PORT)); -+ -+ if (common_unpack(xml_resource, &new_rsc, rsc, data_set) == FALSE) { -+ pe_err("Failed unpacking resource %s", crm_element_value(rsc->xml, XML_ATTR_ID)); -+ if (new_rsc != NULL && new_rsc->fns != NULL) { -+ new_rsc->fns->free(new_rsc); -+ } -+ return FALSE; -+ } -+ -+ container_data->child = new_rsc; -+ container_data->child->orig_xml = xml_obj; // Also the trigger for common_free() -+ // to free xml_resource as container_data->child->xml -+ -+ for(childIter = container_data->child->children; childIter != NULL; childIter = childIter->next) { -+ container_grouping_t *tuple = calloc(1, sizeof(container_grouping_t)); -+ tuple->child = childIter->data; -+ tuple->offset = lpc++; -+ -+ offset += allocate_ip(container_data, tuple, buffer+offset, max-offset); -+ container_data->tuples = g_list_append(container_data->tuples, tuple); -+ } -+ container_data->docker_host_options = buffer; -+ -+ } else { -+ // Just a naked container, no pacemaker-remote -+ int offset = 0, max = 1024; -+ char *buffer = calloc(1, max+1); -+ -+ for(int lpc = 0; lpc < container_data->replicas; lpc++) { -+ container_grouping_t *tuple = calloc(1, sizeof(container_grouping_t)); -+ tuple->offset = lpc; -+ offset += allocate_ip(container_data, tuple, buffer+offset, max-offset); -+ container_data->tuples = g_list_append(container_data->tuples, tuple); -+ } -+ -+ container_data->docker_host_options = buffer; -+ } -+ -+ -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ // TODO: Remove from list if create_container() returns TRUE -+ create_container(rsc, container_data, tuple, data_set); -+ } -+ -+ if(container_data->child) { -+ rsc->children = g_list_append(rsc->children, container_data->child); -+ } -+ return TRUE; -+} -+ -+gboolean -+container_active(resource_t * rsc, gboolean all) -+{ -+ return TRUE; -+} -+ -+resource_t * -+find_container_child(const char *stem, resource_t * rsc, node_t *node) -+{ -+ container_variant_data_t *container_data = NULL; -+ resource_t *parent = uber_parent(rsc); -+ CRM_ASSERT(parent->parent); -+ -+ parent = parent->parent; -+ get_container_variant_data(container_data, parent); -+ -+ if (is_not_set(rsc->flags, pe_rsc_unique)) { -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ -+ CRM_ASSERT(tuple); -+ if(tuple->node->details == node->details) { -+ rsc = tuple->child; -+ break; -+ } -+ } -+ } -+ -+ if (rsc && safe_str_neq(stem, rsc->id)) { -+ free(rsc->clone_name); -+ rsc->clone_name = strdup(stem); -+ } -+ -+ return rsc; -+} -+ -+static void -+container_print_xml(resource_t * rsc, const char *pre_text, long options, void *print_data) -+{ -+ container_variant_data_t *container_data = NULL; -+ char *child_text = NULL; -+ CRM_CHECK(rsc != NULL, return); -+ -+ if (pre_text == NULL) { -+ pre_text = ""; -+ } -+ child_text = crm_concat(pre_text, " ", ' '); -+ -+ status_print("%sid); -+ status_print("managed=\"%s\" ", is_set(rsc->flags, pe_rsc_managed) ? "true" : "false"); -+ status_print("failed=\"%s\" ", is_set(rsc->flags, pe_rsc_failed) ? "true" : "false"); -+ status_print(">\n"); -+ -+ get_container_variant_data(container_data, rsc); -+ -+ status_print("%sDocker container: %s [%s]%s%s", -+ pre_text, rsc->id, container_data->image, -+ is_set(rsc->flags, pe_rsc_unique) ? " (unique)" : "", -+ is_set(rsc->flags, pe_rsc_managed) ? "" : " (unmanaged)"); -+ -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ -+ CRM_ASSERT(tuple); -+ if(tuple->ip) { -+ tuple->ip->fns->print(tuple->ip, child_text, options, print_data); -+ } -+ if(tuple->child) { -+ tuple->child->fns->print(tuple->child, child_text, options, print_data); -+ } -+ if(tuple->docker) { -+ tuple->docker->fns->print(tuple->docker, child_text, options, print_data); -+ } -+ if(tuple->remote) { -+ tuple->remote->fns->print(tuple->remote, child_text, options, print_data); -+ } -+ } -+ status_print("%s\n", pre_text); -+ free(child_text); -+} -+ -+static void -+tuple_print(container_grouping_t * tuple, const char *pre_text, long options, void *print_data) -+{ -+ node_t *node = NULL; -+ resource_t *rsc = tuple->child; -+ -+ int offset = 0; -+ char buffer[LINE_MAX]; -+ -+ if(rsc == NULL) { -+ rsc = tuple->docker; -+ } -+ -+ if(tuple->remote) { -+ offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", rsc_printable_id(tuple->remote)); -+ } else { -+ offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", rsc_printable_id(tuple->docker)); -+ } -+ if(tuple->ipaddr) { -+ offset += snprintf(buffer + offset, LINE_MAX - offset, " (%s)", tuple->ipaddr); -+ } -+ -+ if(tuple->remote && tuple->remote->running_on != NULL) { -+ node = tuple->remote->running_on->data; -+ } else if (tuple->remote == NULL && rsc->running_on != NULL) { -+ node = rsc->running_on->data; -+ } -+ common_print(rsc, pre_text, buffer, node, options, print_data); -+} -+ -+void -+container_print(resource_t * rsc, const char *pre_text, long options, void *print_data) -+{ -+ container_variant_data_t *container_data = NULL; -+ char *child_text = NULL; -+ CRM_CHECK(rsc != NULL, return); -+ -+ if (options & pe_print_xml) { -+ container_print_xml(rsc, pre_text, options, print_data); -+ return; -+ } -+ -+ get_container_variant_data(container_data, rsc); -+ -+ if (pre_text == NULL) { -+ pre_text = " "; -+ } -+ -+ child_text = crm_strdup_printf(" %s", pre_text); -+ status_print("%sDocker container%s: %s [%s]%s%s\n", -+ pre_text, container_data->replicas>1?" set":"", rsc->id, container_data->image, -+ is_set(rsc->flags, pe_rsc_unique) ? " (unique)" : "", -+ is_set(rsc->flags, pe_rsc_managed) ? "" : " (unmanaged)"); -+ -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ -+ CRM_ASSERT(tuple); -+ if(is_set(options, pe_print_clone_details)) { -+ if(g_list_length(container_data->tuples) > 1) { -+ status_print(" %sReplica[%d]\n", pre_text, tuple->offset); -+ } -+ -+ if(tuple->ip) { -+ tuple->ip->fns->print(tuple->ip, child_text, options, print_data); -+ } -+ if(tuple->docker) { -+ tuple->docker->fns->print(tuple->docker, child_text, options, print_data); -+ } -+ if(tuple->remote) { -+ tuple->remote->fns->print(tuple->remote, child_text, options, print_data); -+ } -+ if(tuple->child) { -+ tuple->child->fns->print(tuple->child, child_text, options, print_data); -+ } -+ } else { -+ char *child_text = crm_strdup_printf("%s ", pre_text); -+ tuple_print(tuple, child_text, options, print_data); -+ } -+ } -+} -+ -+void -+tuple_free(container_grouping_t *tuple) -+{ -+ if(tuple == NULL) { -+ return; -+ } -+ -+ // TODO: Free tuple->node ? -+ -+ if(tuple->ip) { -+ tuple->ip->fns->free(tuple->ip); -+ tuple->ip = NULL; -+ } -+ if(tuple->child) { -+ tuple->child->fns->free(tuple->child); -+ tuple->child = NULL; -+ } -+ if(tuple->docker) { -+ tuple->docker->fns->free(tuple->docker); -+ tuple->docker = NULL; -+ } -+ if(tuple->remote) { -+ tuple->remote->fns->free(tuple->remote); -+ tuple->remote = NULL; -+ } -+ free(tuple->ipaddr); -+ free(tuple); -+} -+ -+void -+container_free(resource_t * rsc) -+{ -+ container_variant_data_t *container_data = NULL; -+ CRM_CHECK(rsc != NULL, return); -+ -+ get_container_variant_data(container_data, rsc); -+ pe_rsc_trace(rsc, "Freeing %s", rsc->id); -+ -+ free(container_data->prefix); -+ free(container_data->image); -+ free(container_data->host_network); -+ free(container_data->host_netmask); -+ free(container_data->ip_range_start); -+ free(container_data->docker_network); -+ free(container_data->docker_run_options); -+ free(container_data->docker_host_options); -+ -+ g_list_free_full(container_data->tuples, (GDestroyNotify)tuple_free); -+ g_list_free_full(container_data->mounts, (GDestroyNotify)mount_free); -+ g_list_free_full(container_data->ports, free); -+ common_free(rsc); -+} -+ -+enum rsc_role_e -+container_resource_state(const resource_t * rsc, gboolean current) -+{ -+ enum rsc_role_e container_role = RSC_ROLE_UNKNOWN; -+ return container_role; -+} -diff --git a/lib/pengine/native.c b/lib/pengine/native.c -index 11febf4..8bcb2b6 100644 ---- a/lib/pengine/native.c -+++ b/lib/pengine/native.c -@@ -465,9 +465,8 @@ comma_if(int i) - } - - void --native_print(resource_t * rsc, const char *pre_text, long options, void *print_data) -+common_print(resource_t * rsc, const char *pre_text, const char *name, node_t *node, long options, void *print_data) - { -- node_t *node = NULL; - const char *desc = NULL; - const char *class = crm_element_value(rsc->xml, XML_AGENT_ATTR_CLASS); - const char *kind = crm_element_value(rsc->xml, XML_ATTR_TYPE); -@@ -500,9 +499,6 @@ native_print(resource_t * rsc, const char *pre_text, long options, void *print_d - return; - } - -- if (rsc->running_on != NULL) { -- node = rsc->running_on->data; -- } - if ((options & pe_print_rsconly) || g_list_length(rsc->running_on) > 1) { - node = NULL; - } -@@ -531,7 +527,7 @@ native_print(resource_t * rsc, const char *pre_text, long options, void *print_d - if(pre_text) { - offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", pre_text); - } -- offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", rsc_printable_id(rsc)); -+ offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", name); - offset += snprintf(buffer + offset, LINE_MAX - offset, "\t(%s", class); - if (safe_str_eq(class, PCMK_RESOURCE_CLASS_OCF)) { - const char *prov = crm_element_value(rsc->xml, XML_AGENT_ATTR_PROVIDER); -@@ -717,6 +713,23 @@ native_print(resource_t * rsc, const char *pre_text, long options, void *print_d - } - - void -+native_print(resource_t * rsc, const char *pre_text, long options, void *print_data) -+{ -+ node_t *node = NULL; -+ -+ CRM_ASSERT(rsc->variant == pe_native); -+ if (options & pe_print_xml) { -+ native_print_xml(rsc, pre_text, options, print_data); -+ return; -+ } -+ -+ if (rsc->running_on != NULL) { -+ node = rsc->running_on->data; -+ } -+ common_print(rsc, pre_text, rsc_printable_id(rsc), node, options, print_data); -+} -+ -+void - native_free(resource_t * rsc) - { - pe_rsc_trace(rsc, "Freeing resource action list (not the data)"); -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index f3a7ebc..3bc9839 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -296,7 +296,7 @@ destroy_digest_cache(gpointer ptr) - free(data); - } - --static node_t * -+node_t * - create_node(const char *id, const char *uname, const char *type, const char *score, pe_working_set_t * data_set) - { - node_t *new_node = NULL; -@@ -359,8 +359,37 @@ create_node(const char *id, const char *uname, const char *type, const char *sco - return new_node; - } - -+bool -+remote_id_conflict(const char *remote_name, pe_working_set_t *data) -+{ -+ bool match = FALSE; -+#if 1 -+ pe_find_resource(data->resources, remote_name); -+#else -+ if (data->name_check == NULL) { -+ data->name_check = g_hash_table_new(crm_str_hash, g_str_equal); -+ for (xml_rsc = __xml_first_child(parent); xml_rsc != NULL; xml_rsc = __xml_next_element(xml_rsc)) { -+ const char *id = ID(xml_rsc); -+ -+ /* avoiding heap allocation here because we know the duration of this hashtable allows us to */ -+ g_hash_table_insert(data->name_check, (char *) id, (char *) id); -+ } -+ } -+ if (g_hash_table_lookup(data->name_check, remote_name)) { -+ match = TRUE; -+ } -+#endif -+ if (match) { -+ crm_err("Invalid remote-node name, a resource called '%s' already exists.", remote_name); -+ return NULL; -+ } -+ -+ return match; -+} -+ -+ - static const char * --expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, GHashTable **rsc_name_check) -+expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, pe_working_set_t *data) - { - xmlNode *xml_rsc = NULL; - xmlNode *xml_tmp = NULL; -@@ -402,20 +431,7 @@ expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, GHashTable **rsc_name_ - return NULL; - } - -- if (*rsc_name_check == NULL) { -- *rsc_name_check = g_hash_table_new(crm_str_hash, g_str_equal); -- for (xml_rsc = __xml_first_child(parent); xml_rsc != NULL; xml_rsc = __xml_next_element(xml_rsc)) { -- const char *id = ID(xml_rsc); -- -- /* avoiding heap allocation here because we know the duration of this hashtable allows us to */ -- g_hash_table_insert(*rsc_name_check, (char *) id, (char *) id); -- } -- } -- -- if (g_hash_table_lookup(*rsc_name_check, remote_name)) { -- -- crm_err("Naming conflict with remote-node=%s. remote-nodes can not have the same name as a resource.", -- remote_name); -+ if (remote_id_conflict(remote_name, data)) { - return NULL; - } - -@@ -661,7 +677,7 @@ unpack_remote_nodes(xmlNode * xml_resources, pe_working_set_t * data_set) - if (crm_str_eq((const char *)xml_obj->name, XML_CIB_TAG_RESOURCE, TRUE)) { - /* expands a metadata defined remote resource into the xml config - * as an actual rsc primitive to be unpacked later. */ -- new_node_id = expand_remote_rsc_meta(xml_obj, xml_resources, &rsc_name_check); -+ new_node_id = expand_remote_rsc_meta(xml_obj, xml_resources, data_set); - - if (new_node_id && pe_find_node(data_set->nodes, new_node_id) == NULL) { - crm_trace("Found guest remote node %s in container resource %s", new_node_id, ID(xml_obj)); -@@ -674,7 +690,7 @@ unpack_remote_nodes(xmlNode * xml_resources, pe_working_set_t * data_set) - /* search through a group to see if any of the primitive contain a remote node. */ - for (xml_obj2 = __xml_first_child(xml_obj); xml_obj2 != NULL; xml_obj2 = __xml_next_element(xml_obj2)) { - -- new_node_id = expand_remote_rsc_meta(xml_obj2, xml_resources, &rsc_name_check); -+ new_node_id = expand_remote_rsc_meta(xml_obj2, xml_resources, data_set); - - if (new_node_id && pe_find_node(data_set->nodes, new_node_id) == NULL) { - crm_trace("Found guest remote node %s in container resource %s which is in group %s", new_node_id, ID(xml_obj2), ID(xml_obj)); -@@ -1803,7 +1819,10 @@ unpack_find_resource(pe_working_set_t * data_set, node_t * node, const char *rsc - parent = uber_parent(rsc); - } - -- if (parent && parent->variant > pe_group) { -+ if(parent && parent->parent) { -+ rsc = find_container_child(rsc_id, rsc, node); -+ -+ } else if (parent && parent->variant >= pe_clone) { - if (is_not_set(parent->flags, pe_rsc_unique)) { - char *base = clone_strip(rsc_id); - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 2b53999..16d12d8 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -509,7 +509,8 @@ custom_action(resource_t * rsc, char *key, const char *task, - pe_set_action_bit(action, pe_action_optional); - /* action->runnable = FALSE; */ - -- } else if (action->node->details->online == FALSE) { -+ } else if (action->node->details->online == FALSE -+ && (!is_container_remote_node(action->node) || action->node->details->remote_requires_reset)) { - pe_clear_action_bit(action, pe_action_runnable); - do_crm_log(warn_level, "Action %s on %s is unrunnable (offline)", - action->uuid, action->node->details->uname); -diff --git a/lib/pengine/variant.h b/lib/pengine/variant.h -index d127917..b02aeb0 100644 ---- a/lib/pengine/variant.h -+++ b/lib/pengine/variant.h -@@ -55,6 +55,58 @@ typedef struct clone_variant_data_s { - CRM_ASSERT(rsc->variant == pe_clone || rsc->variant == pe_master); \ - data = (clone_variant_data_t *)rsc->variant_opaque; - -+# elif VARIANT_CONTAINER -+ -+typedef struct -+{ -+ int offset; -+ node_t *node; -+ char *ipaddr; -+ resource_t *ip; -+ resource_t *child; -+ resource_t *docker; -+ resource_t *remote; -+ -+} container_grouping_t; -+ -+typedef struct -+{ -+ char *source; -+ char *target; -+ char *options; -+ int flags; -+ -+} container_mount_t; -+ -+typedef struct container_variant_data_s { -+ int masters; -+ int replicas; -+ int replicas_per_host; -+ char *prefix; -+ char *image; -+ const char *ip_last; -+ char *host_network; -+ char *host_netmask; -+ char *docker_network; -+ char *ip_range_start; -+ char *docker_host_options; -+ char *docker_run_options; -+ -+ resource_t *child; -+ -+ GListPtr tuples; /* container_grouping_t * */ -+ GListPtr ports; /* */ -+ GListPtr mounts; /* */ -+ -+ -+} container_variant_data_t; -+ -+# define get_container_variant_data(data, rsc) \ -+ CRM_ASSERT(rsc != NULL); \ -+ CRM_ASSERT(rsc->variant == pe_container); \ -+ CRM_ASSERT(rsc->variant_opaque != NULL); \ -+ data = (container_variant_data_t *)rsc->variant_opaque; \ -+ - # elif VARIANT_GROUP - - typedef struct group_variant_data_s { -diff --git a/lrmd/remote_ctl.c b/lrmd/remote_ctl.c -index 41cab66..f3fc24f 100644 ---- a/lrmd/remote_ctl.c -+++ b/lrmd/remote_ctl.c -@@ -210,6 +210,7 @@ client_start(gpointer user_data) - client_exit(PCMK_OCF_UNKNOWN_ERROR); - } - wait_poke = 1; -+ - } else { - lrmd_rsc_info_t *rsc_info = NULL; - -@@ -244,156 +245,24 @@ client_start(gpointer user_data) - return 0; - } - --static int --remote_proxy_dispatch_internal(const char *buffer, ssize_t length, gpointer userdata) --{ -- /* Async responses from cib and friends back to clients via pacemaker_remoted */ -- xmlNode *xml = NULL; -- remote_proxy_t *proxy = userdata; -- uint32_t flags; -- -- xml = string2xml(buffer); -- if (xml == NULL) { -- crm_warn("Received a NULL msg from IPC service."); -- return 1; -- } -- -- flags = crm_ipc_buffer_flags(proxy->ipc); -- if (flags & crm_ipc_proxied_relay_response) { -- crm_trace("Passing response back to %.8s on %s: %.200s - request id: %d", proxy->session_id, proxy->node_name, buffer, proxy->last_request_id); -- remote_proxy_relay_response(lrmd_conn, proxy->session_id, xml, proxy->last_request_id); -- proxy->last_request_id = 0; -- -- } else { -- crm_trace("Passing event back to %.8s on %s: %.200s", proxy->session_id, proxy->node_name, buffer); -- remote_proxy_relay_event(lrmd_conn, proxy->session_id, xml); -- } -- free_xml(xml); -- return 1; --} -- - static void --remote_proxy_disconnected(void *userdata) --{ -- remote_proxy_t *proxy = userdata; -- -- crm_trace("destroying %p", userdata); -- -- proxy->source = NULL; -- proxy->ipc = NULL; -- -- remote_proxy_notify_destroy(lrmd_conn, proxy->session_id); -- g_hash_table_remove(proxy_table, proxy->session_id); --} -- --static remote_proxy_t * --remote_proxy_new(const char *node_name, const char *session_id, const char *channel) --{ -- static struct ipc_client_callbacks proxy_callbacks = { -- .dispatch = remote_proxy_dispatch_internal, -- .destroy = remote_proxy_disconnected -- }; -- remote_proxy_t *proxy = calloc(1, sizeof(remote_proxy_t)); -- -- proxy->node_name = strdup(node_name); -- proxy->session_id = strdup(session_id); -- -- if (safe_str_eq(channel, CRM_SYSTEM_CRMD)) { -- proxy->is_local = TRUE; -- } else { -- proxy->source = mainloop_add_ipc_client(channel, G_PRIORITY_LOW, 0, proxy, &proxy_callbacks); -- proxy->ipc = mainloop_get_ipc_client(proxy->source); -- -- if (proxy->source == NULL) { -- remote_proxy_free(proxy); -- return NULL; -- } -- } -- -- crm_trace("created proxy session ID %s", proxy->session_id); -- g_hash_table_insert(proxy_table, proxy->session_id, proxy); -- -- return proxy; --} -- --static void --remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) -+ctl_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) - { - const char *op = crm_element_value(msg, F_LRMD_IPC_OP); - const char *session = crm_element_value(msg, F_LRMD_IPC_SESSION); -- int msg_id = 0; - -- /* sessions are raw ipc connections to IPC, -- * all we do is proxy requests/responses exactly -- * like they are given to us at the ipc level. */ -- -- CRM_CHECK(op != NULL, return); -- CRM_CHECK(session != NULL, return); -- -- crm_element_value_int(msg, F_LRMD_IPC_MSG_ID, &msg_id); -- -- /* This is msg from remote ipc client going to real ipc server */ - if (safe_str_eq(op, LRMD_IPC_OP_NEW)) { - const char *channel = crm_element_value(msg, F_LRMD_IPC_IPC_SERVER); - -- CRM_CHECK(channel != NULL, return); -+ static struct ipc_client_callbacks proxy_callbacks = { -+ .dispatch = remote_proxy_dispatch, -+ .destroy = remote_proxy_disconnected -+ }; -+ -+ remote_proxy_new(lrmd, proxy_callbacks, options.node_name, session, channel); - -- if (remote_proxy_new(options.node_name, session, channel) == NULL) { -- remote_proxy_notify_destroy(lrmd, session); -- } -- crm_info("new remote proxy client established to %s, session id %s", channel, session); -- } else if (safe_str_eq(op, LRMD_IPC_OP_DESTROY)) { -- remote_proxy_end_session(session); -- -- } else if (safe_str_eq(op, LRMD_IPC_OP_REQUEST)) { -- int flags = 0; -- xmlNode *request = get_message_xml(msg, F_LRMD_IPC_MSG); -- const char *name = crm_element_value(msg, F_LRMD_IPC_CLIENT); -- remote_proxy_t *proxy = g_hash_table_lookup(proxy_table, session); -- -- CRM_CHECK(request != NULL, return); -- -- if (proxy == NULL) { -- /* proxy connection no longer exists */ -- remote_proxy_notify_destroy(lrmd, session); -- return; -- } else if ((proxy->is_local == FALSE) && (crm_ipc_connected(proxy->ipc) == FALSE)) { -- remote_proxy_end_session(session); -- return; -- } -- proxy->last_request_id = 0; -- crm_element_value_int(msg, F_LRMD_IPC_MSG_FLAGS, &flags); -- crm_xml_add(request, XML_ACL_TAG_ROLE, "pacemaker-remote"); -- --#if ENABLE_ACL -- CRM_ASSERT(options.node_name); -- crm_acl_get_set_user(request, F_LRMD_IPC_USER, options.node_name); --#endif -- -- if (is_set(flags, crm_ipc_proxied)) { -- int rc = crm_ipc_send(proxy->ipc, request, flags, 5000, NULL); -- -- if(rc < 0) { -- xmlNode *op_reply = create_xml_node(NULL, "nack"); -- -- crm_err("Could not relay %s request %d from %s to %s for %s: %s (%d)", -- op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc); -- -- /* Send a n'ack so the caller doesn't block */ -- crm_xml_add(op_reply, "function", __FUNCTION__); -- crm_xml_add_int(op_reply, "line", __LINE__); -- crm_xml_add_int(op_reply, "rc", rc); -- remote_proxy_relay_response(lrmd, session, op_reply, msg_id); -- free_xml(op_reply); -- -- } else { -- crm_trace("Relayed %s request %d from %s to %s for %s", -- op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name); -- proxy->last_request_id = msg_id; -- } -- } - } else { -- crm_err("Unknown proxy operation: %s", op); -+ remote_proxy_cb(lrmd, options.node_name, msg); - } - } - -@@ -510,7 +379,7 @@ main(int argc, char **argv) - proxy_table = - g_hash_table_new_full(crm_strcase_hash, crm_strcase_equal, NULL, remote_proxy_free); - lrmd_conn = lrmd_remote_api_new(NULL, options.tls_host ? options.tls_host : "localhost", options.port); -- lrmd_internal_set_proxy_callback(lrmd_conn, NULL, remote_proxy_cb); -+ lrmd_internal_set_proxy_callback(lrmd_conn, NULL, ctl_remote_proxy_cb); - } else { - lrmd_conn = lrmd_api_new(); - } -diff --git a/pengine/Makefile.am b/pengine/Makefile.am -index 5131dcb..c897db6 100644 ---- a/pengine/Makefile.am -+++ b/pengine/Makefile.am -@@ -69,7 +69,7 @@ libpengine_la_LIBADD = $(top_builddir)/lib/pengine/libpe_status.la \ - $(top_builddir)/lib/cib/libcib.la - # -L$(top_builddir)/lib/pils -lpils -export-dynamic -module -avoid-version - libpengine_la_SOURCES = pengine.c allocate.c notif.c utils.c constraints.c --libpengine_la_SOURCES += native.c group.c clone.c master.c graph.c utilization.c -+libpengine_la_SOURCES += native.c group.c clone.c master.c graph.c utilization.c container.c - - pengine_CFLAGS = $(CFLAGS_HARDENED_EXE) - pengine_LDFLAGS = $(LDFLAGS_HARDENED_EXE) -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 74b57fb..441b596 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -69,6 +69,20 @@ resource_alloc_functions_t resource_class_alloc_functions[] = { - group_append_meta, - }, - { -+ container_merge_weights, -+ container_color, -+ container_create_actions, -+ container_create_probe, -+ container_internal_constraints, -+ container_rsc_colocation_lh, -+ container_rsc_colocation_rh, -+ container_rsc_location, -+ container_action_flags, -+ container_update_actions, -+ container_expand, -+ container_append_meta, -+ }, -+ { - clone_merge_weights, - clone_color, - clone_create_actions, -@@ -99,7 +113,7 @@ resource_alloc_functions_t resource_class_alloc_functions[] = { - }; - - gboolean --update_action_flags(action_t * action, enum pe_action_flags flags, const char *source) -+update_action_flags(action_t * action, enum pe_action_flags flags, const char *source, int line) - { - static unsigned long calls = 0; - gboolean changed = FALSE; -@@ -107,9 +121,9 @@ update_action_flags(action_t * action, enum pe_action_flags flags, const char *s - enum pe_action_flags last = action->flags; - - if (clear) { -- action->flags = crm_clear_bit(source, action->uuid, action->flags, flags); -+ action->flags = crm_clear_bit(source, line, action->uuid, action->flags, flags); - } else { -- action->flags = crm_set_bit(source, action->uuid, action->flags, flags); -+ action->flags = crm_set_bit(source, line, action->uuid, action->flags, flags); - } - - if (last != action->flags) { -@@ -704,7 +718,7 @@ common_apply_stickiness(resource_t * rsc, node_t * node, pe_working_set_t * data - } - } - --static void -+void - complex_set_cmds(resource_t * rsc) - { - GListPtr gIter = rsc->children; -@@ -1380,7 +1394,7 @@ fence_guest(pe_node_t *node, pe_action_t *done, pe_working_set_t *data_set) - */ - stonith_op = pe_fence_op(node, fence_action, FALSE, data_set); - update_action_flags(stonith_op, pe_action_pseudo | pe_action_runnable, -- __FUNCTION__); -+ __FUNCTION__, __LINE__); - - /* We want to imply stops/demotes after the guest is stopped, not wait until - * it is restarted, so we always order pseudo-fencing after stop, not start -@@ -1646,7 +1660,7 @@ rsc_order_then(action_t * lh_action, resource_t * rsc, order_constraint_t * orde - order_actions(lh_action, rh_action_iter, type); - - } else if (type & pe_order_implies_then) { -- update_action_flags(rh_action_iter, pe_action_runnable | pe_action_clear, __FUNCTION__); -+ update_action_flags(rh_action_iter, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); - crm_warn("Unrunnable %s 0x%.6x", rh_action_iter->uuid, type); - } else { - crm_warn("neither %s 0x%.6x", rh_action_iter->uuid, type); -diff --git a/pengine/allocate.h b/pengine/allocate.h -index f17451c..3d7b7ce 100644 ---- a/pengine/allocate.h -+++ b/pengine/allocate.h -@@ -52,6 +52,9 @@ extern GHashTable *rsc_merge_weights(resource_t * rsc, const char *rhs, GHashTab - extern GHashTable *clone_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes, - const char *attr, float factor, enum pe_weights flags); - -+extern GHashTable *container_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes, -+ const char *attr, float factor, enum pe_weights flags); -+ - extern GHashTable *master_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes, - const char *attr, float factor, enum pe_weights flags); - -@@ -92,6 +95,21 @@ extern void group_rsc_location(resource_t * rsc, rsc_to_node_t * constraint); - extern void group_expand(resource_t * rsc, pe_working_set_t * data_set); - extern void group_append_meta(resource_t * rsc, xmlNode * xml); - -+extern int container_num_allowed_nodes(resource_t * rsc); -+extern node_t *container_color(resource_t * rsc, node_t * preferred, pe_working_set_t * data_set); -+extern void container_create_actions(resource_t * rsc, pe_working_set_t * data_set); -+extern void container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set); -+extern void container_rsc_colocation_lh(resource_t * lh_rsc, resource_t * rh_rsc, -+ rsc_colocation_t * constraint); -+extern void container_rsc_colocation_rh(resource_t * lh_rsc, resource_t * rh_rsc, -+ rsc_colocation_t * constraint); -+extern void container_rsc_location(resource_t * rsc, rsc_to_node_t * constraint); -+extern enum pe_action_flags container_action_flags(action_t * action, node_t * node); -+extern void container_expand(resource_t * rsc, pe_working_set_t * data_set); -+extern gboolean container_create_probe(resource_t * rsc, node_t * node, action_t * complete, -+ gboolean force, pe_working_set_t * data_set); -+extern void container_append_meta(resource_t * rsc, xmlNode * xml); -+ - extern int clone_num_allowed_nodes(resource_t * rsc); - extern node_t *clone_color(resource_t * rsc, node_t * preferred, pe_working_set_t * data_set); - extern void clone_create_actions(resource_t * rsc, pe_working_set_t * data_set); -@@ -135,6 +153,7 @@ extern gboolean unpack_location(xmlNode * xml_obj, pe_working_set_t * data_set); - extern gboolean unpack_rsc_ticket(xmlNode * xml_obj, pe_working_set_t * data_set); - - extern void LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal); -+void container_LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal); - - extern void cleanup_alloc_calculations(pe_working_set_t * data_set); - -@@ -151,8 +170,14 @@ extern enum pe_graph_flags group_update_actions(action_t * first, action_t * the - extern enum pe_graph_flags clone_update_actions(action_t * first, action_t * then, node_t * node, - enum pe_action_flags flags, - enum pe_action_flags filter, enum pe_ordering type); -+extern enum pe_graph_flags container_update_actions(action_t * first, action_t * then, node_t * node, -+ enum pe_action_flags flags, -+ enum pe_action_flags filter, enum pe_ordering type); - --gboolean update_action_flags(action_t * action, enum pe_action_flags flags, const char *source); -+gboolean update_action_flags(action_t * action, enum pe_action_flags flags, const char *source, int line); - gboolean update_action(action_t * action); -+void complex_set_cmds(resource_t * rsc); -+ -+ - - #endif -diff --git a/pengine/clone.c b/pengine/clone.c -index 35575c0..9e2835d 100644 ---- a/pengine/clone.c -+++ b/pengine/clone.c -@@ -47,8 +47,10 @@ parent_node_instance(const resource_t * rsc, node_t * node) - { - node_t *ret = NULL; - -- if (node != NULL) { -+ if (node != NULL && rsc->parent) { - ret = pe_hash_table_lookup(rsc->parent->allowed_nodes, node->details->id); -+ } else if(node != NULL) { -+ ret = pe_hash_table_lookup(rsc->allowed_nodes, node->details->id); - } - return ret; - } -@@ -231,44 +233,48 @@ sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set) - n = node_copy(resource2->running_on->data); - g_hash_table_insert(hash2, (gpointer) n->details->id, n); - -- for (gIter = resource1->parent->rsc_cons; gIter; gIter = gIter->next) { -- rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data; -+ if(resource1->parent) { -+ for (gIter = resource1->parent->rsc_cons; gIter; gIter = gIter->next) { -+ rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data; - -- crm_trace("Applying %s to %s", constraint->id, resource1->id); -+ crm_trace("Applying %s to %s", constraint->id, resource1->id); - -- hash1 = native_merge_weights(constraint->rsc_rh, resource1->id, hash1, -- constraint->node_attribute, -- (float)constraint->score / INFINITY, 0); -- } -+ hash1 = native_merge_weights(constraint->rsc_rh, resource1->id, hash1, -+ constraint->node_attribute, -+ (float)constraint->score / INFINITY, 0); -+ } - -- for (gIter = resource1->parent->rsc_cons_lhs; gIter; gIter = gIter->next) { -- rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data; -+ for (gIter = resource1->parent->rsc_cons_lhs; gIter; gIter = gIter->next) { -+ rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data; - -- crm_trace("Applying %s to %s", constraint->id, resource1->id); -+ crm_trace("Applying %s to %s", constraint->id, resource1->id); - -- hash1 = native_merge_weights(constraint->rsc_lh, resource1->id, hash1, -- constraint->node_attribute, -- (float)constraint->score / INFINITY, pe_weights_positive); -+ hash1 = native_merge_weights(constraint->rsc_lh, resource1->id, hash1, -+ constraint->node_attribute, -+ (float)constraint->score / INFINITY, pe_weights_positive); -+ } - } - -- for (gIter = resource2->parent->rsc_cons; gIter; gIter = gIter->next) { -- rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data; -+ if(resource2->parent) { -+ for (gIter = resource2->parent->rsc_cons; gIter; gIter = gIter->next) { -+ rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data; - -- crm_trace("Applying %s to %s", constraint->id, resource2->id); -+ crm_trace("Applying %s to %s", constraint->id, resource2->id); - -- hash2 = native_merge_weights(constraint->rsc_rh, resource2->id, hash2, -- constraint->node_attribute, -- (float)constraint->score / INFINITY, 0); -- } -+ hash2 = native_merge_weights(constraint->rsc_rh, resource2->id, hash2, -+ constraint->node_attribute, -+ (float)constraint->score / INFINITY, 0); -+ } - -- for (gIter = resource2->parent->rsc_cons_lhs; gIter; gIter = gIter->next) { -- rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data; -+ for (gIter = resource2->parent->rsc_cons_lhs; gIter; gIter = gIter->next) { -+ rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data; - -- crm_trace("Applying %s to %s", constraint->id, resource2->id); -+ crm_trace("Applying %s to %s", constraint->id, resource2->id); - -- hash2 = native_merge_weights(constraint->rsc_lh, resource2->id, hash2, -- constraint->node_attribute, -- (float)constraint->score / INFINITY, pe_weights_positive); -+ hash2 = native_merge_weights(constraint->rsc_lh, resource2->id, hash2, -+ constraint->node_attribute, -+ (float)constraint->score / INFINITY, pe_weights_positive); -+ } - } - - /* Current location score */ -@@ -280,18 +286,18 @@ sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set) - - if (node1->weight < node2->weight) { - if (node1->weight < 0) { -- crm_trace("%s > %s: current score", resource1->id, resource2->id); -+ crm_trace("%s > %s: current score: %d %d", resource1->id, resource2->id, node1->weight, node2->weight); - rc = -1; - goto out; - - } else { -- crm_trace("%s < %s: current score", resource1->id, resource2->id); -+ crm_trace("%s < %s: current score: %d %d", resource1->id, resource2->id, node1->weight, node2->weight); - rc = 1; - goto out; - } - - } else if (node1->weight > node2->weight) { -- crm_trace("%s > %s: current score", resource1->id, resource2->id); -+ crm_trace("%s > %s: current score: %d %d", resource1->id, resource2->id, node1->weight, node2->weight); - rc = -1; - goto out; - } -@@ -355,10 +361,18 @@ sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set) - } - - static node_t * --can_run_instance(resource_t * rsc, node_t * node) -+can_run_instance(resource_t * rsc, node_t * node, int limit) - { - node_t *local_node = NULL; -- clone_variant_data_t *clone_data = NULL; -+ -+ if (node == NULL && rsc->allowed_nodes) { -+ GHashTableIter iter; -+ g_hash_table_iter_init(&iter, rsc->allowed_nodes); -+ while (g_hash_table_iter_next(&iter, NULL, (void **)&local_node)) { -+ can_run_instance(rsc, local_node, limit); -+ } -+ return NULL; -+ } - - if (can_run_resources(node) == FALSE) { - goto bail; -@@ -368,7 +382,6 @@ can_run_instance(resource_t * rsc, node_t * node) - } - - local_node = parent_node_instance(rsc, node); -- get_clone_variant_data(clone_data, rsc->parent); - - if (local_node == NULL) { - crm_warn("%s cannot run on %s: node not allowed", rsc->id, node->details->uname); -@@ -378,13 +391,14 @@ can_run_instance(resource_t * rsc, node_t * node) - common_update_score(rsc, node->details->id, local_node->weight); - pe_rsc_trace(rsc, "%s cannot run on %s: Parent node weight doesn't allow it.", - rsc->id, node->details->uname); -- } else if (local_node->count < clone_data->clone_node_max) { -+ -+ } else if (local_node->count < limit) { - pe_rsc_trace(rsc, "%s can run on %s: %d", rsc->id, node->details->uname, local_node->count); - return local_node; - - } else { - pe_rsc_trace(rsc, "%s cannot run on %s: node full (%d >= %d)", -- rsc->id, node->details->uname, local_node->count, clone_data->clone_node_max); -+ rsc->id, node->details->uname, local_node->count, limit); - } - - bail: -@@ -395,14 +409,13 @@ can_run_instance(resource_t * rsc, node_t * node) - } - - static node_t * --color_instance(resource_t * rsc, node_t * prefer, gboolean all_coloc, pe_working_set_t * data_set) -+color_instance(resource_t * rsc, node_t * prefer, gboolean all_coloc, int limit, pe_working_set_t * data_set) - { - node_t *chosen = NULL; -- node_t *local_node = NULL; - GHashTable *backup = NULL; - - CRM_ASSERT(rsc); -- pe_rsc_trace(rsc, "Processing %s %d", rsc->id, all_coloc); -+ pe_rsc_trace(rsc, "Processing %s %d %s", rsc->id, all_coloc, prefer?prefer->details->uname:"none"); - - if (is_not_set(rsc->flags, pe_rsc_provisional)) { - return rsc->fns->location(rsc, NULL, FALSE); -@@ -427,21 +440,12 @@ color_instance(resource_t * rsc, node_t * prefer, gboolean all_coloc, pe_working - } - } - -- if (rsc->allowed_nodes) { -- GHashTableIter iter; -- node_t *try_node = NULL; -- -- g_hash_table_iter_init(&iter, rsc->allowed_nodes); -- while (g_hash_table_iter_next(&iter, NULL, (void **)&try_node)) { -- can_run_instance(rsc, try_node); -- } -- } -+ can_run_instance(rsc, NULL, limit); - - backup = node_hash_dup(rsc->allowed_nodes); - chosen = rsc->cmds->allocate(rsc, prefer, data_set); - if (chosen) { -- local_node = pe_hash_table_lookup(rsc->parent->allowed_nodes, chosen->details->id); -- -+ node_t *local_node = parent_node_instance(rsc, chosen); - if (prefer && chosen && chosen->details != prefer->details) { - crm_notice("Pre-allocation failed: got %s instead of %s", - chosen->details->uname, prefer->details->uname); -@@ -493,127 +497,69 @@ append_parent_colocation(resource_t * rsc, resource_t * child, gboolean all) - } - } - --node_t * --clone_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) --{ -- GHashTableIter iter; -- GListPtr nIter = NULL; -- GListPtr gIter = NULL; -- GListPtr nodes = NULL; -- node_t *node = NULL; - -- int allocated = 0; -+void -+distribute_children(resource_t *rsc, GListPtr children, GListPtr nodes, -+ int max, int per_host_max, pe_working_set_t * data_set); -+ -+void -+distribute_children(resource_t *rsc, GListPtr children, GListPtr nodes, -+ int max, int per_host_max, pe_working_set_t * data_set) -+{ - int loop_max = 0; -- int clone_max = 0; -+ int allocated = 0; - int available_nodes = 0; -- clone_variant_data_t *clone_data = NULL; -- -- get_clone_variant_data(clone_data, rsc); -- -- if (is_not_set(rsc->flags, pe_rsc_provisional)) { -- return NULL; -- -- } else if (is_set(rsc->flags, pe_rsc_allocating)) { -- pe_rsc_debug(rsc, "Dependency loop detected involving %s", rsc->id); -- return NULL; -- } -- -- set_bit(rsc->flags, pe_rsc_allocating); -- pe_rsc_trace(rsc, "Processing %s", rsc->id); -- -- /* this information is used by sort_clone_instance() when deciding in which -- * order to allocate clone instances -- */ -- gIter = rsc->rsc_cons; -- for (; gIter != NULL; gIter = gIter->next) { -- rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data; -- -- pe_rsc_trace(rsc, "%s: Coloring %s first", rsc->id, constraint->rsc_rh->id); -- constraint->rsc_rh->cmds->allocate(constraint->rsc_rh, prefer, data_set); -- } -- -- gIter = rsc->rsc_cons_lhs; -- for (; gIter != NULL; gIter = gIter->next) { -- rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data; -- -- rsc->allowed_nodes = -- constraint->rsc_lh->cmds->merge_weights(constraint->rsc_lh, rsc->id, rsc->allowed_nodes, -- constraint->node_attribute, -- (float)constraint->score / INFINITY, -- (pe_weights_rollback | pe_weights_positive)); -- } -- -- dump_node_scores(show_scores ? 0 : scores_log_level, rsc, __FUNCTION__, rsc->allowed_nodes); - - /* count now tracks the number of clones currently allocated */ -- g_hash_table_iter_init(&iter, rsc->allowed_nodes); -- while (g_hash_table_iter_next(&iter, NULL, (void **)&node)) { -+ for(GListPtr nIter = nodes; nIter != NULL; nIter = nIter->next) { -+ pe_node_t *node = nIter->data; -+ - node->count = 0; - if (can_run_resources(node)) { - available_nodes++; - } - } - -- clone_max = clone_data->clone_max; - if(available_nodes) { -- loop_max = clone_data->clone_max / available_nodes; -+ loop_max = max / available_nodes; - } - if (loop_max < 1) { - loop_max = 1; - } - -- rsc->children = g_list_sort_with_data(rsc->children, sort_clone_instance, data_set); -+ pe_rsc_debug(rsc, "Allocating %d %s instances to a possible %d nodes (%d per host, %d optimal)", -+ max, rsc->id, available_nodes, per_host_max, loop_max); - -- /* Pre-allocate as many instances as we can to their current location -- * First pre-sort the list of nodes by their placement score -- */ -- nodes = g_hash_table_get_values(rsc->allowed_nodes); -- nodes = g_list_sort_with_data(nodes, sort_node_weight, NULL); -+ /* Pre-allocate as many instances as we can to their current location */ -+ for (GListPtr gIter = children; gIter != NULL && allocated < max; gIter = gIter->next) { -+ resource_t *child = (resource_t *) gIter->data; - -- for(nIter = nodes; nIter; nIter = nIter->next) { -- int lpc; -+ if (child->running_on && is_set(child->flags, pe_rsc_provisional) -+ && is_not_set(child->flags, pe_rsc_failed)) { -+ node_t *child_node = child->running_on->data; -+ node_t *local_node = parent_node_instance(child, child->running_on->data); - -- node = nIter->data; -+ pe_rsc_trace(rsc, "Pre-allocating %s (%d remaining)", child->id, max - allocated); -+ pe_rsc_trace(rsc, "Foo %s to %s %d %d", child->id, -+ child_node->details->uname, max, available_nodes); - -- if(clone_max <= 0) { -- break; -- } -+ if (can_run_resources(child_node) == FALSE || child_node->weight < 0) { -+ pe_rsc_trace(rsc, "Not Pre-allocating %s", child_node->details->uname); - -- if (can_run_resources(node) == FALSE || node->weight < 0) { -- pe_rsc_trace(rsc, "Not Pre-allocatiing %s", node->details->uname); -- continue; -- } -+ } else if(local_node && local_node->count >= loop_max) { -+ pe_rsc_trace(rsc, "Deferring allocation of %s", child_node->details->uname); - -- clone_max--; -- pe_rsc_trace(rsc, "Pre-allocating %s (%d remaining)", node->details->uname, clone_max); -- for (lpc = 0; -- allocated < clone_data->clone_max -- && node->count < clone_data->clone_node_max -- && lpc < clone_data->clone_node_max && lpc < loop_max; lpc++) { -- for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) { -- resource_t *child = (resource_t *) gIter->data; -- -- if (child->running_on && is_set(child->flags, pe_rsc_provisional) -- && is_not_set(child->flags, pe_rsc_failed)) { -- node_t *child_node = child->running_on->data; -- -- if (child_node->details == node->details -- && color_instance(child, node, clone_data->clone_max < available_nodes, -- data_set)) { -- pe_rsc_trace(rsc, "Pre-allocated %s to %s", child->id, -- node->details->uname); -- allocated++; -- break; -- } -- } -+ } else if (color_instance(child, child_node, max < available_nodes, per_host_max, data_set)) { -+ pe_rsc_trace(rsc, "Pre-allocated %s to %s", child->id, -+ child_node->details->uname); -+ allocated++; - } - } - } - -- pe_rsc_trace(rsc, "Done pre-allocating (%d of %d)", allocated, clone_data->clone_max); -- g_list_free(nodes); -+ pe_rsc_trace(rsc, "Done pre-allocating (%d of %d)", allocated, max); - -- for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) { -+ for (GListPtr gIter = children; gIter != NULL; gIter = gIter->next) { - resource_t *child = (resource_t *) gIter->data; - - if (g_list_length(child->running_on) > 0) { -@@ -627,17 +573,68 @@ clone_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - } - - if (is_not_set(child->flags, pe_rsc_provisional)) { -- } else if (allocated >= clone_data->clone_max) { -- pe_rsc_debug(rsc, "Child %s not allocated - limit reached", child->id); -+ } else if (allocated >= max) { -+ pe_rsc_debug(rsc, "Child %s not allocated - limit reached %d %d", child->id, allocated, max); - resource_location(child, NULL, -INFINITY, "clone_color:limit_reached", data_set); -- -- } else if (color_instance(child, NULL, clone_data->clone_max < available_nodes, data_set)) { -- allocated++; -+ } else { -+ if (color_instance(child, NULL, max < available_nodes, per_host_max, data_set)) { -+ allocated++; -+ } - } - } - - pe_rsc_debug(rsc, "Allocated %d %s instances of a possible %d", -- allocated, rsc->id, clone_data->clone_max); -+ allocated, rsc->id, max); -+} -+ -+ -+node_t * -+clone_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) -+{ -+ GListPtr nodes = NULL; -+ -+ clone_variant_data_t *clone_data = NULL; -+ -+ get_clone_variant_data(clone_data, rsc); -+ -+ if (is_not_set(rsc->flags, pe_rsc_provisional)) { -+ return NULL; -+ -+ } else if (is_set(rsc->flags, pe_rsc_allocating)) { -+ pe_rsc_debug(rsc, "Dependency loop detected involving %s", rsc->id); -+ return NULL; -+ } -+ -+ set_bit(rsc->flags, pe_rsc_allocating); -+ pe_rsc_trace(rsc, "Processing %s", rsc->id); -+ -+ /* this information is used by sort_clone_instance() when deciding in which -+ * order to allocate clone instances -+ */ -+ for (GListPtr gIter = rsc->rsc_cons; gIter != NULL; gIter = gIter->next) { -+ rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data; -+ -+ pe_rsc_trace(rsc, "%s: Coloring %s first", rsc->id, constraint->rsc_rh->id); -+ constraint->rsc_rh->cmds->allocate(constraint->rsc_rh, prefer, data_set); -+ } -+ -+ for (GListPtr gIter = rsc->rsc_cons_lhs; gIter != NULL; gIter = gIter->next) { -+ rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data; -+ -+ rsc->allowed_nodes = -+ constraint->rsc_lh->cmds->merge_weights(constraint->rsc_lh, rsc->id, rsc->allowed_nodes, -+ constraint->node_attribute, -+ (float)constraint->score / INFINITY, -+ (pe_weights_rollback | pe_weights_positive)); -+ } -+ -+ dump_node_scores(show_scores ? 0 : scores_log_level, rsc, __FUNCTION__, rsc->allowed_nodes); -+ -+ nodes = g_hash_table_get_values(rsc->allowed_nodes); -+ nodes = g_list_sort_with_data(nodes, sort_node_weight, NULL); -+ rsc->children = g_list_sort_with_data(rsc->children, sort_clone_instance, data_set); -+ distribute_children(rsc, rsc->children, nodes, clone_data->clone_max, clone_data->clone_node_max, data_set); -+ g_list_free(nodes); - - clear_bit(rsc->flags, pe_rsc_provisional); - clear_bit(rsc->flags, pe_rsc_allocating); -@@ -846,12 +843,12 @@ clone_create_actions(resource_t * rsc, pe_working_set_t * data_set) - started = custom_action(rsc, started_key(rsc), - RSC_STARTED, NULL, !child_starting, TRUE, data_set); - -- update_action_flags(start, pe_action_pseudo | pe_action_runnable, __FUNCTION__); -- update_action_flags(started, pe_action_pseudo, __FUNCTION__); -+ update_action_flags(start, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__); -+ update_action_flags(started, pe_action_pseudo, __FUNCTION__, __LINE__); - started->priority = INFINITY; - - if (child_active || child_starting) { -- update_action_flags(started, pe_action_runnable, __FUNCTION__); -+ update_action_flags(started, pe_action_runnable, __FUNCTION__, __LINE__); - } - - child_ordering_constraints(rsc, data_set); -@@ -866,11 +863,11 @@ clone_create_actions(resource_t * rsc, pe_working_set_t * data_set) - RSC_STOPPED, NULL, !child_stopping, TRUE, data_set); - - stopped->priority = INFINITY; -- update_action_flags(stop, pe_action_pseudo | pe_action_runnable, __FUNCTION__); -+ update_action_flags(stop, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__); - if (allow_dependent_migrations) { -- update_action_flags(stop, pe_action_migrate_runnable, __FUNCTION__); -+ update_action_flags(stop, pe_action_migrate_runnable, __FUNCTION__, __LINE__); - } -- update_action_flags(stopped, pe_action_pseudo | pe_action_runnable, __FUNCTION__); -+ update_action_flags(stopped, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__); - if (clone_data->stop_notify == NULL) { - clone_data->stop_notify = - create_notification_boundaries(rsc, RSC_STOP, stop, stopped, data_set); -@@ -1204,7 +1201,7 @@ clone_action_flags(action_t * action, node_t * node) - && is_set(child_flags, pe_action_optional) == FALSE) { - pe_rsc_trace(child, "%s is mandatory because of %s", action->uuid, - child_action->uuid); -- flags = crm_clear_bit(__FUNCTION__, action->rsc->id, flags, pe_action_optional); -+ flags = crm_clear_bit(__FUNCTION__, __LINE__, action->rsc->id, flags, pe_action_optional); - pe_clear_action_bit(action, pe_action_optional); - } - if (is_set(child_flags, pe_action_runnable)) { -@@ -1226,7 +1223,7 @@ clone_action_flags(action_t * action, node_t * node) - - if (check_runnable && any_runnable == FALSE) { - pe_rsc_trace(action->rsc, "%s is not runnable because no children are", action->uuid); -- flags = crm_clear_bit(__FUNCTION__, action->rsc->id, flags, pe_action_runnable); -+ flags = crm_clear_bit(__FUNCTION__, __LINE__, action->rsc->id, flags, pe_action_runnable); - if (node == NULL) { - pe_clear_action_bit(action, pe_action_runnable); - } -diff --git a/pengine/constraints.c b/pengine/constraints.c -index eca4c25..92b9dd0 100644 ---- a/pengine/constraints.c -+++ b/pengine/constraints.c -@@ -153,7 +153,7 @@ get_ordering_type(xmlNode * xml_obj) - kind_e = pe_order_kind_optional; - } - -- /* } else if(rsc_then->variant == pe_native && rsc_first->variant > pe_group) { */ -+ /* } else if(rsc_then->variant == pe_native && rsc_first->variant >= pe_clone) { */ - /* kind_e = pe_order_kind_optional; */ - } - -@@ -390,7 +390,7 @@ unpack_simple_rsc_order(xmlNode * xml_obj, pe_working_set_t * data_set) - * actions to be considered runnable before allowing the pseudo action - * to be runnable. */ - unordered_action->required_runnable_before = min_required_before; -- update_action_flags(unordered_action, pe_action_requires_any, __FUNCTION__); -+ update_action_flags(unordered_action, pe_action_requires_any, __FUNCTION__, __LINE__); - - for (rIter = rsc_first->children; id && rIter; rIter = rIter->next) { - resource_t *child = rIter->data; -@@ -1788,7 +1788,7 @@ order_rsc_sets(const char *id, xmlNode * set1, xmlNode * set2, enum pe_order_kin - action_t *unordered_action = get_pseudo_op(task, data_set); - - free(task); -- update_action_flags(unordered_action, pe_action_requires_any, __FUNCTION__); -+ update_action_flags(unordered_action, pe_action_requires_any, __FUNCTION__, __LINE__); - - for (xml_rsc = __xml_first_child(set1); xml_rsc != NULL; xml_rsc = __xml_next_element(xml_rsc)) { - if (!crm_str_eq((const char *)xml_rsc->name, XML_TAG_RESOURCE_REF, TRUE)) { -diff --git a/pengine/container.c b/pengine/container.c -new file mode 100644 -index 0000000..84f2f16 ---- /dev/null -+++ b/pengine/container.c -@@ -0,0 +1,345 @@ -+/* -+ * Copyright (C) 2004 Andrew Beekhof -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public -+ * License as published by the Free Software Foundation; either -+ * version 2 of the License, or (at your option) any later version. -+ * -+ * This software is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public -+ * License along with this library; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#include -+ -+#include -+#include -+#include -+#include -+#include -+ -+#define VARIANT_CONTAINER 1 -+#include -+ -+static bool -+is_child_container_node(container_variant_data_t *data, pe_node_t *node) -+{ -+ for (GListPtr gIter = data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ if(node->details == tuple->node->details) { -+ return TRUE; -+ } -+ } -+ return FALSE; -+} -+ -+gint sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set); -+void distribute_children(resource_t *rsc, GListPtr children, GListPtr nodes, -+ int max, int per_host_max, pe_working_set_t * data_set); -+ -+node_t * -+container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) -+{ -+ GListPtr containers = NULL; -+ GListPtr nodes = NULL; -+ container_variant_data_t *container_data = NULL; -+ -+ CRM_CHECK(rsc != NULL, return NULL); -+ -+ get_container_variant_data(container_data, rsc); -+ -+ set_bit(rsc->flags, pe_rsc_allocating); -+ -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ containers = g_list_append(containers, tuple->docker); -+ } -+ -+ dump_node_scores(show_scores ? 0 : scores_log_level, rsc, __FUNCTION__, rsc->allowed_nodes); -+ -+ nodes = g_hash_table_get_values(rsc->allowed_nodes); -+ nodes = g_list_sort_with_data(nodes, sort_node_weight, NULL); -+ containers = g_list_sort_with_data(containers, sort_clone_instance, data_set); -+ distribute_children(rsc, containers, nodes, -+ container_data->replicas, container_data->replicas_per_host, data_set); -+ g_list_free(nodes); -+ g_list_free(containers); -+ -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ -+ CRM_ASSERT(tuple); -+ if(tuple->ip) { -+ tuple->ip->cmds->allocate(tuple->ip, prefer, data_set); -+ } -+ if(tuple->remote) { -+ tuple->remote->cmds->allocate(tuple->remote, prefer, data_set); -+ } -+ -+ // Explicitly allocate tuple->child before the container->child -+ if(tuple->child) { -+ pe_node_t *node = NULL; -+ GHashTableIter iter; -+ g_hash_table_iter_init(&iter, tuple->child->allowed_nodes); -+ while (g_hash_table_iter_next(&iter, NULL, (gpointer *) & node)) { -+ if(node->details != tuple->node->details) { -+ node->weight = -INFINITY; -+ } else { -+ node->weight = INFINITY; -+ } -+ } -+ -+ set_bit(tuple->child->parent->flags, pe_rsc_allocating); -+ tuple->child->cmds->allocate(tuple->child, tuple->node, data_set); -+ clear_bit(tuple->child->parent->flags, pe_rsc_allocating); -+ } -+ } -+ -+ if(container_data->child) { -+ pe_node_t *node = NULL; -+ GHashTableIter iter; -+ g_hash_table_iter_init(&iter, container_data->child->allowed_nodes); -+ while (g_hash_table_iter_next(&iter, NULL, (gpointer *) & node)) { -+ if(is_child_container_node(container_data, node)) { -+ node->weight = 0; -+ } else { -+ node->weight = -INFINITY; -+ } -+ } -+ container_data->child->cmds->allocate(container_data->child, prefer, data_set); -+ } -+ -+ clear_bit(rsc->flags, pe_rsc_allocating); -+ return NULL; -+} -+ -+void -+container_create_actions(resource_t * rsc, pe_working_set_t * data_set) -+{ -+ container_variant_data_t *container_data = NULL; -+ -+ CRM_CHECK(rsc != NULL, return); -+ -+ get_container_variant_data(container_data, rsc); -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ -+ CRM_ASSERT(tuple); -+ if(tuple->ip) { -+ tuple->ip->cmds->create_actions(tuple->ip, data_set); -+ } -+ if(tuple->docker) { -+ tuple->docker->cmds->create_actions(tuple->docker, data_set); -+ } -+ if(tuple->remote) { -+ tuple->remote->cmds->create_actions(tuple->remote, data_set); -+ } -+ } -+ -+ if(container_data->child) { -+ container_data->child->cmds->create_actions(container_data->child, data_set); -+ } -+} -+ -+void -+container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) -+{ -+ container_variant_data_t *container_data = NULL; -+ -+ CRM_CHECK(rsc != NULL, return); -+ -+ get_container_variant_data(container_data, rsc); -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ char *id = NULL; -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ -+ CRM_ASSERT(tuple); -+ if(tuple->docker) { -+ tuple->docker->cmds->internal_constraints(tuple->docker, data_set); -+ } -+ -+ if(tuple->ip) { -+ tuple->ip->cmds->internal_constraints(tuple->ip, data_set); -+ -+ // Start ip then docker -+ new_rsc_order(tuple->ip, RSC_START, tuple->docker, RSC_START, pe_order_runnable_left, data_set); -+ new_rsc_order(tuple->docker, RSC_STOP, tuple->ip, RSC_STOP, pe_order_implies_first, data_set); -+ -+ id = crm_strdup_printf("%s-ip-with-docker-%d", rsc->id, tuple->offset); -+ rsc_colocation_new(id, NULL, INFINITY, tuple->ip, tuple->docker, NULL, NULL, data_set); -+ free(id); -+ } -+ -+ if(tuple->remote) { -+ CRM_ASSERT(tuple->ip); -+ tuple->remote->cmds->internal_constraints(tuple->remote, data_set); -+ // Start docker then remote -+ new_rsc_order( -+ tuple->docker, RSC_START, tuple->remote, RSC_START, pe_order_runnable_left, data_set); -+ new_rsc_order( -+ tuple->remote, RSC_STOP, tuple->docker, RSC_STOP, pe_order_implies_first, data_set); -+ -+ id = crm_strdup_printf("%s-remote-with-ip-%d", rsc->id, tuple->offset); -+ rsc_colocation_new(id, NULL, INFINITY, tuple->remote, tuple->ip, NULL, NULL, data_set); -+ free(id); -+ } -+ -+ if(tuple->child) { -+ CRM_ASSERT(tuple->remote); -+ -+ // Start of the remote then child is implicit in the PE's remote logic -+ } -+ -+ } -+ -+ if(container_data->child) { -+ container_data->child->cmds->internal_constraints(container_data->child, data_set); -+ } -+} -+ -+void -+container_rsc_colocation_lh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * constraint) -+{ -+ pe_err("Container %s cannot be colocated with anything", rsc_lh->id); -+} -+ -+void -+container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * constraint) -+{ -+ pe_err("Container %s cannot be colocated with anything", rsc_rh->id); -+} -+ -+enum pe_action_flags -+container_action_flags(action_t * action, node_t * node) -+{ -+ enum pe_action_flags flags = (pe_action_optional | pe_action_runnable | pe_action_pseudo); -+ return flags; -+} -+ -+ -+enum pe_graph_flags -+container_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, -+ enum pe_action_flags filter, enum pe_ordering type) -+{ -+ enum pe_graph_flags changed = pe_graph_none; -+ return changed; -+} -+ -+void -+container_rsc_location(resource_t * rsc, rsc_to_node_t * constraint) -+{ -+ GListPtr gIter = rsc->children; -+ -+ pe_rsc_trace(rsc, "Processing location constraint %s for %s", constraint->id, rsc->id); -+ -+ native_rsc_location(rsc, constraint); -+ -+ for (; gIter != NULL; gIter = gIter->next) { -+ resource_t *child_rsc = (resource_t *) gIter->data; -+ -+ child_rsc->cmds->rsc_location(child_rsc, constraint); -+ } -+} -+ -+void -+container_expand(resource_t * rsc, pe_working_set_t * data_set) -+{ -+ container_variant_data_t *container_data = NULL; -+ -+ CRM_CHECK(rsc != NULL, return); -+ -+ get_container_variant_data(container_data, rsc); -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ -+ CRM_ASSERT(tuple); -+ if(tuple->ip) { -+ tuple->ip->cmds->expand(tuple->ip, data_set); -+ } -+ if(tuple->child) { -+ tuple->child->cmds->expand(tuple->child, data_set); -+ } -+ if(tuple->docker) { -+ tuple->docker->cmds->expand(tuple->docker, data_set); -+ } -+ if(tuple->remote) { -+ tuple->remote->cmds->expand(tuple->remote, data_set); -+ } -+ } -+} -+ -+gboolean -+container_create_probe(resource_t * rsc, node_t * node, action_t * complete, -+ gboolean force, pe_working_set_t * data_set) -+{ -+ bool any_created = FALSE; -+ container_variant_data_t *container_data = NULL; -+ -+ CRM_CHECK(rsc != NULL, return FALSE); -+ -+ get_container_variant_data(container_data, rsc); -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ -+ CRM_ASSERT(tuple); -+ if(tuple->ip) { -+ any_created |= tuple->ip->cmds->create_probe(tuple->ip, node, complete, force, data_set); -+ } -+ if(tuple->child && node->details == tuple->node->details) { -+ any_created |= tuple->child->cmds->create_probe(tuple->child, node, complete, force, data_set); -+ } -+ if(tuple->docker) { -+ any_created |= tuple->docker->cmds->create_probe(tuple->docker, node, complete, force, data_set); -+ } -+ if(FALSE && tuple->remote) { -+ // TODO: Needed? -+ any_created |= tuple->remote->cmds->create_probe(tuple->remote, node, complete, force, data_set); -+ } -+ } -+ return any_created; -+} -+ -+void -+container_append_meta(resource_t * rsc, xmlNode * xml) -+{ -+} -+ -+GHashTable * -+container_merge_weights(resource_t * rsc, const char *rhs, GHashTable * nodes, const char *attr, -+ float factor, enum pe_weights flags) -+{ -+ return rsc_merge_weights(rsc, rhs, nodes, attr, factor, flags); -+} -+ -+void container_LogActions( -+ resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) -+{ -+ container_variant_data_t *container_data = NULL; -+ -+ CRM_CHECK(rsc != NULL, return); -+ -+ get_container_variant_data(container_data, rsc); -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ -+ CRM_ASSERT(tuple); -+ if(tuple->ip) { -+ LogActions(tuple->ip, data_set, terminal); -+ } -+ if(tuple->docker) { -+ LogActions(tuple->docker, data_set, terminal); -+ } -+ if(tuple->remote) { -+ LogActions(tuple->remote, data_set, terminal); -+ } -+ if(tuple->child) { -+ LogActions(tuple->child, data_set, terminal); -+ } -+ } -+} -diff --git a/pengine/graph.c b/pengine/graph.c -index 569cf6e..a1531dc 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -190,7 +190,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - pe_action_optional, pe_order_implies_then); - - } else if (is_set(flags, pe_action_optional) == FALSE) { -- if (update_action_flags(then, pe_action_optional | pe_action_clear, __FUNCTION__)) { -+ if (update_action_flags(then, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__)) { - changed |= pe_graph_updated_then; - } - } -@@ -223,7 +223,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - - } else if (is_set(flags, pe_action_optional) == FALSE) { - pe_rsc_trace(first->rsc, "first unrunnable: %s then %s", first->uuid, then->uuid); -- if (update_action_flags(first, pe_action_runnable | pe_action_clear, __FUNCTION__)) { -+ if (update_action_flags(first, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__)) { - changed |= pe_graph_updated_first; - } - } -@@ -268,7 +268,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - /* if the runnable before count for then exceeds the required number - * of "before" runnable actions... mark then as runnable */ - if (then->runnable_before >= then->required_runnable_before) { -- if (update_action_flags(then, pe_action_runnable, __FUNCTION__)) { -+ if (update_action_flags(then, pe_action_runnable, __FUNCTION__, __LINE__)) { - changed |= pe_graph_updated_then; - } - } -@@ -290,7 +290,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - - } else if (is_set(flags, pe_action_runnable) == FALSE) { - pe_rsc_trace(then->rsc, "then unrunnable: %s then %s", first->uuid, then->uuid); -- if (update_action_flags(then, pe_action_runnable | pe_action_clear, __FUNCTION__)) { -+ if (update_action_flags(then, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__)) { - changed |= pe_graph_updated_then; - } - } -@@ -363,13 +363,13 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - && (flags & pe_action_optional) == 0) { - processed = TRUE; - crm_trace("%s implies %s printed", first->uuid, then->uuid); -- update_action_flags(then, pe_action_print_always, __FUNCTION__); /* don't care about changed */ -+ update_action_flags(then, pe_action_print_always, __FUNCTION__, __LINE__); /* don't care about changed */ - } - - if ((type & pe_order_implies_first_printed) && (flags & pe_action_optional) == 0) { - processed = TRUE; - crm_trace("%s implies %s printed", then->uuid, first->uuid); -- update_action_flags(first, pe_action_print_always, __FUNCTION__); /* don't care about changed */ -+ update_action_flags(first, pe_action_print_always, __FUNCTION__, __LINE__); /* don't care about changed */ - } - - if ((type & pe_order_implies_then -@@ -381,7 +381,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - && is_set(first->rsc->flags, pe_rsc_block) - && is_not_set(first->flags, pe_action_runnable)) { - -- if (update_action_flags(then, pe_action_runnable | pe_action_clear, __FUNCTION__)) { -+ if (update_action_flags(then, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__)) { - changed |= pe_graph_updated_then; - } - -@@ -909,7 +909,6 @@ action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set) - } - - crm_xml_add_int(action_xml, XML_ATTR_ID, action->id); -- - crm_xml_add(action_xml, XML_LRM_ATTR_TASK, action->task); - if (action->rsc != NULL && action->rsc->clone_name != NULL) { - char *clone_key = NULL; -@@ -1053,6 +1052,7 @@ action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set) - g_hash_table_foreach(action->meta, hash2metafield, args_xml); - if (action->rsc != NULL) { - int isolated = 0; -+ const char *value = g_hash_table_lookup(action->rsc->meta, "external-ip"); - resource_t *parent = action->rsc; - - while (parent != NULL) { -@@ -1067,6 +1067,10 @@ action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set) - free(nodeattr); - } - -+ if(value) { -+ hash2smartfield((gpointer)"pcmk_external_ip", (gpointer)value, (gpointer)args_xml); -+ } -+ - } else if (safe_str_eq(action->task, CRM_OP_FENCE) && action->node) { - g_hash_table_foreach(action->node->details->attrs, hash2metafield, args_xml); - } -@@ -1164,6 +1168,9 @@ should_dump_action(action_t * action) - log_action(LOG_DEBUG, "Unallocated action", action, FALSE); - return FALSE; - -+ } else if(is_container_remote_node(action->node) && action->node->details->remote_requires_reset == FALSE) { -+ crm_trace("Assuming action %s for %s will be runnable", action->uuid, action->node->details->uname); -+ - } else if (action->node->details->online == FALSE) { - pe_err("action %d was (%s) scheduled for offline node", action->id, action->uuid); - log_action(LOG_DEBUG, "Action for offline node", action, FALSE); -diff --git a/pengine/master.c b/pengine/master.c -index 24d80c4..f6fcad3 100644 ---- a/pengine/master.c -+++ b/pengine/master.c -@@ -845,14 +845,14 @@ master_create_actions(resource_t * rsc, pe_working_set_t * data_set) - RSC_PROMOTED, NULL, !any_promoting, TRUE, data_set); - - action_complete->priority = INFINITY; -- update_action_flags(action, pe_action_pseudo, __FUNCTION__); -- update_action_flags(action, pe_action_runnable, __FUNCTION__); -- update_action_flags(action_complete, pe_action_pseudo, __FUNCTION__); -- update_action_flags(action_complete, pe_action_runnable, __FUNCTION__); -+ update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__); -+ update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); -+ update_action_flags(action_complete, pe_action_pseudo, __FUNCTION__, __LINE__); -+ update_action_flags(action_complete, pe_action_runnable, __FUNCTION__, __LINE__); - - if (clone_data->masters_allocated > 0) { -- update_action_flags(action, pe_action_runnable, __FUNCTION__); -- update_action_flags(action_complete, pe_action_runnable, __FUNCTION__); -+ update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); -+ update_action_flags(action_complete, pe_action_runnable, __FUNCTION__, __LINE__); - } - - child_promoting_constraints(clone_data, pe_order_optional, -@@ -869,10 +869,10 @@ master_create_actions(resource_t * rsc, pe_working_set_t * data_set) - RSC_DEMOTED, NULL, !any_demoting, TRUE, data_set); - action_complete->priority = INFINITY; - -- update_action_flags(action, pe_action_pseudo, __FUNCTION__); -- update_action_flags(action, pe_action_runnable, __FUNCTION__); -- update_action_flags(action_complete, pe_action_pseudo, __FUNCTION__); -- update_action_flags(action_complete, pe_action_runnable, __FUNCTION__); -+ update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__); -+ update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); -+ update_action_flags(action_complete, pe_action_pseudo, __FUNCTION__, __LINE__); -+ update_action_flags(action_complete, pe_action_runnable, __FUNCTION__, __LINE__); - - child_demoting_constraints(clone_data, pe_order_optional, rsc, NULL, last_demote_rsc, data_set); - -diff --git a/pengine/native.c b/pengine/native.c -index 0c972ea..f864fed 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -106,9 +106,17 @@ native_choose_node(resource_t * rsc, node_t * prefer, pe_working_set_t * data_se - return rsc->allocated_to ? TRUE : FALSE; - } - -+ if(rsc->allowed_nodes) { -+ nodes = g_hash_table_get_values(rsc->allowed_nodes); -+ nodes = g_list_sort_with_data(nodes, sort_node_weight, g_list_nth_data(rsc->running_on, 0)); -+ } - if (prefer) { -+ node_t *best = g_list_nth_data(nodes, 0); -+ - chosen = g_hash_table_lookup(rsc->allowed_nodes, prefer->details->id); -- if (chosen && chosen->weight >= 0 && can_run_resources(chosen)) { -+ if (chosen && chosen->weight >= 0 -+ && chosen->weight >= best->weight /* Possible alternative: (chosen->weight >= INFINITY || best->weight < INFINITY) */ -+ && can_run_resources(chosen)) { - pe_rsc_trace(rsc, - "Using preferred node %s for %s instead of choosing from %d candidates", - chosen->details->uname, rsc->id, length); -@@ -127,8 +135,6 @@ native_choose_node(resource_t * rsc, node_t * prefer, pe_working_set_t * data_se - } - - if (chosen == NULL && rsc->allowed_nodes) { -- nodes = g_hash_table_get_values(rsc->allowed_nodes); -- nodes = g_list_sort_with_data(nodes, sort_node_weight, g_list_nth_data(rsc->running_on, 0)); - - chosen = g_list_nth_data(nodes, 0); - pe_rsc_trace(rsc, "Chose node %s for %s from %d candidates", -@@ -749,12 +755,12 @@ RecurringOp(resource_t * rsc, action_t * start, node_t * node, - if (start == NULL || is_set(start->flags, pe_action_runnable) == FALSE) { - pe_rsc_debug(rsc, "%s\t %s (cancelled : start un-runnable)", crm_str(node_uname), - mon->uuid); -- update_action_flags(mon, pe_action_runnable | pe_action_clear, __FUNCTION__); -+ update_action_flags(mon, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); - - } else if (node == NULL || node->details->online == FALSE || node->details->unclean) { - pe_rsc_debug(rsc, "%s\t %s (cancelled : no node available)", crm_str(node_uname), - mon->uuid); -- update_action_flags(mon, pe_action_runnable | pe_action_clear, __FUNCTION__); -+ update_action_flags(mon, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); - - } else if (is_set(mon->flags, pe_action_optional) == FALSE) { - pe_rsc_info(rsc, " Start recurring %s (%llus) for %s on %s", mon->task, interval_ms / 1000, -@@ -971,7 +977,7 @@ RecurringOp_Stopped(resource_t * rsc, action_t * start, node_t * node, - if (is_set(stop->flags, pe_action_runnable) == FALSE) { - crm_debug("%s\t %s (cancelled : stop un-runnable)", - crm_str(stop_node_uname), stopped_mon->uuid); -- update_action_flags(stopped_mon, pe_action_runnable | pe_action_clear, __FUNCTION__); -+ update_action_flags(stopped_mon, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); - } - - if (is_set(rsc->flags, pe_rsc_managed)) { -@@ -991,7 +997,7 @@ RecurringOp_Stopped(resource_t * rsc, action_t * start, node_t * node, - && is_set(rsc->flags, pe_rsc_managed) == FALSE) { - pe_rsc_trace(rsc, "Marking %s optional on %s due to unmanaged", - key, crm_str(stop_node_uname)); -- update_action_flags(stopped_mon, pe_action_optional, __FUNCTION__); -+ update_action_flags(stopped_mon, pe_action_optional, __FUNCTION__, __LINE__); - } - - if (is_set(stopped_mon->flags, pe_action_optional)) { -@@ -1001,7 +1007,7 @@ RecurringOp_Stopped(resource_t * rsc, action_t * start, node_t * node, - if (stop_node->details->online == FALSE || stop_node->details->unclean) { - pe_rsc_debug(rsc, "%s\t %s (cancelled : no node available)", - crm_str(stop_node_uname), stopped_mon->uuid); -- update_action_flags(stopped_mon, pe_action_runnable | pe_action_clear, __FUNCTION__); -+ update_action_flags(stopped_mon, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); - } - - if (is_set(stopped_mon->flags, pe_action_runnable) -@@ -1055,7 +1061,7 @@ handle_migration_actions(resource_t * rsc, node_t *current, node_t *chosen, pe_w - set_bit(start->flags, pe_action_migrate_runnable); - set_bit(stop->flags, pe_action_migrate_runnable); - -- update_action_flags(start, pe_action_pseudo, __FUNCTION__); /* easier than trying to delete it from the graph */ -+ update_action_flags(start, pe_action_pseudo, __FUNCTION__, __LINE__); /* easier than trying to delete it from the graph */ - - /* order probes before migrations */ - if (partial) { -@@ -1263,7 +1269,7 @@ native_create_actions(resource_t * rsc, pe_working_set_t * data_set) - /* Required steps from this role to the next */ - while (role != rsc->next_role) { - next_role = rsc_state_matrix[role][rsc->next_role]; -- pe_rsc_trace(rsc, "Role: Executing: %s->%s = (%s)", role2text(role), role2text(next_role), rsc->id); -+ pe_rsc_trace(rsc, "Role: Executing: %s->%s = (%s on %s)", role2text(role), role2text(next_role), rsc->id, chosen?chosen->details->uname:"NA"); - if (rsc_action_matrix[role][next_role] (rsc, chosen, FALSE, data_set) == FALSE) { - break; - } -@@ -1410,7 +1416,7 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - - if (load_stopped->node == NULL) { - load_stopped->node = node_copy(current); -- update_action_flags(load_stopped, pe_action_optional | pe_action_clear, __FUNCTION__); -+ update_action_flags(load_stopped, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); - } - - custom_action_order(rsc, stop_key(rsc), NULL, -@@ -1424,7 +1430,7 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - - if (load_stopped->node == NULL) { - load_stopped->node = node_copy(next); -- update_action_flags(load_stopped, pe_action_optional | pe_action_clear, __FUNCTION__); -+ update_action_flags(load_stopped, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); - } - - custom_action_order(NULL, strdup(load_stopped_task), load_stopped, -@@ -2138,6 +2144,11 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - gboolean moving = FALSE; - GListPtr possible_matches = NULL; - -+ if(rsc->variant == pe_container) { -+ container_LogActions(rsc, data_set, terminal); -+ return; -+ } -+ - if (rsc->children) { - GListPtr gIter = NULL; - -@@ -2417,7 +2428,7 @@ StopRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * d - stop = stop_action(rsc, current, optional); - - if (is_not_set(rsc->flags, pe_rsc_managed)) { -- update_action_flags(stop, pe_action_runnable | pe_action_clear, __FUNCTION__); -+ update_action_flags(stop, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); - } - - if (is_set(data_set->flags, pe_flag_remove_after_stop)) { -@@ -2437,7 +2448,7 @@ StartRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * - pe_rsc_trace(rsc, "%s on %s %d", rsc->id, next ? next->details->uname : "N/A", optional); - start = start_action(rsc, next, TRUE); - if (is_set(start->flags, pe_action_runnable) && optional == FALSE) { -- update_action_flags(start, pe_action_optional | pe_action_clear, __FUNCTION__); -+ update_action_flags(start, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); - } - return TRUE; - } -@@ -2481,7 +2492,7 @@ PromoteRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t - for (gIter = action_list; gIter != NULL; gIter = gIter->next) { - action_t *promote = (action_t *) gIter->data; - -- update_action_flags(promote, pe_action_runnable | pe_action_clear, __FUNCTION__); -+ update_action_flags(promote, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); - } - - g_list_free(action_list); -@@ -2773,7 +2784,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - - key = generate_op_key(rsc->id, RSC_STATUS, 0); - probe = custom_action(rsc, key, RSC_STATUS, node, FALSE, TRUE, data_set); -- update_action_flags(probe, pe_action_optional | pe_action_clear, __FUNCTION__); -+ 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 -@@ -2940,9 +2951,9 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ - /* The stop would never complete and is now implied by the fencing, - * so convert it into a pseudo-action. - */ -- update_action_flags(action, pe_action_pseudo, __FUNCTION__); -- update_action_flags(action, pe_action_runnable, __FUNCTION__); -- update_action_flags(action, pe_action_implied_by_stonith, __FUNCTION__); -+ update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__); -+ update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); -+ update_action_flags(action, pe_action_implied_by_stonith, __FUNCTION__, __LINE__); - - if(start == NULL || start->needs > rsc_req_quorum) { - enum pe_ordering flags = pe_order_optional; -@@ -3041,8 +3052,8 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ - /* The demote would never complete and is now implied by the - * fencing, so convert it into a pseudo-action. - */ -- update_action_flags(action, pe_action_pseudo, __FUNCTION__); -- update_action_flags(action, pe_action_runnable, __FUNCTION__); -+ 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) { - order_actions(stonith_op, action, pe_order_preserve|pe_order_optional); -diff --git a/pengine/notif.c b/pengine/notif.c -index 73bb226..a2d4c1b 100644 ---- a/pengine/notif.c -+++ b/pengine/notif.c -@@ -315,8 +315,8 @@ create_notification_boundaries(resource_t * rsc, const char *action, action_t * - custom_action(rsc, key, RSC_NOTIFY, NULL, is_set(start->flags, pe_action_optional), - TRUE, data_set); - -- update_action_flags(n_data->pre, pe_action_pseudo, __FUNCTION__); -- update_action_flags(n_data->pre, pe_action_runnable, __FUNCTION__); -+ update_action_flags(n_data->pre, pe_action_pseudo, __FUNCTION__, __LINE__); -+ update_action_flags(n_data->pre, pe_action_runnable, __FUNCTION__, __LINE__); - - add_hash_param(n_data->pre->meta, "notify_type", "pre"); - add_hash_param(n_data->pre->meta, "notify_operation", n_data->action); -@@ -330,8 +330,8 @@ create_notification_boundaries(resource_t * rsc, const char *action, action_t * - custom_action(rsc, key, RSC_NOTIFIED, NULL, is_set(start->flags, pe_action_optional), - TRUE, data_set); - -- update_action_flags(n_data->pre_done, pe_action_pseudo, __FUNCTION__); -- update_action_flags(n_data->pre_done, pe_action_runnable, __FUNCTION__); -+ update_action_flags(n_data->pre_done, pe_action_pseudo, __FUNCTION__, __LINE__); -+ update_action_flags(n_data->pre_done, pe_action_runnable, __FUNCTION__, __LINE__); - - add_hash_param(n_data->pre_done->meta, "notify_type", "pre"); - add_hash_param(n_data->pre_done->meta, "notify_operation", n_data->action); -@@ -351,11 +351,11 @@ create_notification_boundaries(resource_t * rsc, const char *action, action_t * - data_set); - - n_data->post->priority = INFINITY; -- update_action_flags(n_data->post, pe_action_pseudo, __FUNCTION__); -+ update_action_flags(n_data->post, pe_action_pseudo, __FUNCTION__, __LINE__); - if (is_set(end->flags, pe_action_runnable)) { -- update_action_flags(n_data->post, pe_action_runnable, __FUNCTION__); -+ update_action_flags(n_data->post, pe_action_runnable, __FUNCTION__, __LINE__); - } else { -- update_action_flags(n_data->post, pe_action_runnable | pe_action_clear, __FUNCTION__); -+ update_action_flags(n_data->post, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); - } - - add_hash_param(n_data->post->meta, "notify_type", "post"); -@@ -371,11 +371,11 @@ create_notification_boundaries(resource_t * rsc, const char *action, action_t * - TRUE, data_set); - - n_data->post_done->priority = INFINITY; -- update_action_flags(n_data->post_done, pe_action_pseudo, __FUNCTION__); -+ update_action_flags(n_data->post_done, pe_action_pseudo, __FUNCTION__, __LINE__); - if (is_set(end->flags, pe_action_runnable)) { -- update_action_flags(n_data->post_done, pe_action_runnable, __FUNCTION__); -+ update_action_flags(n_data->post_done, pe_action_runnable, __FUNCTION__, __LINE__); - } else { -- update_action_flags(n_data->post_done, pe_action_runnable | pe_action_clear, __FUNCTION__); -+ update_action_flags(n_data->post_done, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); - } - - add_hash_param(n_data->post_done->meta, "notify_type", "post"); -@@ -585,13 +585,13 @@ expand_notification_data(notify_data_t * n_data, pe_working_set_t * data_set) - g_hash_table_insert(n_data->keys, strdup("notify_all_uname"), node_list); - - if (required && n_data->pre) { -- update_action_flags(n_data->pre, pe_action_optional | pe_action_clear, __FUNCTION__); -- update_action_flags(n_data->pre_done, pe_action_optional | pe_action_clear, __FUNCTION__); -+ update_action_flags(n_data->pre, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); -+ update_action_flags(n_data->pre_done, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); - } - - if (required && n_data->post) { -- update_action_flags(n_data->post, pe_action_optional | pe_action_clear, __FUNCTION__); -- update_action_flags(n_data->post_done, pe_action_optional | pe_action_clear, __FUNCTION__); -+ update_action_flags(n_data->post, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); -+ update_action_flags(n_data->post_done, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); - } - return required; - } -diff --git a/pengine/test10/1360.scores b/pengine/test10/1360.scores -index 39c803d..c0c5cc9 100644 ---- a/pengine/test10/1360.scores -+++ b/pengine/test10/1360.scores -@@ -10,4 +10,6 @@ group_color: VIP allocation score on ssgtest1b: 0 - native_color: VIP allocation score on ssgtest1a: INFINITY - native_color: VIP allocation score on ssgtest1b: 0 - native_color: dollies:0 allocation score on ssgtest1a: 0 -+native_color: dollies:0 allocation score on ssgtest1a: 0 -+native_color: dollies:0 allocation score on ssgtest1b: INFINITY - native_color: dollies:0 allocation score on ssgtest1b: INFINITY -diff --git a/pengine/test10/662.scores b/pengine/test10/662.scores -index 50be40c..5e6598c 100644 ---- a/pengine/test10/662.scores -+++ b/pengine/test10/662.scores -@@ -29,10 +29,10 @@ native_color: child_DoFencing:0 allocation score on c001n04: -INFINITY - native_color: child_DoFencing:0 allocation score on c001n09: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n02: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n03: 1 --native_color: child_DoFencing:1 allocation score on c001n04: -INFINITY -+native_color: child_DoFencing:1 allocation score on c001n04: 0 - native_color: child_DoFencing:1 allocation score on c001n09: 0 - native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY --native_color: child_DoFencing:2 allocation score on c001n03: 0 -+native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n04: 1 - native_color: child_DoFencing:2 allocation score on c001n09: 0 - native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY -diff --git a/pengine/test10/696.scores b/pengine/test10/696.scores -index 4f6dd50..f27fc36 100644 ---- a/pengine/test10/696.scores -+++ b/pengine/test10/696.scores -@@ -16,9 +16,9 @@ native_color: DcIPaddr allocation score on hadev2: 0 - native_color: DcIPaddr allocation score on hadev3: -INFINITY - native_color: child_DoFencing:0 allocation score on hadev1: 0 - native_color: child_DoFencing:0 allocation score on hadev2: 1 --native_color: child_DoFencing:0 allocation score on hadev3: -INFINITY -+native_color: child_DoFencing:0 allocation score on hadev3: 0 - native_color: child_DoFencing:1 allocation score on hadev1: 0 --native_color: child_DoFencing:1 allocation score on hadev2: 0 -+native_color: child_DoFencing:1 allocation score on hadev2: -INFINITY - native_color: child_DoFencing:1 allocation score on hadev3: 1 - native_color: child_DoFencing:2 allocation score on hadev1: 0 - native_color: child_DoFencing:2 allocation score on hadev2: -INFINITY -diff --git a/pengine/test10/anti-colocation-slave.scores b/pengine/test10/anti-colocation-slave.scores -index b9d278e..e0b8a52 100644 ---- a/pengine/test10/anti-colocation-slave.scores -+++ b/pengine/test10/anti-colocation-slave.scores -@@ -10,8 +10,8 @@ native_color: dummy1 allocation score on sle12sp2-2: 0 - native_color: st_sbd allocation score on sle12sp2-1: 0 - native_color: st_sbd allocation score on sle12sp2-2: 0 - native_color: state1:0 allocation score on sle12sp2-1: 11 --native_color: state1:0 allocation score on sle12sp2-2: -INFINITY --native_color: state1:1 allocation score on sle12sp2-1: 0 -+native_color: state1:0 allocation score on sle12sp2-2: 0 -+native_color: state1:1 allocation score on sle12sp2-1: -INFINITY - native_color: state1:1 allocation score on sle12sp2-2: 6 - state1:0 promotion score on sle12sp2-1: -INFINITY - state1:1 promotion score on sle12sp2-2: 5 -diff --git a/pengine/test10/asymmetric.scores b/pengine/test10/asymmetric.scores -index 1dcb15a..802da70 100644 ---- a/pengine/test10/asymmetric.scores -+++ b/pengine/test10/asymmetric.scores -@@ -8,7 +8,7 @@ clone_color: ms_drbd_poolA allocation score on puma3: 0 - ebe3fb6e-7778-426e-be58-190ab1ff3dd3:0 promotion score on puma1: 5 - ebe3fb6e-7778-426e-be58-190ab1ff3dd3:1 promotion score on puma3: 100 - native_color: ebe3fb6e-7778-426e-be58-190ab1ff3dd3:0 allocation score on puma1: 6 --native_color: ebe3fb6e-7778-426e-be58-190ab1ff3dd3:0 allocation score on puma3: 0 --native_color: ebe3fb6e-7778-426e-be58-190ab1ff3dd3:1 allocation score on puma1: -INFINITY -+native_color: ebe3fb6e-7778-426e-be58-190ab1ff3dd3:0 allocation score on puma3: -INFINITY -+native_color: ebe3fb6e-7778-426e-be58-190ab1ff3dd3:1 allocation score on puma1: 0 - native_color: ebe3fb6e-7778-426e-be58-190ab1ff3dd3:1 allocation score on puma3: 101 - native_color: vpool_ip_poolA allocation score on puma3: -INFINITY -diff --git a/pengine/test10/bnc-515172.scores b/pengine/test10/bnc-515172.scores -index 3615bfa..f085a46 100644 ---- a/pengine/test10/bnc-515172.scores -+++ b/pengine/test10/bnc-515172.scores -@@ -49,18 +49,18 @@ native_color: Res_Pingd_Gateway:0 allocation score on sles11-ha2: 0 - native_color: Res_Pingd_Gateway:0 allocation score on sles11-ha3: 0 - native_color: Res_Pingd_Gateway:1 allocation score on sles11-ha1: -INFINITY - native_color: Res_Pingd_Gateway:1 allocation score on sles11-ha2: 1 --native_color: Res_Pingd_Gateway:1 allocation score on sles11-ha3: -INFINITY -+native_color: Res_Pingd_Gateway:1 allocation score on sles11-ha3: 0 - native_color: Res_Pingd_Gateway:2 allocation score on sles11-ha1: -INFINITY --native_color: Res_Pingd_Gateway:2 allocation score on sles11-ha2: 0 -+native_color: Res_Pingd_Gateway:2 allocation score on sles11-ha2: -INFINITY - native_color: Res_Pingd_Gateway:2 allocation score on sles11-ha3: 1 - native_color: Res_Pingd_Public:0 allocation score on sles11-ha1: 1 - native_color: Res_Pingd_Public:0 allocation score on sles11-ha2: 0 - native_color: Res_Pingd_Public:0 allocation score on sles11-ha3: 0 - native_color: Res_Pingd_Public:1 allocation score on sles11-ha1: -INFINITY - native_color: Res_Pingd_Public:1 allocation score on sles11-ha2: 1 --native_color: Res_Pingd_Public:1 allocation score on sles11-ha3: -INFINITY -+native_color: Res_Pingd_Public:1 allocation score on sles11-ha3: 0 - native_color: Res_Pingd_Public:2 allocation score on sles11-ha1: -INFINITY --native_color: Res_Pingd_Public:2 allocation score on sles11-ha2: 0 -+native_color: Res_Pingd_Public:2 allocation score on sles11-ha2: -INFINITY - native_color: Res_Pingd_Public:2 allocation score on sles11-ha3: 1 - native_color: Stonith_Resource:0 allocation score on sles11-ha1: 1 - native_color: Stonith_Resource:0 allocation score on sles11-ha2: 0 -diff --git a/pengine/test10/bug-1685.scores b/pengine/test10/bug-1685.scores -index e45d379..7142c60 100644 ---- a/pengine/test10/bug-1685.scores -+++ b/pengine/test10/bug-1685.scores -@@ -5,10 +5,10 @@ clone_color: prim_shared_storage:1 allocation score on redun1: 76 - clone_color: prim_shared_storage:1 allocation score on redun2: 0 - clone_color: shared_storage allocation score on redun1: 0 - clone_color: shared_storage allocation score on redun2: 0 --native_color: prim_shared_storage:0 allocation score on redun1: -INFINITY -+native_color: prim_shared_storage:0 allocation score on redun1: 0 - native_color: prim_shared_storage:0 allocation score on redun2: 76 - native_color: prim_shared_storage:1 allocation score on redun1: 76 --native_color: prim_shared_storage:1 allocation score on redun2: 0 -+native_color: prim_shared_storage:1 allocation score on redun2: -INFINITY - native_color: shared_filesystem allocation score on redun1: -INFINITY - native_color: shared_filesystem allocation score on redun2: 76 - prim_shared_storage:0 promotion score on redun2: 75 -diff --git a/pengine/test10/bug-1765.scores b/pengine/test10/bug-1765.scores -index c072902..28f19e1 100644 ---- a/pengine/test10/bug-1765.scores -+++ b/pengine/test10/bug-1765.scores -@@ -21,7 +21,7 @@ native_color: drbd0:0 allocation score on sles236: 76 - native_color: drbd0:0 allocation score on sles238: 75 - native_color: drbd0:1 allocation score on sles236: -INFINITY - native_color: drbd0:1 allocation score on sles238: 5 --native_color: drbd1:0 allocation score on sles236: -INFINITY -+native_color: drbd1:0 allocation score on sles236: 0 - native_color: drbd1:0 allocation score on sles238: 76 - native_color: drbd1:1 allocation score on sles236: 76 --native_color: drbd1:1 allocation score on sles238: 0 -+native_color: drbd1:1 allocation score on sles238: -INFINITY -diff --git a/pengine/test10/bug-5143-ms-shuffle.scores b/pengine/test10/bug-5143-ms-shuffle.scores -index 37881e6..b062986 100644 ---- a/pengine/test10/bug-5143-ms-shuffle.scores -+++ b/pengine/test10/bug-5143-ms-shuffle.scores -@@ -93,29 +93,29 @@ drbd-r1:0 promotion score on hex-2: -1 - drbd-r1:1 promotion score on hex-3: 10000 - group_color: basegrp:0 allocation score on hex-1: 0 - group_color: basegrp:0 allocation score on hex-2: -INFINITY --group_color: basegrp:0 allocation score on hex-3: -INFINITY -+group_color: basegrp:0 allocation score on hex-3: 0 - group_color: basegrp:1 allocation score on hex-1: 0 - group_color: basegrp:1 allocation score on hex-2: 0 - group_color: basegrp:1 allocation score on hex-3: 0 --group_color: basegrp:2 allocation score on hex-1: 0 -+group_color: basegrp:2 allocation score on hex-1: -INFINITY - group_color: basegrp:2 allocation score on hex-2: -INFINITY - group_color: basegrp:2 allocation score on hex-3: 0 - group_color: clvmd:0 allocation score on hex-1: 1 - group_color: clvmd:0 allocation score on hex-2: -INFINITY --group_color: clvmd:0 allocation score on hex-3: -INFINITY -+group_color: clvmd:0 allocation score on hex-3: 0 - group_color: clvmd:1 allocation score on hex-1: 0 - group_color: clvmd:1 allocation score on hex-2: 1 - group_color: clvmd:1 allocation score on hex-3: 0 --group_color: clvmd:2 allocation score on hex-1: 0 -+group_color: clvmd:2 allocation score on hex-1: -INFINITY - group_color: clvmd:2 allocation score on hex-2: -INFINITY - group_color: clvmd:2 allocation score on hex-3: 1 - group_color: dlm:0 allocation score on hex-1: 1 - group_color: dlm:0 allocation score on hex-2: -INFINITY --group_color: dlm:0 allocation score on hex-3: -INFINITY -+group_color: dlm:0 allocation score on hex-3: 0 - group_color: dlm:1 allocation score on hex-1: 0 - group_color: dlm:1 allocation score on hex-2: 1 - group_color: dlm:1 allocation score on hex-3: 0 --group_color: dlm:2 allocation score on hex-1: 0 -+group_color: dlm:2 allocation score on hex-1: -INFINITY - group_color: dlm:2 allocation score on hex-2: -INFINITY - group_color: dlm:2 allocation score on hex-3: 1 - group_color: dummy1 allocation score on hex-1: 0 -@@ -129,11 +129,11 @@ group_color: fs-md0 allocation score on hex-2: 0 - group_color: fs-md0 allocation score on hex-3: 1000 - group_color: fs-ocfs-1:0 allocation score on hex-1: 1 - group_color: fs-ocfs-1:0 allocation score on hex-2: -INFINITY --group_color: fs-ocfs-1:0 allocation score on hex-3: -INFINITY -+group_color: fs-ocfs-1:0 allocation score on hex-3: 0 - group_color: fs-ocfs-1:1 allocation score on hex-1: 0 - group_color: fs-ocfs-1:1 allocation score on hex-2: 1 - group_color: fs-ocfs-1:1 allocation score on hex-3: 0 --group_color: fs-ocfs-1:2 allocation score on hex-1: 0 -+group_color: fs-ocfs-1:2 allocation score on hex-1: -INFINITY - group_color: fs-ocfs-1:2 allocation score on hex-2: -INFINITY - group_color: fs-ocfs-1:2 allocation score on hex-3: 1 - group_color: fs-r0 allocation score on hex-1: 0 -@@ -147,11 +147,11 @@ group_color: md0-group allocation score on hex-2: 0 - group_color: md0-group allocation score on hex-3: 0 - group_color: o2cb:0 allocation score on hex-1: 1 - group_color: o2cb:0 allocation score on hex-2: -INFINITY --group_color: o2cb:0 allocation score on hex-3: -INFINITY -+group_color: o2cb:0 allocation score on hex-3: 0 - group_color: o2cb:1 allocation score on hex-1: 0 - group_color: o2cb:1 allocation score on hex-2: 1 - group_color: o2cb:1 allocation score on hex-3: 0 --group_color: o2cb:2 allocation score on hex-1: 0 -+group_color: o2cb:2 allocation score on hex-1: -INFINITY - group_color: o2cb:2 allocation score on hex-2: -INFINITY - group_color: o2cb:2 allocation score on hex-3: 1 - group_color: r0-group allocation score on hex-1: 0 -@@ -162,11 +162,11 @@ group_color: vg-md0 allocation score on hex-2: 0 - group_color: vg-md0 allocation score on hex-3: 1000 - group_color: vg1:0 allocation score on hex-1: 1 - group_color: vg1:0 allocation score on hex-2: -INFINITY --group_color: vg1:0 allocation score on hex-3: -INFINITY -+group_color: vg1:0 allocation score on hex-3: 0 - group_color: vg1:1 allocation score on hex-1: 0 - group_color: vg1:1 allocation score on hex-2: 1 - group_color: vg1:1 allocation score on hex-3: 0 --group_color: vg1:2 allocation score on hex-1: 0 -+group_color: vg1:2 allocation score on hex-1: -INFINITY - group_color: vg1:2 allocation score on hex-2: -INFINITY - group_color: vg1:2 allocation score on hex-3: 1 - native_color: clvmd:0 allocation score on hex-1: 4 -@@ -180,11 +180,11 @@ native_color: clvmd:2 allocation score on hex-2: -INFINITY - native_color: clvmd:2 allocation score on hex-3: 4 - native_color: dlm:0 allocation score on hex-1: 5 - native_color: dlm:0 allocation score on hex-2: -INFINITY --native_color: dlm:0 allocation score on hex-3: -INFINITY -+native_color: dlm:0 allocation score on hex-3: 0 - native_color: dlm:1 allocation score on hex-1: 0 - native_color: dlm:1 allocation score on hex-2: 5 - native_color: dlm:1 allocation score on hex-3: 0 --native_color: dlm:2 allocation score on hex-1: 0 -+native_color: dlm:2 allocation score on hex-1: -INFINITY - native_color: dlm:2 allocation score on hex-2: -INFINITY - native_color: dlm:2 allocation score on hex-3: 5 - native_color: drbd-r0:0 allocation score on hex-1: 10001 -diff --git a/pengine/test10/bug-5186-partial-migrate.scores b/pengine/test10/bug-5186-partial-migrate.scores -index baec909..8b29529 100644 ---- a/pengine/test10/bug-5186-partial-migrate.scores -+++ b/pengine/test10/bug-5186-partial-migrate.scores -@@ -67,8 +67,8 @@ native_color: prmDiskd1:0 allocation score on bl460g1n7: -INFINITY - native_color: prmDiskd1:0 allocation score on bl460g1n8: -INFINITY - native_color: prmDiskd1:1 allocation score on bl460g1n6: INFINITY - native_color: prmDiskd1:1 allocation score on bl460g1n7: -INFINITY --native_color: prmDiskd1:1 allocation score on bl460g1n8: -INFINITY --native_color: prmDiskd1:2 allocation score on bl460g1n6: 0 -+native_color: prmDiskd1:1 allocation score on bl460g1n8: 0 -+native_color: prmDiskd1:2 allocation score on bl460g1n6: -INFINITY - native_color: prmDiskd1:2 allocation score on bl460g1n7: -INFINITY - native_color: prmDiskd1:2 allocation score on bl460g1n8: INFINITY - native_color: prmDiskd2:0 allocation score on bl460g1n6: -INFINITY -@@ -76,8 +76,8 @@ native_color: prmDiskd2:0 allocation score on bl460g1n7: -INFINITY - native_color: prmDiskd2:0 allocation score on bl460g1n8: -INFINITY - native_color: prmDiskd2:1 allocation score on bl460g1n6: INFINITY - native_color: prmDiskd2:1 allocation score on bl460g1n7: -INFINITY --native_color: prmDiskd2:1 allocation score on bl460g1n8: -INFINITY --native_color: prmDiskd2:2 allocation score on bl460g1n6: 0 -+native_color: prmDiskd2:1 allocation score on bl460g1n8: 0 -+native_color: prmDiskd2:2 allocation score on bl460g1n6: -INFINITY - native_color: prmDiskd2:2 allocation score on bl460g1n7: -INFINITY - native_color: prmDiskd2:2 allocation score on bl460g1n8: INFINITY - native_color: prmDummy allocation score on bl460g1n6: 200 -@@ -88,8 +88,8 @@ native_color: prmPing:0 allocation score on bl460g1n7: -INFINITY - native_color: prmPing:0 allocation score on bl460g1n8: -INFINITY - native_color: prmPing:1 allocation score on bl460g1n6: INFINITY - native_color: prmPing:1 allocation score on bl460g1n7: -INFINITY --native_color: prmPing:1 allocation score on bl460g1n8: -INFINITY --native_color: prmPing:2 allocation score on bl460g1n6: 0 -+native_color: prmPing:1 allocation score on bl460g1n8: 0 -+native_color: prmPing:2 allocation score on bl460g1n6: -INFINITY - native_color: prmPing:2 allocation score on bl460g1n7: -INFINITY - native_color: prmPing:2 allocation score on bl460g1n8: INFINITY - native_color: prmStonith6-1 allocation score on bl460g1n6: -INFINITY -diff --git a/pengine/test10/bug-cl-5168.scores b/pengine/test10/bug-cl-5168.scores -index 027d669..640e0f1 100644 ---- a/pengine/test10/bug-cl-5168.scores -+++ b/pengine/test10/bug-cl-5168.scores -@@ -194,8 +194,11 @@ native_color: drbd-r0:1 allocation score on hex-1: INFINITY - native_color: drbd-r0:1 allocation score on hex-2: 0 - native_color: drbd-r0:1 allocation score on hex-3: -INFINITY - native_color: drbd-r1:0 allocation score on hex-1: -INFINITY -+native_color: drbd-r1:0 allocation score on hex-1: -INFINITY -+native_color: drbd-r1:0 allocation score on hex-2: 1001 - native_color: drbd-r1:0 allocation score on hex-2: 1001 - native_color: drbd-r1:0 allocation score on hex-3: -INFINITY -+native_color: drbd-r1:0 allocation score on hex-3: INFINITY - native_color: drbd-r1:1 allocation score on hex-1: -INFINITY - native_color: drbd-r1:1 allocation score on hex-2: 0 - native_color: drbd-r1:1 allocation score on hex-3: INFINITY -diff --git a/pengine/test10/bug-cl-5213.scores b/pengine/test10/bug-cl-5213.scores -index b5b64ae..f9347dc 100644 ---- a/pengine/test10/bug-cl-5213.scores -+++ b/pengine/test10/bug-cl-5213.scores -@@ -7,9 +7,9 @@ clone_color: pgsql:1 allocation score on srv01: INFINITY - clone_color: pgsql:1 allocation score on srv02: 0 - native_color: A-master allocation score on srv01: 0 - native_color: A-master allocation score on srv02: INFINITY --native_color: pgsql:0 allocation score on srv01: -INFINITY -+native_color: pgsql:0 allocation score on srv01: 0 - native_color: pgsql:0 allocation score on srv02: INFINITY - native_color: pgsql:1 allocation score on srv01: INFINITY --native_color: pgsql:1 allocation score on srv02: 0 -+native_color: pgsql:1 allocation score on srv02: -INFINITY - pgsql:0 promotion score on srv02: -INFINITY - pgsql:1 promotion score on srv01: -INFINITY -diff --git a/pengine/test10/bug-cl-5219.scores b/pengine/test10/bug-cl-5219.scores -index cdb624a..991ca83 100644 ---- a/pengine/test10/bug-cl-5219.scores -+++ b/pengine/test10/bug-cl-5219.scores -@@ -23,18 +23,18 @@ native_color: child2-service allocation score on ha1.test.anchor.net.au: -INFINI - native_color: child2-service allocation score on ha2.test.anchor.net.au: 11 - native_color: parent-service allocation score on ha1.test.anchor.net.au: -INFINITY - native_color: parent-service allocation score on ha2.test.anchor.net.au: 11 --native_color: stateful-child1:0 allocation score on ha1.test.anchor.net.au: -INFINITY -+native_color: stateful-child1:0 allocation score on ha1.test.anchor.net.au: 0 - native_color: stateful-child1:0 allocation score on ha2.test.anchor.net.au: 11 - native_color: stateful-child1:1 allocation score on ha1.test.anchor.net.au: 6 --native_color: stateful-child1:1 allocation score on ha2.test.anchor.net.au: 0 --native_color: stateful-child2:0 allocation score on ha1.test.anchor.net.au: -INFINITY -+native_color: stateful-child1:1 allocation score on ha2.test.anchor.net.au: -INFINITY -+native_color: stateful-child2:0 allocation score on ha1.test.anchor.net.au: 0 - native_color: stateful-child2:0 allocation score on ha2.test.anchor.net.au: 11 - native_color: stateful-child2:1 allocation score on ha1.test.anchor.net.au: 6 --native_color: stateful-child2:1 allocation score on ha2.test.anchor.net.au: 0 --native_color: stateful-parent:0 allocation score on ha1.test.anchor.net.au: -INFINITY -+native_color: stateful-child2:1 allocation score on ha2.test.anchor.net.au: -INFINITY -+native_color: stateful-parent:0 allocation score on ha1.test.anchor.net.au: 0 - native_color: stateful-parent:0 allocation score on ha2.test.anchor.net.au: 11 - native_color: stateful-parent:1 allocation score on ha1.test.anchor.net.au: 6 --native_color: stateful-parent:1 allocation score on ha2.test.anchor.net.au: 0 -+native_color: stateful-parent:1 allocation score on ha2.test.anchor.net.au: -INFINITY - stateful-child1:0 promotion score on ha2.test.anchor.net.au: INFINITY - stateful-child1:1 promotion score on ha1.test.anchor.net.au: -INFINITY - stateful-child2:0 promotion score on ha2.test.anchor.net.au: INFINITY -diff --git a/pengine/test10/bug-lf-2106.scores b/pengine/test10/bug-lf-2106.scores -index d7a2dbd..9b8e06c 100644 ---- a/pengine/test10/bug-lf-2106.scores -+++ b/pengine/test10/bug-lf-2106.scores -@@ -96,8 +96,8 @@ native_color: itwiki allocation score on cl-virt-2: 176 - native_color: medomus-cvs allocation score on cl-virt-1: -INFINITY - native_color: medomus-cvs allocation score on cl-virt-2: 226 - native_color: pingd:0 allocation score on cl-virt-1: 1 --native_color: pingd:0 allocation score on cl-virt-2: -INFINITY --native_color: pingd:1 allocation score on cl-virt-1: 0 -+native_color: pingd:0 allocation score on cl-virt-2: 0 -+native_color: pingd:1 allocation score on cl-virt-1: -INFINITY - native_color: pingd:1 allocation score on cl-virt-2: 1 - native_color: servsyslog allocation score on cl-virt-1: -INFINITY - native_color: servsyslog allocation score on cl-virt-2: 176 -diff --git a/pengine/test10/bug-lf-2317.scores b/pengine/test10/bug-lf-2317.scores -index 12b86e7..73ea6ee 100644 ---- a/pengine/test10/bug-lf-2317.scores -+++ b/pengine/test10/bug-lf-2317.scores -@@ -9,7 +9,7 @@ drbd_r0:0 promotion score on ibm2.isg.si: 10000 - drbd_r0:1 promotion score on ibm1.isg.si: 10000 - native_color: HostingIsg allocation score on ibm1.isg.si: 0 - native_color: HostingIsg allocation score on ibm2.isg.si: 10 --native_color: drbd_r0:0 allocation score on ibm1.isg.si: -INFINITY -+native_color: drbd_r0:0 allocation score on ibm1.isg.si: 0 - native_color: drbd_r0:0 allocation score on ibm2.isg.si: 10001 - native_color: drbd_r0:1 allocation score on ibm1.isg.si: 10001 --native_color: drbd_r0:1 allocation score on ibm2.isg.si: 0 -+native_color: drbd_r0:1 allocation score on ibm2.isg.si: -INFINITY -diff --git a/pengine/test10/bug-lf-2358.scores b/pengine/test10/bug-lf-2358.scores -index 2f8ea08..a04b469 100644 ---- a/pengine/test10/bug-lf-2358.scores -+++ b/pengine/test10/bug-lf-2358.scores -@@ -45,10 +45,10 @@ native_color: res_drbd_mysql1:0 allocation score on alice.demo: -INFINITY - native_color: res_drbd_mysql1:0 allocation score on bob.demo: 10001 - native_color: res_drbd_mysql1:1 allocation score on alice.demo: 0 - native_color: res_drbd_mysql1:1 allocation score on bob.demo: -INFINITY --native_color: res_drbd_mysql2:0 allocation score on alice.demo: -INFINITY -+native_color: res_drbd_mysql2:0 allocation score on alice.demo: 0 - native_color: res_drbd_mysql2:0 allocation score on bob.demo: 10001 - native_color: res_drbd_mysql2:1 allocation score on alice.demo: 10001 --native_color: res_drbd_mysql2:1 allocation score on bob.demo: 0 -+native_color: res_drbd_mysql2:1 allocation score on bob.demo: -INFINITY - native_color: res_drbd_nfsexport:0 allocation score on alice.demo: -INFINITY - native_color: res_drbd_nfsexport:0 allocation score on bob.demo: -INFINITY - native_color: res_drbd_nfsexport:1 allocation score on alice.demo: -INFINITY -diff --git a/pengine/test10/bug-lf-2422.scores b/pengine/test10/bug-lf-2422.scores -index 14f1c05..738e423 100644 ---- a/pengine/test10/bug-lf-2422.scores -+++ b/pengine/test10/bug-lf-2422.scores -@@ -109,12 +109,12 @@ group_color: clvm:0 allocation score on qa-suse-3: 0 - group_color: clvm:0 allocation score on qa-suse-4: 0 - group_color: clvm:1 allocation score on qa-suse-1: -INFINITY - group_color: clvm:1 allocation score on qa-suse-2: 0 --group_color: clvm:1 allocation score on qa-suse-3: -INFINITY -+group_color: clvm:1 allocation score on qa-suse-3: 0 - group_color: clvm:1 allocation score on qa-suse-4: 1 - group_color: clvm:2 allocation score on qa-suse-1: -INFINITY - group_color: clvm:2 allocation score on qa-suse-2: 0 - group_color: clvm:2 allocation score on qa-suse-3: 1 --group_color: clvm:2 allocation score on qa-suse-4: 0 -+group_color: clvm:2 allocation score on qa-suse-4: -INFINITY - group_color: clvm:3 allocation score on qa-suse-1: -INFINITY - group_color: clvm:3 allocation score on qa-suse-2: 1 - group_color: clvm:3 allocation score on qa-suse-3: -INFINITY -@@ -125,12 +125,12 @@ group_color: cmirror:0 allocation score on qa-suse-3: 0 - group_color: cmirror:0 allocation score on qa-suse-4: 0 - group_color: cmirror:1 allocation score on qa-suse-1: -INFINITY - group_color: cmirror:1 allocation score on qa-suse-2: 0 --group_color: cmirror:1 allocation score on qa-suse-3: -INFINITY -+group_color: cmirror:1 allocation score on qa-suse-3: 0 - group_color: cmirror:1 allocation score on qa-suse-4: 1 - group_color: cmirror:2 allocation score on qa-suse-1: -INFINITY - group_color: cmirror:2 allocation score on qa-suse-2: 0 - group_color: cmirror:2 allocation score on qa-suse-3: 1 --group_color: cmirror:2 allocation score on qa-suse-4: 0 -+group_color: cmirror:2 allocation score on qa-suse-4: -INFINITY - group_color: cmirror:3 allocation score on qa-suse-1: -INFINITY - group_color: cmirror:3 allocation score on qa-suse-2: 1 - group_color: cmirror:3 allocation score on qa-suse-3: -INFINITY -@@ -141,12 +141,12 @@ group_color: dlm:0 allocation score on qa-suse-3: 0 - group_color: dlm:0 allocation score on qa-suse-4: 0 - group_color: dlm:1 allocation score on qa-suse-1: -INFINITY - group_color: dlm:1 allocation score on qa-suse-2: 0 --group_color: dlm:1 allocation score on qa-suse-3: -INFINITY -+group_color: dlm:1 allocation score on qa-suse-3: 0 - group_color: dlm:1 allocation score on qa-suse-4: 1 - group_color: dlm:2 allocation score on qa-suse-1: -INFINITY - group_color: dlm:2 allocation score on qa-suse-2: 0 - group_color: dlm:2 allocation score on qa-suse-3: 1 --group_color: dlm:2 allocation score on qa-suse-4: 0 -+group_color: dlm:2 allocation score on qa-suse-4: -INFINITY - group_color: dlm:3 allocation score on qa-suse-1: -INFINITY - group_color: dlm:3 allocation score on qa-suse-2: 1 - group_color: dlm:3 allocation score on qa-suse-3: -INFINITY -@@ -157,12 +157,12 @@ group_color: o2cb:0 allocation score on qa-suse-3: 0 - group_color: o2cb:0 allocation score on qa-suse-4: 0 - group_color: o2cb:1 allocation score on qa-suse-1: -INFINITY - group_color: o2cb:1 allocation score on qa-suse-2: 0 --group_color: o2cb:1 allocation score on qa-suse-3: -INFINITY -+group_color: o2cb:1 allocation score on qa-suse-3: 0 - group_color: o2cb:1 allocation score on qa-suse-4: 1 - group_color: o2cb:2 allocation score on qa-suse-1: -INFINITY - group_color: o2cb:2 allocation score on qa-suse-2: 0 - group_color: o2cb:2 allocation score on qa-suse-3: 1 --group_color: o2cb:2 allocation score on qa-suse-4: 0 -+group_color: o2cb:2 allocation score on qa-suse-4: -INFINITY - group_color: o2cb:3 allocation score on qa-suse-1: -INFINITY - group_color: o2cb:3 allocation score on qa-suse-2: 1 - group_color: o2cb:3 allocation score on qa-suse-3: -INFINITY -@@ -173,12 +173,12 @@ group_color: o2stage:0 allocation score on qa-suse-3: 0 - group_color: o2stage:0 allocation score on qa-suse-4: 0 - group_color: o2stage:1 allocation score on qa-suse-1: -INFINITY - group_color: o2stage:1 allocation score on qa-suse-2: 0 --group_color: o2stage:1 allocation score on qa-suse-3: -INFINITY -+group_color: o2stage:1 allocation score on qa-suse-3: 0 - group_color: o2stage:1 allocation score on qa-suse-4: 0 - group_color: o2stage:2 allocation score on qa-suse-1: -INFINITY - group_color: o2stage:2 allocation score on qa-suse-2: 0 - group_color: o2stage:2 allocation score on qa-suse-3: 0 --group_color: o2stage:2 allocation score on qa-suse-4: 0 -+group_color: o2stage:2 allocation score on qa-suse-4: -INFINITY - group_color: o2stage:3 allocation score on qa-suse-1: -INFINITY - group_color: o2stage:3 allocation score on qa-suse-2: 0 - group_color: o2stage:3 allocation score on qa-suse-3: -INFINITY -@@ -221,12 +221,12 @@ native_color: dlm:0 allocation score on qa-suse-3: 0 - native_color: dlm:0 allocation score on qa-suse-4: 0 - native_color: dlm:1 allocation score on qa-suse-1: -INFINITY - native_color: dlm:1 allocation score on qa-suse-2: 0 --native_color: dlm:1 allocation score on qa-suse-3: -INFINITY -+native_color: dlm:1 allocation score on qa-suse-3: 0 - native_color: dlm:1 allocation score on qa-suse-4: 4 - native_color: dlm:2 allocation score on qa-suse-1: -INFINITY - native_color: dlm:2 allocation score on qa-suse-2: 0 - native_color: dlm:2 allocation score on qa-suse-3: 4 --native_color: dlm:2 allocation score on qa-suse-4: 0 -+native_color: dlm:2 allocation score on qa-suse-4: -INFINITY - native_color: dlm:3 allocation score on qa-suse-1: -INFINITY - native_color: dlm:3 allocation score on qa-suse-2: 4 - native_color: dlm:3 allocation score on qa-suse-3: -INFINITY -diff --git a/pengine/test10/bug-lf-2453.scores b/pengine/test10/bug-lf-2453.scores -index 3b044e7..b2ecd0a 100644 ---- a/pengine/test10/bug-lf-2453.scores -+++ b/pengine/test10/bug-lf-2453.scores -@@ -12,8 +12,8 @@ clone_color: apache:0 allocation score on domu2: INFINITY - clone_color: apache:1 allocation score on domu1: INFINITY - clone_color: apache:1 allocation score on domu2: INFINITY - native_color: DummyResource:0 allocation score on domu1: INFINITY --native_color: DummyResource:0 allocation score on domu2: -INFINITY --native_color: DummyResource:1 allocation score on domu1: INFINITY -+native_color: DummyResource:0 allocation score on domu2: INFINITY -+native_color: DummyResource:1 allocation score on domu1: -INFINITY - native_color: DummyResource:1 allocation score on domu2: INFINITY - native_color: PrimitiveResource1 allocation score on domu1: INFINITY - native_color: apache:0 allocation score on domu1: -INFINITY -diff --git a/pengine/test10/bug-lf-2508.scores b/pengine/test10/bug-lf-2508.scores -index e3b3642..3c3ce16 100644 ---- a/pengine/test10/bug-lf-2508.scores -+++ b/pengine/test10/bug-lf-2508.scores -@@ -247,13 +247,13 @@ group_color: grpStonith1:3 allocation score on srv01: -INFINITY - group_color: grpStonith1:3 allocation score on srv02: -INFINITY - group_color: grpStonith1:3 allocation score on srv03: -INFINITY - group_color: grpStonith1:3 allocation score on srv04: -INFINITY --group_color: grpStonith2:0 allocation score on srv01: -INFINITY -+group_color: grpStonith2:0 allocation score on srv01: 0 - group_color: grpStonith2:0 allocation score on srv02: -INFINITY - group_color: grpStonith2:0 allocation score on srv03: 0 - group_color: grpStonith2:0 allocation score on srv04: 0 - group_color: grpStonith2:1 allocation score on srv01: 0 - group_color: grpStonith2:1 allocation score on srv02: -INFINITY --group_color: grpStonith2:1 allocation score on srv03: 0 -+group_color: grpStonith2:1 allocation score on srv03: -INFINITY - group_color: grpStonith2:1 allocation score on srv04: 0 - group_color: grpStonith2:2 allocation score on srv01: -INFINITY - group_color: grpStonith2:2 allocation score on srv02: -INFINITY -@@ -279,7 +279,7 @@ group_color: grpStonith3:3 allocation score on srv01: -INFINITY - group_color: grpStonith3:3 allocation score on srv02: -INFINITY - group_color: grpStonith3:3 allocation score on srv03: -INFINITY - group_color: grpStonith3:3 allocation score on srv04: -INFINITY --group_color: grpStonith4:0 allocation score on srv01: -INFINITY -+group_color: grpStonith4:0 allocation score on srv01: 0 - group_color: grpStonith4:0 allocation score on srv02: -INFINITY - group_color: grpStonith4:0 allocation score on srv03: 0 - group_color: grpStonith4:0 allocation score on srv04: -INFINITY -@@ -289,7 +289,7 @@ group_color: grpStonith4:1 allocation score on srv03: -INFINITY - group_color: grpStonith4:1 allocation score on srv04: -INFINITY - group_color: grpStonith4:2 allocation score on srv01: 0 - group_color: grpStonith4:2 allocation score on srv02: -INFINITY --group_color: grpStonith4:2 allocation score on srv03: 0 -+group_color: grpStonith4:2 allocation score on srv03: -INFINITY - group_color: grpStonith4:2 allocation score on srv04: -INFINITY - group_color: grpStonith4:3 allocation score on srv01: -INFINITY - group_color: grpStonith4:3 allocation score on srv02: -INFINITY -@@ -327,13 +327,13 @@ group_color: prmStonith1-3:3 allocation score on srv01: -INFINITY - group_color: prmStonith1-3:3 allocation score on srv02: -INFINITY - group_color: prmStonith1-3:3 allocation score on srv03: -INFINITY - group_color: prmStonith1-3:3 allocation score on srv04: -INFINITY --group_color: prmStonith2-1:0 allocation score on srv01: -INFINITY -+group_color: prmStonith2-1:0 allocation score on srv01: 0 - group_color: prmStonith2-1:0 allocation score on srv02: -INFINITY - group_color: prmStonith2-1:0 allocation score on srv03: INFINITY - group_color: prmStonith2-1:0 allocation score on srv04: 0 - group_color: prmStonith2-1:1 allocation score on srv01: INFINITY - group_color: prmStonith2-1:1 allocation score on srv02: -INFINITY --group_color: prmStonith2-1:1 allocation score on srv03: 0 -+group_color: prmStonith2-1:1 allocation score on srv03: -INFINITY - group_color: prmStonith2-1:1 allocation score on srv04: 0 - group_color: prmStonith2-1:2 allocation score on srv01: -INFINITY - group_color: prmStonith2-1:2 allocation score on srv02: -INFINITY -@@ -343,13 +343,13 @@ group_color: prmStonith2-1:3 allocation score on srv01: -INFINITY - group_color: prmStonith2-1:3 allocation score on srv02: -INFINITY - group_color: prmStonith2-1:3 allocation score on srv03: -INFINITY - group_color: prmStonith2-1:3 allocation score on srv04: -INFINITY --group_color: prmStonith2-3:0 allocation score on srv01: -INFINITY -+group_color: prmStonith2-3:0 allocation score on srv01: 0 - group_color: prmStonith2-3:0 allocation score on srv02: -INFINITY - group_color: prmStonith2-3:0 allocation score on srv03: INFINITY - group_color: prmStonith2-3:0 allocation score on srv04: 0 - group_color: prmStonith2-3:1 allocation score on srv01: INFINITY - group_color: prmStonith2-3:1 allocation score on srv02: -INFINITY --group_color: prmStonith2-3:1 allocation score on srv03: 0 -+group_color: prmStonith2-3:1 allocation score on srv03: -INFINITY - group_color: prmStonith2-3:1 allocation score on srv04: 0 - group_color: prmStonith2-3:2 allocation score on srv01: -INFINITY - group_color: prmStonith2-3:2 allocation score on srv02: -INFINITY -@@ -391,7 +391,7 @@ group_color: prmStonith3-3:3 allocation score on srv01: -INFINITY - group_color: prmStonith3-3:3 allocation score on srv02: -INFINITY - group_color: prmStonith3-3:3 allocation score on srv03: -INFINITY - group_color: prmStonith3-3:3 allocation score on srv04: -INFINITY --group_color: prmStonith4-1:0 allocation score on srv01: -INFINITY -+group_color: prmStonith4-1:0 allocation score on srv01: 0 - group_color: prmStonith4-1:0 allocation score on srv02: -INFINITY - group_color: prmStonith4-1:0 allocation score on srv03: INFINITY - group_color: prmStonith4-1:0 allocation score on srv04: -INFINITY -@@ -401,13 +401,13 @@ group_color: prmStonith4-1:1 allocation score on srv03: -INFINITY - group_color: prmStonith4-1:1 allocation score on srv04: -INFINITY - group_color: prmStonith4-1:2 allocation score on srv01: INFINITY - group_color: prmStonith4-1:2 allocation score on srv02: -INFINITY --group_color: prmStonith4-1:2 allocation score on srv03: 0 -+group_color: prmStonith4-1:2 allocation score on srv03: -INFINITY - group_color: prmStonith4-1:2 allocation score on srv04: -INFINITY - group_color: prmStonith4-1:3 allocation score on srv01: -INFINITY - group_color: prmStonith4-1:3 allocation score on srv02: -INFINITY - group_color: prmStonith4-1:3 allocation score on srv03: -INFINITY - group_color: prmStonith4-1:3 allocation score on srv04: -INFINITY --group_color: prmStonith4-3:0 allocation score on srv01: -INFINITY -+group_color: prmStonith4-3:0 allocation score on srv01: 0 - group_color: prmStonith4-3:0 allocation score on srv02: -INFINITY - group_color: prmStonith4-3:0 allocation score on srv03: INFINITY - group_color: prmStonith4-3:0 allocation score on srv04: -INFINITY -@@ -417,7 +417,7 @@ group_color: prmStonith4-3:1 allocation score on srv03: -INFINITY - group_color: prmStonith4-3:1 allocation score on srv04: -INFINITY - group_color: prmStonith4-3:2 allocation score on srv01: INFINITY - group_color: prmStonith4-3:2 allocation score on srv02: -INFINITY --group_color: prmStonith4-3:2 allocation score on srv03: 0 -+group_color: prmStonith4-3:2 allocation score on srv03: -INFINITY - group_color: prmStonith4-3:2 allocation score on srv04: -INFINITY - group_color: prmStonith4-3:3 allocation score on srv01: -INFINITY - group_color: prmStonith4-3:3 allocation score on srv02: -INFINITY -@@ -467,13 +467,13 @@ native_color: prmStonith1-3:3 allocation score on srv01: -INFINITY - native_color: prmStonith1-3:3 allocation score on srv02: -INFINITY - native_color: prmStonith1-3:3 allocation score on srv03: -INFINITY - native_color: prmStonith1-3:3 allocation score on srv04: -INFINITY --native_color: prmStonith2-1:0 allocation score on srv01: -INFINITY -+native_color: prmStonith2-1:0 allocation score on srv01: 0 - native_color: prmStonith2-1:0 allocation score on srv02: -INFINITY - native_color: prmStonith2-1:0 allocation score on srv03: INFINITY - native_color: prmStonith2-1:0 allocation score on srv04: 0 - native_color: prmStonith2-1:1 allocation score on srv01: INFINITY - native_color: prmStonith2-1:1 allocation score on srv02: -INFINITY --native_color: prmStonith2-1:1 allocation score on srv03: 0 -+native_color: prmStonith2-1:1 allocation score on srv03: -INFINITY - native_color: prmStonith2-1:1 allocation score on srv04: 0 - native_color: prmStonith2-1:2 allocation score on srv01: -INFINITY - native_color: prmStonith2-1:2 allocation score on srv02: -INFINITY -@@ -531,7 +531,7 @@ native_color: prmStonith3-3:3 allocation score on srv01: -INFINITY - native_color: prmStonith3-3:3 allocation score on srv02: -INFINITY - native_color: prmStonith3-3:3 allocation score on srv03: -INFINITY - native_color: prmStonith3-3:3 allocation score on srv04: -INFINITY --native_color: prmStonith4-1:0 allocation score on srv01: -INFINITY -+native_color: prmStonith4-1:0 allocation score on srv01: 0 - native_color: prmStonith4-1:0 allocation score on srv02: -INFINITY - native_color: prmStonith4-1:0 allocation score on srv03: INFINITY - native_color: prmStonith4-1:0 allocation score on srv04: -INFINITY -@@ -541,7 +541,7 @@ native_color: prmStonith4-1:1 allocation score on srv03: -INFINITY - native_color: prmStonith4-1:1 allocation score on srv04: -INFINITY - native_color: prmStonith4-1:2 allocation score on srv01: INFINITY - native_color: prmStonith4-1:2 allocation score on srv02: -INFINITY --native_color: prmStonith4-1:2 allocation score on srv03: 0 -+native_color: prmStonith4-1:2 allocation score on srv03: -INFINITY - native_color: prmStonith4-1:2 allocation score on srv04: -INFINITY - native_color: prmStonith4-1:3 allocation score on srv01: -INFINITY - native_color: prmStonith4-1:3 allocation score on srv02: -INFINITY -diff --git a/pengine/test10/bug-pm-11.scores b/pengine/test10/bug-pm-11.scores -index 4a150b0..7809a55 100644 ---- a/pengine/test10/bug-pm-11.scores -+++ b/pengine/test10/bug-pm-11.scores -@@ -15,22 +15,22 @@ clone_color: stateful-2:1 allocation score on node-a: 0 - clone_color: stateful-2:1 allocation score on node-b: 0 - group:0 promotion score on node-b: 49 - group:1 promotion score on node-a: 99 --group_color: group:0 allocation score on node-a: -INFINITY -+group_color: group:0 allocation score on node-a: 0 - group_color: group:0 allocation score on node-b: 0 - group_color: group:1 allocation score on node-a: 0 --group_color: group:1 allocation score on node-b: 0 --group_color: stateful-1:0 allocation score on node-a: -INFINITY -+group_color: group:1 allocation score on node-b: -INFINITY -+group_color: stateful-1:0 allocation score on node-a: 0 - group_color: stateful-1:0 allocation score on node-b: 1 - group_color: stateful-1:1 allocation score on node-a: 1 --group_color: stateful-1:1 allocation score on node-b: 0 --group_color: stateful-2:0 allocation score on node-a: -INFINITY -+group_color: stateful-1:1 allocation score on node-b: -INFINITY -+group_color: stateful-2:0 allocation score on node-a: 0 - group_color: stateful-2:0 allocation score on node-b: 0 - group_color: stateful-2:1 allocation score on node-a: 0 --group_color: stateful-2:1 allocation score on node-b: 0 --native_color: stateful-1:0 allocation score on node-a: -INFINITY -+group_color: stateful-2:1 allocation score on node-b: -INFINITY -+native_color: stateful-1:0 allocation score on node-a: 0 - native_color: stateful-1:0 allocation score on node-b: 1 - native_color: stateful-1:1 allocation score on node-a: 1 --native_color: stateful-1:1 allocation score on node-b: 0 -+native_color: stateful-1:1 allocation score on node-b: -INFINITY - native_color: stateful-2:0 allocation score on node-a: -INFINITY - native_color: stateful-2:0 allocation score on node-b: 0 - native_color: stateful-2:1 allocation score on node-a: 0 -diff --git a/pengine/test10/bug-pm-12.scores b/pengine/test10/bug-pm-12.scores -index 0713859..db773a4 100644 ---- a/pengine/test10/bug-pm-12.scores -+++ b/pengine/test10/bug-pm-12.scores -@@ -15,22 +15,22 @@ clone_color: stateful-2:1 allocation score on node-a: 1 - clone_color: stateful-2:1 allocation score on node-b: 0 - group:0 promotion score on node-b: 49 - group:1 promotion score on node-a: 99 --group_color: group:0 allocation score on node-a: -INFINITY -+group_color: group:0 allocation score on node-a: 0 - group_color: group:0 allocation score on node-b: 0 - group_color: group:1 allocation score on node-a: 0 --group_color: group:1 allocation score on node-b: 0 --group_color: stateful-1:0 allocation score on node-a: -INFINITY -+group_color: group:1 allocation score on node-b: -INFINITY -+group_color: stateful-1:0 allocation score on node-a: 0 - group_color: stateful-1:0 allocation score on node-b: 1 - group_color: stateful-1:1 allocation score on node-a: 1 --group_color: stateful-1:1 allocation score on node-b: 0 --group_color: stateful-2:0 allocation score on node-a: -INFINITY -+group_color: stateful-1:1 allocation score on node-b: -INFINITY -+group_color: stateful-2:0 allocation score on node-a: 0 - group_color: stateful-2:0 allocation score on node-b: 1 - group_color: stateful-2:1 allocation score on node-a: 1 --group_color: stateful-2:1 allocation score on node-b: 0 --native_color: stateful-1:0 allocation score on node-a: -INFINITY -+group_color: stateful-2:1 allocation score on node-b: -INFINITY -+native_color: stateful-1:0 allocation score on node-a: 0 - native_color: stateful-1:0 allocation score on node-b: 2 - native_color: stateful-1:1 allocation score on node-a: 2 --native_color: stateful-1:1 allocation score on node-b: 0 -+native_color: stateful-1:1 allocation score on node-b: -INFINITY - native_color: stateful-2:0 allocation score on node-a: -INFINITY - native_color: stateful-2:0 allocation score on node-b: 1 - native_color: stateful-2:1 allocation score on node-a: 1 -diff --git a/pengine/test10/bug-rh-1097457.scores b/pengine/test10/bug-rh-1097457.scores -index c93b195..7729421 100644 ---- a/pengine/test10/bug-rh-1097457.scores -+++ b/pengine/test10/bug-rh-1097457.scores -@@ -137,18 +137,18 @@ native_color: FAKE6-IP allocation score on lamaVM3: -INFINITY - native_color: FAKE6:0 allocation score on lama2: -INFINITY - native_color: FAKE6:0 allocation score on lama3: -INFINITY - native_color: FAKE6:0 allocation score on lamaVM1: 0 --native_color: FAKE6:0 allocation score on lamaVM2: -INFINITY -+native_color: FAKE6:0 allocation score on lamaVM2: 0 - native_color: FAKE6:0 allocation score on lamaVM3: 1 - native_color: FAKE6:1 allocation score on lama2: -INFINITY - native_color: FAKE6:1 allocation score on lama3: -INFINITY - native_color: FAKE6:1 allocation score on lamaVM1: 1 --native_color: FAKE6:1 allocation score on lamaVM2: -INFINITY -+native_color: FAKE6:1 allocation score on lamaVM2: 0 - native_color: FAKE6:1 allocation score on lamaVM3: -INFINITY - native_color: FAKE6:2 allocation score on lama2: -INFINITY - native_color: FAKE6:2 allocation score on lama3: -INFINITY --native_color: FAKE6:2 allocation score on lamaVM1: 0 -+native_color: FAKE6:2 allocation score on lamaVM1: -INFINITY - native_color: FAKE6:2 allocation score on lamaVM2: 1 --native_color: FAKE6:2 allocation score on lamaVM3: 0 -+native_color: FAKE6:2 allocation score on lamaVM3: -INFINITY - native_color: FSlun1 allocation score on lama2: 0 - native_color: FSlun1 allocation score on lama3: 0 - native_color: FSlun1 allocation score on lamaVM1: INFINITY -diff --git a/pengine/test10/clone-interleave-2.scores b/pengine/test10/clone-interleave-2.scores -index aba18b3..1eb341c 100644 ---- a/pengine/test10/clone-interleave-2.scores -+++ b/pengine/test10/clone-interleave-2.scores -@@ -36,12 +36,12 @@ clone_color: clone-3 allocation score on pcmk-1: 0 - clone_color: clone-3 allocation score on pcmk-2: 0 - clone_color: clone-3 allocation score on pcmk-3: 0 - native_color: child-1:0 allocation score on pcmk-1: 1 --native_color: child-1:0 allocation score on pcmk-2: -INFINITY --native_color: child-1:0 allocation score on pcmk-3: -INFINITY --native_color: child-1:1 allocation score on pcmk-1: 0 -+native_color: child-1:0 allocation score on pcmk-2: 0 -+native_color: child-1:0 allocation score on pcmk-3: 0 -+native_color: child-1:1 allocation score on pcmk-1: -INFINITY - native_color: child-1:1 allocation score on pcmk-2: 1 - native_color: child-1:1 allocation score on pcmk-3: 0 --native_color: child-1:2 allocation score on pcmk-1: 0 -+native_color: child-1:2 allocation score on pcmk-1: -INFINITY - native_color: child-1:2 allocation score on pcmk-2: -INFINITY - native_color: child-1:2 allocation score on pcmk-3: 1 - native_color: child-2:0 allocation score on pcmk-1: -INFINITY -diff --git a/pengine/test10/clone-interleave-3.scores b/pengine/test10/clone-interleave-3.scores -index 951cfdd..689a176 100644 ---- a/pengine/test10/clone-interleave-3.scores -+++ b/pengine/test10/clone-interleave-3.scores -@@ -36,12 +36,12 @@ clone_color: clone-3 allocation score on pcmk-1: 0 - clone_color: clone-3 allocation score on pcmk-2: 0 - clone_color: clone-3 allocation score on pcmk-3: 0 - native_color: child-1:0 allocation score on pcmk-1: 1 --native_color: child-1:0 allocation score on pcmk-2: -INFINITY --native_color: child-1:0 allocation score on pcmk-3: -INFINITY --native_color: child-1:1 allocation score on pcmk-1: 0 -+native_color: child-1:0 allocation score on pcmk-2: 0 -+native_color: child-1:0 allocation score on pcmk-3: 0 -+native_color: child-1:1 allocation score on pcmk-1: -INFINITY - native_color: child-1:1 allocation score on pcmk-2: 1 - native_color: child-1:1 allocation score on pcmk-3: 0 --native_color: child-1:2 allocation score on pcmk-1: 0 -+native_color: child-1:2 allocation score on pcmk-1: -INFINITY - native_color: child-1:2 allocation score on pcmk-2: -INFINITY - native_color: child-1:2 allocation score on pcmk-3: 1 - native_color: child-2:0 allocation score on pcmk-1: 1 -@@ -54,12 +54,12 @@ native_color: child-2:2 allocation score on pcmk-1: 0 - native_color: child-2:2 allocation score on pcmk-2: -INFINITY - native_color: child-2:2 allocation score on pcmk-3: 1 - native_color: child-3:0 allocation score on pcmk-1: 1 --native_color: child-3:0 allocation score on pcmk-2: -INFINITY --native_color: child-3:0 allocation score on pcmk-3: -INFINITY --native_color: child-3:1 allocation score on pcmk-1: 0 -+native_color: child-3:0 allocation score on pcmk-2: 0 -+native_color: child-3:0 allocation score on pcmk-3: 0 -+native_color: child-3:1 allocation score on pcmk-1: -INFINITY - native_color: child-3:1 allocation score on pcmk-2: 1 - native_color: child-3:1 allocation score on pcmk-3: 0 --native_color: child-3:2 allocation score on pcmk-1: 0 -+native_color: child-3:2 allocation score on pcmk-1: -INFINITY - native_color: child-3:2 allocation score on pcmk-2: -INFINITY - native_color: child-3:2 allocation score on pcmk-3: 1 - native_color: dummy allocation score on pcmk-1: 0 -diff --git a/pengine/test10/clone-order-16instances.scores b/pengine/test10/clone-order-16instances.scores -index f5dadd7..410bcf7 100644 ---- a/pengine/test10/clone-order-16instances.scores -+++ b/pengine/test10/clone-order-16instances.scores -@@ -801,7 +801,7 @@ native_color: clvmd:9 allocation score on virt-033.cluster-qe.lab.eng.brq.redhat - native_color: clvmd:9 allocation score on virt-034.cluster-qe.lab.eng.brq.redhat.com: -INFINITY - native_color: dlm:0 allocation score on virt-009.cluster-qe.lab.eng.brq.redhat.com: 0 - native_color: dlm:0 allocation score on virt-010.cluster-qe.lab.eng.brq.redhat.com: 1 --native_color: dlm:0 allocation score on virt-012.cluster-qe.lab.eng.brq.redhat.com: -INFINITY -+native_color: dlm:0 allocation score on virt-012.cluster-qe.lab.eng.brq.redhat.com: 0 - native_color: dlm:0 allocation score on virt-013.cluster-qe.lab.eng.brq.redhat.com: 0 - native_color: dlm:0 allocation score on virt-014.cluster-qe.lab.eng.brq.redhat.com: 0 - native_color: dlm:0 allocation score on virt-015.cluster-qe.lab.eng.brq.redhat.com: 0 -@@ -816,7 +816,7 @@ native_color: dlm:0 allocation score on virt-032.cluster-qe.lab.eng.brq.redhat.c - native_color: dlm:0 allocation score on virt-033.cluster-qe.lab.eng.brq.redhat.com: 0 - native_color: dlm:0 allocation score on virt-034.cluster-qe.lab.eng.brq.redhat.com: 0 - native_color: dlm:1 allocation score on virt-009.cluster-qe.lab.eng.brq.redhat.com: 0 --native_color: dlm:1 allocation score on virt-010.cluster-qe.lab.eng.brq.redhat.com: 0 -+native_color: dlm:1 allocation score on virt-010.cluster-qe.lab.eng.brq.redhat.com: -INFINITY - native_color: dlm:1 allocation score on virt-012.cluster-qe.lab.eng.brq.redhat.com: 1 - native_color: dlm:1 allocation score on virt-013.cluster-qe.lab.eng.brq.redhat.com: 0 - native_color: dlm:1 allocation score on virt-014.cluster-qe.lab.eng.brq.redhat.com: 0 -diff --git a/pengine/test10/clone-require-all-1.scores b/pengine/test10/clone-require-all-1.scores -index fe3ce21..9601a10 100644 ---- a/pengine/test10/clone-require-all-1.scores -+++ b/pengine/test10/clone-require-all-1.scores -@@ -40,10 +40,10 @@ clone_color: B:3 allocation score on rhel7-auto2: -INFINITY - clone_color: B:3 allocation score on rhel7-auto3: 0 - clone_color: B:3 allocation score on rhel7-auto4: 0 - native_color: A:0 allocation score on rhel7-auto1: 1 --native_color: A:0 allocation score on rhel7-auto2: -INFINITY -+native_color: A:0 allocation score on rhel7-auto2: 0 - native_color: A:0 allocation score on rhel7-auto3: -INFINITY - native_color: A:0 allocation score on rhel7-auto4: -INFINITY --native_color: A:1 allocation score on rhel7-auto1: 0 -+native_color: A:1 allocation score on rhel7-auto1: -INFINITY - native_color: A:1 allocation score on rhel7-auto2: 1 - native_color: A:1 allocation score on rhel7-auto3: -INFINITY - native_color: A:1 allocation score on rhel7-auto4: -INFINITY -diff --git a/pengine/test10/clone-require-all-3.scores b/pengine/test10/clone-require-all-3.scores -index 814a972..f1e739a 100644 ---- a/pengine/test10/clone-require-all-3.scores -+++ b/pengine/test10/clone-require-all-3.scores -@@ -58,10 +58,10 @@ native_color: A:3 allocation score on rhel7-auto4: -INFINITY - native_color: B:0 allocation score on rhel7-auto1: -INFINITY - native_color: B:0 allocation score on rhel7-auto2: -INFINITY - native_color: B:0 allocation score on rhel7-auto3: 1 --native_color: B:0 allocation score on rhel7-auto4: -INFINITY -+native_color: B:0 allocation score on rhel7-auto4: 0 - native_color: B:1 allocation score on rhel7-auto1: -INFINITY - native_color: B:1 allocation score on rhel7-auto2: -INFINITY --native_color: B:1 allocation score on rhel7-auto3: 0 -+native_color: B:1 allocation score on rhel7-auto3: -INFINITY - native_color: B:1 allocation score on rhel7-auto4: 1 - native_color: B:2 allocation score on rhel7-auto1: -INFINITY - native_color: B:2 allocation score on rhel7-auto2: -INFINITY -diff --git a/pengine/test10/clone-require-all-5.scores b/pengine/test10/clone-require-all-5.scores -index cca6739..1123d60 100644 ---- a/pengine/test10/clone-require-all-5.scores -+++ b/pengine/test10/clone-require-all-5.scores -@@ -40,10 +40,10 @@ clone_color: B:3 allocation score on rhel7-auto2: -INFINITY - clone_color: B:3 allocation score on rhel7-auto3: 0 - clone_color: B:3 allocation score on rhel7-auto4: 0 - native_color: A:0 allocation score on rhel7-auto1: 1 --native_color: A:0 allocation score on rhel7-auto2: -INFINITY -+native_color: A:0 allocation score on rhel7-auto2: 0 - native_color: A:0 allocation score on rhel7-auto3: 0 - native_color: A:0 allocation score on rhel7-auto4: -INFINITY --native_color: A:1 allocation score on rhel7-auto1: 0 -+native_color: A:1 allocation score on rhel7-auto1: -INFINITY - native_color: A:1 allocation score on rhel7-auto2: 1 - native_color: A:1 allocation score on rhel7-auto3: 0 - native_color: A:1 allocation score on rhel7-auto4: -INFINITY -diff --git a/pengine/test10/clone-require-all-6.scores b/pengine/test10/clone-require-all-6.scores -index 4e8ee5a..f293573 100644 ---- a/pengine/test10/clone-require-all-6.scores -+++ b/pengine/test10/clone-require-all-6.scores -@@ -57,13 +57,13 @@ native_color: A:3 allocation score on rhel7-auto3: -INFINITY - native_color: A:3 allocation score on rhel7-auto4: -INFINITY - native_color: B:0 allocation score on rhel7-auto1: 1 - native_color: B:0 allocation score on rhel7-auto2: -INFINITY --native_color: B:0 allocation score on rhel7-auto3: -INFINITY --native_color: B:0 allocation score on rhel7-auto4: -INFINITY --native_color: B:1 allocation score on rhel7-auto1: 0 -+native_color: B:0 allocation score on rhel7-auto3: 0 -+native_color: B:0 allocation score on rhel7-auto4: 0 -+native_color: B:1 allocation score on rhel7-auto1: -INFINITY - native_color: B:1 allocation score on rhel7-auto2: -INFINITY - native_color: B:1 allocation score on rhel7-auto3: 1 - native_color: B:1 allocation score on rhel7-auto4: 0 --native_color: B:2 allocation score on rhel7-auto1: 0 -+native_color: B:2 allocation score on rhel7-auto1: -INFINITY - native_color: B:2 allocation score on rhel7-auto2: -INFINITY - native_color: B:2 allocation score on rhel7-auto3: -INFINITY - native_color: B:2 allocation score on rhel7-auto4: 1 -diff --git a/pengine/test10/clone-require-all-no-interleave-3.scores b/pengine/test10/clone-require-all-no-interleave-3.scores -index 70dd2d1..76e8db6 100644 ---- a/pengine/test10/clone-require-all-no-interleave-3.scores -+++ b/pengine/test10/clone-require-all-no-interleave-3.scores -@@ -96,10 +96,10 @@ native_color: C:0 allocation score on rhel7-auto2: -INFINITY - native_color: C:0 allocation score on rhel7-auto3: 0 - native_color: C:0 allocation score on rhel7-auto4: -INFINITY - native_color: C:1 allocation score on rhel7-auto1: 1 --native_color: C:1 allocation score on rhel7-auto2: -INFINITY -+native_color: C:1 allocation score on rhel7-auto2: 0 - native_color: C:1 allocation score on rhel7-auto3: 0 - native_color: C:1 allocation score on rhel7-auto4: -INFINITY --native_color: C:2 allocation score on rhel7-auto1: 0 -+native_color: C:2 allocation score on rhel7-auto1: -INFINITY - native_color: C:2 allocation score on rhel7-auto2: 1 - native_color: C:2 allocation score on rhel7-auto3: 0 - native_color: C:2 allocation score on rhel7-auto4: -INFINITY -diff --git a/pengine/test10/clone_min_interleave_stop_one.scores b/pengine/test10/clone_min_interleave_stop_one.scores -index 1a98230..014bbad 100644 ---- a/pengine/test10/clone_min_interleave_stop_one.scores -+++ b/pengine/test10/clone_min_interleave_stop_one.scores -@@ -39,27 +39,27 @@ native_color: FAKE1:0 allocation score on c7auto1: -INFINITY - native_color: FAKE1:0 allocation score on c7auto2: -INFINITY - native_color: FAKE1:0 allocation score on c7auto3: -INFINITY - native_color: FAKE1:1 allocation score on c7auto1: 1 --native_color: FAKE1:1 allocation score on c7auto2: -INFINITY -+native_color: FAKE1:1 allocation score on c7auto2: 0 - native_color: FAKE1:1 allocation score on c7auto3: -INFINITY --native_color: FAKE1:2 allocation score on c7auto1: 0 -+native_color: FAKE1:2 allocation score on c7auto1: -INFINITY - native_color: FAKE1:2 allocation score on c7auto2: 1 - native_color: FAKE1:2 allocation score on c7auto3: -INFINITY - native_color: FAKE2:0 allocation score on c7auto1: 0 - native_color: FAKE2:0 allocation score on c7auto2: 0 - native_color: FAKE2:0 allocation score on c7auto3: 1 - native_color: FAKE2:1 allocation score on c7auto1: 1 --native_color: FAKE2:1 allocation score on c7auto2: -INFINITY -+native_color: FAKE2:1 allocation score on c7auto2: 0 - native_color: FAKE2:1 allocation score on c7auto3: -INFINITY --native_color: FAKE2:2 allocation score on c7auto1: 0 -+native_color: FAKE2:2 allocation score on c7auto1: -INFINITY - native_color: FAKE2:2 allocation score on c7auto2: 1 - native_color: FAKE2:2 allocation score on c7auto3: -INFINITY - native_color: FAKE3:0 allocation score on c7auto1: 0 - native_color: FAKE3:0 allocation score on c7auto2: 0 - native_color: FAKE3:0 allocation score on c7auto3: 1 - native_color: FAKE3:1 allocation score on c7auto1: 1 --native_color: FAKE3:1 allocation score on c7auto2: -INFINITY -+native_color: FAKE3:1 allocation score on c7auto2: 0 - native_color: FAKE3:1 allocation score on c7auto3: -INFINITY --native_color: FAKE3:2 allocation score on c7auto1: 0 -+native_color: FAKE3:2 allocation score on c7auto1: -INFINITY - native_color: FAKE3:2 allocation score on c7auto2: 1 - native_color: FAKE3:2 allocation score on c7auto3: -INFINITY - native_color: shooter allocation score on c7auto1: 0 -diff --git a/pengine/test10/clone_min_interleave_stop_two.scores b/pengine/test10/clone_min_interleave_stop_two.scores -index ee7df92..f00467c 100644 ---- a/pengine/test10/clone_min_interleave_stop_two.scores -+++ b/pengine/test10/clone_min_interleave_stop_two.scores -@@ -45,23 +45,23 @@ native_color: FAKE1:2 allocation score on c7auto1: -INFINITY - native_color: FAKE1:2 allocation score on c7auto2: -INFINITY - native_color: FAKE1:2 allocation score on c7auto3: -INFINITY - native_color: FAKE2:0 allocation score on c7auto1: 0 --native_color: FAKE2:0 allocation score on c7auto2: -INFINITY -+native_color: FAKE2:0 allocation score on c7auto2: 0 - native_color: FAKE2:0 allocation score on c7auto3: 1 - native_color: FAKE2:1 allocation score on c7auto1: 1 --native_color: FAKE2:1 allocation score on c7auto2: -INFINITY -+native_color: FAKE2:1 allocation score on c7auto2: 0 - native_color: FAKE2:1 allocation score on c7auto3: -INFINITY --native_color: FAKE2:2 allocation score on c7auto1: 0 -+native_color: FAKE2:2 allocation score on c7auto1: -INFINITY - native_color: FAKE2:2 allocation score on c7auto2: 1 --native_color: FAKE2:2 allocation score on c7auto3: 0 -+native_color: FAKE2:2 allocation score on c7auto3: -INFINITY - native_color: FAKE3:0 allocation score on c7auto1: 0 --native_color: FAKE3:0 allocation score on c7auto2: -INFINITY -+native_color: FAKE3:0 allocation score on c7auto2: 0 - native_color: FAKE3:0 allocation score on c7auto3: 1 - native_color: FAKE3:1 allocation score on c7auto1: 1 --native_color: FAKE3:1 allocation score on c7auto2: -INFINITY -+native_color: FAKE3:1 allocation score on c7auto2: 0 - native_color: FAKE3:1 allocation score on c7auto3: -INFINITY --native_color: FAKE3:2 allocation score on c7auto1: 0 -+native_color: FAKE3:2 allocation score on c7auto1: -INFINITY - native_color: FAKE3:2 allocation score on c7auto2: 1 --native_color: FAKE3:2 allocation score on c7auto3: 0 -+native_color: FAKE3:2 allocation score on c7auto3: -INFINITY - native_color: shooter allocation score on c7auto1: 0 - native_color: shooter allocation score on c7auto2: 0 - native_color: shooter allocation score on c7auto3: 0 -diff --git a/pengine/test10/clone_min_stop_one.scores b/pengine/test10/clone_min_stop_one.scores -index 1f28932..3621ed8 100644 ---- a/pengine/test10/clone_min_stop_one.scores -+++ b/pengine/test10/clone_min_stop_one.scores -@@ -25,13 +25,13 @@ native_color: FAKE allocation score on c7auto3: -INFINITY - native_color: FAKE allocation score on c7auto4: 0 - native_color: FAKECLONE:0 allocation score on c7auto1: 1 - native_color: FAKECLONE:0 allocation score on c7auto2: -INFINITY --native_color: FAKECLONE:0 allocation score on c7auto3: -INFINITY -+native_color: FAKECLONE:0 allocation score on c7auto3: 0 - native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY - native_color: FAKECLONE:1 allocation score on c7auto1: -INFINITY - native_color: FAKECLONE:1 allocation score on c7auto2: -INFINITY - native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY - native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY --native_color: FAKECLONE:2 allocation score on c7auto1: 0 -+native_color: FAKECLONE:2 allocation score on c7auto1: -INFINITY - native_color: FAKECLONE:2 allocation score on c7auto2: -INFINITY - native_color: FAKECLONE:2 allocation score on c7auto3: 1 - native_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY -diff --git a/pengine/test10/cloned_stop_one.scores b/pengine/test10/cloned_stop_one.scores -index 6d66638..35db5ca 100644 ---- a/pengine/test10/cloned_stop_one.scores -+++ b/pengine/test10/cloned_stop_one.scores -@@ -56,10 +56,10 @@ native_color: FAKECLONE2:3 allocation score on c7auto2: -INFINITY - native_color: FAKECLONE2:3 allocation score on c7auto3: -INFINITY - native_color: FAKECLONE2:3 allocation score on c7auto4: -INFINITY - native_color: FAKECLONE:0 allocation score on c7auto1: 1 --native_color: FAKECLONE:0 allocation score on c7auto2: -INFINITY -+native_color: FAKECLONE:0 allocation score on c7auto2: 0 - native_color: FAKECLONE:0 allocation score on c7auto3: -INFINITY - native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY --native_color: FAKECLONE:1 allocation score on c7auto1: 0 -+native_color: FAKECLONE:1 allocation score on c7auto1: -INFINITY - native_color: FAKECLONE:1 allocation score on c7auto2: 1 - native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY - native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY -diff --git a/pengine/test10/colo_slave_w_native.scores b/pengine/test10/colo_slave_w_native.scores -index e91cb9a..1cb0071 100644 ---- a/pengine/test10/colo_slave_w_native.scores -+++ b/pengine/test10/colo_slave_w_native.scores -@@ -9,7 +9,7 @@ clone_color: MS_RSC_NATIVE:1 allocation score on node1: 6 - clone_color: MS_RSC_NATIVE:1 allocation score on node2: 0 - native_color: A allocation score on node1: 0 - native_color: A allocation score on node2: 5000 --native_color: MS_RSC_NATIVE:0 allocation score on node1: -INFINITY -+native_color: MS_RSC_NATIVE:0 allocation score on node1: 0 - native_color: MS_RSC_NATIVE:0 allocation score on node2: 11 - native_color: MS_RSC_NATIVE:1 allocation score on node1: 6 --native_color: MS_RSC_NATIVE:1 allocation score on node2: 0 -+native_color: MS_RSC_NATIVE:1 allocation score on node2: -INFINITY -diff --git a/pengine/test10/coloc-clone-stays-active.scores b/pengine/test10/coloc-clone-stays-active.scores -index adda9a0..8eb0ae7 100644 ---- a/pengine/test10/coloc-clone-stays-active.scores -+++ b/pengine/test10/coloc-clone-stays-active.scores -@@ -231,10 +231,10 @@ group_color: iscsi-pool-0-target-all allocation score on s01-0: 1000 - group_color: iscsi-pool-0-target-all allocation score on s01-1: 0 - group_color: iscsi-pool-0-vips allocation score on s01-0: 0 - group_color: iscsi-pool-0-vips allocation score on s01-1: 0 --group_color: iscsi-pool-0-vips-fw:0 allocation score on s01-0: -INFINITY -+group_color: iscsi-pool-0-vips-fw:0 allocation score on s01-0: 0 - group_color: iscsi-pool-0-vips-fw:0 allocation score on s01-1: 2000 - group_color: iscsi-pool-0-vips-fw:1 allocation score on s01-0: 2000 --group_color: iscsi-pool-0-vips-fw:1 allocation score on s01-1: 0 -+group_color: iscsi-pool-0-vips-fw:1 allocation score on s01-1: -INFINITY - group_color: iscsi-pool-1-lun-1 allocation score on s01-0: 0 - group_color: iscsi-pool-1-lun-1 allocation score on s01-1: 0 - group_color: iscsi-pool-1-target allocation score on s01-0: 0 -@@ -243,10 +243,10 @@ group_color: iscsi-pool-1-target-all allocation score on s01-0: 0 - group_color: iscsi-pool-1-target-all allocation score on s01-1: 1000 - group_color: iscsi-pool-1-vips allocation score on s01-0: 0 - group_color: iscsi-pool-1-vips allocation score on s01-1: 0 --group_color: iscsi-pool-1-vips-fw:0 allocation score on s01-0: -INFINITY -+group_color: iscsi-pool-1-vips-fw:0 allocation score on s01-0: 0 - group_color: iscsi-pool-1-vips-fw:0 allocation score on s01-1: 2000 - group_color: iscsi-pool-1-vips-fw:1 allocation score on s01-0: 2000 --group_color: iscsi-pool-1-vips-fw:1 allocation score on s01-1: 0 -+group_color: iscsi-pool-1-vips-fw:1 allocation score on s01-1: -INFINITY - group_color: iscsi-vds-dom0-stateless-0-lun-1 allocation score on s01-0: 0 - group_color: iscsi-vds-dom0-stateless-0-lun-1 allocation score on s01-1: 0 - group_color: iscsi-vds-dom0-stateless-0-target allocation score on s01-0: 0 -@@ -255,20 +255,20 @@ group_color: iscsi-vds-dom0-stateless-0-target-all allocation score on s01-0: 0 - group_color: iscsi-vds-dom0-stateless-0-target-all allocation score on s01-1: 0 - group_color: iscsi-vds-dom0-stateless-0-vips allocation score on s01-0: 0 - group_color: iscsi-vds-dom0-stateless-0-vips allocation score on s01-1: 0 --group_color: iscsi-vds-dom0-stateless-0-vips-fw:0 allocation score on s01-0: -INFINITY -+group_color: iscsi-vds-dom0-stateless-0-vips-fw:0 allocation score on s01-0: 0 - group_color: iscsi-vds-dom0-stateless-0-vips-fw:0 allocation score on s01-1: 2000 - group_color: iscsi-vds-dom0-stateless-0-vips-fw:1 allocation score on s01-0: 2000 --group_color: iscsi-vds-dom0-stateless-0-vips-fw:1 allocation score on s01-1: 0 -+group_color: iscsi-vds-dom0-stateless-0-vips-fw:1 allocation score on s01-1: -INFINITY - group_color: nginx allocation score on s01-0: 0 - group_color: nginx allocation score on s01-1: 0 --group_color: ospf-routing:0 allocation score on s01-0: -INFINITY -+group_color: ospf-routing:0 allocation score on s01-0: 0 - group_color: ospf-routing:0 allocation score on s01-1: 0 - group_color: ospf-routing:1 allocation score on s01-0: 0 --group_color: ospf-routing:1 allocation score on s01-1: 0 --group_color: ospfd:0 allocation score on s01-0: -INFINITY -+group_color: ospf-routing:1 allocation score on s01-1: -INFINITY -+group_color: ospfd:0 allocation score on s01-0: 0 - group_color: ospfd:0 allocation score on s01-1: 1 - group_color: ospfd:1 allocation score on s01-0: 1 --group_color: ospfd:1 allocation score on s01-1: 0 -+group_color: ospfd:1 allocation score on s01-1: -INFINITY - group_color: syslog-ng allocation score on s01-0: 0 - group_color: syslog-ng allocation score on s01-1: 0 - group_color: syslog-server allocation score on s01-0: 0 -@@ -279,16 +279,16 @@ group_color: tftpd allocation score on s01-0: 0 - group_color: tftpd allocation score on s01-1: 0 - group_color: vip-227 allocation score on s01-0: 0 - group_color: vip-227 allocation score on s01-1: 0 --group_color: vip-227-fw:0 allocation score on s01-0: -INFINITY -+group_color: vip-227-fw:0 allocation score on s01-0: 0 - group_color: vip-227-fw:0 allocation score on s01-1: 1 - group_color: vip-227-fw:1 allocation score on s01-0: 1 --group_color: vip-227-fw:1 allocation score on s01-1: 0 -+group_color: vip-227-fw:1 allocation score on s01-1: -INFINITY - group_color: vip-228 allocation score on s01-0: 0 - group_color: vip-228 allocation score on s01-1: 0 --group_color: vip-228-fw:0 allocation score on s01-0: -INFINITY -+group_color: vip-228-fw:0 allocation score on s01-0: 0 - group_color: vip-228-fw:0 allocation score on s01-1: 1 - group_color: vip-228-fw:1 allocation score on s01-0: 1 --group_color: vip-228-fw:1 allocation score on s01-1: 0 -+group_color: vip-228-fw:1 allocation score on s01-1: -INFINITY - group_color: vip-232 allocation score on s01-0: 0 - group_color: vip-232 allocation score on s01-1: 0 - group_color: vip-233 allocation score on s01-0: 0 -@@ -297,32 +297,32 @@ group_color: vip-234 allocation score on s01-0: 0 - group_color: vip-234 allocation score on s01-1: 0 - group_color: vip-235 allocation score on s01-0: 0 - group_color: vip-235 allocation score on s01-1: 0 --group_color: vip-235-fw:0 allocation score on s01-0: -INFINITY -+group_color: vip-235-fw:0 allocation score on s01-0: 0 - group_color: vip-235-fw:0 allocation score on s01-1: 1 - group_color: vip-235-fw:1 allocation score on s01-0: 1 --group_color: vip-235-fw:1 allocation score on s01-1: 0 -+group_color: vip-235-fw:1 allocation score on s01-1: -INFINITY - group_color: vip-236 allocation score on s01-0: 0 - group_color: vip-236 allocation score on s01-1: 0 --group_color: vip-236-fw:0 allocation score on s01-0: -INFINITY -+group_color: vip-236-fw:0 allocation score on s01-0: 0 - group_color: vip-236-fw:0 allocation score on s01-1: 1 - group_color: vip-236-fw:1 allocation score on s01-0: 1 --group_color: vip-236-fw:1 allocation score on s01-1: 0 -+group_color: vip-236-fw:1 allocation score on s01-1: -INFINITY - group_color: vip-237 allocation score on s01-0: 0 - group_color: vip-237 allocation score on s01-1: 0 --group_color: vip-237-fw:0 allocation score on s01-0: -INFINITY -+group_color: vip-237-fw:0 allocation score on s01-0: 0 - group_color: vip-237-fw:0 allocation score on s01-1: 1 - group_color: vip-237-fw:1 allocation score on s01-0: 1 --group_color: vip-237-fw:1 allocation score on s01-1: 0 -+group_color: vip-237-fw:1 allocation score on s01-1: -INFINITY - group_color: vip-238 allocation score on s01-0: 0 - group_color: vip-238 allocation score on s01-1: 0 --group_color: vip-238-fw:0 allocation score on s01-0: -INFINITY -+group_color: vip-238-fw:0 allocation score on s01-0: 0 - group_color: vip-238-fw:0 allocation score on s01-1: 1 - group_color: vip-238-fw:1 allocation score on s01-0: 1 --group_color: vip-238-fw:1 allocation score on s01-1: 0 --group_color: zebra:0 allocation score on s01-0: -INFINITY -+group_color: vip-238-fw:1 allocation score on s01-1: -INFINITY -+group_color: zebra:0 allocation score on s01-0: 0 - group_color: zebra:0 allocation score on s01-1: 1 - group_color: zebra:1 allocation score on s01-0: 1 --group_color: zebra:1 allocation score on s01-1: 0 -+group_color: zebra:1 allocation score on s01-1: -INFINITY - iscsi-pool-0-vips-fw:0 promotion score on s01-1: -INFINITY - iscsi-pool-0-vips-fw:1 promotion score on s01-0: 2000 - iscsi-pool-1-vips-fw:0 promotion score on s01-1: 2000 -@@ -337,10 +337,10 @@ native_color: dhcpd:0 allocation score on s01-0: -INFINITY - native_color: dhcpd:0 allocation score on s01-1: -INFINITY - native_color: dhcpd:1 allocation score on s01-0: -INFINITY - native_color: dhcpd:1 allocation score on s01-1: -INFINITY --native_color: dlm:0 allocation score on s01-0: -INFINITY -+native_color: dlm:0 allocation score on s01-0: 0 - native_color: dlm:0 allocation score on s01-1: 1 - native_color: dlm:1 allocation score on s01-0: 1 --native_color: dlm:1 allocation score on s01-1: 0 -+native_color: dlm:1 allocation score on s01-1: -INFINITY - native_color: drbd-pool-0:0 allocation score on s01-0: -INFINITY - native_color: drbd-pool-0:0 allocation score on s01-1: 10001 - native_color: drbd-pool-0:1 allocation score on s01-0: 10001 -@@ -353,26 +353,26 @@ native_color: drbd-s01-logs:0 allocation score on s01-0: 0 - native_color: drbd-s01-logs:0 allocation score on s01-1: 10001 - native_color: drbd-s01-logs:1 allocation score on s01-0: 10001 - native_color: drbd-s01-logs:1 allocation score on s01-1: -INFINITY --native_color: drbd-s01-service:0 allocation score on s01-0: -INFINITY -+native_color: drbd-s01-service:0 allocation score on s01-0: 0 - native_color: drbd-s01-service:0 allocation score on s01-1: 10001 - native_color: drbd-s01-service:1 allocation score on s01-0: 10001 --native_color: drbd-s01-service:1 allocation score on s01-1: 0 --native_color: drbd-s01-vm-data:0 allocation score on s01-0: -INFINITY -+native_color: drbd-s01-service:1 allocation score on s01-1: -INFINITY -+native_color: drbd-s01-vm-data:0 allocation score on s01-0: 0 - native_color: drbd-s01-vm-data:0 allocation score on s01-1: 10001 - native_color: drbd-s01-vm-data:1 allocation score on s01-0: 10001 --native_color: drbd-s01-vm-data:1 allocation score on s01-1: 0 --native_color: drbd-vds-dom0-stateless-0:0 allocation score on s01-0: -INFINITY -+native_color: drbd-s01-vm-data:1 allocation score on s01-1: -INFINITY -+native_color: drbd-vds-dom0-stateless-0:0 allocation score on s01-0: 0 - native_color: drbd-vds-dom0-stateless-0:0 allocation score on s01-1: 10001 - native_color: drbd-vds-dom0-stateless-0:1 allocation score on s01-0: 10001 --native_color: drbd-vds-dom0-stateless-0:1 allocation score on s01-1: 0 --native_color: drbd-vds-http:0 allocation score on s01-0: -INFINITY -+native_color: drbd-vds-dom0-stateless-0:1 allocation score on s01-1: -INFINITY -+native_color: drbd-vds-http:0 allocation score on s01-0: 0 - native_color: drbd-vds-http:0 allocation score on s01-1: 10001 - native_color: drbd-vds-http:1 allocation score on s01-0: 10001 --native_color: drbd-vds-http:1 allocation score on s01-1: 0 --native_color: drbd-vds-tftpboot:0 allocation score on s01-0: -INFINITY -+native_color: drbd-vds-http:1 allocation score on s01-1: -INFINITY -+native_color: drbd-vds-tftpboot:0 allocation score on s01-0: 0 - native_color: drbd-vds-tftpboot:0 allocation score on s01-1: 10001 - native_color: drbd-vds-tftpboot:1 allocation score on s01-0: 10001 --native_color: drbd-vds-tftpboot:1 allocation score on s01-1: 0 -+native_color: drbd-vds-tftpboot:1 allocation score on s01-1: -INFINITY - native_color: drbdlinks-s01-service:0 allocation score on s01-0: -INFINITY - native_color: drbdlinks-s01-service:0 allocation score on s01-1: 1 - native_color: drbdlinks-s01-service:1 allocation score on s01-0: 1 -@@ -397,10 +397,10 @@ native_color: iscsi-vds-dom0-stateless-0-lun-1 allocation score on s01-0: -INFIN - native_color: iscsi-vds-dom0-stateless-0-lun-1 allocation score on s01-1: -INFINITY - native_color: iscsi-vds-dom0-stateless-0-target allocation score on s01-0: -INFINITY - native_color: iscsi-vds-dom0-stateless-0-target allocation score on s01-1: -INFINITY --native_color: libvirtd:0 allocation score on s01-0: -INFINITY -+native_color: libvirtd:0 allocation score on s01-0: 0 - native_color: libvirtd:0 allocation score on s01-1: 1 - native_color: libvirtd:1 allocation score on s01-0: 1 --native_color: libvirtd:1 allocation score on s01-1: 0 -+native_color: libvirtd:1 allocation score on s01-1: -INFINITY - native_color: mgmt-vm allocation score on s01-0: -INFINITY - native_color: mgmt-vm allocation score on s01-1: 0 - native_color: nginx allocation score on s01-0: -INFINITY -@@ -413,10 +413,10 @@ native_color: ospfd:0 allocation score on s01-0: -INFINITY - native_color: ospfd:0 allocation score on s01-1: 1 - native_color: ospfd:1 allocation score on s01-0: 1 - native_color: ospfd:1 allocation score on s01-1: -INFINITY --native_color: ping-bmc-and-switch:0 allocation score on s01-0: -INFINITY -+native_color: ping-bmc-and-switch:0 allocation score on s01-0: 0 - native_color: ping-bmc-and-switch:0 allocation score on s01-1: 1 - native_color: ping-bmc-and-switch:1 allocation score on s01-0: 1 --native_color: ping-bmc-and-switch:1 allocation score on s01-1: 0 -+native_color: ping-bmc-and-switch:1 allocation score on s01-1: -INFINITY - native_color: s01-logs-fs:0 allocation score on s01-0: -INFINITY - native_color: s01-logs-fs:0 allocation score on s01-1: 10002 - native_color: s01-logs-fs:1 allocation score on s01-0: 10002 -@@ -455,10 +455,10 @@ native_color: vg-s01-vm-data:1 allocation score on s01-0: 10002 - native_color: vg-s01-vm-data:1 allocation score on s01-1: -INFINITY - native_color: vip-227 allocation score on s01-0: -INFINITY - native_color: vip-227 allocation score on s01-1: -INFINITY --native_color: vip-227-fw:0 allocation score on s01-0: -INFINITY -+native_color: vip-227-fw:0 allocation score on s01-0: 0 - native_color: vip-227-fw:0 allocation score on s01-1: 2 - native_color: vip-227-fw:1 allocation score on s01-0: 2 --native_color: vip-227-fw:1 allocation score on s01-1: 0 -+native_color: vip-227-fw:1 allocation score on s01-1: -INFINITY - native_color: vip-228 allocation score on s01-0: -INFINITY - native_color: vip-228 allocation score on s01-1: -INFINITY - native_color: vip-228-fw:0 allocation score on s01-0: -INFINITY -@@ -473,10 +473,10 @@ native_color: vip-234 allocation score on s01-0: 0 - native_color: vip-234 allocation score on s01-1: 0 - native_color: vip-235 allocation score on s01-0: 0 - native_color: vip-235 allocation score on s01-1: -INFINITY --native_color: vip-235-fw:0 allocation score on s01-0: -INFINITY -+native_color: vip-235-fw:0 allocation score on s01-0: 0 - native_color: vip-235-fw:0 allocation score on s01-1: 2 - native_color: vip-235-fw:1 allocation score on s01-0: 2 --native_color: vip-235-fw:1 allocation score on s01-1: 0 -+native_color: vip-235-fw:1 allocation score on s01-1: -INFINITY - native_color: vip-236 allocation score on s01-0: 0 - native_color: vip-236 allocation score on s01-1: -INFINITY - native_color: vip-236-fw:0 allocation score on s01-0: -INFINITY -@@ -485,21 +485,21 @@ native_color: vip-236-fw:1 allocation score on s01-0: 1 - native_color: vip-236-fw:1 allocation score on s01-1: -INFINITY - native_color: vip-237 allocation score on s01-0: -INFINITY - native_color: vip-237 allocation score on s01-1: 0 --native_color: vip-237-fw:0 allocation score on s01-0: -INFINITY -+native_color: vip-237-fw:0 allocation score on s01-0: 0 - native_color: vip-237-fw:0 allocation score on s01-1: 2 - native_color: vip-237-fw:1 allocation score on s01-0: 2 --native_color: vip-237-fw:1 allocation score on s01-1: 0 -+native_color: vip-237-fw:1 allocation score on s01-1: -INFINITY - native_color: vip-238 allocation score on s01-0: -INFINITY - native_color: vip-238 allocation score on s01-1: 0 - native_color: vip-238-fw:0 allocation score on s01-0: -INFINITY - native_color: vip-238-fw:0 allocation score on s01-1: 1 - native_color: vip-238-fw:1 allocation score on s01-0: 1 - native_color: vip-238-fw:1 allocation score on s01-1: -INFINITY --native_color: xinetd:0 allocation score on s01-0: -INFINITY -+native_color: xinetd:0 allocation score on s01-0: 0 - native_color: xinetd:0 allocation score on s01-1: 1 - native_color: xinetd:1 allocation score on s01-0: 1 --native_color: xinetd:1 allocation score on s01-1: 0 --native_color: zebra:0 allocation score on s01-0: -INFINITY -+native_color: xinetd:1 allocation score on s01-1: -INFINITY -+native_color: zebra:0 allocation score on s01-0: 0 - native_color: zebra:0 allocation score on s01-1: 2 - native_color: zebra:1 allocation score on s01-0: 2 --native_color: zebra:1 allocation score on s01-1: 0 -+native_color: zebra:1 allocation score on s01-1: -INFINITY -diff --git a/pengine/test10/colocate-primitive-with-clone.scores b/pengine/test10/colocate-primitive-with-clone.scores -index 4f40acc..b04a1e7 100644 ---- a/pengine/test10/colocate-primitive-with-clone.scores -+++ b/pengine/test10/colocate-primitive-with-clone.scores -@@ -285,10 +285,10 @@ native_color: UmVIPcheck allocation score on srv03: -INFINITY - native_color: UmVIPcheck allocation score on srv04: 100 - native_color: clnG3dummy01:0 allocation score on srv01: -INFINITY - native_color: clnG3dummy01:0 allocation score on srv02: 100 --native_color: clnG3dummy01:0 allocation score on srv03: 0 -+native_color: clnG3dummy01:0 allocation score on srv03: -INFINITY - native_color: clnG3dummy01:0 allocation score on srv04: -INFINITY - native_color: clnG3dummy01:1 allocation score on srv01: -INFINITY --native_color: clnG3dummy01:1 allocation score on srv02: -INFINITY -+native_color: clnG3dummy01:1 allocation score on srv02: 0 - native_color: clnG3dummy01:1 allocation score on srv03: 100 - native_color: clnG3dummy01:1 allocation score on srv04: -INFINITY - native_color: clnG3dummy01:2 allocation score on srv01: -INFINITY -@@ -301,10 +301,10 @@ native_color: clnG3dummy01:3 allocation score on srv03: -INFINITY - native_color: clnG3dummy01:3 allocation score on srv04: -INFINITY - native_color: clnG3dummy02:0 allocation score on srv01: -INFINITY - native_color: clnG3dummy02:0 allocation score on srv02: 100 --native_color: clnG3dummy02:0 allocation score on srv03: 0 -+native_color: clnG3dummy02:0 allocation score on srv03: -INFINITY - native_color: clnG3dummy02:0 allocation score on srv04: -INFINITY - native_color: clnG3dummy02:1 allocation score on srv01: -INFINITY --native_color: clnG3dummy02:1 allocation score on srv02: -INFINITY -+native_color: clnG3dummy02:1 allocation score on srv02: 0 - native_color: clnG3dummy02:1 allocation score on srv03: 100 - native_color: clnG3dummy02:1 allocation score on srv04: -INFINITY - native_color: clnG3dummy02:2 allocation score on srv01: -INFINITY -@@ -317,10 +317,10 @@ native_color: clnG3dummy02:3 allocation score on srv03: -INFINITY - native_color: clnG3dummy02:3 allocation score on srv04: -INFINITY - native_color: clnPrmDiskd1:0 allocation score on srv01: -INFINITY - native_color: clnPrmDiskd1:0 allocation score on srv02: 100 --native_color: clnPrmDiskd1:0 allocation score on srv03: 0 -+native_color: clnPrmDiskd1:0 allocation score on srv03: -INFINITY - native_color: clnPrmDiskd1:0 allocation score on srv04: -INFINITY - native_color: clnPrmDiskd1:1 allocation score on srv01: -INFINITY --native_color: clnPrmDiskd1:1 allocation score on srv02: -INFINITY -+native_color: clnPrmDiskd1:1 allocation score on srv02: 0 - native_color: clnPrmDiskd1:1 allocation score on srv03: 100 - native_color: clnPrmDiskd1:1 allocation score on srv04: -INFINITY - native_color: clnPrmDiskd1:2 allocation score on srv01: -INFINITY -@@ -333,10 +333,10 @@ native_color: clnPrmDiskd1:3 allocation score on srv03: -INFINITY - native_color: clnPrmDiskd1:3 allocation score on srv04: -INFINITY - native_color: clnPrmPingd:0 allocation score on srv01: -INFINITY - native_color: clnPrmPingd:0 allocation score on srv02: 100 --native_color: clnPrmPingd:0 allocation score on srv03: 0 -+native_color: clnPrmPingd:0 allocation score on srv03: -INFINITY - native_color: clnPrmPingd:0 allocation score on srv04: -INFINITY - native_color: clnPrmPingd:1 allocation score on srv01: -INFINITY --native_color: clnPrmPingd:1 allocation score on srv02: -INFINITY -+native_color: clnPrmPingd:1 allocation score on srv02: 0 - native_color: clnPrmPingd:1 allocation score on srv03: 100 - native_color: clnPrmPingd:1 allocation score on srv04: -INFINITY - native_color: clnPrmPingd:2 allocation score on srv01: -INFINITY -diff --git a/pengine/test10/complex_enforce_colo.scores b/pengine/test10/complex_enforce_colo.scores -index 9394084..e64c6e8 100644 ---- a/pengine/test10/complex_enforce_colo.scores -+++ b/pengine/test10/complex_enforce_colo.scores -@@ -477,12 +477,12 @@ native_color: ceilometer-central allocation score on rhos6-node1: 0 - native_color: ceilometer-central allocation score on rhos6-node2: 0 - native_color: ceilometer-central allocation score on rhos6-node3: 0 - native_color: ceilometer-collector:0 allocation score on rhos6-node1: 1 --native_color: ceilometer-collector:0 allocation score on rhos6-node2: -INFINITY --native_color: ceilometer-collector:0 allocation score on rhos6-node3: -INFINITY --native_color: ceilometer-collector:1 allocation score on rhos6-node1: 0 -+native_color: ceilometer-collector:0 allocation score on rhos6-node2: 0 -+native_color: ceilometer-collector:0 allocation score on rhos6-node3: 0 -+native_color: ceilometer-collector:1 allocation score on rhos6-node1: -INFINITY - native_color: ceilometer-collector:1 allocation score on rhos6-node2: 1 - native_color: ceilometer-collector:1 allocation score on rhos6-node3: 0 --native_color: ceilometer-collector:2 allocation score on rhos6-node1: 0 -+native_color: ceilometer-collector:2 allocation score on rhos6-node1: -INFINITY - native_color: ceilometer-collector:2 allocation score on rhos6-node2: -INFINITY - native_color: ceilometer-collector:2 allocation score on rhos6-node3: 1 - native_color: ceilometer-delay:0 allocation score on rhos6-node1: 1 -@@ -567,25 +567,25 @@ native_color: heat-api-cloudwatch:2 allocation score on rhos6-node1: -INFINITY - native_color: heat-api-cloudwatch:2 allocation score on rhos6-node2: -INFINITY - native_color: heat-api-cloudwatch:2 allocation score on rhos6-node3: 1 - native_color: heat-api:0 allocation score on rhos6-node1: 1 --native_color: heat-api:0 allocation score on rhos6-node2: -INFINITY --native_color: heat-api:0 allocation score on rhos6-node3: -INFINITY --native_color: heat-api:1 allocation score on rhos6-node1: 0 -+native_color: heat-api:0 allocation score on rhos6-node2: 0 -+native_color: heat-api:0 allocation score on rhos6-node3: 0 -+native_color: heat-api:1 allocation score on rhos6-node1: -INFINITY - native_color: heat-api:1 allocation score on rhos6-node2: 1 - native_color: heat-api:1 allocation score on rhos6-node3: 0 --native_color: heat-api:2 allocation score on rhos6-node1: 0 -+native_color: heat-api:2 allocation score on rhos6-node1: -INFINITY - native_color: heat-api:2 allocation score on rhos6-node2: -INFINITY - native_color: heat-api:2 allocation score on rhos6-node3: 1 - native_color: heat-engine allocation score on rhos6-node1: 0 - native_color: heat-engine allocation score on rhos6-node2: 0 - native_color: heat-engine allocation score on rhos6-node3: 0 - native_color: horizon:0 allocation score on rhos6-node1: 1 --native_color: horizon:0 allocation score on rhos6-node2: -INFINITY --native_color: horizon:0 allocation score on rhos6-node3: -INFINITY --native_color: horizon:1 allocation score on rhos6-node1: 0 -+native_color: horizon:0 allocation score on rhos6-node2: 0 -+native_color: horizon:0 allocation score on rhos6-node3: 0 -+native_color: horizon:1 allocation score on rhos6-node1: -INFINITY - native_color: horizon:1 allocation score on rhos6-node2: 1 --native_color: horizon:1 allocation score on rhos6-node3: -INFINITY --native_color: horizon:2 allocation score on rhos6-node1: 0 --native_color: horizon:2 allocation score on rhos6-node2: 0 -+native_color: horizon:1 allocation score on rhos6-node3: 0 -+native_color: horizon:2 allocation score on rhos6-node1: -INFINITY -+native_color: horizon:2 allocation score on rhos6-node2: -INFINITY - native_color: horizon:2 allocation score on rhos6-node3: 1 - native_color: keystone:0 allocation score on rhos6-node1: -INFINITY - native_color: keystone:0 allocation score on rhos6-node2: -INFINITY -@@ -687,13 +687,13 @@ native_color: neutron-scale:2 allocation score on rhos6-node1: 1 - native_color: neutron-scale:2 allocation score on rhos6-node2: -INFINITY - native_color: neutron-scale:2 allocation score on rhos6-node3: -INFINITY - native_color: neutron-server:0 allocation score on rhos6-node1: 1 --native_color: neutron-server:0 allocation score on rhos6-node2: -INFINITY --native_color: neutron-server:0 allocation score on rhos6-node3: -INFINITY --native_color: neutron-server:1 allocation score on rhos6-node1: 0 -+native_color: neutron-server:0 allocation score on rhos6-node2: 0 -+native_color: neutron-server:0 allocation score on rhos6-node3: 0 -+native_color: neutron-server:1 allocation score on rhos6-node1: -INFINITY - native_color: neutron-server:1 allocation score on rhos6-node2: 1 --native_color: neutron-server:1 allocation score on rhos6-node3: -INFINITY --native_color: neutron-server:2 allocation score on rhos6-node1: 0 --native_color: neutron-server:2 allocation score on rhos6-node2: 0 -+native_color: neutron-server:1 allocation score on rhos6-node3: 0 -+native_color: neutron-server:2 allocation score on rhos6-node1: -INFINITY -+native_color: neutron-server:2 allocation score on rhos6-node2: -INFINITY - native_color: neutron-server:2 allocation score on rhos6-node3: 1 - native_color: node1-fence allocation score on rhos6-node1: 0 - native_color: node1-fence allocation score on rhos6-node2: 0 -@@ -723,13 +723,13 @@ native_color: nova-conductor:2 allocation score on rhos6-node1: -INFINITY - native_color: nova-conductor:2 allocation score on rhos6-node2: -INFINITY - native_color: nova-conductor:2 allocation score on rhos6-node3: 1 - native_color: nova-consoleauth:0 allocation score on rhos6-node1: 1 --native_color: nova-consoleauth:0 allocation score on rhos6-node2: -INFINITY --native_color: nova-consoleauth:0 allocation score on rhos6-node3: -INFINITY --native_color: nova-consoleauth:1 allocation score on rhos6-node1: 0 -+native_color: nova-consoleauth:0 allocation score on rhos6-node2: 0 -+native_color: nova-consoleauth:0 allocation score on rhos6-node3: 0 -+native_color: nova-consoleauth:1 allocation score on rhos6-node1: -INFINITY - native_color: nova-consoleauth:1 allocation score on rhos6-node2: 1 --native_color: nova-consoleauth:1 allocation score on rhos6-node3: -INFINITY --native_color: nova-consoleauth:2 allocation score on rhos6-node1: 0 --native_color: nova-consoleauth:2 allocation score on rhos6-node2: 0 -+native_color: nova-consoleauth:1 allocation score on rhos6-node3: 0 -+native_color: nova-consoleauth:2 allocation score on rhos6-node1: -INFINITY -+native_color: nova-consoleauth:2 allocation score on rhos6-node2: -INFINITY - native_color: nova-consoleauth:2 allocation score on rhos6-node3: 1 - native_color: nova-novncproxy:0 allocation score on rhos6-node1: 1 - native_color: nova-novncproxy:0 allocation score on rhos6-node2: -INFINITY -@@ -777,12 +777,12 @@ native_color: swift-container:2 allocation score on rhos6-node1: -INFINITY - native_color: swift-container:2 allocation score on rhos6-node2: -INFINITY - native_color: swift-container:2 allocation score on rhos6-node3: 1 - native_color: swift-fs:0 allocation score on rhos6-node1: 1 --native_color: swift-fs:0 allocation score on rhos6-node2: -INFINITY --native_color: swift-fs:0 allocation score on rhos6-node3: -INFINITY --native_color: swift-fs:1 allocation score on rhos6-node1: 0 -+native_color: swift-fs:0 allocation score on rhos6-node2: 0 -+native_color: swift-fs:0 allocation score on rhos6-node3: 0 -+native_color: swift-fs:1 allocation score on rhos6-node1: -INFINITY - native_color: swift-fs:1 allocation score on rhos6-node2: 1 - native_color: swift-fs:1 allocation score on rhos6-node3: 0 --native_color: swift-fs:2 allocation score on rhos6-node1: 0 -+native_color: swift-fs:2 allocation score on rhos6-node1: -INFINITY - native_color: swift-fs:2 allocation score on rhos6-node2: -INFINITY - native_color: swift-fs:2 allocation score on rhos6-node3: 1 - native_color: swift-object-expirer allocation score on rhos6-node1: 0 -@@ -798,12 +798,12 @@ native_color: swift-object:2 allocation score on rhos6-node1: -INFINITY - native_color: swift-object:2 allocation score on rhos6-node2: -INFINITY - native_color: swift-object:2 allocation score on rhos6-node3: 1 - native_color: swift-proxy:0 allocation score on rhos6-node1: 1 --native_color: swift-proxy:0 allocation score on rhos6-node2: -INFINITY --native_color: swift-proxy:0 allocation score on rhos6-node3: -INFINITY --native_color: swift-proxy:1 allocation score on rhos6-node1: 0 -+native_color: swift-proxy:0 allocation score on rhos6-node2: 0 -+native_color: swift-proxy:0 allocation score on rhos6-node3: 0 -+native_color: swift-proxy:1 allocation score on rhos6-node1: -INFINITY - native_color: swift-proxy:1 allocation score on rhos6-node2: 1 - native_color: swift-proxy:1 allocation score on rhos6-node3: 0 --native_color: swift-proxy:2 allocation score on rhos6-node1: 0 -+native_color: swift-proxy:2 allocation score on rhos6-node1: -INFINITY - native_color: swift-proxy:2 allocation score on rhos6-node2: -INFINITY - native_color: swift-proxy:2 allocation score on rhos6-node3: 1 - native_color: vip-ceilometer allocation score on rhos6-node1: 0 -diff --git a/pengine/test10/container-is-remote-node.scores b/pengine/test10/container-is-remote-node.scores -index 486ecbe..6c743c5 100644 ---- a/pengine/test10/container-is-remote-node.scores -+++ b/pengine/test10/container-is-remote-node.scores -@@ -82,9 +82,9 @@ native_color: clvmd:2 allocation score on lama2: -INFINITY - native_color: clvmd:2 allocation score on lama3: -INFINITY - native_color: dlm:0 allocation score on RNVM1: -INFINITY - native_color: dlm:0 allocation score on lama2: 1 --native_color: dlm:0 allocation score on lama3: -INFINITY -+native_color: dlm:0 allocation score on lama3: 0 - native_color: dlm:1 allocation score on RNVM1: -INFINITY --native_color: dlm:1 allocation score on lama2: 0 -+native_color: dlm:1 allocation score on lama2: -INFINITY - native_color: dlm:1 allocation score on lama3: 1 - native_color: dlm:2 allocation score on RNVM1: -INFINITY - native_color: dlm:2 allocation score on lama2: -INFINITY -diff --git a/pengine/test10/group-dependents.scores b/pengine/test10/group-dependents.scores -index 665d8c1..64531a5 100644 ---- a/pengine/test10/group-dependents.scores -+++ b/pengine/test10/group-dependents.scores -@@ -58,8 +58,8 @@ native_color: asterisk allocation score on asttest2: 0 - native_color: dahdi allocation score on asttest1: -INFINITY - native_color: dahdi allocation score on asttest2: 0 - native_color: drbd:0 allocation score on asttest1: 6 --native_color: drbd:0 allocation score on asttest2: -INFINITY --native_color: drbd:1 allocation score on asttest1: 0 -+native_color: drbd:0 allocation score on asttest2: 0 -+native_color: drbd:1 allocation score on asttest1: -INFINITY - native_color: drbd:1 allocation score on asttest2: 6 - native_color: fonulator allocation score on asttest1: -INFINITY - native_color: fonulator allocation score on asttest2: 0 -diff --git a/pengine/test10/group10.scores b/pengine/test10/group10.scores -index 2a22b7b..6d3f6bf 100644 ---- a/pengine/test10/group10.scores -+++ b/pengine/test10/group10.scores -@@ -52,18 +52,18 @@ native_color: child_192.168.100.183 allocation score on c001n02: -INFINITY - native_color: child_192.168.100.183 allocation score on c001n03: -INFINITY - native_color: child_192.168.100.183 allocation score on c001n08: -INFINITY - native_color: child_DoFencing:0 allocation score on c001n01: 1 --native_color: child_DoFencing:0 allocation score on c001n02: -INFINITY --native_color: child_DoFencing:0 allocation score on c001n03: -INFINITY --native_color: child_DoFencing:0 allocation score on c001n08: -INFINITY --native_color: child_DoFencing:1 allocation score on c001n01: 0 -+native_color: child_DoFencing:0 allocation score on c001n02: 0 -+native_color: child_DoFencing:0 allocation score on c001n03: 0 -+native_color: child_DoFencing:0 allocation score on c001n08: 0 -+native_color: child_DoFencing:1 allocation score on c001n01: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n02: 1 - native_color: child_DoFencing:1 allocation score on c001n03: 0 - native_color: child_DoFencing:1 allocation score on c001n08: 0 --native_color: child_DoFencing:2 allocation score on c001n01: 0 -+native_color: child_DoFencing:2 allocation score on c001n01: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n03: 1 - native_color: child_DoFencing:2 allocation score on c001n08: 0 --native_color: child_DoFencing:3 allocation score on c001n01: 0 -+native_color: child_DoFencing:3 allocation score on c001n01: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n08: 1 -diff --git a/pengine/test10/history-1.scores b/pengine/test10/history-1.scores -index 6263b95..bd0f43d 100644 ---- a/pengine/test10/history-1.scores -+++ b/pengine/test10/history-1.scores -@@ -100,10 +100,10 @@ native_color: migrator allocation score on pcmk-2: 0 - native_color: migrator allocation score on pcmk-3: 0 - native_color: migrator allocation score on pcmk-4: 0 - native_color: ping-1:0 allocation score on pcmk-1: 1 --native_color: ping-1:0 allocation score on pcmk-2: -INFINITY -+native_color: ping-1:0 allocation score on pcmk-2: 0 - native_color: ping-1:0 allocation score on pcmk-3: 0 - native_color: ping-1:0 allocation score on pcmk-4: -INFINITY --native_color: ping-1:1 allocation score on pcmk-1: 0 -+native_color: ping-1:1 allocation score on pcmk-1: -INFINITY - native_color: ping-1:1 allocation score on pcmk-2: 1 - native_color: ping-1:1 allocation score on pcmk-3: 0 - native_color: ping-1:1 allocation score on pcmk-4: -INFINITY -diff --git a/pengine/test10/inc10.scores b/pengine/test10/inc10.scores -index bf69d89..de77779 100644 ---- a/pengine/test10/inc10.scores -+++ b/pengine/test10/inc10.scores -@@ -39,7 +39,7 @@ clone_color: ocfs2:3 allocation score on xen-1: 0 - clone_color: ocfs2:3 allocation score on xen-2: 0 - clone_color: ocfs2:3 allocation score on xen-3: 0 - clone_color: ocfs2:3 allocation score on xen-4: 1 --native_color: child_DoFencing:0 allocation score on xen-1: -INFINITY -+native_color: child_DoFencing:0 allocation score on xen-1: 0 - native_color: child_DoFencing:0 allocation score on xen-2: -INFINITY - native_color: child_DoFencing:0 allocation score on xen-3: 1 - native_color: child_DoFencing:0 allocation score on xen-4: 0 -@@ -49,13 +49,13 @@ native_color: child_DoFencing:1 allocation score on xen-3: -INFINITY - native_color: child_DoFencing:1 allocation score on xen-4: -INFINITY - native_color: child_DoFencing:2 allocation score on xen-1: 1 - native_color: child_DoFencing:2 allocation score on xen-2: -INFINITY --native_color: child_DoFencing:2 allocation score on xen-3: 0 -+native_color: child_DoFencing:2 allocation score on xen-3: -INFINITY - native_color: child_DoFencing:2 allocation score on xen-4: 0 - native_color: child_DoFencing:3 allocation score on xen-1: -INFINITY - native_color: child_DoFencing:3 allocation score on xen-2: -INFINITY - native_color: child_DoFencing:3 allocation score on xen-3: -INFINITY - native_color: child_DoFencing:3 allocation score on xen-4: 1 --native_color: ocfs2:0 allocation score on xen-1: -INFINITY -+native_color: ocfs2:0 allocation score on xen-1: 0 - native_color: ocfs2:0 allocation score on xen-2: -INFINITY - native_color: ocfs2:0 allocation score on xen-3: 1 - native_color: ocfs2:0 allocation score on xen-4: 0 -@@ -65,7 +65,7 @@ native_color: ocfs2:1 allocation score on xen-3: -INFINITY - native_color: ocfs2:1 allocation score on xen-4: -INFINITY - native_color: ocfs2:2 allocation score on xen-1: 1 - native_color: ocfs2:2 allocation score on xen-2: -INFINITY --native_color: ocfs2:2 allocation score on xen-3: 0 -+native_color: ocfs2:2 allocation score on xen-3: -INFINITY - native_color: ocfs2:2 allocation score on xen-4: 0 - native_color: ocfs2:3 allocation score on xen-1: -INFINITY - native_color: ocfs2:3 allocation score on xen-2: -INFINITY -diff --git a/pengine/test10/interleave-restart.scores b/pengine/test10/interleave-restart.scores -index c4e5773..b5b697b 100644 ---- a/pengine/test10/interleave-restart.scores -+++ b/pengine/test10/interleave-restart.scores -@@ -23,19 +23,19 @@ clone_color: stonithclone:1 allocation score on node1: 1 - clone_color: stonithclone:1 allocation score on node2: 0 - clone_color: stonithcloneset allocation score on node1: 0 - clone_color: stonithcloneset allocation score on node2: 0 --native_color: configstoreclone:0 allocation score on node1: -INFINITY -+native_color: configstoreclone:0 allocation score on node1: 0 - native_color: configstoreclone:0 allocation score on node2: 1 - native_color: configstoreclone:1 allocation score on node1: 1 --native_color: configstoreclone:1 allocation score on node2: 0 -+native_color: configstoreclone:1 allocation score on node2: -INFINITY - native_color: evmsclone:0 allocation score on node1: 0 - native_color: evmsclone:0 allocation score on node2: 1 - native_color: evmsclone:1 allocation score on node1: 1 - native_color: evmsclone:1 allocation score on node2: -INFINITY --native_color: imagestoreclone:0 allocation score on node1: -INFINITY -+native_color: imagestoreclone:0 allocation score on node1: 0 - native_color: imagestoreclone:0 allocation score on node2: 1 - native_color: imagestoreclone:1 allocation score on node1: 1 --native_color: imagestoreclone:1 allocation score on node2: 0 --native_color: stonithclone:0 allocation score on node1: -INFINITY -+native_color: imagestoreclone:1 allocation score on node2: -INFINITY -+native_color: stonithclone:0 allocation score on node1: 0 - native_color: stonithclone:0 allocation score on node2: 1 - native_color: stonithclone:1 allocation score on node1: 1 --native_color: stonithclone:1 allocation score on node2: 0 -+native_color: stonithclone:1 allocation score on node2: -INFINITY -diff --git a/pengine/test10/load-stopped-loop-2.scores b/pengine/test10/load-stopped-loop-2.scores -index 10f120f..6e42135 100644 ---- a/pengine/test10/load-stopped-loop-2.scores -+++ b/pengine/test10/load-stopped-loop-2.scores -@@ -60,10 +60,10 @@ native_color: p_glusterd:0 allocation score on xfc1: 0 - native_color: p_glusterd:0 allocation score on xfc2: 0 - native_color: p_glusterd:0 allocation score on xfc3: 1 - native_color: p_glusterd:1 allocation score on xfc0: 1 --native_color: p_glusterd:1 allocation score on xfc1: -INFINITY -+native_color: p_glusterd:1 allocation score on xfc1: 0 - native_color: p_glusterd:1 allocation score on xfc2: 0 - native_color: p_glusterd:1 allocation score on xfc3: -INFINITY --native_color: p_glusterd:2 allocation score on xfc0: 0 -+native_color: p_glusterd:2 allocation score on xfc0: -INFINITY - native_color: p_glusterd:2 allocation score on xfc1: 1 - native_color: p_glusterd:2 allocation score on xfc2: 0 - native_color: p_glusterd:2 allocation score on xfc3: -INFINITY -diff --git a/pengine/test10/load-stopped-loop.scores b/pengine/test10/load-stopped-loop.scores -index dc9f5f5..df95481 100644 ---- a/pengine/test10/load-stopped-loop.scores -+++ b/pengine/test10/load-stopped-loop.scores -@@ -882,14 +882,14 @@ native_color: dist.fly-uni.org-vm allocation score on mgmt01: -INFINITY - native_color: dist.fly-uni.org-vm allocation score on v03-a: -INFINITY - native_color: dist.fly-uni.org-vm allocation score on v03-b: -INFINITY - native_color: dlm:0 allocation score on mgmt01: 1 --native_color: dlm:0 allocation score on v03-a: -INFINITY --native_color: dlm:0 allocation score on v03-b: -INFINITY --native_color: dlm:1 allocation score on mgmt01: 0 --native_color: dlm:1 allocation score on v03-a: -INFINITY -+native_color: dlm:0 allocation score on v03-a: 0 -+native_color: dlm:0 allocation score on v03-b: 0 -+native_color: dlm:1 allocation score on mgmt01: -INFINITY -+native_color: dlm:1 allocation score on v03-a: 0 - native_color: dlm:1 allocation score on v03-b: 1 --native_color: dlm:2 allocation score on mgmt01: 0 -+native_color: dlm:2 allocation score on mgmt01: -INFINITY - native_color: dlm:2 allocation score on v03-a: 1 --native_color: dlm:2 allocation score on v03-b: 0 -+native_color: dlm:2 allocation score on v03-b: -INFINITY - native_color: dlm:3 allocation score on mgmt01: -INFINITY - native_color: dlm:3 allocation score on v03-a: -INFINITY - native_color: dlm:3 allocation score on v03-b: -INFINITY -@@ -933,14 +933,14 @@ native_color: gw.gotin.vds-ok.com-vm allocation score on mgmt01: -INFINITY - native_color: gw.gotin.vds-ok.com-vm allocation score on v03-a: -INFINITY - native_color: gw.gotin.vds-ok.com-vm allocation score on v03-b: -INFINITY - native_color: iscsid:0 allocation score on mgmt01: 1 --native_color: iscsid:0 allocation score on v03-a: -INFINITY --native_color: iscsid:0 allocation score on v03-b: -INFINITY --native_color: iscsid:1 allocation score on mgmt01: 0 --native_color: iscsid:1 allocation score on v03-a: -INFINITY -+native_color: iscsid:0 allocation score on v03-a: 0 -+native_color: iscsid:0 allocation score on v03-b: 0 -+native_color: iscsid:1 allocation score on mgmt01: -INFINITY -+native_color: iscsid:1 allocation score on v03-a: 0 - native_color: iscsid:1 allocation score on v03-b: 1 --native_color: iscsid:2 allocation score on mgmt01: 0 -+native_color: iscsid:2 allocation score on mgmt01: -INFINITY - native_color: iscsid:2 allocation score on v03-a: 1 --native_color: iscsid:2 allocation score on v03-b: 0 -+native_color: iscsid:2 allocation score on v03-b: -INFINITY - native_color: iscsid:3 allocation score on mgmt01: -INFINITY - native_color: iscsid:3 allocation score on v03-a: -INFINITY - native_color: iscsid:3 allocation score on v03-b: -INFINITY -@@ -966,14 +966,14 @@ native_color: lenny-x32-devel-vm allocation score on mgmt01: -INFINITY - native_color: lenny-x32-devel-vm allocation score on v03-a: 0 - native_color: lenny-x32-devel-vm allocation score on v03-b: 0 - native_color: libvirt-images-fs:0 allocation score on mgmt01: 1 --native_color: libvirt-images-fs:0 allocation score on v03-a: -INFINITY --native_color: libvirt-images-fs:0 allocation score on v03-b: -INFINITY --native_color: libvirt-images-fs:1 allocation score on mgmt01: 0 --native_color: libvirt-images-fs:1 allocation score on v03-a: -INFINITY -+native_color: libvirt-images-fs:0 allocation score on v03-a: 0 -+native_color: libvirt-images-fs:0 allocation score on v03-b: 0 -+native_color: libvirt-images-fs:1 allocation score on mgmt01: -INFINITY -+native_color: libvirt-images-fs:1 allocation score on v03-a: 0 - native_color: libvirt-images-fs:1 allocation score on v03-b: 1 --native_color: libvirt-images-fs:2 allocation score on mgmt01: 0 -+native_color: libvirt-images-fs:2 allocation score on mgmt01: -INFINITY - native_color: libvirt-images-fs:2 allocation score on v03-a: 1 --native_color: libvirt-images-fs:2 allocation score on v03-b: 0 -+native_color: libvirt-images-fs:2 allocation score on v03-b: -INFINITY - native_color: libvirt-images-fs:3 allocation score on mgmt01: -INFINITY - native_color: libvirt-images-fs:3 allocation score on v03-a: -INFINITY - native_color: libvirt-images-fs:3 allocation score on v03-b: -INFINITY -@@ -1017,14 +1017,14 @@ native_color: libvirt-images-pool:7 allocation score on mgmt01: -INFINITY - native_color: libvirt-images-pool:7 allocation score on v03-a: -INFINITY - native_color: libvirt-images-pool:7 allocation score on v03-b: -INFINITY - native_color: libvirt-install-fs:0 allocation score on mgmt01: 1 --native_color: libvirt-install-fs:0 allocation score on v03-a: -INFINITY --native_color: libvirt-install-fs:0 allocation score on v03-b: -INFINITY --native_color: libvirt-install-fs:1 allocation score on mgmt01: 0 --native_color: libvirt-install-fs:1 allocation score on v03-a: -INFINITY -+native_color: libvirt-install-fs:0 allocation score on v03-a: 0 -+native_color: libvirt-install-fs:0 allocation score on v03-b: 0 -+native_color: libvirt-install-fs:1 allocation score on mgmt01: -INFINITY -+native_color: libvirt-install-fs:1 allocation score on v03-a: 0 - native_color: libvirt-install-fs:1 allocation score on v03-b: 1 --native_color: libvirt-install-fs:2 allocation score on mgmt01: 0 -+native_color: libvirt-install-fs:2 allocation score on mgmt01: -INFINITY - native_color: libvirt-install-fs:2 allocation score on v03-a: 1 --native_color: libvirt-install-fs:2 allocation score on v03-b: 0 -+native_color: libvirt-install-fs:2 allocation score on v03-b: -INFINITY - native_color: libvirt-install-fs:3 allocation score on mgmt01: -INFINITY - native_color: libvirt-install-fs:3 allocation score on v03-a: -INFINITY - native_color: libvirt-install-fs:3 allocation score on v03-b: -INFINITY -@@ -1122,11 +1122,11 @@ native_color: maxb-c55-vm allocation score on mgmt01: -INFINITY - native_color: maxb-c55-vm allocation score on v03-a: -INFINITY - native_color: maxb-c55-vm allocation score on v03-b: -INFINITY - native_color: mcast-anbriz-net:0 allocation score on mgmt01: -INFINITY --native_color: mcast-anbriz-net:0 allocation score on v03-a: -INFINITY -+native_color: mcast-anbriz-net:0 allocation score on v03-a: 0 - native_color: mcast-anbriz-net:0 allocation score on v03-b: 1 - native_color: mcast-anbriz-net:1 allocation score on mgmt01: -INFINITY - native_color: mcast-anbriz-net:1 allocation score on v03-a: 1 --native_color: mcast-anbriz-net:1 allocation score on v03-b: 0 -+native_color: mcast-anbriz-net:1 allocation score on v03-b: -INFINITY - native_color: mcast-anbriz-net:2 allocation score on mgmt01: -INFINITY - native_color: mcast-anbriz-net:2 allocation score on v03-a: -INFINITY - native_color: mcast-anbriz-net:2 allocation score on v03-b: -INFINITY -@@ -1146,11 +1146,11 @@ native_color: mcast-anbriz-net:7 allocation score on mgmt01: -INFINITY - native_color: mcast-anbriz-net:7 allocation score on v03-a: -INFINITY - native_color: mcast-anbriz-net:7 allocation score on v03-b: -INFINITY - native_color: mcast-gleb-net:0 allocation score on mgmt01: -INFINITY --native_color: mcast-gleb-net:0 allocation score on v03-a: -INFINITY -+native_color: mcast-gleb-net:0 allocation score on v03-a: 0 - native_color: mcast-gleb-net:0 allocation score on v03-b: 1 - native_color: mcast-gleb-net:1 allocation score on mgmt01: -INFINITY - native_color: mcast-gleb-net:1 allocation score on v03-a: 1 --native_color: mcast-gleb-net:1 allocation score on v03-b: 0 -+native_color: mcast-gleb-net:1 allocation score on v03-b: -INFINITY - native_color: mcast-gleb-net:2 allocation score on mgmt01: -INFINITY - native_color: mcast-gleb-net:2 allocation score on v03-a: -INFINITY - native_color: mcast-gleb-net:2 allocation score on v03-b: -INFINITY -@@ -1170,11 +1170,11 @@ native_color: mcast-gleb-net:7 allocation score on mgmt01: -INFINITY - native_color: mcast-gleb-net:7 allocation score on v03-a: -INFINITY - native_color: mcast-gleb-net:7 allocation score on v03-b: -INFINITY - native_color: mcast-test-net:0 allocation score on mgmt01: -INFINITY --native_color: mcast-test-net:0 allocation score on v03-a: -INFINITY -+native_color: mcast-test-net:0 allocation score on v03-a: 0 - native_color: mcast-test-net:0 allocation score on v03-b: 1 - native_color: mcast-test-net:1 allocation score on mgmt01: -INFINITY - native_color: mcast-test-net:1 allocation score on v03-a: 1 --native_color: mcast-test-net:1 allocation score on v03-b: 0 -+native_color: mcast-test-net:1 allocation score on v03-b: -INFINITY - native_color: mcast-test-net:2 allocation score on mgmt01: -INFINITY - native_color: mcast-test-net:2 allocation score on v03-a: -INFINITY - native_color: mcast-test-net:2 allocation score on v03-b: -INFINITY -@@ -1197,14 +1197,14 @@ native_color: metae.ru-vm allocation score on mgmt01: -INFINITY - native_color: metae.ru-vm allocation score on v03-a: -INFINITY - native_color: metae.ru-vm allocation score on v03-b: -INFINITY - native_color: multipathd:0 allocation score on mgmt01: 1 --native_color: multipathd:0 allocation score on v03-a: -INFINITY --native_color: multipathd:0 allocation score on v03-b: -INFINITY --native_color: multipathd:1 allocation score on mgmt01: 0 --native_color: multipathd:1 allocation score on v03-a: -INFINITY -+native_color: multipathd:0 allocation score on v03-a: 0 -+native_color: multipathd:0 allocation score on v03-b: 0 -+native_color: multipathd:1 allocation score on mgmt01: -INFINITY -+native_color: multipathd:1 allocation score on v03-a: 0 - native_color: multipathd:1 allocation score on v03-b: 1 --native_color: multipathd:2 allocation score on mgmt01: 0 -+native_color: multipathd:2 allocation score on mgmt01: -INFINITY - native_color: multipathd:2 allocation score on v03-a: 1 --native_color: multipathd:2 allocation score on v03-b: 0 -+native_color: multipathd:2 allocation score on v03-b: -INFINITY - native_color: multipathd:3 allocation score on mgmt01: -INFINITY - native_color: multipathd:3 allocation score on v03-a: -INFINITY - native_color: multipathd:3 allocation score on v03-b: -INFINITY -@@ -1224,11 +1224,11 @@ native_color: multipathd:8 allocation score on mgmt01: -INFINITY - native_color: multipathd:8 allocation score on v03-a: -INFINITY - native_color: multipathd:8 allocation score on v03-b: -INFINITY - native_color: node-params:0 allocation score on mgmt01: -INFINITY --native_color: node-params:0 allocation score on v03-a: -INFINITY -+native_color: node-params:0 allocation score on v03-a: 0 - native_color: node-params:0 allocation score on v03-b: 1 - native_color: node-params:1 allocation score on mgmt01: -INFINITY - native_color: node-params:1 allocation score on v03-a: 1 --native_color: node-params:1 allocation score on v03-b: 0 -+native_color: node-params:1 allocation score on v03-b: -INFINITY - native_color: node-params:2 allocation score on mgmt01: -INFINITY - native_color: node-params:2 allocation score on v03-a: -INFINITY - native_color: node-params:2 allocation score on v03-b: -INFINITY -@@ -1497,11 +1497,11 @@ native_color: vds-ok-pool-1-vg:8 allocation score on mgmt01: -INFINITY - native_color: vds-ok-pool-1-vg:8 allocation score on v03-a: -INFINITY - native_color: vds-ok-pool-1-vg:8 allocation score on v03-b: -INFINITY - native_color: vlan1-if:0 allocation score on mgmt01: -INFINITY --native_color: vlan1-if:0 allocation score on v03-a: -INFINITY -+native_color: vlan1-if:0 allocation score on v03-a: 0 - native_color: vlan1-if:0 allocation score on v03-b: 1 - native_color: vlan1-if:1 allocation score on mgmt01: -INFINITY - native_color: vlan1-if:1 allocation score on v03-a: 1 --native_color: vlan1-if:1 allocation score on v03-b: 0 -+native_color: vlan1-if:1 allocation score on v03-b: -INFINITY - native_color: vlan1-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan1-if:2 allocation score on v03-a: -INFINITY - native_color: vlan1-if:2 allocation score on v03-b: -INFINITY -@@ -1521,11 +1521,11 @@ native_color: vlan1-if:7 allocation score on mgmt01: -INFINITY - native_color: vlan1-if:7 allocation score on v03-a: -INFINITY - native_color: vlan1-if:7 allocation score on v03-b: -INFINITY - native_color: vlan101-if:0 allocation score on mgmt01: -INFINITY --native_color: vlan101-if:0 allocation score on v03-a: -INFINITY -+native_color: vlan101-if:0 allocation score on v03-a: 0 - native_color: vlan101-if:0 allocation score on v03-b: 1 - native_color: vlan101-if:1 allocation score on mgmt01: -INFINITY - native_color: vlan101-if:1 allocation score on v03-a: 1 --native_color: vlan101-if:1 allocation score on v03-b: 0 -+native_color: vlan101-if:1 allocation score on v03-b: -INFINITY - native_color: vlan101-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan101-if:2 allocation score on v03-a: -INFINITY - native_color: vlan101-if:2 allocation score on v03-b: -INFINITY -@@ -1545,11 +1545,11 @@ native_color: vlan101-if:7 allocation score on mgmt01: -INFINITY - native_color: vlan101-if:7 allocation score on v03-a: -INFINITY - native_color: vlan101-if:7 allocation score on v03-b: -INFINITY - native_color: vlan102-if:0 allocation score on mgmt01: -INFINITY --native_color: vlan102-if:0 allocation score on v03-a: -INFINITY -+native_color: vlan102-if:0 allocation score on v03-a: 0 - native_color: vlan102-if:0 allocation score on v03-b: 1 - native_color: vlan102-if:1 allocation score on mgmt01: -INFINITY - native_color: vlan102-if:1 allocation score on v03-a: 1 --native_color: vlan102-if:1 allocation score on v03-b: 0 -+native_color: vlan102-if:1 allocation score on v03-b: -INFINITY - native_color: vlan102-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan102-if:2 allocation score on v03-a: -INFINITY - native_color: vlan102-if:2 allocation score on v03-b: -INFINITY -@@ -1569,11 +1569,11 @@ native_color: vlan102-if:7 allocation score on mgmt01: -INFINITY - native_color: vlan102-if:7 allocation score on v03-a: -INFINITY - native_color: vlan102-if:7 allocation score on v03-b: -INFINITY - native_color: vlan103-if:0 allocation score on mgmt01: -INFINITY --native_color: vlan103-if:0 allocation score on v03-a: -INFINITY -+native_color: vlan103-if:0 allocation score on v03-a: 0 - native_color: vlan103-if:0 allocation score on v03-b: 1 - native_color: vlan103-if:1 allocation score on mgmt01: -INFINITY - native_color: vlan103-if:1 allocation score on v03-a: 1 --native_color: vlan103-if:1 allocation score on v03-b: 0 -+native_color: vlan103-if:1 allocation score on v03-b: -INFINITY - native_color: vlan103-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan103-if:2 allocation score on v03-a: -INFINITY - native_color: vlan103-if:2 allocation score on v03-b: -INFINITY -@@ -1593,11 +1593,11 @@ native_color: vlan103-if:7 allocation score on mgmt01: -INFINITY - native_color: vlan103-if:7 allocation score on v03-a: -INFINITY - native_color: vlan103-if:7 allocation score on v03-b: -INFINITY - native_color: vlan104-if:0 allocation score on mgmt01: -INFINITY --native_color: vlan104-if:0 allocation score on v03-a: -INFINITY -+native_color: vlan104-if:0 allocation score on v03-a: 0 - native_color: vlan104-if:0 allocation score on v03-b: 1 - native_color: vlan104-if:1 allocation score on mgmt01: -INFINITY - native_color: vlan104-if:1 allocation score on v03-a: 1 --native_color: vlan104-if:1 allocation score on v03-b: 0 -+native_color: vlan104-if:1 allocation score on v03-b: -INFINITY - native_color: vlan104-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan104-if:2 allocation score on v03-a: -INFINITY - native_color: vlan104-if:2 allocation score on v03-b: -INFINITY -@@ -1617,11 +1617,11 @@ native_color: vlan104-if:7 allocation score on mgmt01: -INFINITY - native_color: vlan104-if:7 allocation score on v03-a: -INFINITY - native_color: vlan104-if:7 allocation score on v03-b: -INFINITY - native_color: vlan200-if:0 allocation score on mgmt01: -INFINITY --native_color: vlan200-if:0 allocation score on v03-a: -INFINITY -+native_color: vlan200-if:0 allocation score on v03-a: 0 - native_color: vlan200-if:0 allocation score on v03-b: 1 - native_color: vlan200-if:1 allocation score on mgmt01: -INFINITY - native_color: vlan200-if:1 allocation score on v03-a: 1 --native_color: vlan200-if:1 allocation score on v03-b: 0 -+native_color: vlan200-if:1 allocation score on v03-b: -INFINITY - native_color: vlan200-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan200-if:2 allocation score on v03-a: -INFINITY - native_color: vlan200-if:2 allocation score on v03-b: -INFINITY -@@ -1641,11 +1641,11 @@ native_color: vlan200-if:7 allocation score on mgmt01: -INFINITY - native_color: vlan200-if:7 allocation score on v03-a: -INFINITY - native_color: vlan200-if:7 allocation score on v03-b: -INFINITY - native_color: vlan3-if:0 allocation score on mgmt01: -INFINITY --native_color: vlan3-if:0 allocation score on v03-a: -INFINITY -+native_color: vlan3-if:0 allocation score on v03-a: 0 - native_color: vlan3-if:0 allocation score on v03-b: 1 - native_color: vlan3-if:1 allocation score on mgmt01: -INFINITY - native_color: vlan3-if:1 allocation score on v03-a: 1 --native_color: vlan3-if:1 allocation score on v03-b: 0 -+native_color: vlan3-if:1 allocation score on v03-b: -INFINITY - native_color: vlan3-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan3-if:2 allocation score on v03-a: -INFINITY - native_color: vlan3-if:2 allocation score on v03-b: -INFINITY -@@ -1665,11 +1665,11 @@ native_color: vlan3-if:7 allocation score on mgmt01: -INFINITY - native_color: vlan3-if:7 allocation score on v03-a: -INFINITY - native_color: vlan3-if:7 allocation score on v03-b: -INFINITY - native_color: vlan4-if:0 allocation score on mgmt01: -INFINITY --native_color: vlan4-if:0 allocation score on v03-a: -INFINITY -+native_color: vlan4-if:0 allocation score on v03-a: 0 - native_color: vlan4-if:0 allocation score on v03-b: 1 - native_color: vlan4-if:1 allocation score on mgmt01: -INFINITY - native_color: vlan4-if:1 allocation score on v03-a: 1 --native_color: vlan4-if:1 allocation score on v03-b: 0 -+native_color: vlan4-if:1 allocation score on v03-b: -INFINITY - native_color: vlan4-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan4-if:2 allocation score on v03-a: -INFINITY - native_color: vlan4-if:2 allocation score on v03-b: -INFINITY -@@ -1689,11 +1689,11 @@ native_color: vlan4-if:7 allocation score on mgmt01: -INFINITY - native_color: vlan4-if:7 allocation score on v03-a: -INFINITY - native_color: vlan4-if:7 allocation score on v03-b: -INFINITY - native_color: vlan5-if:0 allocation score on mgmt01: -INFINITY --native_color: vlan5-if:0 allocation score on v03-a: -INFINITY -+native_color: vlan5-if:0 allocation score on v03-a: 0 - native_color: vlan5-if:0 allocation score on v03-b: 1 - native_color: vlan5-if:1 allocation score on mgmt01: -INFINITY - native_color: vlan5-if:1 allocation score on v03-a: 1 --native_color: vlan5-if:1 allocation score on v03-b: 0 -+native_color: vlan5-if:1 allocation score on v03-b: -INFINITY - native_color: vlan5-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan5-if:2 allocation score on v03-a: -INFINITY - native_color: vlan5-if:2 allocation score on v03-b: -INFINITY -@@ -1713,11 +1713,11 @@ native_color: vlan5-if:7 allocation score on mgmt01: -INFINITY - native_color: vlan5-if:7 allocation score on v03-a: -INFINITY - native_color: vlan5-if:7 allocation score on v03-b: -INFINITY - native_color: vlan900-if:0 allocation score on mgmt01: -INFINITY --native_color: vlan900-if:0 allocation score on v03-a: -INFINITY -+native_color: vlan900-if:0 allocation score on v03-a: 0 - native_color: vlan900-if:0 allocation score on v03-b: 1 - native_color: vlan900-if:1 allocation score on mgmt01: -INFINITY - native_color: vlan900-if:1 allocation score on v03-a: 1 --native_color: vlan900-if:1 allocation score on v03-b: 0 -+native_color: vlan900-if:1 allocation score on v03-b: -INFINITY - native_color: vlan900-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan900-if:2 allocation score on v03-a: -INFINITY - native_color: vlan900-if:2 allocation score on v03-b: -INFINITY -@@ -1737,11 +1737,11 @@ native_color: vlan900-if:7 allocation score on mgmt01: -INFINITY - native_color: vlan900-if:7 allocation score on v03-a: -INFINITY - native_color: vlan900-if:7 allocation score on v03-b: -INFINITY - native_color: vlan909-if:0 allocation score on mgmt01: -INFINITY --native_color: vlan909-if:0 allocation score on v03-a: -INFINITY -+native_color: vlan909-if:0 allocation score on v03-a: 0 - native_color: vlan909-if:0 allocation score on v03-b: 1 - native_color: vlan909-if:1 allocation score on mgmt01: -INFINITY - native_color: vlan909-if:1 allocation score on v03-a: 1 --native_color: vlan909-if:1 allocation score on v03-b: 0 -+native_color: vlan909-if:1 allocation score on v03-b: -INFINITY - native_color: vlan909-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan909-if:2 allocation score on v03-a: -INFINITY - native_color: vlan909-if:2 allocation score on v03-b: -INFINITY -diff --git a/pengine/test10/master-12.scores b/pengine/test10/master-12.scores -index bbef5b7..3f70867 100644 ---- a/pengine/test10/master-12.scores -+++ b/pengine/test10/master-12.scores -@@ -14,10 +14,10 @@ clone_color: sf:1 allocation score on sel4: 1 - drbd0:0 promotion score on sel4: 75 - drbd0:1 promotion score on sel3: 175 - drbd0:2 promotion score on none: 0 --native_color: drbd0:0 allocation score on sel3: -INFINITY -+native_color: drbd0:0 allocation score on sel3: 0 - native_color: drbd0:0 allocation score on sel4: 76 - native_color: drbd0:1 allocation score on sel3: 76 --native_color: drbd0:1 allocation score on sel4: 0 -+native_color: drbd0:1 allocation score on sel4: -INFINITY - native_color: fs0 allocation score on sel3: 76 - native_color: fs0 allocation score on sel4: -INFINITY - native_color: sf:0 allocation score on sel3: 1 -diff --git a/pengine/test10/master-13.scores b/pengine/test10/master-13.scores -index 2167568..491a1f3 100644 ---- a/pengine/test10/master-13.scores -+++ b/pengine/test10/master-13.scores -@@ -18,7 +18,7 @@ native_color: IPaddr0 allocation score on frigg: -INFINITY - native_color: IPaddr0 allocation score on odin: 76 - native_color: MailTo allocation score on frigg: -INFINITY - native_color: MailTo allocation score on odin: 0 --native_color: drbd0:0 allocation score on frigg: -INFINITY -+native_color: drbd0:0 allocation score on frigg: 0 - native_color: drbd0:0 allocation score on odin: 76 - native_color: drbd0:1 allocation score on frigg: 76 --native_color: drbd0:1 allocation score on odin: 0 -+native_color: drbd0:1 allocation score on odin: -INFINITY -diff --git a/pengine/test10/master-4.scores b/pengine/test10/master-4.scores -index aa0b9b7..e5f390d 100644 ---- a/pengine/test10/master-4.scores -+++ b/pengine/test10/master-4.scores -@@ -71,22 +71,22 @@ native_color: DcIPaddr allocation score on c001n01: -INFINITY - native_color: DcIPaddr allocation score on c001n02: -INFINITY - native_color: DcIPaddr allocation score on c001n03: -INFINITY - native_color: DcIPaddr allocation score on c001n08: 0 --native_color: child_DoFencing:0 allocation score on c001n01: -INFINITY --native_color: child_DoFencing:0 allocation score on c001n02: -INFINITY -+native_color: child_DoFencing:0 allocation score on c001n01: 0 -+native_color: child_DoFencing:0 allocation score on c001n02: 0 - native_color: child_DoFencing:0 allocation score on c001n03: 0 - native_color: child_DoFencing:0 allocation score on c001n08: 1 --native_color: child_DoFencing:1 allocation score on c001n01: -INFINITY --native_color: child_DoFencing:1 allocation score on c001n02: -INFINITY -+native_color: child_DoFencing:1 allocation score on c001n01: 0 -+native_color: child_DoFencing:1 allocation score on c001n02: 0 - native_color: child_DoFencing:1 allocation score on c001n03: 1 - native_color: child_DoFencing:1 allocation score on c001n08: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n01: 1 --native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY --native_color: child_DoFencing:2 allocation score on c001n03: 0 --native_color: child_DoFencing:2 allocation score on c001n08: 0 --native_color: child_DoFencing:3 allocation score on c001n01: 0 -+native_color: child_DoFencing:2 allocation score on c001n02: 0 -+native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY -+native_color: child_DoFencing:2 allocation score on c001n08: -INFINITY -+native_color: child_DoFencing:3 allocation score on c001n01: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n02: 1 --native_color: child_DoFencing:3 allocation score on c001n03: 0 --native_color: child_DoFencing:3 allocation score on c001n08: 0 -+native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY -+native_color: child_DoFencing:3 allocation score on c001n08: -INFINITY - native_color: heartbeat_child allocation score on c001n01: -INFINITY - native_color: heartbeat_child allocation score on c001n02: -INFINITY - native_color: heartbeat_child allocation score on c001n03: 0 -@@ -99,38 +99,38 @@ native_color: ocf_child allocation score on c001n01: 0 - native_color: ocf_child allocation score on c001n02: 0 - native_color: ocf_child allocation score on c001n03: 0 - native_color: ocf_child allocation score on c001n08: 0 --native_color: ocf_msdummy:0 allocation score on c001n01: -INFINITY --native_color: ocf_msdummy:0 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:0 allocation score on c001n01: 0 -+native_color: ocf_msdummy:0 allocation score on c001n02: 0 - native_color: ocf_msdummy:0 allocation score on c001n03: 0 - native_color: ocf_msdummy:0 allocation score on c001n08: 1001 --native_color: ocf_msdummy:1 allocation score on c001n01: -INFINITY --native_color: ocf_msdummy:1 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:1 allocation score on c001n01: 0 -+native_color: ocf_msdummy:1 allocation score on c001n02: 0 - native_color: ocf_msdummy:1 allocation score on c001n03: 1 --native_color: ocf_msdummy:1 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:1 allocation score on c001n08: 0 - native_color: ocf_msdummy:2 allocation score on c001n01: 1 --native_color: ocf_msdummy:2 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:2 allocation score on c001n02: 0 - native_color: ocf_msdummy:2 allocation score on c001n03: 0 - native_color: ocf_msdummy:2 allocation score on c001n08: 0 --native_color: ocf_msdummy:3 allocation score on c001n01: -INFINITY --native_color: ocf_msdummy:3 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:3 allocation score on c001n01: 0 -+native_color: ocf_msdummy:3 allocation score on c001n02: 0 - native_color: ocf_msdummy:3 allocation score on c001n03: 0 - native_color: ocf_msdummy:3 allocation score on c001n08: 1 --native_color: ocf_msdummy:4 allocation score on c001n01: -INFINITY --native_color: ocf_msdummy:4 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:4 allocation score on c001n01: 0 -+native_color: ocf_msdummy:4 allocation score on c001n02: 0 - native_color: ocf_msdummy:4 allocation score on c001n03: 1 - native_color: ocf_msdummy:4 allocation score on c001n08: -INFINITY - native_color: ocf_msdummy:5 allocation score on c001n01: 1 --native_color: ocf_msdummy:5 allocation score on c001n02: -INFINITY --native_color: ocf_msdummy:5 allocation score on c001n03: 0 --native_color: ocf_msdummy:5 allocation score on c001n08: 0 --native_color: ocf_msdummy:6 allocation score on c001n01: 0 -+native_color: ocf_msdummy:5 allocation score on c001n02: 0 -+native_color: ocf_msdummy:5 allocation score on c001n03: -INFINITY -+native_color: ocf_msdummy:5 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:6 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:6 allocation score on c001n02: 1 --native_color: ocf_msdummy:6 allocation score on c001n03: 0 --native_color: ocf_msdummy:6 allocation score on c001n08: 0 --native_color: ocf_msdummy:7 allocation score on c001n01: 0 -+native_color: ocf_msdummy:6 allocation score on c001n03: -INFINITY -+native_color: ocf_msdummy:6 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:7 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:7 allocation score on c001n02: 1 --native_color: ocf_msdummy:7 allocation score on c001n03: 0 --native_color: ocf_msdummy:7 allocation score on c001n08: 0 -+native_color: ocf_msdummy:7 allocation score on c001n03: -INFINITY -+native_color: ocf_msdummy:7 allocation score on c001n08: -INFINITY - native_color: rsc_c001n01 allocation score on c001n01: 100 - native_color: rsc_c001n01 allocation score on c001n02: 0 - native_color: rsc_c001n01 allocation score on c001n03: 0 -diff --git a/pengine/test10/master-5.scores b/pengine/test10/master-5.scores -index aa0b9b7..e5f390d 100644 ---- a/pengine/test10/master-5.scores -+++ b/pengine/test10/master-5.scores -@@ -71,22 +71,22 @@ native_color: DcIPaddr allocation score on c001n01: -INFINITY - native_color: DcIPaddr allocation score on c001n02: -INFINITY - native_color: DcIPaddr allocation score on c001n03: -INFINITY - native_color: DcIPaddr allocation score on c001n08: 0 --native_color: child_DoFencing:0 allocation score on c001n01: -INFINITY --native_color: child_DoFencing:0 allocation score on c001n02: -INFINITY -+native_color: child_DoFencing:0 allocation score on c001n01: 0 -+native_color: child_DoFencing:0 allocation score on c001n02: 0 - native_color: child_DoFencing:0 allocation score on c001n03: 0 - native_color: child_DoFencing:0 allocation score on c001n08: 1 --native_color: child_DoFencing:1 allocation score on c001n01: -INFINITY --native_color: child_DoFencing:1 allocation score on c001n02: -INFINITY -+native_color: child_DoFencing:1 allocation score on c001n01: 0 -+native_color: child_DoFencing:1 allocation score on c001n02: 0 - native_color: child_DoFencing:1 allocation score on c001n03: 1 - native_color: child_DoFencing:1 allocation score on c001n08: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n01: 1 --native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY --native_color: child_DoFencing:2 allocation score on c001n03: 0 --native_color: child_DoFencing:2 allocation score on c001n08: 0 --native_color: child_DoFencing:3 allocation score on c001n01: 0 -+native_color: child_DoFencing:2 allocation score on c001n02: 0 -+native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY -+native_color: child_DoFencing:2 allocation score on c001n08: -INFINITY -+native_color: child_DoFencing:3 allocation score on c001n01: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n02: 1 --native_color: child_DoFencing:3 allocation score on c001n03: 0 --native_color: child_DoFencing:3 allocation score on c001n08: 0 -+native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY -+native_color: child_DoFencing:3 allocation score on c001n08: -INFINITY - native_color: heartbeat_child allocation score on c001n01: -INFINITY - native_color: heartbeat_child allocation score on c001n02: -INFINITY - native_color: heartbeat_child allocation score on c001n03: 0 -@@ -99,38 +99,38 @@ native_color: ocf_child allocation score on c001n01: 0 - native_color: ocf_child allocation score on c001n02: 0 - native_color: ocf_child allocation score on c001n03: 0 - native_color: ocf_child allocation score on c001n08: 0 --native_color: ocf_msdummy:0 allocation score on c001n01: -INFINITY --native_color: ocf_msdummy:0 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:0 allocation score on c001n01: 0 -+native_color: ocf_msdummy:0 allocation score on c001n02: 0 - native_color: ocf_msdummy:0 allocation score on c001n03: 0 - native_color: ocf_msdummy:0 allocation score on c001n08: 1001 --native_color: ocf_msdummy:1 allocation score on c001n01: -INFINITY --native_color: ocf_msdummy:1 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:1 allocation score on c001n01: 0 -+native_color: ocf_msdummy:1 allocation score on c001n02: 0 - native_color: ocf_msdummy:1 allocation score on c001n03: 1 --native_color: ocf_msdummy:1 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:1 allocation score on c001n08: 0 - native_color: ocf_msdummy:2 allocation score on c001n01: 1 --native_color: ocf_msdummy:2 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:2 allocation score on c001n02: 0 - native_color: ocf_msdummy:2 allocation score on c001n03: 0 - native_color: ocf_msdummy:2 allocation score on c001n08: 0 --native_color: ocf_msdummy:3 allocation score on c001n01: -INFINITY --native_color: ocf_msdummy:3 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:3 allocation score on c001n01: 0 -+native_color: ocf_msdummy:3 allocation score on c001n02: 0 - native_color: ocf_msdummy:3 allocation score on c001n03: 0 - native_color: ocf_msdummy:3 allocation score on c001n08: 1 --native_color: ocf_msdummy:4 allocation score on c001n01: -INFINITY --native_color: ocf_msdummy:4 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:4 allocation score on c001n01: 0 -+native_color: ocf_msdummy:4 allocation score on c001n02: 0 - native_color: ocf_msdummy:4 allocation score on c001n03: 1 - native_color: ocf_msdummy:4 allocation score on c001n08: -INFINITY - native_color: ocf_msdummy:5 allocation score on c001n01: 1 --native_color: ocf_msdummy:5 allocation score on c001n02: -INFINITY --native_color: ocf_msdummy:5 allocation score on c001n03: 0 --native_color: ocf_msdummy:5 allocation score on c001n08: 0 --native_color: ocf_msdummy:6 allocation score on c001n01: 0 -+native_color: ocf_msdummy:5 allocation score on c001n02: 0 -+native_color: ocf_msdummy:5 allocation score on c001n03: -INFINITY -+native_color: ocf_msdummy:5 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:6 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:6 allocation score on c001n02: 1 --native_color: ocf_msdummy:6 allocation score on c001n03: 0 --native_color: ocf_msdummy:6 allocation score on c001n08: 0 --native_color: ocf_msdummy:7 allocation score on c001n01: 0 -+native_color: ocf_msdummy:6 allocation score on c001n03: -INFINITY -+native_color: ocf_msdummy:6 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:7 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:7 allocation score on c001n02: 1 --native_color: ocf_msdummy:7 allocation score on c001n03: 0 --native_color: ocf_msdummy:7 allocation score on c001n08: 0 -+native_color: ocf_msdummy:7 allocation score on c001n03: -INFINITY -+native_color: ocf_msdummy:7 allocation score on c001n08: -INFINITY - native_color: rsc_c001n01 allocation score on c001n01: 100 - native_color: rsc_c001n01 allocation score on c001n02: 0 - native_color: rsc_c001n01 allocation score on c001n03: 0 -diff --git a/pengine/test10/master-6.scores b/pengine/test10/master-6.scores -index 13fb695..a896612 100644 ---- a/pengine/test10/master-6.scores -+++ b/pengine/test10/master-6.scores -@@ -75,22 +75,22 @@ native_color: DcIPaddr allocation score on c001n01: -INFINITY - native_color: DcIPaddr allocation score on c001n02: -INFINITY - native_color: DcIPaddr allocation score on c001n03: -INFINITY - native_color: DcIPaddr allocation score on c001n08: 0 --native_color: child_DoFencing:0 allocation score on c001n01: -INFINITY -+native_color: child_DoFencing:0 allocation score on c001n01: 0 - native_color: child_DoFencing:0 allocation score on c001n02: 0 --native_color: child_DoFencing:0 allocation score on c001n03: -INFINITY -+native_color: child_DoFencing:0 allocation score on c001n03: 0 - native_color: child_DoFencing:0 allocation score on c001n08: 1 --native_color: child_DoFencing:1 allocation score on c001n01: -INFINITY -+native_color: child_DoFencing:1 allocation score on c001n01: 0 - native_color: child_DoFencing:1 allocation score on c001n02: 1 --native_color: child_DoFencing:1 allocation score on c001n03: -INFINITY -+native_color: child_DoFencing:1 allocation score on c001n03: 0 - native_color: child_DoFencing:1 allocation score on c001n08: -INFINITY --native_color: child_DoFencing:2 allocation score on c001n01: -INFINITY --native_color: child_DoFencing:2 allocation score on c001n02: 0 -+native_color: child_DoFencing:2 allocation score on c001n01: 0 -+native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n03: 1 --native_color: child_DoFencing:2 allocation score on c001n08: 0 -+native_color: child_DoFencing:2 allocation score on c001n08: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n01: 1 --native_color: child_DoFencing:3 allocation score on c001n02: 0 --native_color: child_DoFencing:3 allocation score on c001n03: 0 --native_color: child_DoFencing:3 allocation score on c001n08: 0 -+native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY -+native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY -+native_color: child_DoFencing:3 allocation score on c001n08: -INFINITY - native_color: heartbeat_192.168.100.182 allocation score on c001n01: -INFINITY - native_color: heartbeat_192.168.100.182 allocation score on c001n02: 0 - native_color: heartbeat_192.168.100.182 allocation score on c001n03: -INFINITY -@@ -107,38 +107,38 @@ native_color: ocf_192.168.100.183 allocation score on c001n01: -INFINITY - native_color: ocf_192.168.100.183 allocation score on c001n02: 0 - native_color: ocf_192.168.100.183 allocation score on c001n03: -INFINITY - native_color: ocf_192.168.100.183 allocation score on c001n08: -INFINITY --native_color: ocf_msdummy:0 allocation score on c001n01: -INFINITY -+native_color: ocf_msdummy:0 allocation score on c001n01: 0 - native_color: ocf_msdummy:0 allocation score on c001n02: 0 --native_color: ocf_msdummy:0 allocation score on c001n03: -INFINITY -+native_color: ocf_msdummy:0 allocation score on c001n03: 0 - native_color: ocf_msdummy:0 allocation score on c001n08: 1001 --native_color: ocf_msdummy:1 allocation score on c001n01: -INFINITY -+native_color: ocf_msdummy:1 allocation score on c001n01: 0 - native_color: ocf_msdummy:1 allocation score on c001n02: 1 --native_color: ocf_msdummy:1 allocation score on c001n03: -INFINITY --native_color: ocf_msdummy:1 allocation score on c001n08: -INFINITY --native_color: ocf_msdummy:2 allocation score on c001n01: -INFINITY -+native_color: ocf_msdummy:1 allocation score on c001n03: 0 -+native_color: ocf_msdummy:1 allocation score on c001n08: 0 -+native_color: ocf_msdummy:2 allocation score on c001n01: 0 - native_color: ocf_msdummy:2 allocation score on c001n02: 0 - native_color: ocf_msdummy:2 allocation score on c001n03: 1 - native_color: ocf_msdummy:2 allocation score on c001n08: 0 --native_color: ocf_msdummy:3 allocation score on c001n01: -INFINITY -+native_color: ocf_msdummy:3 allocation score on c001n01: 0 - native_color: ocf_msdummy:3 allocation score on c001n02: 0 --native_color: ocf_msdummy:3 allocation score on c001n03: -INFINITY -+native_color: ocf_msdummy:3 allocation score on c001n03: 0 - native_color: ocf_msdummy:3 allocation score on c001n08: 1 --native_color: ocf_msdummy:4 allocation score on c001n01: -INFINITY -+native_color: ocf_msdummy:4 allocation score on c001n01: 0 - native_color: ocf_msdummy:4 allocation score on c001n02: 1 --native_color: ocf_msdummy:4 allocation score on c001n03: -INFINITY -+native_color: ocf_msdummy:4 allocation score on c001n03: 0 - native_color: ocf_msdummy:4 allocation score on c001n08: -INFINITY --native_color: ocf_msdummy:5 allocation score on c001n01: -INFINITY --native_color: ocf_msdummy:5 allocation score on c001n02: 0 -+native_color: ocf_msdummy:5 allocation score on c001n01: 0 -+native_color: ocf_msdummy:5 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:5 allocation score on c001n03: 1 --native_color: ocf_msdummy:5 allocation score on c001n08: 0 -+native_color: ocf_msdummy:5 allocation score on c001n08: -INFINITY - native_color: ocf_msdummy:6 allocation score on c001n01: 1 --native_color: ocf_msdummy:6 allocation score on c001n02: 0 --native_color: ocf_msdummy:6 allocation score on c001n03: 0 --native_color: ocf_msdummy:6 allocation score on c001n08: 0 -+native_color: ocf_msdummy:6 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:6 allocation score on c001n03: -INFINITY -+native_color: ocf_msdummy:6 allocation score on c001n08: -INFINITY - native_color: ocf_msdummy:7 allocation score on c001n01: 1 --native_color: ocf_msdummy:7 allocation score on c001n02: 0 --native_color: ocf_msdummy:7 allocation score on c001n03: 0 --native_color: ocf_msdummy:7 allocation score on c001n08: 0 -+native_color: ocf_msdummy:7 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:7 allocation score on c001n03: -INFINITY -+native_color: ocf_msdummy:7 allocation score on c001n08: -INFINITY - native_color: rsc_c001n01 allocation score on c001n01: 100 - native_color: rsc_c001n01 allocation score on c001n02: 0 - native_color: rsc_c001n01 allocation score on c001n03: 0 -diff --git a/pengine/test10/master-7.scores b/pengine/test10/master-7.scores -index 207dc8c..37fc6cd 100644 ---- a/pengine/test10/master-7.scores -+++ b/pengine/test10/master-7.scores -@@ -82,14 +82,14 @@ native_color: child_DoFencing:0 allocation score on c001n08: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n01: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n02: 0 - native_color: child_DoFencing:1 allocation score on c001n03: 1 --native_color: child_DoFencing:1 allocation score on c001n08: -INFINITY -+native_color: child_DoFencing:1 allocation score on c001n08: 0 - native_color: child_DoFencing:2 allocation score on c001n01: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n02: 1 - native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY --native_color: child_DoFencing:2 allocation score on c001n08: -INFINITY -+native_color: child_DoFencing:2 allocation score on c001n08: 0 - native_color: child_DoFencing:3 allocation score on c001n01: -INFINITY --native_color: child_DoFencing:3 allocation score on c001n02: 0 --native_color: child_DoFencing:3 allocation score on c001n03: 0 -+native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY -+native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n08: 1 - native_color: heartbeat_192.168.100.182 allocation score on c001n01: -INFINITY - native_color: heartbeat_192.168.100.182 allocation score on c001n02: 0 -@@ -114,11 +114,11 @@ native_color: ocf_msdummy:0 allocation score on c001n08: -INFINITY - native_color: ocf_msdummy:1 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:1 allocation score on c001n02: 0 - native_color: ocf_msdummy:1 allocation score on c001n03: 1 --native_color: ocf_msdummy:1 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:1 allocation score on c001n08: 0 - native_color: ocf_msdummy:2 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:2 allocation score on c001n02: 1 --native_color: ocf_msdummy:2 allocation score on c001n03: -INFINITY --native_color: ocf_msdummy:2 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:2 allocation score on c001n03: 0 -+native_color: ocf_msdummy:2 allocation score on c001n08: 0 - native_color: ocf_msdummy:3 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:3 allocation score on c001n02: 0 - native_color: ocf_msdummy:3 allocation score on c001n03: 0 -@@ -130,14 +130,14 @@ native_color: ocf_msdummy:4 allocation score on c001n08: -INFINITY - native_color: ocf_msdummy:5 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:5 allocation score on c001n02: 0 - native_color: ocf_msdummy:5 allocation score on c001n03: 1 --native_color: ocf_msdummy:5 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:5 allocation score on c001n08: 0 - native_color: ocf_msdummy:6 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:6 allocation score on c001n02: 1 - native_color: ocf_msdummy:6 allocation score on c001n03: -INFINITY --native_color: ocf_msdummy:6 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:6 allocation score on c001n08: 0 - native_color: ocf_msdummy:7 allocation score on c001n01: -INFINITY --native_color: ocf_msdummy:7 allocation score on c001n02: 0 --native_color: ocf_msdummy:7 allocation score on c001n03: 0 -+native_color: ocf_msdummy:7 allocation score on c001n02: -INFINITY -+native_color: ocf_msdummy:7 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:7 allocation score on c001n08: 1 - native_color: rsc_c001n01 allocation score on c001n01: 100 - native_color: rsc_c001n01 allocation score on c001n02: 0 -diff --git a/pengine/test10/master-8.scores b/pengine/test10/master-8.scores -index 88cf1ed..c9d1cc9 100644 ---- a/pengine/test10/master-8.scores -+++ b/pengine/test10/master-8.scores -@@ -82,14 +82,14 @@ native_color: child_DoFencing:0 allocation score on c001n08: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n01: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n02: 0 - native_color: child_DoFencing:1 allocation score on c001n03: 1 --native_color: child_DoFencing:1 allocation score on c001n08: -INFINITY -+native_color: child_DoFencing:1 allocation score on c001n08: 0 - native_color: child_DoFencing:2 allocation score on c001n01: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n02: 1 - native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY --native_color: child_DoFencing:2 allocation score on c001n08: -INFINITY -+native_color: child_DoFencing:2 allocation score on c001n08: 0 - native_color: child_DoFencing:3 allocation score on c001n01: -INFINITY --native_color: child_DoFencing:3 allocation score on c001n02: 0 --native_color: child_DoFencing:3 allocation score on c001n03: 0 -+native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY -+native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n08: 1 - native_color: heartbeat_192.168.100.182 allocation score on c001n01: -INFINITY - native_color: heartbeat_192.168.100.182 allocation score on c001n02: 0 -@@ -114,11 +114,11 @@ native_color: ocf_msdummy:0 allocation score on c001n08: -INFINITY - native_color: ocf_msdummy:1 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:1 allocation score on c001n02: 0 - native_color: ocf_msdummy:1 allocation score on c001n03: 1 --native_color: ocf_msdummy:1 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:1 allocation score on c001n08: 0 - native_color: ocf_msdummy:2 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:2 allocation score on c001n02: 1 - native_color: ocf_msdummy:2 allocation score on c001n03: 0 --native_color: ocf_msdummy:2 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:2 allocation score on c001n08: 0 - native_color: ocf_msdummy:3 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:3 allocation score on c001n02: 0 - native_color: ocf_msdummy:3 allocation score on c001n03: 0 -@@ -134,9 +134,9 @@ native_color: ocf_msdummy:5 allocation score on c001n08: -INFINITY - native_color: ocf_msdummy:6 allocation score on c001n01: -INFINITY - native_color: ocf_msdummy:6 allocation score on c001n02: 1 - native_color: ocf_msdummy:6 allocation score on c001n03: 0 --native_color: ocf_msdummy:6 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:6 allocation score on c001n08: 0 - native_color: ocf_msdummy:7 allocation score on c001n01: -INFINITY --native_color: ocf_msdummy:7 allocation score on c001n02: 0 -+native_color: ocf_msdummy:7 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:7 allocation score on c001n03: 0 - native_color: ocf_msdummy:7 allocation score on c001n08: 1 - native_color: rsc_c001n01 allocation score on c001n01: 100 -diff --git a/pengine/test10/master-demote-2.scores b/pengine/test10/master-demote-2.scores -index 0455105..2d4d1f0 100644 ---- a/pengine/test10/master-demote-2.scores -+++ b/pengine/test10/master-demote-2.scores -@@ -69,18 +69,18 @@ native_color: migrator allocation score on pcmk-3: 0 - native_color: migrator allocation score on pcmk-4: 0 - native_color: ping-1:0 allocation score on pcmk-1: 1 - native_color: ping-1:0 allocation score on pcmk-2: 0 --native_color: ping-1:0 allocation score on pcmk-3: -INFINITY -+native_color: ping-1:0 allocation score on pcmk-3: 0 - native_color: ping-1:0 allocation score on pcmk-4: 0 - native_color: ping-1:1 allocation score on pcmk-1: -INFINITY - native_color: ping-1:1 allocation score on pcmk-2: 1 --native_color: ping-1:1 allocation score on pcmk-3: -INFINITY --native_color: ping-1:1 allocation score on pcmk-4: -INFINITY --native_color: ping-1:2 allocation score on pcmk-1: 0 --native_color: ping-1:2 allocation score on pcmk-2: 0 -+native_color: ping-1:1 allocation score on pcmk-3: 0 -+native_color: ping-1:1 allocation score on pcmk-4: 0 -+native_color: ping-1:2 allocation score on pcmk-1: -INFINITY -+native_color: ping-1:2 allocation score on pcmk-2: -INFINITY - native_color: ping-1:2 allocation score on pcmk-3: 1 - native_color: ping-1:2 allocation score on pcmk-4: 0 - native_color: ping-1:3 allocation score on pcmk-1: -INFINITY --native_color: ping-1:3 allocation score on pcmk-2: 0 -+native_color: ping-1:3 allocation score on pcmk-2: -INFINITY - native_color: ping-1:3 allocation score on pcmk-3: -INFINITY - native_color: ping-1:3 allocation score on pcmk-4: 1 - native_color: r192.168.122.105 allocation score on pcmk-1: -INFINITY -diff --git a/pengine/test10/master-demote.scores b/pengine/test10/master-demote.scores -index 9046c30..7c654f3 100644 ---- a/pengine/test10/master-demote.scores -+++ b/pengine/test10/master-demote.scores -@@ -51,8 +51,8 @@ native_color: named_address allocation score on cxb1: 210 - native_color: named_daemon allocation score on cxa1: -INFINITY - native_color: named_daemon allocation score on cxb1: -INFINITY - native_color: named_drbd_node:0 allocation score on cxa1: 76 --native_color: named_drbd_node:0 allocation score on cxb1: -INFINITY --native_color: named_drbd_node:1 allocation score on cxa1: 0 -+native_color: named_drbd_node:0 allocation score on cxb1: 0 -+native_color: named_drbd_node:1 allocation score on cxa1: -INFINITY - native_color: named_drbd_node:1 allocation score on cxb1: 76 - native_color: named_filesys allocation score on cxa1: -INFINITY - native_color: named_filesys allocation score on cxb1: -INFINITY -diff --git a/pengine/test10/master-dependent-ban.scores b/pengine/test10/master-dependent-ban.scores -index 0964ff3..ea70651 100644 ---- a/pengine/test10/master-dependent-ban.scores -+++ b/pengine/test10/master-dependent-ban.scores -@@ -11,11 +11,8 @@ clone_color: p_drbd-dtest1:1 allocation score on c8: -INFINITY - native_color: p_drbd-dtest1:0 allocation score on c6: -INFINITY - native_color: p_drbd-dtest1:0 allocation score on c7: 1001 - native_color: p_drbd-dtest1:0 allocation score on c8: -INFINITY --native_color: p_drbd-dtest1:1 allocation score on c6: -INFINITY - native_color: p_drbd-dtest1:1 allocation score on c6: 6 - native_color: p_drbd-dtest1:1 allocation score on c7: -INFINITY --native_color: p_drbd-dtest1:1 allocation score on c7: 0 --native_color: p_drbd-dtest1:1 allocation score on c8: -INFINITY - native_color: p_drbd-dtest1:1 allocation score on c8: -INFINITY - native_color: p_dtest1 allocation score on c6: -INFINITY - native_color: p_dtest1 allocation score on c7: 1001 -diff --git a/pengine/test10/master-notify.scores b/pengine/test10/master-notify.scores -index 7a93db0..f44754b 100644 ---- a/pengine/test10/master-notify.scores -+++ b/pengine/test10/master-notify.scores -@@ -15,14 +15,14 @@ fake:0 promotion score on rhel7-auto1: 5 - fake:1 promotion score on rhel7-auto3: 5 - fake:2 promotion score on rhel7-auto2: 5 - native_color: fake:0 allocation score on rhel7-auto1: 6 --native_color: fake:0 allocation score on rhel7-auto2: -INFINITY --native_color: fake:0 allocation score on rhel7-auto3: -INFINITY --native_color: fake:1 allocation score on rhel7-auto1: 0 --native_color: fake:1 allocation score on rhel7-auto2: -INFINITY -+native_color: fake:0 allocation score on rhel7-auto2: 0 -+native_color: fake:0 allocation score on rhel7-auto3: 0 -+native_color: fake:1 allocation score on rhel7-auto1: -INFINITY -+native_color: fake:1 allocation score on rhel7-auto2: 0 - native_color: fake:1 allocation score on rhel7-auto3: 6 --native_color: fake:2 allocation score on rhel7-auto1: 0 -+native_color: fake:2 allocation score on rhel7-auto1: -INFINITY - native_color: fake:2 allocation score on rhel7-auto2: 6 --native_color: fake:2 allocation score on rhel7-auto3: 0 -+native_color: fake:2 allocation score on rhel7-auto3: -INFINITY - native_color: shooter allocation score on rhel7-auto1: 0 - native_color: shooter allocation score on rhel7-auto2: 0 - native_color: shooter allocation score on rhel7-auto3: 0 -diff --git a/pengine/test10/master-role.scores b/pengine/test10/master-role.scores -index 6ea7a0a..6524faa 100644 ---- a/pengine/test10/master-role.scores -+++ b/pengine/test10/master-role.scores -@@ -5,9 +5,9 @@ clone_color: res_Stateful_1:0 allocation score on sles11-a: 0 - clone_color: res_Stateful_1:0 allocation score on sles11-b: 11 - clone_color: res_Stateful_1:1 allocation score on sles11-a: 11 - clone_color: res_Stateful_1:1 allocation score on sles11-b: 0 --native_color: res_Stateful_1:0 allocation score on sles11-a: -INFINITY -+native_color: res_Stateful_1:0 allocation score on sles11-a: 0 - native_color: res_Stateful_1:0 allocation score on sles11-b: 11 - native_color: res_Stateful_1:1 allocation score on sles11-a: 11 --native_color: res_Stateful_1:1 allocation score on sles11-b: 0 -+native_color: res_Stateful_1:1 allocation score on sles11-b: -INFINITY - res_Stateful_1:0 promotion score on sles11-b: 10 - res_Stateful_1:1 promotion score on sles11-a: 10 -diff --git a/pengine/test10/master-unmanaged-monitor.scores b/pengine/test10/master-unmanaged-monitor.scores -index c8ca2c3..fa5e100 100644 ---- a/pengine/test10/master-unmanaged-monitor.scores -+++ b/pengine/test10/master-unmanaged-monitor.scores -@@ -99,22 +99,22 @@ native_color: migrator allocation score on pcmk-1: 0 - native_color: migrator allocation score on pcmk-2: 0 - native_color: migrator allocation score on pcmk-3: 0 - native_color: migrator allocation score on pcmk-4: INFINITY --native_color: ping-1:0 allocation score on pcmk-1: -INFINITY -+native_color: ping-1:0 allocation score on pcmk-1: 0 - native_color: ping-1:0 allocation score on pcmk-2: INFINITY - native_color: ping-1:0 allocation score on pcmk-3: 0 - native_color: ping-1:0 allocation score on pcmk-4: 0 --native_color: ping-1:1 allocation score on pcmk-1: -INFINITY -+native_color: ping-1:1 allocation score on pcmk-1: 0 - native_color: ping-1:1 allocation score on pcmk-2: -INFINITY - native_color: ping-1:1 allocation score on pcmk-3: INFINITY --native_color: ping-1:1 allocation score on pcmk-4: -INFINITY --native_color: ping-1:2 allocation score on pcmk-1: -INFINITY -+native_color: ping-1:1 allocation score on pcmk-4: 0 -+native_color: ping-1:2 allocation score on pcmk-1: 0 - native_color: ping-1:2 allocation score on pcmk-2: -INFINITY --native_color: ping-1:2 allocation score on pcmk-3: 0 -+native_color: ping-1:2 allocation score on pcmk-3: -INFINITY - native_color: ping-1:2 allocation score on pcmk-4: INFINITY - native_color: ping-1:3 allocation score on pcmk-1: INFINITY --native_color: ping-1:3 allocation score on pcmk-2: 0 --native_color: ping-1:3 allocation score on pcmk-3: 0 --native_color: ping-1:3 allocation score on pcmk-4: 0 -+native_color: ping-1:3 allocation score on pcmk-2: -INFINITY -+native_color: ping-1:3 allocation score on pcmk-3: -INFINITY -+native_color: ping-1:3 allocation score on pcmk-4: -INFINITY - native_color: r192.168.122.112 allocation score on pcmk-1: -INFINITY - native_color: r192.168.122.112 allocation score on pcmk-2: -INFINITY - native_color: r192.168.122.112 allocation score on pcmk-3: INFINITY -diff --git a/pengine/test10/migrate-begin.scores b/pengine/test10/migrate-begin.scores -index da34108..0ed41b2 100644 ---- a/pengine/test10/migrate-begin.scores -+++ b/pengine/test10/migrate-begin.scores -@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0 - clone_color: dlm:0 allocation score on hex-14: 1 - clone_color: dlm:1 allocation score on hex-13: 1 - clone_color: dlm:1 allocation score on hex-14: 0 --native_color: dlm:0 allocation score on hex-13: -INFINITY -+native_color: dlm:0 allocation score on hex-13: 0 - native_color: dlm:0 allocation score on hex-14: 1 - native_color: dlm:1 allocation score on hex-13: 1 --native_color: dlm:1 allocation score on hex-14: 0 -+native_color: dlm:1 allocation score on hex-14: -INFINITY - native_color: test-vm allocation score on hex-13: 0 - native_color: test-vm allocation score on hex-14: -INFINITY -diff --git a/pengine/test10/migrate-both-vms.scores b/pengine/test10/migrate-both-vms.scores -index 5879699..c8ec735 100644 ---- a/pengine/test10/migrate-both-vms.scores -+++ b/pengine/test10/migrate-both-vms.scores -@@ -135,7 +135,7 @@ native_color: fs-libvirt-VM-xcm:0 allocation score on cvmh01: -INFINITY - native_color: fs-libvirt-VM-xcm:0 allocation score on cvmh02: -INFINITY - native_color: fs-libvirt-VM-xcm:0 allocation score on cvmh03: -INFINITY - native_color: fs-libvirt-VM-xcm:0 allocation score on cvmh04: -INFINITY --native_color: fs-libvirt-VM-xcm:1 allocation score on cvmh01: -INFINITY -+native_color: fs-libvirt-VM-xcm:1 allocation score on cvmh01: 0 - native_color: fs-libvirt-VM-xcm:1 allocation score on cvmh02: 1 - native_color: fs-libvirt-VM-xcm:1 allocation score on cvmh03: -INFINITY - native_color: fs-libvirt-VM-xcm:1 allocation score on cvmh04: -INFINITY -@@ -144,14 +144,14 @@ native_color: fs-libvirt-VM-xcm:2 allocation score on cvmh02: -INFINITY - native_color: fs-libvirt-VM-xcm:2 allocation score on cvmh03: -INFINITY - native_color: fs-libvirt-VM-xcm:2 allocation score on cvmh04: -INFINITY - native_color: fs-libvirt-VM-xcm:3 allocation score on cvmh01: 1 --native_color: fs-libvirt-VM-xcm:3 allocation score on cvmh02: 0 -+native_color: fs-libvirt-VM-xcm:3 allocation score on cvmh02: -INFINITY - native_color: fs-libvirt-VM-xcm:3 allocation score on cvmh03: -INFINITY - native_color: fs-libvirt-VM-xcm:3 allocation score on cvmh04: -INFINITY - native_color: p-fs-gpfs:0 allocation score on cvmh01: -INFINITY - native_color: p-fs-gpfs:0 allocation score on cvmh02: -INFINITY - native_color: p-fs-gpfs:0 allocation score on cvmh03: -INFINITY - native_color: p-fs-gpfs:0 allocation score on cvmh04: -INFINITY --native_color: p-fs-gpfs:1 allocation score on cvmh01: -INFINITY -+native_color: p-fs-gpfs:1 allocation score on cvmh01: 0 - native_color: p-fs-gpfs:1 allocation score on cvmh02: 1 - native_color: p-fs-gpfs:1 allocation score on cvmh03: -INFINITY - native_color: p-fs-gpfs:1 allocation score on cvmh04: -INFINITY -@@ -160,7 +160,7 @@ native_color: p-fs-gpfs:2 allocation score on cvmh02: -INFINITY - native_color: p-fs-gpfs:2 allocation score on cvmh03: -INFINITY - native_color: p-fs-gpfs:2 allocation score on cvmh04: -INFINITY - native_color: p-fs-gpfs:3 allocation score on cvmh01: 1 --native_color: p-fs-gpfs:3 allocation score on cvmh02: 0 -+native_color: p-fs-gpfs:3 allocation score on cvmh02: -INFINITY - native_color: p-fs-gpfs:3 allocation score on cvmh03: -INFINITY - native_color: p-fs-gpfs:3 allocation score on cvmh04: -INFINITY - native_color: p-libvirtd:0 allocation score on cvmh01: -INFINITY -@@ -183,7 +183,7 @@ native_color: p-watch-ib0:0 allocation score on cvmh01: -INFINITY - native_color: p-watch-ib0:0 allocation score on cvmh02: -INFINITY - native_color: p-watch-ib0:0 allocation score on cvmh03: -INFINITY - native_color: p-watch-ib0:0 allocation score on cvmh04: -INFINITY --native_color: p-watch-ib0:1 allocation score on cvmh01: -INFINITY -+native_color: p-watch-ib0:1 allocation score on cvmh01: 0 - native_color: p-watch-ib0:1 allocation score on cvmh02: 1 - native_color: p-watch-ib0:1 allocation score on cvmh03: -INFINITY - native_color: p-watch-ib0:1 allocation score on cvmh04: -INFINITY -@@ -192,7 +192,7 @@ native_color: p-watch-ib0:2 allocation score on cvmh02: -INFINITY - native_color: p-watch-ib0:2 allocation score on cvmh03: -INFINITY - native_color: p-watch-ib0:2 allocation score on cvmh04: -INFINITY - native_color: p-watch-ib0:3 allocation score on cvmh01: 1 --native_color: p-watch-ib0:3 allocation score on cvmh02: 0 -+native_color: p-watch-ib0:3 allocation score on cvmh02: -INFINITY - native_color: p-watch-ib0:3 allocation score on cvmh03: -INFINITY - native_color: p-watch-ib0:3 allocation score on cvmh04: -INFINITY - native_color: vm-compute-test allocation score on cvmh01: 0 -diff --git a/pengine/test10/migrate-fail-2.scores b/pengine/test10/migrate-fail-2.scores -index da34108..0ed41b2 100644 ---- a/pengine/test10/migrate-fail-2.scores -+++ b/pengine/test10/migrate-fail-2.scores -@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0 - clone_color: dlm:0 allocation score on hex-14: 1 - clone_color: dlm:1 allocation score on hex-13: 1 - clone_color: dlm:1 allocation score on hex-14: 0 --native_color: dlm:0 allocation score on hex-13: -INFINITY -+native_color: dlm:0 allocation score on hex-13: 0 - native_color: dlm:0 allocation score on hex-14: 1 - native_color: dlm:1 allocation score on hex-13: 1 --native_color: dlm:1 allocation score on hex-14: 0 -+native_color: dlm:1 allocation score on hex-14: -INFINITY - native_color: test-vm allocation score on hex-13: 0 - native_color: test-vm allocation score on hex-14: -INFINITY -diff --git a/pengine/test10/migrate-fail-4.scores b/pengine/test10/migrate-fail-4.scores -index da34108..0ed41b2 100644 ---- a/pengine/test10/migrate-fail-4.scores -+++ b/pengine/test10/migrate-fail-4.scores -@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0 - clone_color: dlm:0 allocation score on hex-14: 1 - clone_color: dlm:1 allocation score on hex-13: 1 - clone_color: dlm:1 allocation score on hex-14: 0 --native_color: dlm:0 allocation score on hex-13: -INFINITY -+native_color: dlm:0 allocation score on hex-13: 0 - native_color: dlm:0 allocation score on hex-14: 1 - native_color: dlm:1 allocation score on hex-13: 1 --native_color: dlm:1 allocation score on hex-14: 0 -+native_color: dlm:1 allocation score on hex-14: -INFINITY - native_color: test-vm allocation score on hex-13: 0 - native_color: test-vm allocation score on hex-14: -INFINITY -diff --git a/pengine/test10/migrate-fail-5.scores b/pengine/test10/migrate-fail-5.scores -index da34108..0ed41b2 100644 ---- a/pengine/test10/migrate-fail-5.scores -+++ b/pengine/test10/migrate-fail-5.scores -@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0 - clone_color: dlm:0 allocation score on hex-14: 1 - clone_color: dlm:1 allocation score on hex-13: 1 - clone_color: dlm:1 allocation score on hex-14: 0 --native_color: dlm:0 allocation score on hex-13: -INFINITY -+native_color: dlm:0 allocation score on hex-13: 0 - native_color: dlm:0 allocation score on hex-14: 1 - native_color: dlm:1 allocation score on hex-13: 1 --native_color: dlm:1 allocation score on hex-14: 0 -+native_color: dlm:1 allocation score on hex-14: -INFINITY - native_color: test-vm allocation score on hex-13: 0 - native_color: test-vm allocation score on hex-14: -INFINITY -diff --git a/pengine/test10/migrate-fail-6.scores b/pengine/test10/migrate-fail-6.scores -index da34108..0ed41b2 100644 ---- a/pengine/test10/migrate-fail-6.scores -+++ b/pengine/test10/migrate-fail-6.scores -@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0 - clone_color: dlm:0 allocation score on hex-14: 1 - clone_color: dlm:1 allocation score on hex-13: 1 - clone_color: dlm:1 allocation score on hex-14: 0 --native_color: dlm:0 allocation score on hex-13: -INFINITY -+native_color: dlm:0 allocation score on hex-13: 0 - native_color: dlm:0 allocation score on hex-14: 1 - native_color: dlm:1 allocation score on hex-13: 1 --native_color: dlm:1 allocation score on hex-14: 0 -+native_color: dlm:1 allocation score on hex-14: -INFINITY - native_color: test-vm allocation score on hex-13: 0 - native_color: test-vm allocation score on hex-14: -INFINITY -diff --git a/pengine/test10/migrate-fail-8.scores b/pengine/test10/migrate-fail-8.scores -index da34108..0ed41b2 100644 ---- a/pengine/test10/migrate-fail-8.scores -+++ b/pengine/test10/migrate-fail-8.scores -@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0 - clone_color: dlm:0 allocation score on hex-14: 1 - clone_color: dlm:1 allocation score on hex-13: 1 - clone_color: dlm:1 allocation score on hex-14: 0 --native_color: dlm:0 allocation score on hex-13: -INFINITY -+native_color: dlm:0 allocation score on hex-13: 0 - native_color: dlm:0 allocation score on hex-14: 1 - native_color: dlm:1 allocation score on hex-13: 1 --native_color: dlm:1 allocation score on hex-14: 0 -+native_color: dlm:1 allocation score on hex-14: -INFINITY - native_color: test-vm allocation score on hex-13: 0 - native_color: test-vm allocation score on hex-14: -INFINITY -diff --git a/pengine/test10/migrate-fail-9.scores b/pengine/test10/migrate-fail-9.scores -index da34108..0ed41b2 100644 ---- a/pengine/test10/migrate-fail-9.scores -+++ b/pengine/test10/migrate-fail-9.scores -@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0 - clone_color: dlm:0 allocation score on hex-14: 1 - clone_color: dlm:1 allocation score on hex-13: 1 - clone_color: dlm:1 allocation score on hex-14: 0 --native_color: dlm:0 allocation score on hex-13: -INFINITY -+native_color: dlm:0 allocation score on hex-13: 0 - native_color: dlm:0 allocation score on hex-14: 1 - native_color: dlm:1 allocation score on hex-13: 1 --native_color: dlm:1 allocation score on hex-14: 0 -+native_color: dlm:1 allocation score on hex-14: -INFINITY - native_color: test-vm allocation score on hex-13: 0 - native_color: test-vm allocation score on hex-14: -INFINITY -diff --git a/pengine/test10/migrate-fencing.scores b/pengine/test10/migrate-fencing.scores -index c68de49..3febd69 100644 ---- a/pengine/test10/migrate-fencing.scores -+++ b/pengine/test10/migrate-fencing.scores -@@ -84,12 +84,12 @@ native_color: FencingChild:1 allocation score on pcmk-2: 0 - native_color: FencingChild:1 allocation score on pcmk-3: 0 - native_color: FencingChild:1 allocation score on pcmk-4: -INFINITY - native_color: FencingChild:2 allocation score on pcmk-1: -INFINITY --native_color: FencingChild:2 allocation score on pcmk-2: -INFINITY -+native_color: FencingChild:2 allocation score on pcmk-2: 0 - native_color: FencingChild:2 allocation score on pcmk-3: 1 - native_color: FencingChild:2 allocation score on pcmk-4: -INFINITY - native_color: FencingChild:3 allocation score on pcmk-1: -INFINITY - native_color: FencingChild:3 allocation score on pcmk-2: 1 --native_color: FencingChild:3 allocation score on pcmk-3: 0 -+native_color: FencingChild:3 allocation score on pcmk-3: -INFINITY - native_color: FencingChild:3 allocation score on pcmk-4: -INFINITY - native_color: lsb-dummy allocation score on pcmk-1: 0 - native_color: lsb-dummy allocation score on pcmk-2: -INFINITY -@@ -104,16 +104,16 @@ native_color: ping-1:0 allocation score on pcmk-2: -INFINITY - native_color: ping-1:0 allocation score on pcmk-3: -INFINITY - native_color: ping-1:0 allocation score on pcmk-4: -INFINITY - native_color: ping-1:1 allocation score on pcmk-1: 1 --native_color: ping-1:1 allocation score on pcmk-2: -INFINITY --native_color: ping-1:1 allocation score on pcmk-3: -INFINITY -+native_color: ping-1:1 allocation score on pcmk-2: 0 -+native_color: ping-1:1 allocation score on pcmk-3: 0 - native_color: ping-1:1 allocation score on pcmk-4: -INFINITY --native_color: ping-1:2 allocation score on pcmk-1: 0 --native_color: ping-1:2 allocation score on pcmk-2: -INFINITY -+native_color: ping-1:2 allocation score on pcmk-1: -INFINITY -+native_color: ping-1:2 allocation score on pcmk-2: 0 - native_color: ping-1:2 allocation score on pcmk-3: 1 - native_color: ping-1:2 allocation score on pcmk-4: -INFINITY --native_color: ping-1:3 allocation score on pcmk-1: 0 -+native_color: ping-1:3 allocation score on pcmk-1: -INFINITY - native_color: ping-1:3 allocation score on pcmk-2: 1 --native_color: ping-1:3 allocation score on pcmk-3: 0 -+native_color: ping-1:3 allocation score on pcmk-3: -INFINITY - native_color: ping-1:3 allocation score on pcmk-4: -INFINITY - native_color: r192.168.101.181 allocation score on pcmk-1: 6 - native_color: r192.168.101.181 allocation score on pcmk-2: -INFINITY -@@ -152,12 +152,12 @@ native_color: stateful-1:1 allocation score on pcmk-2: 0 - native_color: stateful-1:1 allocation score on pcmk-3: 0 - native_color: stateful-1:1 allocation score on pcmk-4: -INFINITY - native_color: stateful-1:2 allocation score on pcmk-1: -INFINITY --native_color: stateful-1:2 allocation score on pcmk-2: -INFINITY -+native_color: stateful-1:2 allocation score on pcmk-2: 0 - native_color: stateful-1:2 allocation score on pcmk-3: 6 - native_color: stateful-1:2 allocation score on pcmk-4: -INFINITY - native_color: stateful-1:3 allocation score on pcmk-1: -INFINITY - native_color: stateful-1:3 allocation score on pcmk-2: 6 --native_color: stateful-1:3 allocation score on pcmk-3: 0 -+native_color: stateful-1:3 allocation score on pcmk-3: -INFINITY - native_color: stateful-1:3 allocation score on pcmk-4: -INFINITY - stateful-1:0 promotion score on none: 0 - stateful-1:1 promotion score on pcmk-1: 5 -diff --git a/pengine/test10/migrate-partial-2.scores b/pengine/test10/migrate-partial-2.scores -index da34108..0ed41b2 100644 ---- a/pengine/test10/migrate-partial-2.scores -+++ b/pengine/test10/migrate-partial-2.scores -@@ -5,9 +5,9 @@ clone_color: dlm:0 allocation score on hex-13: 0 - clone_color: dlm:0 allocation score on hex-14: 1 - clone_color: dlm:1 allocation score on hex-13: 1 - clone_color: dlm:1 allocation score on hex-14: 0 --native_color: dlm:0 allocation score on hex-13: -INFINITY -+native_color: dlm:0 allocation score on hex-13: 0 - native_color: dlm:0 allocation score on hex-14: 1 - native_color: dlm:1 allocation score on hex-13: 1 --native_color: dlm:1 allocation score on hex-14: 0 -+native_color: dlm:1 allocation score on hex-14: -INFINITY - native_color: test-vm allocation score on hex-13: 0 - native_color: test-vm allocation score on hex-14: -INFINITY -diff --git a/pengine/test10/migrate-partial-3.scores b/pengine/test10/migrate-partial-3.scores -index 309b51c..7448a6d 100644 ---- a/pengine/test10/migrate-partial-3.scores -+++ b/pengine/test10/migrate-partial-3.scores -@@ -11,11 +11,11 @@ clone_color: dlm:1 allocation score on hex-15: 0 - clone_color: dlm:2 allocation score on hex-13: 0 - clone_color: dlm:2 allocation score on hex-14: 0 - clone_color: dlm:2 allocation score on hex-15: 0 --native_color: dlm:0 allocation score on hex-13: -INFINITY -+native_color: dlm:0 allocation score on hex-13: 0 - native_color: dlm:0 allocation score on hex-14: 1 - native_color: dlm:0 allocation score on hex-15: -INFINITY - native_color: dlm:1 allocation score on hex-13: 1 --native_color: dlm:1 allocation score on hex-14: 0 -+native_color: dlm:1 allocation score on hex-14: -INFINITY - native_color: dlm:1 allocation score on hex-15: -INFINITY - native_color: dlm:2 allocation score on hex-13: -INFINITY - native_color: dlm:2 allocation score on hex-14: -INFINITY -diff --git a/pengine/test10/not-reschedule-unneeded-monitor.scores b/pengine/test10/not-reschedule-unneeded-monitor.scores -index 3bc02ed..3591076 100644 ---- a/pengine/test10/not-reschedule-unneeded-monitor.scores -+++ b/pengine/test10/not-reschedule-unneeded-monitor.scores -@@ -25,28 +25,28 @@ clone_color: vmdisk:0 allocation score on castor: 0 - clone_color: vmdisk:0 allocation score on kimball: 1 - clone_color: vmdisk:1 allocation score on castor: 1 - clone_color: vmdisk:1 allocation score on kimball: 0 --group_color: vm-fs:0 allocation score on castor: -INFINITY -+group_color: vm-fs:0 allocation score on castor: 0 - group_color: vm-fs:0 allocation score on kimball: 1 - group_color: vm-fs:1 allocation score on castor: 1 --group_color: vm-fs:1 allocation score on kimball: 0 --group_color: vm1:0 allocation score on castor: -INFINITY -+group_color: vm-fs:1 allocation score on kimball: -INFINITY -+group_color: vm1:0 allocation score on castor: 0 - group_color: vm1:0 allocation score on kimball: 0 - group_color: vm1:1 allocation score on castor: 0 --group_color: vm1:1 allocation score on kimball: 0 --group_color: vmdisk:0 allocation score on castor: -INFINITY -+group_color: vm1:1 allocation score on kimball: -INFINITY -+group_color: vmdisk:0 allocation score on castor: 0 - group_color: vmdisk:0 allocation score on kimball: 1 - group_color: vmdisk:1 allocation score on castor: 1 --group_color: vmdisk:1 allocation score on kimball: 0 --native_color: dlm:0 allocation score on castor: -INFINITY -+group_color: vmdisk:1 allocation score on kimball: -INFINITY -+native_color: dlm:0 allocation score on castor: 0 - native_color: dlm:0 allocation score on kimball: 1 - native_color: dlm:1 allocation score on castor: 1 --native_color: dlm:1 allocation score on kimball: 0 -+native_color: dlm:1 allocation score on kimball: -INFINITY - native_color: sbd allocation score on castor: 0 - native_color: sbd allocation score on kimball: 1 --native_color: sgdisk:0 allocation score on castor: -INFINITY -+native_color: sgdisk:0 allocation score on castor: 0 - native_color: sgdisk:0 allocation score on kimball: 1 - native_color: sgdisk:1 allocation score on castor: 1 --native_color: sgdisk:1 allocation score on kimball: 0 -+native_color: sgdisk:1 allocation score on kimball: -INFINITY - native_color: sle12-kvm allocation score on castor: -INFINITY - native_color: sle12-kvm allocation score on kimball: 0 - native_color: vm-fs:0 allocation score on castor: -INFINITY -diff --git a/pengine/test10/novell-251689.scores b/pengine/test10/novell-251689.scores -index c433786..5dc9b48 100644 ---- a/pengine/test10/novell-251689.scores -+++ b/pengine/test10/novell-251689.scores -@@ -29,25 +29,25 @@ clone_color: stonithclone:1 allocation score on node1: 1 - clone_color: stonithclone:1 allocation score on node2: 0 - clone_color: stonithcloneset allocation score on node1: 0 - clone_color: stonithcloneset allocation score on node2: 0 --native_color: configstoreclone:0 allocation score on node1: -INFINITY -+native_color: configstoreclone:0 allocation score on node1: 0 - native_color: configstoreclone:0 allocation score on node2: 1 - native_color: configstoreclone:1 allocation score on node1: 1 --native_color: configstoreclone:1 allocation score on node2: 0 --native_color: evmsclone:0 allocation score on node1: -INFINITY -+native_color: configstoreclone:1 allocation score on node2: -INFINITY -+native_color: evmsclone:0 allocation score on node1: 0 - native_color: evmsclone:0 allocation score on node2: 1 - native_color: evmsclone:1 allocation score on node1: 1 --native_color: evmsclone:1 allocation score on node2: 0 --native_color: evmsdclone:0 allocation score on node1: -INFINITY -+native_color: evmsclone:1 allocation score on node2: -INFINITY -+native_color: evmsdclone:0 allocation score on node1: 0 - native_color: evmsdclone:0 allocation score on node2: 1 - native_color: evmsdclone:1 allocation score on node1: 1 --native_color: evmsdclone:1 allocation score on node2: 0 --native_color: imagestoreclone:0 allocation score on node1: -INFINITY -+native_color: evmsdclone:1 allocation score on node2: -INFINITY -+native_color: imagestoreclone:0 allocation score on node1: 0 - native_color: imagestoreclone:0 allocation score on node2: 1 - native_color: imagestoreclone:1 allocation score on node1: 1 --native_color: imagestoreclone:1 allocation score on node2: 0 -+native_color: imagestoreclone:1 allocation score on node2: -INFINITY - native_color: sles10 allocation score on node1: -INFINITY - native_color: sles10 allocation score on node2: -INFINITY --native_color: stonithclone:0 allocation score on node1: -INFINITY -+native_color: stonithclone:0 allocation score on node1: 0 - native_color: stonithclone:0 allocation score on node2: 1 - native_color: stonithclone:1 allocation score on node1: 1 --native_color: stonithclone:1 allocation score on node2: 0 -+native_color: stonithclone:1 allocation score on node2: -INFINITY -diff --git a/pengine/test10/one-or-more-unrunnnable-instances.scores b/pengine/test10/one-or-more-unrunnnable-instances.scores -index dfa1112..59230f1 100644 ---- a/pengine/test10/one-or-more-unrunnnable-instances.scores -+++ b/pengine/test10/one-or-more-unrunnnable-instances.scores -@@ -2319,18 +2319,18 @@ native_color: galera:0 allocation score on mrg-07: -INFINITY - native_color: galera:0 allocation score on mrg-08: -INFINITY - native_color: galera:0 allocation score on mrg-09: -INFINITY - native_color: galera:0 allocation score on rdo7-node1: 101 --native_color: galera:0 allocation score on rdo7-node2: -INFINITY --native_color: galera:0 allocation score on rdo7-node3: -INFINITY -+native_color: galera:0 allocation score on rdo7-node2: 0 -+native_color: galera:0 allocation score on rdo7-node3: 0 - native_color: galera:1 allocation score on mrg-07: -INFINITY - native_color: galera:1 allocation score on mrg-08: -INFINITY - native_color: galera:1 allocation score on mrg-09: -INFINITY --native_color: galera:1 allocation score on rdo7-node1: 0 -+native_color: galera:1 allocation score on rdo7-node1: -INFINITY - native_color: galera:1 allocation score on rdo7-node2: 101 - native_color: galera:1 allocation score on rdo7-node3: 0 - native_color: galera:2 allocation score on mrg-07: -INFINITY - native_color: galera:2 allocation score on mrg-08: -INFINITY - native_color: galera:2 allocation score on mrg-09: -INFINITY --native_color: galera:2 allocation score on rdo7-node1: 0 -+native_color: galera:2 allocation score on rdo7-node1: -INFINITY - native_color: galera:2 allocation score on rdo7-node2: -INFINITY - native_color: galera:2 allocation score on rdo7-node3: 101 - native_color: galera:3 allocation score on mrg-07: -INFINITY -@@ -2391,18 +2391,18 @@ native_color: glance-fs:0 allocation score on mrg-07: -INFINITY - native_color: glance-fs:0 allocation score on mrg-08: -INFINITY - native_color: glance-fs:0 allocation score on mrg-09: -INFINITY - native_color: glance-fs:0 allocation score on rdo7-node1: 1 --native_color: glance-fs:0 allocation score on rdo7-node2: -INFINITY --native_color: glance-fs:0 allocation score on rdo7-node3: -INFINITY -+native_color: glance-fs:0 allocation score on rdo7-node2: 0 -+native_color: glance-fs:0 allocation score on rdo7-node3: 0 - native_color: glance-fs:1 allocation score on mrg-07: -INFINITY - native_color: glance-fs:1 allocation score on mrg-08: -INFINITY - native_color: glance-fs:1 allocation score on mrg-09: -INFINITY --native_color: glance-fs:1 allocation score on rdo7-node1: 0 -+native_color: glance-fs:1 allocation score on rdo7-node1: -INFINITY - native_color: glance-fs:1 allocation score on rdo7-node2: 1 - native_color: glance-fs:1 allocation score on rdo7-node3: 0 - native_color: glance-fs:2 allocation score on mrg-07: -INFINITY - native_color: glance-fs:2 allocation score on mrg-08: -INFINITY - native_color: glance-fs:2 allocation score on mrg-09: -INFINITY --native_color: glance-fs:2 allocation score on rdo7-node1: 0 -+native_color: glance-fs:2 allocation score on rdo7-node1: -INFINITY - native_color: glance-fs:2 allocation score on rdo7-node2: -INFINITY - native_color: glance-fs:2 allocation score on rdo7-node3: 1 - native_color: glance-fs:3 allocation score on mrg-07: -INFINITY -@@ -2607,18 +2607,18 @@ native_color: horizon:0 allocation score on mrg-07: -INFINITY - native_color: horizon:0 allocation score on mrg-08: -INFINITY - native_color: horizon:0 allocation score on mrg-09: -INFINITY - native_color: horizon:0 allocation score on rdo7-node1: 1 --native_color: horizon:0 allocation score on rdo7-node2: -INFINITY --native_color: horizon:0 allocation score on rdo7-node3: -INFINITY -+native_color: horizon:0 allocation score on rdo7-node2: 0 -+native_color: horizon:0 allocation score on rdo7-node3: 0 - native_color: horizon:1 allocation score on mrg-07: -INFINITY - native_color: horizon:1 allocation score on mrg-08: -INFINITY - native_color: horizon:1 allocation score on mrg-09: -INFINITY --native_color: horizon:1 allocation score on rdo7-node1: 0 -+native_color: horizon:1 allocation score on rdo7-node1: -INFINITY - native_color: horizon:1 allocation score on rdo7-node2: 1 - native_color: horizon:1 allocation score on rdo7-node3: 0 - native_color: horizon:2 allocation score on mrg-07: -INFINITY - native_color: horizon:2 allocation score on mrg-08: -INFINITY - native_color: horizon:2 allocation score on mrg-09: -INFINITY --native_color: horizon:2 allocation score on rdo7-node1: 0 -+native_color: horizon:2 allocation score on rdo7-node1: -INFINITY - native_color: horizon:2 allocation score on rdo7-node2: -INFINITY - native_color: horizon:2 allocation score on rdo7-node3: 1 - native_color: horizon:3 allocation score on mrg-07: -INFINITY -@@ -2751,18 +2751,18 @@ native_color: memcached:0 allocation score on mrg-07: -INFINITY - native_color: memcached:0 allocation score on mrg-08: -INFINITY - native_color: memcached:0 allocation score on mrg-09: -INFINITY - native_color: memcached:0 allocation score on rdo7-node1: 1 --native_color: memcached:0 allocation score on rdo7-node2: -INFINITY --native_color: memcached:0 allocation score on rdo7-node3: -INFINITY -+native_color: memcached:0 allocation score on rdo7-node2: 0 -+native_color: memcached:0 allocation score on rdo7-node3: 0 - native_color: memcached:1 allocation score on mrg-07: -INFINITY - native_color: memcached:1 allocation score on mrg-08: -INFINITY - native_color: memcached:1 allocation score on mrg-09: -INFINITY --native_color: memcached:1 allocation score on rdo7-node1: 0 -+native_color: memcached:1 allocation score on rdo7-node1: -INFINITY - native_color: memcached:1 allocation score on rdo7-node2: 1 - native_color: memcached:1 allocation score on rdo7-node3: 0 - native_color: memcached:2 allocation score on mrg-07: -INFINITY - native_color: memcached:2 allocation score on mrg-08: -INFINITY - native_color: memcached:2 allocation score on mrg-09: -INFINITY --native_color: memcached:2 allocation score on rdo7-node1: 0 -+native_color: memcached:2 allocation score on rdo7-node1: -INFINITY - native_color: memcached:2 allocation score on rdo7-node2: -INFINITY - native_color: memcached:2 allocation score on rdo7-node3: 1 - native_color: memcached:3 allocation score on mrg-07: -INFINITY -@@ -2787,18 +2787,18 @@ native_color: mongodb:0 allocation score on mrg-07: -INFINITY - native_color: mongodb:0 allocation score on mrg-08: -INFINITY - native_color: mongodb:0 allocation score on mrg-09: -INFINITY - native_color: mongodb:0 allocation score on rdo7-node1: 1 --native_color: mongodb:0 allocation score on rdo7-node2: -INFINITY --native_color: mongodb:0 allocation score on rdo7-node3: -INFINITY -+native_color: mongodb:0 allocation score on rdo7-node2: 0 -+native_color: mongodb:0 allocation score on rdo7-node3: 0 - native_color: mongodb:1 allocation score on mrg-07: -INFINITY - native_color: mongodb:1 allocation score on mrg-08: -INFINITY - native_color: mongodb:1 allocation score on mrg-09: -INFINITY --native_color: mongodb:1 allocation score on rdo7-node1: 0 -+native_color: mongodb:1 allocation score on rdo7-node1: -INFINITY - native_color: mongodb:1 allocation score on rdo7-node2: 1 - native_color: mongodb:1 allocation score on rdo7-node3: 0 - native_color: mongodb:2 allocation score on mrg-07: -INFINITY - native_color: mongodb:2 allocation score on mrg-08: -INFINITY - native_color: mongodb:2 allocation score on mrg-09: -INFINITY --native_color: mongodb:2 allocation score on rdo7-node1: 0 -+native_color: mongodb:2 allocation score on rdo7-node1: -INFINITY - native_color: mongodb:2 allocation score on rdo7-node2: -INFINITY - native_color: mongodb:2 allocation score on rdo7-node3: 1 - native_color: mongodb:3 allocation score on mrg-07: -INFINITY -@@ -3363,18 +3363,18 @@ native_color: rabbitmq-server:0 allocation score on mrg-07: -INFINITY - native_color: rabbitmq-server:0 allocation score on mrg-08: -INFINITY - native_color: rabbitmq-server:0 allocation score on mrg-09: -INFINITY - native_color: rabbitmq-server:0 allocation score on rdo7-node1: 1 --native_color: rabbitmq-server:0 allocation score on rdo7-node2: -INFINITY --native_color: rabbitmq-server:0 allocation score on rdo7-node3: -INFINITY -+native_color: rabbitmq-server:0 allocation score on rdo7-node2: 0 -+native_color: rabbitmq-server:0 allocation score on rdo7-node3: 0 - native_color: rabbitmq-server:1 allocation score on mrg-07: -INFINITY - native_color: rabbitmq-server:1 allocation score on mrg-08: -INFINITY - native_color: rabbitmq-server:1 allocation score on mrg-09: -INFINITY --native_color: rabbitmq-server:1 allocation score on rdo7-node1: 0 -+native_color: rabbitmq-server:1 allocation score on rdo7-node1: -INFINITY - native_color: rabbitmq-server:1 allocation score on rdo7-node2: 1 - native_color: rabbitmq-server:1 allocation score on rdo7-node3: 0 - native_color: rabbitmq-server:2 allocation score on mrg-07: -INFINITY - native_color: rabbitmq-server:2 allocation score on mrg-08: -INFINITY - native_color: rabbitmq-server:2 allocation score on mrg-09: -INFINITY --native_color: rabbitmq-server:2 allocation score on rdo7-node1: 0 -+native_color: rabbitmq-server:2 allocation score on rdo7-node1: -INFINITY - native_color: rabbitmq-server:2 allocation score on rdo7-node2: -INFINITY - native_color: rabbitmq-server:2 allocation score on rdo7-node3: 1 - native_color: rabbitmq-server:3 allocation score on mrg-07: -INFINITY -@@ -3508,18 +3508,18 @@ native_color: swift-fs:0 allocation score on mrg-08: -INFINITY - native_color: swift-fs:0 allocation score on mrg-09: -INFINITY - native_color: swift-fs:0 allocation score on rdo7-node1: 1 - native_color: swift-fs:0 allocation score on rdo7-node2: 0 --native_color: swift-fs:0 allocation score on rdo7-node3: -INFINITY -+native_color: swift-fs:0 allocation score on rdo7-node3: 0 - native_color: swift-fs:1 allocation score on mrg-07: -INFINITY - native_color: swift-fs:1 allocation score on mrg-08: -INFINITY - native_color: swift-fs:1 allocation score on mrg-09: -INFINITY - native_color: swift-fs:1 allocation score on rdo7-node1: -INFINITY - native_color: swift-fs:1 allocation score on rdo7-node2: 1 --native_color: swift-fs:1 allocation score on rdo7-node3: -INFINITY -+native_color: swift-fs:1 allocation score on rdo7-node3: 0 - native_color: swift-fs:2 allocation score on mrg-07: -INFINITY - native_color: swift-fs:2 allocation score on mrg-08: -INFINITY - native_color: swift-fs:2 allocation score on mrg-09: -INFINITY --native_color: swift-fs:2 allocation score on rdo7-node1: 0 --native_color: swift-fs:2 allocation score on rdo7-node2: 0 -+native_color: swift-fs:2 allocation score on rdo7-node1: -INFINITY -+native_color: swift-fs:2 allocation score on rdo7-node2: -INFINITY - native_color: swift-fs:2 allocation score on rdo7-node3: 1 - native_color: swift-fs:3 allocation score on mrg-07: -INFINITY - native_color: swift-fs:3 allocation score on mrg-08: -INFINITY -diff --git a/pengine/test10/params-6.scores b/pengine/test10/params-6.scores -index 4a91ebf..76b9a20 100644 ---- a/pengine/test10/params-6.scores -+++ b/pengine/test10/params-6.scores -@@ -827,14 +827,14 @@ native_color: dist.express-consult.org-vm allocation score on v03-b: -INFINITY - native_color: dist.fly-uni.org-vm allocation score on mgmt01: -INFINITY - native_color: dist.fly-uni.org-vm allocation score on v03-a: -INFINITY - native_color: dist.fly-uni.org-vm allocation score on v03-b: -INFINITY --native_color: dlm:0 allocation score on mgmt01: -INFINITY -+native_color: dlm:0 allocation score on mgmt01: 0 - native_color: dlm:0 allocation score on v03-a: 1 --native_color: dlm:0 allocation score on v03-b: -INFINITY -+native_color: dlm:0 allocation score on v03-b: 0 - native_color: dlm:1 allocation score on mgmt01: 1 --native_color: dlm:1 allocation score on v03-a: 0 -+native_color: dlm:1 allocation score on v03-a: -INFINITY - native_color: dlm:1 allocation score on v03-b: 0 - native_color: dlm:2 allocation score on mgmt01: -INFINITY --native_color: dlm:2 allocation score on v03-a: 0 -+native_color: dlm:2 allocation score on v03-a: -INFINITY - native_color: dlm:2 allocation score on v03-b: 1 - native_color: dlm:3 allocation score on mgmt01: -INFINITY - native_color: dlm:3 allocation score on v03-a: -INFINITY -@@ -869,14 +869,14 @@ native_color: git.vds-ok.com-vm allocation score on v03-b: -INFINITY - native_color: gotin-bbb-vm allocation score on mgmt01: -INFINITY - native_color: gotin-bbb-vm allocation score on v03-a: -INFINITY - native_color: gotin-bbb-vm allocation score on v03-b: -INFINITY --native_color: iscsid:0 allocation score on mgmt01: -INFINITY -+native_color: iscsid:0 allocation score on mgmt01: 0 - native_color: iscsid:0 allocation score on v03-a: 1 --native_color: iscsid:0 allocation score on v03-b: -INFINITY -+native_color: iscsid:0 allocation score on v03-b: 0 - native_color: iscsid:1 allocation score on mgmt01: 1 --native_color: iscsid:1 allocation score on v03-a: 0 -+native_color: iscsid:1 allocation score on v03-a: -INFINITY - native_color: iscsid:1 allocation score on v03-b: 0 - native_color: iscsid:2 allocation score on mgmt01: -INFINITY --native_color: iscsid:2 allocation score on v03-a: 0 -+native_color: iscsid:2 allocation score on v03-a: -INFINITY - native_color: iscsid:2 allocation score on v03-b: 1 - native_color: iscsid:3 allocation score on mgmt01: -INFINITY - native_color: iscsid:3 allocation score on v03-a: -INFINITY -@@ -899,14 +899,14 @@ native_color: iscsid:8 allocation score on v03-b: -INFINITY - native_color: lenny-x32-devel-vm allocation score on mgmt01: -INFINITY - native_color: lenny-x32-devel-vm allocation score on v03-a: 0 - native_color: lenny-x32-devel-vm allocation score on v03-b: 0 --native_color: libvirt-images-fs:0 allocation score on mgmt01: -INFINITY -+native_color: libvirt-images-fs:0 allocation score on mgmt01: 0 - native_color: libvirt-images-fs:0 allocation score on v03-a: 1 --native_color: libvirt-images-fs:0 allocation score on v03-b: -INFINITY -+native_color: libvirt-images-fs:0 allocation score on v03-b: 0 - native_color: libvirt-images-fs:1 allocation score on mgmt01: 1 --native_color: libvirt-images-fs:1 allocation score on v03-a: 0 -+native_color: libvirt-images-fs:1 allocation score on v03-a: -INFINITY - native_color: libvirt-images-fs:1 allocation score on v03-b: 0 - native_color: libvirt-images-fs:2 allocation score on mgmt01: -INFINITY --native_color: libvirt-images-fs:2 allocation score on v03-a: 0 -+native_color: libvirt-images-fs:2 allocation score on v03-a: -INFINITY - native_color: libvirt-images-fs:2 allocation score on v03-b: 1 - native_color: libvirt-images-fs:3 allocation score on mgmt01: -INFINITY - native_color: libvirt-images-fs:3 allocation score on v03-a: -INFINITY -@@ -950,14 +950,14 @@ native_color: libvirt-images-pool:6 allocation score on v03-b: -INFINITY - native_color: libvirt-images-pool:7 allocation score on mgmt01: -INFINITY - native_color: libvirt-images-pool:7 allocation score on v03-a: -INFINITY - native_color: libvirt-images-pool:7 allocation score on v03-b: -INFINITY --native_color: libvirt-install-fs:0 allocation score on mgmt01: -INFINITY -+native_color: libvirt-install-fs:0 allocation score on mgmt01: 0 - native_color: libvirt-install-fs:0 allocation score on v03-a: 1 --native_color: libvirt-install-fs:0 allocation score on v03-b: -INFINITY -+native_color: libvirt-install-fs:0 allocation score on v03-b: 0 - native_color: libvirt-install-fs:1 allocation score on mgmt01: 1 --native_color: libvirt-install-fs:1 allocation score on v03-a: 0 -+native_color: libvirt-install-fs:1 allocation score on v03-a: -INFINITY - native_color: libvirt-install-fs:1 allocation score on v03-b: 0 - native_color: libvirt-install-fs:2 allocation score on mgmt01: -INFINITY --native_color: libvirt-install-fs:2 allocation score on v03-a: 0 -+native_color: libvirt-install-fs:2 allocation score on v03-a: -INFINITY - native_color: libvirt-install-fs:2 allocation score on v03-b: 1 - native_color: libvirt-install-fs:3 allocation score on mgmt01: -INFINITY - native_color: libvirt-install-fs:3 allocation score on v03-a: -INFINITY -@@ -1055,14 +1055,14 @@ native_color: mcast-test-net:7 allocation score on v03-b: -INFINITY - native_color: metae.ru-vm allocation score on mgmt01: -INFINITY - native_color: metae.ru-vm allocation score on v03-a: -INFINITY - native_color: metae.ru-vm allocation score on v03-b: -INFINITY --native_color: multipathd:0 allocation score on mgmt01: -INFINITY -+native_color: multipathd:0 allocation score on mgmt01: 0 - native_color: multipathd:0 allocation score on v03-a: 1 --native_color: multipathd:0 allocation score on v03-b: -INFINITY -+native_color: multipathd:0 allocation score on v03-b: 0 - native_color: multipathd:1 allocation score on mgmt01: 1 --native_color: multipathd:1 allocation score on v03-a: 0 -+native_color: multipathd:1 allocation score on v03-a: -INFINITY - native_color: multipathd:1 allocation score on v03-b: 0 - native_color: multipathd:2 allocation score on mgmt01: -INFINITY --native_color: multipathd:2 allocation score on v03-a: 0 -+native_color: multipathd:2 allocation score on v03-a: -INFINITY - native_color: multipathd:2 allocation score on v03-b: 1 - native_color: multipathd:3 allocation score on mgmt01: -INFINITY - native_color: multipathd:3 allocation score on v03-a: -INFINITY -@@ -1084,9 +1084,9 @@ native_color: multipathd:8 allocation score on v03-a: -INFINITY - native_color: multipathd:8 allocation score on v03-b: -INFINITY - native_color: node-params:0 allocation score on mgmt01: -INFINITY - native_color: node-params:0 allocation score on v03-a: 1 --native_color: node-params:0 allocation score on v03-b: -INFINITY -+native_color: node-params:0 allocation score on v03-b: 0 - native_color: node-params:1 allocation score on mgmt01: -INFINITY --native_color: node-params:1 allocation score on v03-a: 0 -+native_color: node-params:1 allocation score on v03-a: -INFINITY - native_color: node-params:1 allocation score on v03-b: 1 - native_color: node-params:2 allocation score on mgmt01: -INFINITY - native_color: node-params:2 allocation score on v03-a: -INFINITY -@@ -1351,9 +1351,9 @@ native_color: vds-ok-pool-1-vg:8 allocation score on v03-a: -INFINITY - native_color: vds-ok-pool-1-vg:8 allocation score on v03-b: -INFINITY - native_color: vlan1-if:0 allocation score on mgmt01: -INFINITY - native_color: vlan1-if:0 allocation score on v03-a: 1 --native_color: vlan1-if:0 allocation score on v03-b: -INFINITY -+native_color: vlan1-if:0 allocation score on v03-b: 0 - native_color: vlan1-if:1 allocation score on mgmt01: -INFINITY --native_color: vlan1-if:1 allocation score on v03-a: 0 -+native_color: vlan1-if:1 allocation score on v03-a: -INFINITY - native_color: vlan1-if:1 allocation score on v03-b: 1 - native_color: vlan1-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan1-if:2 allocation score on v03-a: -INFINITY -@@ -1375,9 +1375,9 @@ native_color: vlan1-if:7 allocation score on v03-a: -INFINITY - native_color: vlan1-if:7 allocation score on v03-b: -INFINITY - native_color: vlan101-if:0 allocation score on mgmt01: -INFINITY - native_color: vlan101-if:0 allocation score on v03-a: 1 --native_color: vlan101-if:0 allocation score on v03-b: -INFINITY -+native_color: vlan101-if:0 allocation score on v03-b: 0 - native_color: vlan101-if:1 allocation score on mgmt01: -INFINITY --native_color: vlan101-if:1 allocation score on v03-a: 0 -+native_color: vlan101-if:1 allocation score on v03-a: -INFINITY - native_color: vlan101-if:1 allocation score on v03-b: 1 - native_color: vlan101-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan101-if:2 allocation score on v03-a: -INFINITY -@@ -1399,9 +1399,9 @@ native_color: vlan101-if:7 allocation score on v03-a: -INFINITY - native_color: vlan101-if:7 allocation score on v03-b: -INFINITY - native_color: vlan102-if:0 allocation score on mgmt01: -INFINITY - native_color: vlan102-if:0 allocation score on v03-a: 1 --native_color: vlan102-if:0 allocation score on v03-b: -INFINITY -+native_color: vlan102-if:0 allocation score on v03-b: 0 - native_color: vlan102-if:1 allocation score on mgmt01: -INFINITY --native_color: vlan102-if:1 allocation score on v03-a: 0 -+native_color: vlan102-if:1 allocation score on v03-a: -INFINITY - native_color: vlan102-if:1 allocation score on v03-b: 1 - native_color: vlan102-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan102-if:2 allocation score on v03-a: -INFINITY -@@ -1423,9 +1423,9 @@ native_color: vlan102-if:7 allocation score on v03-a: -INFINITY - native_color: vlan102-if:7 allocation score on v03-b: -INFINITY - native_color: vlan103-if:0 allocation score on mgmt01: -INFINITY - native_color: vlan103-if:0 allocation score on v03-a: 1 --native_color: vlan103-if:0 allocation score on v03-b: -INFINITY -+native_color: vlan103-if:0 allocation score on v03-b: 0 - native_color: vlan103-if:1 allocation score on mgmt01: -INFINITY --native_color: vlan103-if:1 allocation score on v03-a: 0 -+native_color: vlan103-if:1 allocation score on v03-a: -INFINITY - native_color: vlan103-if:1 allocation score on v03-b: 1 - native_color: vlan103-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan103-if:2 allocation score on v03-a: -INFINITY -@@ -1447,9 +1447,9 @@ native_color: vlan103-if:7 allocation score on v03-a: -INFINITY - native_color: vlan103-if:7 allocation score on v03-b: -INFINITY - native_color: vlan104-if:0 allocation score on mgmt01: -INFINITY - native_color: vlan104-if:0 allocation score on v03-a: 1 --native_color: vlan104-if:0 allocation score on v03-b: -INFINITY -+native_color: vlan104-if:0 allocation score on v03-b: 0 - native_color: vlan104-if:1 allocation score on mgmt01: -INFINITY --native_color: vlan104-if:1 allocation score on v03-a: 0 -+native_color: vlan104-if:1 allocation score on v03-a: -INFINITY - native_color: vlan104-if:1 allocation score on v03-b: 1 - native_color: vlan104-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan104-if:2 allocation score on v03-a: -INFINITY -@@ -1495,9 +1495,9 @@ native_color: vlan200-if:7 allocation score on v03-a: -INFINITY - native_color: vlan200-if:7 allocation score on v03-b: -INFINITY - native_color: vlan3-if:0 allocation score on mgmt01: -INFINITY - native_color: vlan3-if:0 allocation score on v03-a: 1 --native_color: vlan3-if:0 allocation score on v03-b: -INFINITY -+native_color: vlan3-if:0 allocation score on v03-b: 0 - native_color: vlan3-if:1 allocation score on mgmt01: -INFINITY --native_color: vlan3-if:1 allocation score on v03-a: 0 -+native_color: vlan3-if:1 allocation score on v03-a: -INFINITY - native_color: vlan3-if:1 allocation score on v03-b: 1 - native_color: vlan3-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan3-if:2 allocation score on v03-a: -INFINITY -@@ -1519,9 +1519,9 @@ native_color: vlan3-if:7 allocation score on v03-a: -INFINITY - native_color: vlan3-if:7 allocation score on v03-b: -INFINITY - native_color: vlan4-if:0 allocation score on mgmt01: -INFINITY - native_color: vlan4-if:0 allocation score on v03-a: 1 --native_color: vlan4-if:0 allocation score on v03-b: -INFINITY -+native_color: vlan4-if:0 allocation score on v03-b: 0 - native_color: vlan4-if:1 allocation score on mgmt01: -INFINITY --native_color: vlan4-if:1 allocation score on v03-a: 0 -+native_color: vlan4-if:1 allocation score on v03-a: -INFINITY - native_color: vlan4-if:1 allocation score on v03-b: 1 - native_color: vlan4-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan4-if:2 allocation score on v03-a: -INFINITY -@@ -1543,9 +1543,9 @@ native_color: vlan4-if:7 allocation score on v03-a: -INFINITY - native_color: vlan4-if:7 allocation score on v03-b: -INFINITY - native_color: vlan5-if:0 allocation score on mgmt01: -INFINITY - native_color: vlan5-if:0 allocation score on v03-a: 1 --native_color: vlan5-if:0 allocation score on v03-b: -INFINITY -+native_color: vlan5-if:0 allocation score on v03-b: 0 - native_color: vlan5-if:1 allocation score on mgmt01: -INFINITY --native_color: vlan5-if:1 allocation score on v03-a: 0 -+native_color: vlan5-if:1 allocation score on v03-a: -INFINITY - native_color: vlan5-if:1 allocation score on v03-b: 1 - native_color: vlan5-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan5-if:2 allocation score on v03-a: -INFINITY -@@ -1567,9 +1567,9 @@ native_color: vlan5-if:7 allocation score on v03-a: -INFINITY - native_color: vlan5-if:7 allocation score on v03-b: -INFINITY - native_color: vlan900-if:0 allocation score on mgmt01: -INFINITY - native_color: vlan900-if:0 allocation score on v03-a: 1 --native_color: vlan900-if:0 allocation score on v03-b: -INFINITY -+native_color: vlan900-if:0 allocation score on v03-b: 0 - native_color: vlan900-if:1 allocation score on mgmt01: -INFINITY --native_color: vlan900-if:1 allocation score on v03-a: 0 -+native_color: vlan900-if:1 allocation score on v03-a: -INFINITY - native_color: vlan900-if:1 allocation score on v03-b: 1 - native_color: vlan900-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan900-if:2 allocation score on v03-a: -INFINITY -@@ -1591,9 +1591,9 @@ native_color: vlan900-if:7 allocation score on v03-a: -INFINITY - native_color: vlan900-if:7 allocation score on v03-b: -INFINITY - native_color: vlan909-if:0 allocation score on mgmt01: -INFINITY - native_color: vlan909-if:0 allocation score on v03-a: 1 --native_color: vlan909-if:0 allocation score on v03-b: -INFINITY -+native_color: vlan909-if:0 allocation score on v03-b: 0 - native_color: vlan909-if:1 allocation score on mgmt01: -INFINITY --native_color: vlan909-if:1 allocation score on v03-a: 0 -+native_color: vlan909-if:1 allocation score on v03-a: -INFINITY - native_color: vlan909-if:1 allocation score on v03-b: 1 - native_color: vlan909-if:2 allocation score on mgmt01: -INFINITY - native_color: vlan909-if:2 allocation score on v03-a: -INFINITY -diff --git a/pengine/test10/probe-0.scores b/pengine/test10/probe-0.scores -index 078cc6c..b37b1a9 100644 ---- a/pengine/test10/probe-0.scores -+++ b/pengine/test10/probe-0.scores -@@ -21,11 +21,11 @@ native_color: configstoreclone:0 allocation score on x32c47: 0 - native_color: configstoreclone:0 allocation score on x32c48: 0 - native_color: configstoreclone:1 allocation score on x32c47: -INFINITY - native_color: configstoreclone:1 allocation score on x32c48: 0 --native_color: imagestoreclone:0 allocation score on x32c47: -INFINITY -+native_color: imagestoreclone:0 allocation score on x32c47: 0 - native_color: imagestoreclone:0 allocation score on x32c48: 1 - native_color: imagestoreclone:1 allocation score on x32c47: 1 --native_color: imagestoreclone:1 allocation score on x32c48: 0 --native_color: stonithclone:0 allocation score on x32c47: -INFINITY -+native_color: imagestoreclone:1 allocation score on x32c48: -INFINITY -+native_color: stonithclone:0 allocation score on x32c47: 0 - native_color: stonithclone:0 allocation score on x32c48: 1 - native_color: stonithclone:1 allocation score on x32c47: 1 --native_color: stonithclone:1 allocation score on x32c48: 0 -+native_color: stonithclone:1 allocation score on x32c48: -INFINITY -diff --git a/pengine/test10/probe-3.scores b/pengine/test10/probe-3.scores -index 048abff..6f1539c 100644 ---- a/pengine/test10/probe-3.scores -+++ b/pengine/test10/probe-3.scores -@@ -76,14 +76,14 @@ group_color: r192.168.101.183 allocation score on pcmk-2: 0 - group_color: r192.168.101.183 allocation score on pcmk-3: 0 - group_color: r192.168.101.183 allocation score on pcmk-4: 0 - native_color: FencingChild:0 allocation score on pcmk-1: 1 --native_color: FencingChild:0 allocation score on pcmk-2: -INFINITY --native_color: FencingChild:0 allocation score on pcmk-3: -INFINITY -+native_color: FencingChild:0 allocation score on pcmk-2: 0 -+native_color: FencingChild:0 allocation score on pcmk-3: 0 - native_color: FencingChild:0 allocation score on pcmk-4: -INFINITY --native_color: FencingChild:1 allocation score on pcmk-1: 0 -+native_color: FencingChild:1 allocation score on pcmk-1: -INFINITY - native_color: FencingChild:1 allocation score on pcmk-2: 1 - native_color: FencingChild:1 allocation score on pcmk-3: 0 - native_color: FencingChild:1 allocation score on pcmk-4: -INFINITY --native_color: FencingChild:2 allocation score on pcmk-1: 0 -+native_color: FencingChild:2 allocation score on pcmk-1: -INFINITY - native_color: FencingChild:2 allocation score on pcmk-2: -INFINITY - native_color: FencingChild:2 allocation score on pcmk-3: 1 - native_color: FencingChild:2 allocation score on pcmk-4: -INFINITY -@@ -100,14 +100,14 @@ native_color: migrator allocation score on pcmk-2: 0 - native_color: migrator allocation score on pcmk-3: 0 - native_color: migrator allocation score on pcmk-4: 0 - native_color: ping-1:0 allocation score on pcmk-1: 1 --native_color: ping-1:0 allocation score on pcmk-2: -INFINITY --native_color: ping-1:0 allocation score on pcmk-3: -INFINITY -+native_color: ping-1:0 allocation score on pcmk-2: 0 -+native_color: ping-1:0 allocation score on pcmk-3: 0 - native_color: ping-1:0 allocation score on pcmk-4: -INFINITY --native_color: ping-1:1 allocation score on pcmk-1: 0 -+native_color: ping-1:1 allocation score on pcmk-1: -INFINITY - native_color: ping-1:1 allocation score on pcmk-2: 1 - native_color: ping-1:1 allocation score on pcmk-3: 0 - native_color: ping-1:1 allocation score on pcmk-4: -INFINITY --native_color: ping-1:2 allocation score on pcmk-1: 0 -+native_color: ping-1:2 allocation score on pcmk-1: -INFINITY - native_color: ping-1:2 allocation score on pcmk-2: -INFINITY - native_color: ping-1:2 allocation score on pcmk-3: 1 - native_color: ping-1:2 allocation score on pcmk-4: -INFINITY -diff --git a/pengine/test10/probe-4.scores b/pengine/test10/probe-4.scores -index 048abff..6f1539c 100644 ---- a/pengine/test10/probe-4.scores -+++ b/pengine/test10/probe-4.scores -@@ -76,14 +76,14 @@ group_color: r192.168.101.183 allocation score on pcmk-2: 0 - group_color: r192.168.101.183 allocation score on pcmk-3: 0 - group_color: r192.168.101.183 allocation score on pcmk-4: 0 - native_color: FencingChild:0 allocation score on pcmk-1: 1 --native_color: FencingChild:0 allocation score on pcmk-2: -INFINITY --native_color: FencingChild:0 allocation score on pcmk-3: -INFINITY -+native_color: FencingChild:0 allocation score on pcmk-2: 0 -+native_color: FencingChild:0 allocation score on pcmk-3: 0 - native_color: FencingChild:0 allocation score on pcmk-4: -INFINITY --native_color: FencingChild:1 allocation score on pcmk-1: 0 -+native_color: FencingChild:1 allocation score on pcmk-1: -INFINITY - native_color: FencingChild:1 allocation score on pcmk-2: 1 - native_color: FencingChild:1 allocation score on pcmk-3: 0 - native_color: FencingChild:1 allocation score on pcmk-4: -INFINITY --native_color: FencingChild:2 allocation score on pcmk-1: 0 -+native_color: FencingChild:2 allocation score on pcmk-1: -INFINITY - native_color: FencingChild:2 allocation score on pcmk-2: -INFINITY - native_color: FencingChild:2 allocation score on pcmk-3: 1 - native_color: FencingChild:2 allocation score on pcmk-4: -INFINITY -@@ -100,14 +100,14 @@ native_color: migrator allocation score on pcmk-2: 0 - native_color: migrator allocation score on pcmk-3: 0 - native_color: migrator allocation score on pcmk-4: 0 - native_color: ping-1:0 allocation score on pcmk-1: 1 --native_color: ping-1:0 allocation score on pcmk-2: -INFINITY --native_color: ping-1:0 allocation score on pcmk-3: -INFINITY -+native_color: ping-1:0 allocation score on pcmk-2: 0 -+native_color: ping-1:0 allocation score on pcmk-3: 0 - native_color: ping-1:0 allocation score on pcmk-4: -INFINITY --native_color: ping-1:1 allocation score on pcmk-1: 0 -+native_color: ping-1:1 allocation score on pcmk-1: -INFINITY - native_color: ping-1:1 allocation score on pcmk-2: 1 - native_color: ping-1:1 allocation score on pcmk-3: 0 - native_color: ping-1:1 allocation score on pcmk-4: -INFINITY --native_color: ping-1:2 allocation score on pcmk-1: 0 -+native_color: ping-1:2 allocation score on pcmk-1: -INFINITY - native_color: ping-1:2 allocation score on pcmk-2: -INFINITY - native_color: ping-1:2 allocation score on pcmk-3: 1 - native_color: ping-1:2 allocation score on pcmk-4: -INFINITY -diff --git a/pengine/test10/rec-node-13.scores b/pengine/test10/rec-node-13.scores -index 83749ea..dda1134 100644 ---- a/pengine/test10/rec-node-13.scores -+++ b/pengine/test10/rec-node-13.scores -@@ -159,14 +159,14 @@ native_color: child_DoFencing:1 allocation score on c001n02: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n03: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n04: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n05: -INFINITY --native_color: child_DoFencing:1 allocation score on c001n06: -INFINITY -+native_color: child_DoFencing:1 allocation score on c001n06: 0 - native_color: child_DoFencing:1 allocation score on c001n07: 1 - native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n04: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n05: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n06: 1 --native_color: child_DoFencing:2 allocation score on c001n07: 0 -+native_color: child_DoFencing:2 allocation score on c001n07: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n04: -INFINITY -@@ -213,8 +213,8 @@ native_color: ocf_msdummy:0 allocation score on c001n02: 1001 - native_color: ocf_msdummy:0 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:0 allocation score on c001n04: -INFINITY - native_color: ocf_msdummy:0 allocation score on c001n05: -INFINITY --native_color: ocf_msdummy:0 allocation score on c001n06: -INFINITY --native_color: ocf_msdummy:0 allocation score on c001n07: -INFINITY -+native_color: ocf_msdummy:0 allocation score on c001n06: 0 -+native_color: ocf_msdummy:0 allocation score on c001n07: 0 - native_color: ocf_msdummy:1 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:1 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:1 allocation score on c001n04: -INFINITY -@@ -231,7 +231,7 @@ native_color: ocf_msdummy:11 allocation score on c001n02: 0 - native_color: ocf_msdummy:11 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:11 allocation score on c001n04: -INFINITY - native_color: ocf_msdummy:11 allocation score on c001n05: -INFINITY --native_color: ocf_msdummy:11 allocation score on c001n06: -INFINITY -+native_color: ocf_msdummy:11 allocation score on c001n06: 0 - native_color: ocf_msdummy:11 allocation score on c001n07: 1 - native_color: ocf_msdummy:2 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:2 allocation score on c001n03: -INFINITY -@@ -249,8 +249,8 @@ native_color: ocf_msdummy:4 allocation score on c001n02: 1 - native_color: ocf_msdummy:4 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:4 allocation score on c001n04: -INFINITY - native_color: ocf_msdummy:4 allocation score on c001n05: -INFINITY --native_color: ocf_msdummy:4 allocation score on c001n06: -INFINITY --native_color: ocf_msdummy:4 allocation score on c001n07: -INFINITY -+native_color: ocf_msdummy:4 allocation score on c001n06: 0 -+native_color: ocf_msdummy:4 allocation score on c001n07: 0 - native_color: ocf_msdummy:5 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:5 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:5 allocation score on c001n04: -INFINITY -@@ -269,13 +269,13 @@ native_color: ocf_msdummy:7 allocation score on c001n04: -INFINITY - native_color: ocf_msdummy:7 allocation score on c001n05: -INFINITY - native_color: ocf_msdummy:7 allocation score on c001n06: -INFINITY - native_color: ocf_msdummy:7 allocation score on c001n07: -INFINITY --native_color: ocf_msdummy:8 allocation score on c001n02: 0 -+native_color: ocf_msdummy:8 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:8 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:8 allocation score on c001n04: -INFINITY - native_color: ocf_msdummy:8 allocation score on c001n05: -INFINITY - native_color: ocf_msdummy:8 allocation score on c001n06: 1 - native_color: ocf_msdummy:8 allocation score on c001n07: 0 --native_color: ocf_msdummy:9 allocation score on c001n02: 0 -+native_color: ocf_msdummy:9 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:9 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:9 allocation score on c001n04: -INFINITY - native_color: ocf_msdummy:9 allocation score on c001n05: -INFINITY -diff --git a/pengine/test10/remote-orphaned.scores b/pengine/test10/remote-orphaned.scores -index beab9e8..53b4ada 100644 ---- a/pengine/test10/remote-orphaned.scores -+++ b/pengine/test10/remote-orphaned.scores -@@ -57,8 +57,8 @@ native_color: migrator allocation score on 18node2: 0 - native_color: migrator allocation score on 18node3: 0 - native_color: ping-1:0 allocation score on 18node1: 1 - native_color: ping-1:0 allocation score on 18node2: -INFINITY --native_color: ping-1:0 allocation score on 18node3: -INFINITY --native_color: ping-1:1 allocation score on 18node1: 0 -+native_color: ping-1:0 allocation score on 18node3: 0 -+native_color: ping-1:1 allocation score on 18node1: -INFINITY - native_color: ping-1:1 allocation score on 18node2: -INFINITY - native_color: ping-1:1 allocation score on 18node3: 1 - native_color: ping-1:2 allocation score on 18node1: -INFINITY -@@ -85,9 +85,9 @@ native_color: rsc_18node3 allocation score on 18node2: 0 - native_color: rsc_18node3 allocation score on 18node3: 100 - native_color: stateful-1:0 allocation score on 18node1: 11 - native_color: stateful-1:0 allocation score on 18node2: -INFINITY --native_color: stateful-1:0 allocation score on 18node3: -INFINITY -+native_color: stateful-1:0 allocation score on 18node3: 0 - native_color: stateful-1:0 allocation score on remote1: -INFINITY --native_color: stateful-1:1 allocation score on 18node1: 0 -+native_color: stateful-1:1 allocation score on 18node1: -INFINITY - native_color: stateful-1:1 allocation score on 18node2: -INFINITY - native_color: stateful-1:1 allocation score on 18node3: 6 - native_color: stateful-1:1 allocation score on remote1: -INFINITY -diff --git a/pengine/test10/stonith-0.scores b/pengine/test10/stonith-0.scores -index 9961589..7aab8cd 100644 ---- a/pengine/test10/stonith-0.scores -+++ b/pengine/test10/stonith-0.scores -@@ -197,38 +197,38 @@ native_color: DcIPaddr allocation score on c001n07: -INFINITY - native_color: DcIPaddr allocation score on c001n08: -INFINITY - native_color: child_DoFencing:0 allocation score on c001n02: 1 - native_color: child_DoFencing:0 allocation score on c001n03: -INFINITY --native_color: child_DoFencing:0 allocation score on c001n04: -INFINITY -+native_color: child_DoFencing:0 allocation score on c001n04: 0 - native_color: child_DoFencing:0 allocation score on c001n05: -INFINITY --native_color: child_DoFencing:0 allocation score on c001n06: -INFINITY --native_color: child_DoFencing:0 allocation score on c001n07: -INFINITY --native_color: child_DoFencing:0 allocation score on c001n08: -INFINITY --native_color: child_DoFencing:1 allocation score on c001n02: 0 -+native_color: child_DoFencing:0 allocation score on c001n06: 0 -+native_color: child_DoFencing:0 allocation score on c001n07: 0 -+native_color: child_DoFencing:0 allocation score on c001n08: 0 -+native_color: child_DoFencing:1 allocation score on c001n02: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n03: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n04: 1 - native_color: child_DoFencing:1 allocation score on c001n05: -INFINITY - native_color: child_DoFencing:1 allocation score on c001n06: 0 - native_color: child_DoFencing:1 allocation score on c001n07: 0 --native_color: child_DoFencing:1 allocation score on c001n08: -INFINITY --native_color: child_DoFencing:2 allocation score on c001n02: 0 -+native_color: child_DoFencing:1 allocation score on c001n08: 0 -+native_color: child_DoFencing:2 allocation score on c001n02: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n03: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n04: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n05: -INFINITY - native_color: child_DoFencing:2 allocation score on c001n06: 1 - native_color: child_DoFencing:2 allocation score on c001n07: 0 --native_color: child_DoFencing:2 allocation score on c001n08: -INFINITY --native_color: child_DoFencing:3 allocation score on c001n02: 0 -+native_color: child_DoFencing:2 allocation score on c001n08: 0 -+native_color: child_DoFencing:3 allocation score on c001n02: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n03: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n04: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n05: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n06: -INFINITY - native_color: child_DoFencing:3 allocation score on c001n07: 1 --native_color: child_DoFencing:3 allocation score on c001n08: -INFINITY --native_color: child_DoFencing:4 allocation score on c001n02: 0 -+native_color: child_DoFencing:3 allocation score on c001n08: 0 -+native_color: child_DoFencing:4 allocation score on c001n02: -INFINITY - native_color: child_DoFencing:4 allocation score on c001n03: -INFINITY --native_color: child_DoFencing:4 allocation score on c001n04: 0 -+native_color: child_DoFencing:4 allocation score on c001n04: -INFINITY - native_color: child_DoFencing:4 allocation score on c001n05: -INFINITY --native_color: child_DoFencing:4 allocation score on c001n06: 0 --native_color: child_DoFencing:4 allocation score on c001n07: 0 -+native_color: child_DoFencing:4 allocation score on c001n06: -INFINITY -+native_color: child_DoFencing:4 allocation score on c001n07: -INFINITY - native_color: child_DoFencing:4 allocation score on c001n08: 1 - native_color: child_DoFencing:5 allocation score on c001n02: -INFINITY - native_color: child_DoFencing:5 allocation score on c001n03: -INFINITY -@@ -274,73 +274,73 @@ native_color: ocf_192.168.100.183 allocation score on c001n07: -INFINITY - native_color: ocf_192.168.100.183 allocation score on c001n08: -INFINITY - native_color: ocf_msdummy:0 allocation score on c001n02: 1001 - native_color: ocf_msdummy:0 allocation score on c001n03: -INFINITY --native_color: ocf_msdummy:0 allocation score on c001n04: -INFINITY -+native_color: ocf_msdummy:0 allocation score on c001n04: 0 - native_color: ocf_msdummy:0 allocation score on c001n05: -INFINITY --native_color: ocf_msdummy:0 allocation score on c001n06: -INFINITY --native_color: ocf_msdummy:0 allocation score on c001n07: -INFINITY --native_color: ocf_msdummy:0 allocation score on c001n08: -INFINITY -+native_color: ocf_msdummy:0 allocation score on c001n06: 0 -+native_color: ocf_msdummy:0 allocation score on c001n07: 0 -+native_color: ocf_msdummy:0 allocation score on c001n08: 0 - native_color: ocf_msdummy:1 allocation score on c001n02: 1 - native_color: ocf_msdummy:1 allocation score on c001n03: -INFINITY --native_color: ocf_msdummy:1 allocation score on c001n04: -INFINITY -+native_color: ocf_msdummy:1 allocation score on c001n04: 0 - native_color: ocf_msdummy:1 allocation score on c001n05: -INFINITY --native_color: ocf_msdummy:1 allocation score on c001n06: -INFINITY --native_color: ocf_msdummy:1 allocation score on c001n07: -INFINITY --native_color: ocf_msdummy:1 allocation score on c001n08: -INFINITY --native_color: ocf_msdummy:10 allocation score on c001n02: 0 -+native_color: ocf_msdummy:1 allocation score on c001n06: 0 -+native_color: ocf_msdummy:1 allocation score on c001n07: 0 -+native_color: ocf_msdummy:1 allocation score on c001n08: 0 -+native_color: ocf_msdummy:10 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:10 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:10 allocation score on c001n04: 1 - native_color: ocf_msdummy:10 allocation score on c001n05: -INFINITY - native_color: ocf_msdummy:10 allocation score on c001n06: 0 - native_color: ocf_msdummy:10 allocation score on c001n07: 0 --native_color: ocf_msdummy:10 allocation score on c001n08: -INFINITY --native_color: ocf_msdummy:11 allocation score on c001n02: 0 -+native_color: ocf_msdummy:10 allocation score on c001n08: 0 -+native_color: ocf_msdummy:11 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:11 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:11 allocation score on c001n04: 1 - native_color: ocf_msdummy:11 allocation score on c001n05: -INFINITY - native_color: ocf_msdummy:11 allocation score on c001n06: 0 - native_color: ocf_msdummy:11 allocation score on c001n07: 0 --native_color: ocf_msdummy:11 allocation score on c001n08: -INFINITY --native_color: ocf_msdummy:12 allocation score on c001n02: 0 -+native_color: ocf_msdummy:11 allocation score on c001n08: 0 -+native_color: ocf_msdummy:12 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:12 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:12 allocation score on c001n04: -INFINITY - native_color: ocf_msdummy:12 allocation score on c001n05: -INFINITY - native_color: ocf_msdummy:12 allocation score on c001n06: 1 - native_color: ocf_msdummy:12 allocation score on c001n07: 0 --native_color: ocf_msdummy:12 allocation score on c001n08: -INFINITY --native_color: ocf_msdummy:13 allocation score on c001n02: 0 -+native_color: ocf_msdummy:12 allocation score on c001n08: 0 -+native_color: ocf_msdummy:13 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:13 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:13 allocation score on c001n04: -INFINITY - native_color: ocf_msdummy:13 allocation score on c001n05: -INFINITY - native_color: ocf_msdummy:13 allocation score on c001n06: 1 - native_color: ocf_msdummy:13 allocation score on c001n07: 0 --native_color: ocf_msdummy:13 allocation score on c001n08: -INFINITY --native_color: ocf_msdummy:2 allocation score on c001n02: 0 -+native_color: ocf_msdummy:13 allocation score on c001n08: 0 -+native_color: ocf_msdummy:2 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:2 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:2 allocation score on c001n04: -INFINITY - native_color: ocf_msdummy:2 allocation score on c001n05: -INFINITY - native_color: ocf_msdummy:2 allocation score on c001n06: -INFINITY - native_color: ocf_msdummy:2 allocation score on c001n07: 1 --native_color: ocf_msdummy:2 allocation score on c001n08: -INFINITY --native_color: ocf_msdummy:3 allocation score on c001n02: 0 -+native_color: ocf_msdummy:2 allocation score on c001n08: 0 -+native_color: ocf_msdummy:3 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:3 allocation score on c001n03: -INFINITY - native_color: ocf_msdummy:3 allocation score on c001n04: -INFINITY - native_color: ocf_msdummy:3 allocation score on c001n05: -INFINITY - native_color: ocf_msdummy:3 allocation score on c001n06: -INFINITY - native_color: ocf_msdummy:3 allocation score on c001n07: 1 --native_color: ocf_msdummy:3 allocation score on c001n08: -INFINITY --native_color: ocf_msdummy:4 allocation score on c001n02: 0 -+native_color: ocf_msdummy:3 allocation score on c001n08: 0 -+native_color: ocf_msdummy:4 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:4 allocation score on c001n03: -INFINITY --native_color: ocf_msdummy:4 allocation score on c001n04: 0 -+native_color: ocf_msdummy:4 allocation score on c001n04: -INFINITY - native_color: ocf_msdummy:4 allocation score on c001n05: -INFINITY --native_color: ocf_msdummy:4 allocation score on c001n06: 0 --native_color: ocf_msdummy:4 allocation score on c001n07: 0 -+native_color: ocf_msdummy:4 allocation score on c001n06: -INFINITY -+native_color: ocf_msdummy:4 allocation score on c001n07: -INFINITY - native_color: ocf_msdummy:4 allocation score on c001n08: 1 --native_color: ocf_msdummy:5 allocation score on c001n02: 0 -+native_color: ocf_msdummy:5 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:5 allocation score on c001n03: -INFINITY --native_color: ocf_msdummy:5 allocation score on c001n04: 0 -+native_color: ocf_msdummy:5 allocation score on c001n04: -INFINITY - native_color: ocf_msdummy:5 allocation score on c001n05: -INFINITY --native_color: ocf_msdummy:5 allocation score on c001n06: 0 --native_color: ocf_msdummy:5 allocation score on c001n07: 0 -+native_color: ocf_msdummy:5 allocation score on c001n06: -INFINITY -+native_color: ocf_msdummy:5 allocation score on c001n07: -INFINITY - native_color: ocf_msdummy:5 allocation score on c001n08: 1 - native_color: ocf_msdummy:6 allocation score on c001n02: -INFINITY - native_color: ocf_msdummy:6 allocation score on c001n03: -INFINITY -diff --git a/pengine/test10/stonith-1.scores b/pengine/test10/stonith-1.scores -index 130bee0..7422355 100644 ---- a/pengine/test10/stonith-1.scores -+++ b/pengine/test10/stonith-1.scores -@@ -72,10 +72,10 @@ group_color: r192.168.100.183 allocation score on sles-2: 0 - group_color: r192.168.100.183 allocation score on sles-3: 0 - group_color: r192.168.100.183 allocation score on sles-4: 0 - native_color: child_DoFencing:0 allocation score on sles-1: 1 --native_color: child_DoFencing:0 allocation score on sles-2: -INFINITY -+native_color: child_DoFencing:0 allocation score on sles-2: 0 - native_color: child_DoFencing:0 allocation score on sles-3: -INFINITY - native_color: child_DoFencing:0 allocation score on sles-4: 0 --native_color: child_DoFencing:1 allocation score on sles-1: 0 -+native_color: child_DoFencing:1 allocation score on sles-1: -INFINITY - native_color: child_DoFencing:1 allocation score on sles-2: 1 - native_color: child_DoFencing:1 allocation score on sles-3: -INFINITY - native_color: child_DoFencing:1 allocation score on sles-4: 0 -diff --git a/pengine/test10/stonith-2.scores b/pengine/test10/stonith-2.scores -index 74a8f41..e1dd011 100644 ---- a/pengine/test10/stonith-2.scores -+++ b/pengine/test10/stonith-2.scores -@@ -144,30 +144,30 @@ group_color: r192.168.100.183 allocation score on sles-4: 0 - group_color: r192.168.100.183 allocation score on sles-5: 0 - group_color: r192.168.100.183 allocation score on sles-6: 0 - native_color: child_DoFencing:0 allocation score on sles-1: 1 --native_color: child_DoFencing:0 allocation score on sles-2: -INFINITY --native_color: child_DoFencing:0 allocation score on sles-3: -INFINITY --native_color: child_DoFencing:0 allocation score on sles-4: -INFINITY -+native_color: child_DoFencing:0 allocation score on sles-2: 0 -+native_color: child_DoFencing:0 allocation score on sles-3: 0 -+native_color: child_DoFencing:0 allocation score on sles-4: 0 - native_color: child_DoFencing:0 allocation score on sles-5: -INFINITY --native_color: child_DoFencing:0 allocation score on sles-6: -INFINITY --native_color: child_DoFencing:1 allocation score on sles-1: 0 -+native_color: child_DoFencing:0 allocation score on sles-6: 0 -+native_color: child_DoFencing:1 allocation score on sles-1: -INFINITY - native_color: child_DoFencing:1 allocation score on sles-2: 1 - native_color: child_DoFencing:1 allocation score on sles-3: 0 --native_color: child_DoFencing:1 allocation score on sles-4: -INFINITY -+native_color: child_DoFencing:1 allocation score on sles-4: 0 - native_color: child_DoFencing:1 allocation score on sles-5: -INFINITY - native_color: child_DoFencing:1 allocation score on sles-6: 0 --native_color: child_DoFencing:2 allocation score on sles-1: 0 -+native_color: child_DoFencing:2 allocation score on sles-1: -INFINITY - native_color: child_DoFencing:2 allocation score on sles-2: -INFINITY - native_color: child_DoFencing:2 allocation score on sles-3: 1 --native_color: child_DoFencing:2 allocation score on sles-4: -INFINITY -+native_color: child_DoFencing:2 allocation score on sles-4: 0 - native_color: child_DoFencing:2 allocation score on sles-5: -INFINITY - native_color: child_DoFencing:2 allocation score on sles-6: 0 --native_color: child_DoFencing:3 allocation score on sles-1: 0 --native_color: child_DoFencing:3 allocation score on sles-2: 0 --native_color: child_DoFencing:3 allocation score on sles-3: 0 -+native_color: child_DoFencing:3 allocation score on sles-1: -INFINITY -+native_color: child_DoFencing:3 allocation score on sles-2: -INFINITY -+native_color: child_DoFencing:3 allocation score on sles-3: -INFINITY - native_color: child_DoFencing:3 allocation score on sles-4: 1 - native_color: child_DoFencing:3 allocation score on sles-5: -INFINITY - native_color: child_DoFencing:3 allocation score on sles-6: 0 --native_color: child_DoFencing:4 allocation score on sles-1: 0 -+native_color: child_DoFencing:4 allocation score on sles-1: -INFINITY - native_color: child_DoFencing:4 allocation score on sles-2: -INFINITY - native_color: child_DoFencing:4 allocation score on sles-3: -INFINITY - native_color: child_DoFencing:4 allocation score on sles-4: -INFINITY -@@ -192,9 +192,9 @@ native_color: migrator allocation score on sles-4: 0 - native_color: migrator allocation score on sles-5: 0 - native_color: migrator allocation score on sles-6: 0 - native_color: ocf_msdummy:0 allocation score on sles-1: 0 --native_color: ocf_msdummy:0 allocation score on sles-2: -INFINITY -+native_color: ocf_msdummy:0 allocation score on sles-2: 0 - native_color: ocf_msdummy:0 allocation score on sles-3: 1 --native_color: ocf_msdummy:0 allocation score on sles-4: -INFINITY -+native_color: ocf_msdummy:0 allocation score on sles-4: 0 - native_color: ocf_msdummy:0 allocation score on sles-5: -INFINITY - native_color: ocf_msdummy:0 allocation score on sles-6: 0 - native_color: ocf_msdummy:1 allocation score on sles-1: 0 -@@ -206,30 +206,30 @@ native_color: ocf_msdummy:1 allocation score on sles-6: 0 - native_color: ocf_msdummy:10 allocation score on sles-1: 0 - native_color: ocf_msdummy:10 allocation score on sles-2: 1 - native_color: ocf_msdummy:10 allocation score on sles-3: 0 --native_color: ocf_msdummy:10 allocation score on sles-4: -INFINITY -+native_color: ocf_msdummy:10 allocation score on sles-4: 0 - native_color: ocf_msdummy:10 allocation score on sles-5: -INFINITY - native_color: ocf_msdummy:10 allocation score on sles-6: 0 - native_color: ocf_msdummy:11 allocation score on sles-1: 0 --native_color: ocf_msdummy:11 allocation score on sles-2: -INFINITY -+native_color: ocf_msdummy:11 allocation score on sles-2: 0 - native_color: ocf_msdummy:11 allocation score on sles-3: 1 --native_color: ocf_msdummy:11 allocation score on sles-4: -INFINITY -+native_color: ocf_msdummy:11 allocation score on sles-4: 0 - native_color: ocf_msdummy:11 allocation score on sles-5: -INFINITY - native_color: ocf_msdummy:11 allocation score on sles-6: 0 - native_color: ocf_msdummy:2 allocation score on sles-1: 0 - native_color: ocf_msdummy:2 allocation score on sles-2: 0 --native_color: ocf_msdummy:2 allocation score on sles-3: 0 -+native_color: ocf_msdummy:2 allocation score on sles-3: -INFINITY - native_color: ocf_msdummy:2 allocation score on sles-4: 1 - native_color: ocf_msdummy:2 allocation score on sles-5: -INFINITY - native_color: ocf_msdummy:2 allocation score on sles-6: 0 - native_color: ocf_msdummy:3 allocation score on sles-1: 1 --native_color: ocf_msdummy:3 allocation score on sles-2: -INFINITY -+native_color: ocf_msdummy:3 allocation score on sles-2: 0 - native_color: ocf_msdummy:3 allocation score on sles-3: -INFINITY - native_color: ocf_msdummy:3 allocation score on sles-4: -INFINITY - native_color: ocf_msdummy:3 allocation score on sles-5: -INFINITY --native_color: ocf_msdummy:3 allocation score on sles-6: -INFINITY -+native_color: ocf_msdummy:3 allocation score on sles-6: 0 - native_color: ocf_msdummy:4 allocation score on sles-1: 0 - native_color: ocf_msdummy:4 allocation score on sles-2: 1 --native_color: ocf_msdummy:4 allocation score on sles-3: 0 -+native_color: ocf_msdummy:4 allocation score on sles-3: -INFINITY - native_color: ocf_msdummy:4 allocation score on sles-4: -INFINITY - native_color: ocf_msdummy:4 allocation score on sles-5: -INFINITY - native_color: ocf_msdummy:4 allocation score on sles-6: 0 -@@ -238,7 +238,7 @@ native_color: ocf_msdummy:5 allocation score on sles-2: -INFINITY - native_color: ocf_msdummy:5 allocation score on sles-3: -INFINITY - native_color: ocf_msdummy:5 allocation score on sles-4: -INFINITY - native_color: ocf_msdummy:5 allocation score on sles-5: -INFINITY --native_color: ocf_msdummy:5 allocation score on sles-6: -INFINITY -+native_color: ocf_msdummy:5 allocation score on sles-6: 0 - native_color: ocf_msdummy:6 allocation score on sles-1: -INFINITY - native_color: ocf_msdummy:6 allocation score on sles-2: -INFINITY - native_color: ocf_msdummy:6 allocation score on sles-3: -INFINITY -@@ -251,13 +251,13 @@ native_color: ocf_msdummy:7 allocation score on sles-3: -INFINITY - native_color: ocf_msdummy:7 allocation score on sles-4: -INFINITY - native_color: ocf_msdummy:7 allocation score on sles-5: -INFINITY - native_color: ocf_msdummy:7 allocation score on sles-6: -INFINITY --native_color: ocf_msdummy:8 allocation score on sles-1: 0 -+native_color: ocf_msdummy:8 allocation score on sles-1: -INFINITY - native_color: ocf_msdummy:8 allocation score on sles-2: -INFINITY - native_color: ocf_msdummy:8 allocation score on sles-3: -INFINITY - native_color: ocf_msdummy:8 allocation score on sles-4: -INFINITY - native_color: ocf_msdummy:8 allocation score on sles-5: -INFINITY - native_color: ocf_msdummy:8 allocation score on sles-6: 1 --native_color: ocf_msdummy:9 allocation score on sles-1: 0 -+native_color: ocf_msdummy:9 allocation score on sles-1: -INFINITY - native_color: ocf_msdummy:9 allocation score on sles-2: -INFINITY - native_color: ocf_msdummy:9 allocation score on sles-3: -INFINITY - native_color: ocf_msdummy:9 allocation score on sles-4: -INFINITY -diff --git a/pengine/test10/ticket-clone-12.scores b/pengine/test10/ticket-clone-12.scores -index c548662..3dc1851 100644 ---- a/pengine/test10/ticket-clone-12.scores -+++ b/pengine/test10/ticket-clone-12.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 0 - native_color: rsc1:0 allocation score on node1: 0 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 0 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-clone-24.scores b/pengine/test10/ticket-clone-24.scores -index c548662..3dc1851 100644 ---- a/pengine/test10/ticket-clone-24.scores -+++ b/pengine/test10/ticket-clone-24.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 0 - native_color: rsc1:0 allocation score on node1: 0 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 0 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-11.scores b/pengine/test10/ticket-master-11.scores -index c770fd5..f608505 100644 ---- a/pengine/test10/ticket-master-11.scores -+++ b/pengine/test10/ticket-master-11.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 1 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-12.scores b/pengine/test10/ticket-master-12.scores -index 2dbf74e..d2b050f 100644 ---- a/pengine/test10/ticket-master-12.scores -+++ b/pengine/test10/ticket-master-12.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 0 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-16.scores b/pengine/test10/ticket-master-16.scores -index a55ffe8..e392554 100644 ---- a/pengine/test10/ticket-master-16.scores -+++ b/pengine/test10/ticket-master-16.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 1 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-17.scores b/pengine/test10/ticket-master-17.scores -index a55ffe8..e392554 100644 ---- a/pengine/test10/ticket-master-17.scores -+++ b/pengine/test10/ticket-master-17.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 1 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-18.scores b/pengine/test10/ticket-master-18.scores -index a55ffe8..e392554 100644 ---- a/pengine/test10/ticket-master-18.scores -+++ b/pengine/test10/ticket-master-18.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 1 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-19.scores b/pengine/test10/ticket-master-19.scores -index a55ffe8..e392554 100644 ---- a/pengine/test10/ticket-master-19.scores -+++ b/pengine/test10/ticket-master-19.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 1 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-20.scores b/pengine/test10/ticket-master-20.scores -index a55ffe8..e392554 100644 ---- a/pengine/test10/ticket-master-20.scores -+++ b/pengine/test10/ticket-master-20.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 1 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-22.scores b/pengine/test10/ticket-master-22.scores -index a55ffe8..e392554 100644 ---- a/pengine/test10/ticket-master-22.scores -+++ b/pengine/test10/ticket-master-22.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 1 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-23.scores b/pengine/test10/ticket-master-23.scores -index a55ffe8..e392554 100644 ---- a/pengine/test10/ticket-master-23.scores -+++ b/pengine/test10/ticket-master-23.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 1 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-24.scores b/pengine/test10/ticket-master-24.scores -index 2dbf74e..d2b050f 100644 ---- a/pengine/test10/ticket-master-24.scores -+++ b/pengine/test10/ticket-master-24.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 0 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-5.scores b/pengine/test10/ticket-master-5.scores -index c770fd5..f608505 100644 ---- a/pengine/test10/ticket-master-5.scores -+++ b/pengine/test10/ticket-master-5.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 1 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-6.scores b/pengine/test10/ticket-master-6.scores -index a55ffe8..e392554 100644 ---- a/pengine/test10/ticket-master-6.scores -+++ b/pengine/test10/ticket-master-6.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 1 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-8.scores b/pengine/test10/ticket-master-8.scores -index c770fd5..f608505 100644 ---- a/pengine/test10/ticket-master-8.scores -+++ b/pengine/test10/ticket-master-8.scores -@@ -6,8 +6,8 @@ clone_color: rsc1:0 allocation score on node2: 0 - clone_color: rsc1:1 allocation score on node1: 0 - clone_color: rsc1:1 allocation score on node2: 1 - native_color: rsc1:0 allocation score on node1: 1 --native_color: rsc1:0 allocation score on node2: -INFINITY --native_color: rsc1:1 allocation score on node1: 0 -+native_color: rsc1:0 allocation score on node2: 0 -+native_color: rsc1:1 allocation score on node1: -INFINITY - native_color: rsc1:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-rsc-sets-10.scores b/pengine/test10/ticket-rsc-sets-10.scores -index b2d25ba..221b49a 100644 ---- a/pengine/test10/ticket-rsc-sets-10.scores -+++ b/pengine/test10/ticket-rsc-sets-10.scores -@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY - native_color: rsc4:1 allocation score on node1: -INFINITY - native_color: rsc4:1 allocation score on node2: -INFINITY - native_color: rsc5:0 allocation score on node1: 1 --native_color: rsc5:0 allocation score on node2: -INFINITY --native_color: rsc5:1 allocation score on node1: 0 -+native_color: rsc5:0 allocation score on node2: 0 -+native_color: rsc5:1 allocation score on node1: -INFINITY - native_color: rsc5:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-rsc-sets-11.scores b/pengine/test10/ticket-rsc-sets-11.scores -index b2d25ba..221b49a 100644 ---- a/pengine/test10/ticket-rsc-sets-11.scores -+++ b/pengine/test10/ticket-rsc-sets-11.scores -@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY - native_color: rsc4:1 allocation score on node1: -INFINITY - native_color: rsc4:1 allocation score on node2: -INFINITY - native_color: rsc5:0 allocation score on node1: 1 --native_color: rsc5:0 allocation score on node2: -INFINITY --native_color: rsc5:1 allocation score on node1: 0 -+native_color: rsc5:0 allocation score on node2: 0 -+native_color: rsc5:1 allocation score on node1: -INFINITY - native_color: rsc5:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-rsc-sets-12.scores b/pengine/test10/ticket-rsc-sets-12.scores -index b2d25ba..221b49a 100644 ---- a/pengine/test10/ticket-rsc-sets-12.scores -+++ b/pengine/test10/ticket-rsc-sets-12.scores -@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY - native_color: rsc4:1 allocation score on node1: -INFINITY - native_color: rsc4:1 allocation score on node2: -INFINITY - native_color: rsc5:0 allocation score on node1: 1 --native_color: rsc5:0 allocation score on node2: -INFINITY --native_color: rsc5:1 allocation score on node1: 0 -+native_color: rsc5:0 allocation score on node2: 0 -+native_color: rsc5:1 allocation score on node1: -INFINITY - native_color: rsc5:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-rsc-sets-13.scores b/pengine/test10/ticket-rsc-sets-13.scores -index b2d25ba..221b49a 100644 ---- a/pengine/test10/ticket-rsc-sets-13.scores -+++ b/pengine/test10/ticket-rsc-sets-13.scores -@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY - native_color: rsc4:1 allocation score on node1: -INFINITY - native_color: rsc4:1 allocation score on node2: -INFINITY - native_color: rsc5:0 allocation score on node1: 1 --native_color: rsc5:0 allocation score on node2: -INFINITY --native_color: rsc5:1 allocation score on node1: 0 -+native_color: rsc5:0 allocation score on node2: 0 -+native_color: rsc5:1 allocation score on node1: -INFINITY - native_color: rsc5:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-rsc-sets-14.scores b/pengine/test10/ticket-rsc-sets-14.scores -index b2d25ba..221b49a 100644 ---- a/pengine/test10/ticket-rsc-sets-14.scores -+++ b/pengine/test10/ticket-rsc-sets-14.scores -@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY - native_color: rsc4:1 allocation score on node1: -INFINITY - native_color: rsc4:1 allocation score on node2: -INFINITY - native_color: rsc5:0 allocation score on node1: 1 --native_color: rsc5:0 allocation score on node2: -INFINITY --native_color: rsc5:1 allocation score on node1: 0 -+native_color: rsc5:0 allocation score on node2: 0 -+native_color: rsc5:1 allocation score on node1: -INFINITY - native_color: rsc5:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-rsc-sets-2.scores b/pengine/test10/ticket-rsc-sets-2.scores -index 43331cc..a7ea85a 100644 ---- a/pengine/test10/ticket-rsc-sets-2.scores -+++ b/pengine/test10/ticket-rsc-sets-2.scores -@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: 0 - native_color: rsc4:1 allocation score on node1: 0 - native_color: rsc4:1 allocation score on node2: -INFINITY - native_color: rsc5:0 allocation score on node1: 1 --native_color: rsc5:0 allocation score on node2: -INFINITY --native_color: rsc5:1 allocation score on node1: 0 -+native_color: rsc5:0 allocation score on node2: 0 -+native_color: rsc5:1 allocation score on node1: -INFINITY - native_color: rsc5:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-rsc-sets-3.scores b/pengine/test10/ticket-rsc-sets-3.scores -index b2d25ba..221b49a 100644 ---- a/pengine/test10/ticket-rsc-sets-3.scores -+++ b/pengine/test10/ticket-rsc-sets-3.scores -@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY - native_color: rsc4:1 allocation score on node1: -INFINITY - native_color: rsc4:1 allocation score on node2: -INFINITY - native_color: rsc5:0 allocation score on node1: 1 --native_color: rsc5:0 allocation score on node2: -INFINITY --native_color: rsc5:1 allocation score on node1: 0 -+native_color: rsc5:0 allocation score on node2: 0 -+native_color: rsc5:1 allocation score on node1: -INFINITY - native_color: rsc5:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-rsc-sets-5.scores b/pengine/test10/ticket-rsc-sets-5.scores -index db259b3..c13c2e7 100644 ---- a/pengine/test10/ticket-rsc-sets-5.scores -+++ b/pengine/test10/ticket-rsc-sets-5.scores -@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY - native_color: rsc4:1 allocation score on node1: -INFINITY - native_color: rsc4:1 allocation score on node2: -INFINITY - native_color: rsc5:0 allocation score on node1: 1 --native_color: rsc5:0 allocation score on node2: -INFINITY --native_color: rsc5:1 allocation score on node1: 0 -+native_color: rsc5:0 allocation score on node2: 0 -+native_color: rsc5:1 allocation score on node1: -INFINITY - native_color: rsc5:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-rsc-sets-6.scores b/pengine/test10/ticket-rsc-sets-6.scores -index 43331cc..a7ea85a 100644 ---- a/pengine/test10/ticket-rsc-sets-6.scores -+++ b/pengine/test10/ticket-rsc-sets-6.scores -@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: 0 - native_color: rsc4:1 allocation score on node1: 0 - native_color: rsc4:1 allocation score on node2: -INFINITY - native_color: rsc5:0 allocation score on node1: 1 --native_color: rsc5:0 allocation score on node2: -INFINITY --native_color: rsc5:1 allocation score on node1: 0 -+native_color: rsc5:0 allocation score on node2: 0 -+native_color: rsc5:1 allocation score on node1: -INFINITY - native_color: rsc5:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-rsc-sets-7.scores b/pengine/test10/ticket-rsc-sets-7.scores -index b2d25ba..221b49a 100644 ---- a/pengine/test10/ticket-rsc-sets-7.scores -+++ b/pengine/test10/ticket-rsc-sets-7.scores -@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY - native_color: rsc4:1 allocation score on node1: -INFINITY - native_color: rsc4:1 allocation score on node2: -INFINITY - native_color: rsc5:0 allocation score on node1: 1 --native_color: rsc5:0 allocation score on node2: -INFINITY --native_color: rsc5:1 allocation score on node1: 0 -+native_color: rsc5:0 allocation score on node2: 0 -+native_color: rsc5:1 allocation score on node1: -INFINITY - native_color: rsc5:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-rsc-sets-8.scores b/pengine/test10/ticket-rsc-sets-8.scores -index b2d25ba..221b49a 100644 ---- a/pengine/test10/ticket-rsc-sets-8.scores -+++ b/pengine/test10/ticket-rsc-sets-8.scores -@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY - native_color: rsc4:1 allocation score on node1: -INFINITY - native_color: rsc4:1 allocation score on node2: -INFINITY - native_color: rsc5:0 allocation score on node1: 1 --native_color: rsc5:0 allocation score on node2: -INFINITY --native_color: rsc5:1 allocation score on node1: 0 -+native_color: rsc5:0 allocation score on node2: 0 -+native_color: rsc5:1 allocation score on node1: -INFINITY - native_color: rsc5:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/ticket-rsc-sets-9.scores b/pengine/test10/ticket-rsc-sets-9.scores -index b2d25ba..221b49a 100644 ---- a/pengine/test10/ticket-rsc-sets-9.scores -+++ b/pengine/test10/ticket-rsc-sets-9.scores -@@ -28,8 +28,8 @@ native_color: rsc4:0 allocation score on node2: -INFINITY - native_color: rsc4:1 allocation score on node1: -INFINITY - native_color: rsc4:1 allocation score on node2: -INFINITY - native_color: rsc5:0 allocation score on node1: 1 --native_color: rsc5:0 allocation score on node2: -INFINITY --native_color: rsc5:1 allocation score on node1: 0 -+native_color: rsc5:0 allocation score on node2: 0 -+native_color: rsc5:1 allocation score on node1: -INFINITY - native_color: rsc5:1 allocation score on node2: 1 - native_color: rsc_stonith allocation score on node1: 0 - native_color: rsc_stonith allocation score on node2: 0 -diff --git a/pengine/test10/unfence-definition.scores b/pengine/test10/unfence-definition.scores -index a4b5fb1..d9fa9bb 100644 ---- a/pengine/test10/unfence-definition.scores -+++ b/pengine/test10/unfence-definition.scores -@@ -56,10 +56,10 @@ native_color: clvmd:3 allocation score on virt-2: -INFINITY - native_color: clvmd:3 allocation score on virt-3: -INFINITY - native_color: clvmd:3 allocation score on virt-4: -INFINITY - native_color: dlm:0 allocation score on virt-1: 1 --native_color: dlm:0 allocation score on virt-2: -INFINITY -+native_color: dlm:0 allocation score on virt-2: 0 - native_color: dlm:0 allocation score on virt-3: 0 - native_color: dlm:0 allocation score on virt-4: -INFINITY --native_color: dlm:1 allocation score on virt-1: 0 -+native_color: dlm:1 allocation score on virt-1: -INFINITY - native_color: dlm:1 allocation score on virt-2: 1 - native_color: dlm:1 allocation score on virt-3: 0 - native_color: dlm:1 allocation score on virt-4: -INFINITY -diff --git a/pengine/test10/unfence-parameters.scores b/pengine/test10/unfence-parameters.scores -index a4b5fb1..d9fa9bb 100644 ---- a/pengine/test10/unfence-parameters.scores -+++ b/pengine/test10/unfence-parameters.scores -@@ -56,10 +56,10 @@ native_color: clvmd:3 allocation score on virt-2: -INFINITY - native_color: clvmd:3 allocation score on virt-3: -INFINITY - native_color: clvmd:3 allocation score on virt-4: -INFINITY - native_color: dlm:0 allocation score on virt-1: 1 --native_color: dlm:0 allocation score on virt-2: -INFINITY -+native_color: dlm:0 allocation score on virt-2: 0 - native_color: dlm:0 allocation score on virt-3: 0 - native_color: dlm:0 allocation score on virt-4: -INFINITY --native_color: dlm:1 allocation score on virt-1: 0 -+native_color: dlm:1 allocation score on virt-1: -INFINITY - native_color: dlm:1 allocation score on virt-2: 1 - native_color: dlm:1 allocation score on virt-3: 0 - native_color: dlm:1 allocation score on virt-4: -INFINITY -diff --git a/pengine/test10/unfence-startup.scores b/pengine/test10/unfence-startup.scores -index a4b5fb1..d9fa9bb 100644 ---- a/pengine/test10/unfence-startup.scores -+++ b/pengine/test10/unfence-startup.scores -@@ -56,10 +56,10 @@ native_color: clvmd:3 allocation score on virt-2: -INFINITY - native_color: clvmd:3 allocation score on virt-3: -INFINITY - native_color: clvmd:3 allocation score on virt-4: -INFINITY - native_color: dlm:0 allocation score on virt-1: 1 --native_color: dlm:0 allocation score on virt-2: -INFINITY -+native_color: dlm:0 allocation score on virt-2: 0 - native_color: dlm:0 allocation score on virt-3: 0 - native_color: dlm:0 allocation score on virt-4: -INFINITY --native_color: dlm:1 allocation score on virt-1: 0 -+native_color: dlm:1 allocation score on virt-1: -INFINITY - native_color: dlm:1 allocation score on virt-2: 1 - native_color: dlm:1 allocation score on virt-3: 0 - native_color: dlm:1 allocation score on virt-4: -INFINITY -diff --git a/pengine/test10/unrunnable-2.scores b/pengine/test10/unrunnable-2.scores -index 6ec65c9..d54a99e 100644 ---- a/pengine/test10/unrunnable-2.scores -+++ b/pengine/test10/unrunnable-2.scores -@@ -472,15 +472,15 @@ native_color: galera:0 allocation score on overcloud-controller-1: INFINITY - native_color: galera:0 allocation score on overcloud-controller-2: 0 - native_color: galera:1 allocation score on overcloud-controller-0: INFINITY - native_color: galera:1 allocation score on overcloud-controller-1: -INFINITY --native_color: galera:1 allocation score on overcloud-controller-2: -INFINITY --native_color: galera:2 allocation score on overcloud-controller-0: 0 -+native_color: galera:1 allocation score on overcloud-controller-2: 0 -+native_color: galera:2 allocation score on overcloud-controller-0: -INFINITY - native_color: galera:2 allocation score on overcloud-controller-1: -INFINITY - native_color: galera:2 allocation score on overcloud-controller-2: INFINITY --native_color: haproxy:0 allocation score on overcloud-controller-0: -INFINITY -+native_color: haproxy:0 allocation score on overcloud-controller-0: 0 - native_color: haproxy:0 allocation score on overcloud-controller-1: INFINITY - native_color: haproxy:0 allocation score on overcloud-controller-2: 0 - native_color: haproxy:1 allocation score on overcloud-controller-0: INFINITY --native_color: haproxy:1 allocation score on overcloud-controller-1: 0 -+native_color: haproxy:1 allocation score on overcloud-controller-1: -INFINITY - native_color: haproxy:1 allocation score on overcloud-controller-2: 0 - native_color: haproxy:2 allocation score on overcloud-controller-0: -INFINITY - native_color: haproxy:2 allocation score on overcloud-controller-1: -INFINITY -@@ -505,18 +505,18 @@ native_color: memcached:0 allocation score on overcloud-controller-1: INFINITY - native_color: memcached:0 allocation score on overcloud-controller-2: 0 - native_color: memcached:1 allocation score on overcloud-controller-0: INFINITY - native_color: memcached:1 allocation score on overcloud-controller-1: -INFINITY --native_color: memcached:1 allocation score on overcloud-controller-2: -INFINITY --native_color: memcached:2 allocation score on overcloud-controller-0: 0 -+native_color: memcached:1 allocation score on overcloud-controller-2: 0 -+native_color: memcached:2 allocation score on overcloud-controller-0: -INFINITY - native_color: memcached:2 allocation score on overcloud-controller-1: -INFINITY - native_color: memcached:2 allocation score on overcloud-controller-2: INFINITY --native_color: mongod:0 allocation score on overcloud-controller-0: -INFINITY -+native_color: mongod:0 allocation score on overcloud-controller-0: 0 - native_color: mongod:0 allocation score on overcloud-controller-1: INFINITY --native_color: mongod:0 allocation score on overcloud-controller-2: -INFINITY -+native_color: mongod:0 allocation score on overcloud-controller-2: 0 - native_color: mongod:1 allocation score on overcloud-controller-0: INFINITY --native_color: mongod:1 allocation score on overcloud-controller-1: 0 --native_color: mongod:1 allocation score on overcloud-controller-2: -INFINITY --native_color: mongod:2 allocation score on overcloud-controller-0: 0 --native_color: mongod:2 allocation score on overcloud-controller-1: 0 -+native_color: mongod:1 allocation score on overcloud-controller-1: -INFINITY -+native_color: mongod:1 allocation score on overcloud-controller-2: 0 -+native_color: mongod:2 allocation score on overcloud-controller-0: -INFINITY -+native_color: mongod:2 allocation score on overcloud-controller-1: -INFINITY - native_color: mongod:2 allocation score on overcloud-controller-2: INFINITY - native_color: neutron-dhcp-agent:0 allocation score on overcloud-controller-0: 0 - native_color: neutron-dhcp-agent:0 allocation score on overcloud-controller-1: 0 -@@ -545,14 +545,14 @@ native_color: neutron-metadata-agent:1 allocation score on overcloud-controller- - native_color: neutron-metadata-agent:2 allocation score on overcloud-controller-0: -INFINITY - native_color: neutron-metadata-agent:2 allocation score on overcloud-controller-1: -INFINITY - native_color: neutron-metadata-agent:2 allocation score on overcloud-controller-2: 0 --native_color: neutron-netns-cleanup:0 allocation score on overcloud-controller-0: -INFINITY -+native_color: neutron-netns-cleanup:0 allocation score on overcloud-controller-0: 0 - native_color: neutron-netns-cleanup:0 allocation score on overcloud-controller-1: INFINITY --native_color: neutron-netns-cleanup:0 allocation score on overcloud-controller-2: -INFINITY -+native_color: neutron-netns-cleanup:0 allocation score on overcloud-controller-2: 0 - native_color: neutron-netns-cleanup:1 allocation score on overcloud-controller-0: INFINITY --native_color: neutron-netns-cleanup:1 allocation score on overcloud-controller-1: 0 --native_color: neutron-netns-cleanup:1 allocation score on overcloud-controller-2: -INFINITY --native_color: neutron-netns-cleanup:2 allocation score on overcloud-controller-0: 0 --native_color: neutron-netns-cleanup:2 allocation score on overcloud-controller-1: 0 -+native_color: neutron-netns-cleanup:1 allocation score on overcloud-controller-1: -INFINITY -+native_color: neutron-netns-cleanup:1 allocation score on overcloud-controller-2: 0 -+native_color: neutron-netns-cleanup:2 allocation score on overcloud-controller-0: -INFINITY -+native_color: neutron-netns-cleanup:2 allocation score on overcloud-controller-1: -INFINITY - native_color: neutron-netns-cleanup:2 allocation score on overcloud-controller-2: INFINITY - native_color: neutron-openvswitch-agent:0 allocation score on overcloud-controller-0: 0 - native_color: neutron-openvswitch-agent:0 allocation score on overcloud-controller-1: 0 -@@ -563,14 +563,14 @@ native_color: neutron-openvswitch-agent:1 allocation score on overcloud-controll - native_color: neutron-openvswitch-agent:2 allocation score on overcloud-controller-0: -INFINITY - native_color: neutron-openvswitch-agent:2 allocation score on overcloud-controller-1: 0 - native_color: neutron-openvswitch-agent:2 allocation score on overcloud-controller-2: -INFINITY --native_color: neutron-ovs-cleanup:0 allocation score on overcloud-controller-0: -INFINITY -+native_color: neutron-ovs-cleanup:0 allocation score on overcloud-controller-0: 0 - native_color: neutron-ovs-cleanup:0 allocation score on overcloud-controller-1: INFINITY --native_color: neutron-ovs-cleanup:0 allocation score on overcloud-controller-2: -INFINITY -+native_color: neutron-ovs-cleanup:0 allocation score on overcloud-controller-2: 0 - native_color: neutron-ovs-cleanup:1 allocation score on overcloud-controller-0: INFINITY --native_color: neutron-ovs-cleanup:1 allocation score on overcloud-controller-1: 0 --native_color: neutron-ovs-cleanup:1 allocation score on overcloud-controller-2: -INFINITY --native_color: neutron-ovs-cleanup:2 allocation score on overcloud-controller-0: 0 --native_color: neutron-ovs-cleanup:2 allocation score on overcloud-controller-1: 0 -+native_color: neutron-ovs-cleanup:1 allocation score on overcloud-controller-1: -INFINITY -+native_color: neutron-ovs-cleanup:1 allocation score on overcloud-controller-2: 0 -+native_color: neutron-ovs-cleanup:2 allocation score on overcloud-controller-0: -INFINITY -+native_color: neutron-ovs-cleanup:2 allocation score on overcloud-controller-1: -INFINITY - native_color: neutron-ovs-cleanup:2 allocation score on overcloud-controller-2: INFINITY - native_color: neutron-server:0 allocation score on overcloud-controller-0: 0 - native_color: neutron-server:0 allocation score on overcloud-controller-1: 0 -@@ -590,11 +590,11 @@ native_color: openstack-aodh-evaluator:1 allocation score on overcloud-controlle - native_color: openstack-aodh-evaluator:2 allocation score on overcloud-controller-0: -INFINITY - native_color: openstack-aodh-evaluator:2 allocation score on overcloud-controller-1: 0 - native_color: openstack-aodh-evaluator:2 allocation score on overcloud-controller-2: -INFINITY --native_color: openstack-aodh-listener:0 allocation score on overcloud-controller-0: -INFINITY -+native_color: openstack-aodh-listener:0 allocation score on overcloud-controller-0: 0 - native_color: openstack-aodh-listener:0 allocation score on overcloud-controller-1: INFINITY - native_color: openstack-aodh-listener:0 allocation score on overcloud-controller-2: 0 - native_color: openstack-aodh-listener:1 allocation score on overcloud-controller-0: INFINITY --native_color: openstack-aodh-listener:1 allocation score on overcloud-controller-1: 0 -+native_color: openstack-aodh-listener:1 allocation score on overcloud-controller-1: -INFINITY - native_color: openstack-aodh-listener:1 allocation score on overcloud-controller-2: 0 - native_color: openstack-aodh-listener:2 allocation score on overcloud-controller-0: -INFINITY - native_color: openstack-aodh-listener:2 allocation score on overcloud-controller-1: -INFINITY -@@ -635,11 +635,11 @@ native_color: openstack-ceilometer-collector:1 allocation score on overcloud-con - native_color: openstack-ceilometer-collector:2 allocation score on overcloud-controller-0: -INFINITY - native_color: openstack-ceilometer-collector:2 allocation score on overcloud-controller-1: 0 - native_color: openstack-ceilometer-collector:2 allocation score on overcloud-controller-2: -INFINITY --native_color: openstack-ceilometer-notification:0 allocation score on overcloud-controller-0: -INFINITY -+native_color: openstack-ceilometer-notification:0 allocation score on overcloud-controller-0: 0 - native_color: openstack-ceilometer-notification:0 allocation score on overcloud-controller-1: INFINITY - native_color: openstack-ceilometer-notification:0 allocation score on overcloud-controller-2: 0 - native_color: openstack-ceilometer-notification:1 allocation score on overcloud-controller-0: INFINITY --native_color: openstack-ceilometer-notification:1 allocation score on overcloud-controller-1: 0 -+native_color: openstack-ceilometer-notification:1 allocation score on overcloud-controller-1: -INFINITY - native_color: openstack-ceilometer-notification:1 allocation score on overcloud-controller-2: 0 - native_color: openstack-ceilometer-notification:2 allocation score on overcloud-controller-0: -INFINITY - native_color: openstack-ceilometer-notification:2 allocation score on overcloud-controller-1: -INFINITY -@@ -782,11 +782,11 @@ native_color: openstack-sahara-api:1 allocation score on overcloud-controller-2: - native_color: openstack-sahara-api:2 allocation score on overcloud-controller-0: -INFINITY - native_color: openstack-sahara-api:2 allocation score on overcloud-controller-1: -INFINITY - native_color: openstack-sahara-api:2 allocation score on overcloud-controller-2: 0 --native_color: openstack-sahara-engine:0 allocation score on overcloud-controller-0: -INFINITY -+native_color: openstack-sahara-engine:0 allocation score on overcloud-controller-0: 0 - native_color: openstack-sahara-engine:0 allocation score on overcloud-controller-1: INFINITY - native_color: openstack-sahara-engine:0 allocation score on overcloud-controller-2: 0 - native_color: openstack-sahara-engine:1 allocation score on overcloud-controller-0: INFINITY --native_color: openstack-sahara-engine:1 allocation score on overcloud-controller-1: 0 -+native_color: openstack-sahara-engine:1 allocation score on overcloud-controller-1: -INFINITY - native_color: openstack-sahara-engine:1 allocation score on overcloud-controller-2: 0 - native_color: openstack-sahara-engine:2 allocation score on overcloud-controller-0: -INFINITY - native_color: openstack-sahara-engine:2 allocation score on overcloud-controller-1: -INFINITY -@@ -796,8 +796,8 @@ native_color: rabbitmq:0 allocation score on overcloud-controller-1: INFINITY - native_color: rabbitmq:0 allocation score on overcloud-controller-2: 0 - native_color: rabbitmq:1 allocation score on overcloud-controller-0: INFINITY - native_color: rabbitmq:1 allocation score on overcloud-controller-1: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-controller-2: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-controller-0: 0 -+native_color: rabbitmq:1 allocation score on overcloud-controller-2: 0 -+native_color: rabbitmq:2 allocation score on overcloud-controller-0: -INFINITY - native_color: rabbitmq:2 allocation score on overcloud-controller-1: -INFINITY - native_color: rabbitmq:2 allocation score on overcloud-controller-2: INFINITY - native_color: redis:0 allocation score on overcloud-controller-0: 0 -@@ -805,8 +805,8 @@ native_color: redis:0 allocation score on overcloud-controller-1: INFINITY - native_color: redis:0 allocation score on overcloud-controller-2: 0 - native_color: redis:1 allocation score on overcloud-controller-0: INFINITY - native_color: redis:1 allocation score on overcloud-controller-1: -INFINITY --native_color: redis:1 allocation score on overcloud-controller-2: -INFINITY --native_color: redis:2 allocation score on overcloud-controller-0: 0 -+native_color: redis:1 allocation score on overcloud-controller-2: 0 -+native_color: redis:2 allocation score on overcloud-controller-0: -INFINITY - native_color: redis:2 allocation score on overcloud-controller-1: -INFINITY - native_color: redis:2 allocation score on overcloud-controller-2: INFINITY - redis:0 promotion score on overcloud-controller-1: 1 -diff --git a/pengine/test10/whitebox-fail1.scores b/pengine/test10/whitebox-fail1.scores -index 756bc78..4fbbf29 100644 ---- a/pengine/test10/whitebox-fail1.scores -+++ b/pengine/test10/whitebox-fail1.scores -@@ -56,17 +56,17 @@ native_color: M:0 allocation score on lxc1: 0 - native_color: M:0 allocation score on lxc2: 0 - native_color: M:1 allocation score on 18node1: -INFINITY - native_color: M:1 allocation score on 18node2: 100 --native_color: M:1 allocation score on 18node3: -INFINITY -+native_color: M:1 allocation score on 18node3: 0 - native_color: M:1 allocation score on lxc1: 0 --native_color: M:1 allocation score on lxc2: -INFINITY -+native_color: M:1 allocation score on lxc2: 0 - native_color: M:2 allocation score on 18node1: -INFINITY --native_color: M:2 allocation score on 18node2: 0 -+native_color: M:2 allocation score on 18node2: -INFINITY - native_color: M:2 allocation score on 18node3: 100 - native_color: M:2 allocation score on lxc1: 0 --native_color: M:2 allocation score on lxc2: -INFINITY -+native_color: M:2 allocation score on lxc2: 0 - native_color: M:3 allocation score on 18node1: -INFINITY --native_color: M:3 allocation score on 18node2: 0 --native_color: M:3 allocation score on 18node3: 0 -+native_color: M:3 allocation score on 18node2: -INFINITY -+native_color: M:3 allocation score on 18node3: -INFINITY - native_color: M:3 allocation score on lxc1: 0 - native_color: M:3 allocation score on lxc2: 100 - native_color: M:4 allocation score on 18node1: -INFINITY -diff --git a/pengine/test10/whitebox-fail2.scores b/pengine/test10/whitebox-fail2.scores -index 756bc78..4fbbf29 100644 ---- a/pengine/test10/whitebox-fail2.scores -+++ b/pengine/test10/whitebox-fail2.scores -@@ -56,17 +56,17 @@ native_color: M:0 allocation score on lxc1: 0 - native_color: M:0 allocation score on lxc2: 0 - native_color: M:1 allocation score on 18node1: -INFINITY - native_color: M:1 allocation score on 18node2: 100 --native_color: M:1 allocation score on 18node3: -INFINITY -+native_color: M:1 allocation score on 18node3: 0 - native_color: M:1 allocation score on lxc1: 0 --native_color: M:1 allocation score on lxc2: -INFINITY -+native_color: M:1 allocation score on lxc2: 0 - native_color: M:2 allocation score on 18node1: -INFINITY --native_color: M:2 allocation score on 18node2: 0 -+native_color: M:2 allocation score on 18node2: -INFINITY - native_color: M:2 allocation score on 18node3: 100 - native_color: M:2 allocation score on lxc1: 0 --native_color: M:2 allocation score on lxc2: -INFINITY -+native_color: M:2 allocation score on lxc2: 0 - native_color: M:3 allocation score on 18node1: -INFINITY --native_color: M:3 allocation score on 18node2: 0 --native_color: M:3 allocation score on 18node3: 0 -+native_color: M:3 allocation score on 18node2: -INFINITY -+native_color: M:3 allocation score on 18node3: -INFINITY - native_color: M:3 allocation score on lxc1: 0 - native_color: M:3 allocation score on lxc2: 100 - native_color: M:4 allocation score on 18node1: -INFINITY -diff --git a/pengine/test10/whitebox-move.scores b/pengine/test10/whitebox-move.scores -index 7f38afe..b268be3 100644 ---- a/pengine/test10/whitebox-move.scores -+++ b/pengine/test10/whitebox-move.scores -@@ -41,22 +41,22 @@ native_color: M:0 allocation score on lxc1: 0 - native_color: M:0 allocation score on lxc2: 0 - native_color: M:1 allocation score on 18node1: -INFINITY - native_color: M:1 allocation score on 18node2: 100 --native_color: M:1 allocation score on 18node3: -INFINITY --native_color: M:1 allocation score on lxc1: -INFINITY --native_color: M:1 allocation score on lxc2: -INFINITY -+native_color: M:1 allocation score on 18node3: 0 -+native_color: M:1 allocation score on lxc1: 0 -+native_color: M:1 allocation score on lxc2: 0 - native_color: M:2 allocation score on 18node1: -INFINITY --native_color: M:2 allocation score on 18node2: 0 -+native_color: M:2 allocation score on 18node2: -INFINITY - native_color: M:2 allocation score on 18node3: 100 --native_color: M:2 allocation score on lxc1: -INFINITY --native_color: M:2 allocation score on lxc2: -INFINITY -+native_color: M:2 allocation score on lxc1: 0 -+native_color: M:2 allocation score on lxc2: 0 - native_color: M:3 allocation score on 18node1: -INFINITY --native_color: M:3 allocation score on 18node2: 0 --native_color: M:3 allocation score on 18node3: 0 -+native_color: M:3 allocation score on 18node2: -INFINITY -+native_color: M:3 allocation score on 18node3: -INFINITY - native_color: M:3 allocation score on lxc1: 100 - native_color: M:3 allocation score on lxc2: 0 - native_color: M:4 allocation score on 18node1: -INFINITY --native_color: M:4 allocation score on 18node2: 0 --native_color: M:4 allocation score on 18node3: 0 -+native_color: M:4 allocation score on 18node2: -INFINITY -+native_color: M:4 allocation score on 18node3: -INFINITY - native_color: M:4 allocation score on lxc1: -INFINITY - native_color: M:4 allocation score on lxc2: 100 - native_color: container1 allocation score on 18node1: -INFINITY -diff --git a/pengine/test10/whitebox-ms-ordering-move.scores b/pengine/test10/whitebox-ms-ordering-move.scores -index 290d160..8953542 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.scores -+++ b/pengine/test10/whitebox-ms-ordering-move.scores -@@ -245,27 +245,27 @@ native_color: ping-1:1 allocation score on rhel7-1: 1 - native_color: ping-1:1 allocation score on rhel7-2: 0 - native_color: ping-1:1 allocation score on rhel7-3: -INFINITY - native_color: ping-1:1 allocation score on rhel7-4: 0 --native_color: ping-1:1 allocation score on rhel7-5: -INFINITY -+native_color: ping-1:1 allocation score on rhel7-5: 0 - native_color: ping-1:2 allocation score on lxc1: -INFINITY - native_color: ping-1:2 allocation score on lxc2: -INFINITY - native_color: ping-1:2 allocation score on rhel7-1: -INFINITY - native_color: ping-1:2 allocation score on rhel7-2: 1 - native_color: ping-1:2 allocation score on rhel7-3: -INFINITY - native_color: ping-1:2 allocation score on rhel7-4: 0 --native_color: ping-1:2 allocation score on rhel7-5: -INFINITY -+native_color: ping-1:2 allocation score on rhel7-5: 0 - native_color: ping-1:3 allocation score on lxc1: -INFINITY - native_color: ping-1:3 allocation score on lxc2: -INFINITY - native_color: ping-1:3 allocation score on rhel7-1: -INFINITY - native_color: ping-1:3 allocation score on rhel7-2: -INFINITY - native_color: ping-1:3 allocation score on rhel7-3: -INFINITY - native_color: ping-1:3 allocation score on rhel7-4: 1 --native_color: ping-1:3 allocation score on rhel7-5: -INFINITY -+native_color: ping-1:3 allocation score on rhel7-5: 0 - native_color: ping-1:4 allocation score on lxc1: -INFINITY - native_color: ping-1:4 allocation score on lxc2: -INFINITY --native_color: ping-1:4 allocation score on rhel7-1: 0 --native_color: ping-1:4 allocation score on rhel7-2: 0 -+native_color: ping-1:4 allocation score on rhel7-1: -INFINITY -+native_color: ping-1:4 allocation score on rhel7-2: -INFINITY - native_color: ping-1:4 allocation score on rhel7-3: -INFINITY --native_color: ping-1:4 allocation score on rhel7-4: 0 -+native_color: ping-1:4 allocation score on rhel7-4: -INFINITY - native_color: ping-1:4 allocation score on rhel7-5: 1 - native_color: ping-1:5 allocation score on lxc1: -INFINITY - native_color: ping-1:5 allocation score on lxc2: -INFINITY -@@ -343,27 +343,27 @@ native_color: stateful-1:1 allocation score on rhel7-1: 6 - native_color: stateful-1:1 allocation score on rhel7-2: 0 - native_color: stateful-1:1 allocation score on rhel7-3: -INFINITY - native_color: stateful-1:1 allocation score on rhel7-4: 0 --native_color: stateful-1:1 allocation score on rhel7-5: -INFINITY -+native_color: stateful-1:1 allocation score on rhel7-5: 0 - native_color: stateful-1:2 allocation score on lxc1: -INFINITY - native_color: stateful-1:2 allocation score on lxc2: -INFINITY - native_color: stateful-1:2 allocation score on rhel7-1: -INFINITY - native_color: stateful-1:2 allocation score on rhel7-2: 6 - native_color: stateful-1:2 allocation score on rhel7-3: -INFINITY - native_color: stateful-1:2 allocation score on rhel7-4: 0 --native_color: stateful-1:2 allocation score on rhel7-5: -INFINITY -+native_color: stateful-1:2 allocation score on rhel7-5: 0 - native_color: stateful-1:3 allocation score on lxc1: -INFINITY - native_color: stateful-1:3 allocation score on lxc2: -INFINITY - native_color: stateful-1:3 allocation score on rhel7-1: -INFINITY - native_color: stateful-1:3 allocation score on rhel7-2: -INFINITY - native_color: stateful-1:3 allocation score on rhel7-3: -INFINITY - native_color: stateful-1:3 allocation score on rhel7-4: 6 --native_color: stateful-1:3 allocation score on rhel7-5: -INFINITY -+native_color: stateful-1:3 allocation score on rhel7-5: 0 - native_color: stateful-1:4 allocation score on lxc1: -INFINITY - native_color: stateful-1:4 allocation score on lxc2: -INFINITY --native_color: stateful-1:4 allocation score on rhel7-1: 0 --native_color: stateful-1:4 allocation score on rhel7-2: 0 -+native_color: stateful-1:4 allocation score on rhel7-1: -INFINITY -+native_color: stateful-1:4 allocation score on rhel7-2: -INFINITY - native_color: stateful-1:4 allocation score on rhel7-3: -INFINITY --native_color: stateful-1:4 allocation score on rhel7-4: 0 -+native_color: stateful-1:4 allocation score on rhel7-4: -INFINITY - native_color: stateful-1:4 allocation score on rhel7-5: 6 - stateful-1:0 promotion score on rhel7-3: 10 - stateful-1:1 promotion score on rhel7-1: 5 -diff --git a/pengine/test10/whitebox-orphan-ms.scores b/pengine/test10/whitebox-orphan-ms.scores -index d968052..764407b 100644 ---- a/pengine/test10/whitebox-orphan-ms.scores -+++ b/pengine/test10/whitebox-orphan-ms.scores -@@ -59,12 +59,12 @@ native_color: migrator allocation score on 18node1: 1 - native_color: migrator allocation score on 18node2: 0 - native_color: migrator allocation score on 18node3: 0 - native_color: ping-1:0 allocation score on 18node1: 1 --native_color: ping-1:0 allocation score on 18node2: -INFINITY --native_color: ping-1:0 allocation score on 18node3: -INFINITY --native_color: ping-1:1 allocation score on 18node1: 0 -+native_color: ping-1:0 allocation score on 18node2: 0 -+native_color: ping-1:0 allocation score on 18node3: 0 -+native_color: ping-1:1 allocation score on 18node1: -INFINITY - native_color: ping-1:1 allocation score on 18node2: 1 - native_color: ping-1:1 allocation score on 18node3: 0 --native_color: ping-1:2 allocation score on 18node1: 0 -+native_color: ping-1:2 allocation score on 18node1: -INFINITY - native_color: ping-1:2 allocation score on 18node2: -INFINITY - native_color: ping-1:2 allocation score on 18node3: 1 - native_color: r192.168.122.87 allocation score on 18node1: 11 -@@ -86,16 +86,16 @@ native_color: rsc_18node3 allocation score on 18node1: 0 - native_color: rsc_18node3 allocation score on 18node2: 0 - native_color: rsc_18node3 allocation score on 18node3: 100 - native_color: stateful-1:0 allocation score on 18node1: 11 --native_color: stateful-1:0 allocation score on 18node2: -INFINITY --native_color: stateful-1:0 allocation score on 18node3: -INFINITY -+native_color: stateful-1:0 allocation score on 18node2: 0 -+native_color: stateful-1:0 allocation score on 18node3: 0 - native_color: stateful-1:0 allocation score on lxc1: -INFINITY - native_color: stateful-1:0 allocation score on lxc2: -INFINITY --native_color: stateful-1:1 allocation score on 18node1: 0 -+native_color: stateful-1:1 allocation score on 18node1: -INFINITY - native_color: stateful-1:1 allocation score on 18node2: 6 - native_color: stateful-1:1 allocation score on 18node3: 0 - native_color: stateful-1:1 allocation score on lxc1: -INFINITY - native_color: stateful-1:1 allocation score on lxc2: -INFINITY --native_color: stateful-1:2 allocation score on 18node1: 0 -+native_color: stateful-1:2 allocation score on 18node1: -INFINITY - native_color: stateful-1:2 allocation score on 18node2: -INFINITY - native_color: stateful-1:2 allocation score on 18node3: 6 - native_color: stateful-1:2 allocation score on lxc1: -INFINITY -diff --git a/pengine/test10/whitebox-orphaned.scores b/pengine/test10/whitebox-orphaned.scores -index d2378af..7f303b8 100644 ---- a/pengine/test10/whitebox-orphaned.scores -+++ b/pengine/test10/whitebox-orphaned.scores -@@ -42,15 +42,15 @@ native_color: M:0 allocation score on 18node3: 0 - native_color: M:0 allocation score on lxc2: 0 - native_color: M:1 allocation score on 18node1: -INFINITY - native_color: M:1 allocation score on 18node2: 100 --native_color: M:1 allocation score on 18node3: -INFINITY --native_color: M:1 allocation score on lxc2: -INFINITY -+native_color: M:1 allocation score on 18node3: 0 -+native_color: M:1 allocation score on lxc2: 0 - native_color: M:2 allocation score on 18node1: -INFINITY --native_color: M:2 allocation score on 18node2: 0 -+native_color: M:2 allocation score on 18node2: -INFINITY - native_color: M:2 allocation score on 18node3: 100 --native_color: M:2 allocation score on lxc2: -INFINITY -+native_color: M:2 allocation score on lxc2: 0 - native_color: M:3 allocation score on 18node1: -INFINITY --native_color: M:3 allocation score on 18node2: 0 --native_color: M:3 allocation score on 18node3: 0 -+native_color: M:3 allocation score on 18node2: -INFINITY -+native_color: M:3 allocation score on 18node3: -INFINITY - native_color: M:3 allocation score on lxc2: 100 - native_color: container2 allocation score on 18node1: 0 - native_color: container2 allocation score on 18node2: 200 -diff --git a/pengine/test10/whitebox-start.scores b/pengine/test10/whitebox-start.scores -index 1f0f273..338ce74 100644 ---- a/pengine/test10/whitebox-start.scores -+++ b/pengine/test10/whitebox-start.scores -@@ -51,22 +51,22 @@ native_color: D allocation score on lxc1: 0 - native_color: D allocation score on lxc2: 0 - native_color: M:0 allocation score on 18node1: 100 - native_color: M:0 allocation score on 18node2: 0 --native_color: M:0 allocation score on 18node3: -INFINITY -+native_color: M:0 allocation score on 18node3: 0 - native_color: M:0 allocation score on lxc1: 0 --native_color: M:0 allocation score on lxc2: -INFINITY -+native_color: M:0 allocation score on lxc2: 0 - native_color: M:1 allocation score on 18node1: -INFINITY - native_color: M:1 allocation score on 18node2: 100 --native_color: M:1 allocation score on 18node3: -INFINITY -+native_color: M:1 allocation score on 18node3: 0 - native_color: M:1 allocation score on lxc1: 0 --native_color: M:1 allocation score on lxc2: -INFINITY --native_color: M:2 allocation score on 18node1: 0 --native_color: M:2 allocation score on 18node2: 0 -+native_color: M:1 allocation score on lxc2: 0 -+native_color: M:2 allocation score on 18node1: -INFINITY -+native_color: M:2 allocation score on 18node2: -INFINITY - native_color: M:2 allocation score on 18node3: 100 - native_color: M:2 allocation score on lxc1: 0 --native_color: M:2 allocation score on lxc2: -INFINITY --native_color: M:3 allocation score on 18node1: 0 --native_color: M:3 allocation score on 18node2: 0 --native_color: M:3 allocation score on 18node3: 0 -+native_color: M:2 allocation score on lxc2: 0 -+native_color: M:3 allocation score on 18node1: -INFINITY -+native_color: M:3 allocation score on 18node2: -INFINITY -+native_color: M:3 allocation score on 18node3: -INFINITY - native_color: M:3 allocation score on lxc1: 0 - native_color: M:3 allocation score on lxc2: 100 - native_color: M:4 allocation score on 18node1: -INFINITY -diff --git a/pengine/test10/whitebox-stop.scores b/pengine/test10/whitebox-stop.scores -index 0f97c14..12b38dd 100644 ---- a/pengine/test10/whitebox-stop.scores -+++ b/pengine/test10/whitebox-stop.scores -@@ -56,17 +56,17 @@ native_color: M:0 allocation score on lxc1: -INFINITY - native_color: M:0 allocation score on lxc2: 0 - native_color: M:1 allocation score on 18node1: -INFINITY - native_color: M:1 allocation score on 18node2: 100 --native_color: M:1 allocation score on 18node3: -INFINITY -+native_color: M:1 allocation score on 18node3: 0 - native_color: M:1 allocation score on lxc1: -INFINITY --native_color: M:1 allocation score on lxc2: -INFINITY -+native_color: M:1 allocation score on lxc2: 0 - native_color: M:2 allocation score on 18node1: -INFINITY --native_color: M:2 allocation score on 18node2: 0 -+native_color: M:2 allocation score on 18node2: -INFINITY - native_color: M:2 allocation score on 18node3: 100 - native_color: M:2 allocation score on lxc1: -INFINITY --native_color: M:2 allocation score on lxc2: -INFINITY -+native_color: M:2 allocation score on lxc2: 0 - native_color: M:3 allocation score on 18node1: -INFINITY --native_color: M:3 allocation score on 18node2: 0 --native_color: M:3 allocation score on 18node3: 0 -+native_color: M:3 allocation score on 18node2: -INFINITY -+native_color: M:3 allocation score on 18node3: -INFINITY - native_color: M:3 allocation score on lxc1: -INFINITY - native_color: M:3 allocation score on lxc2: 100 - native_color: M:4 allocation score on 18node1: -INFINITY -diff --git a/pengine/utilization.c b/pengine/utilization.c -index db41b21..e3996e2 100644 ---- a/pengine/utilization.c -+++ b/pengine/utilization.c -@@ -317,7 +317,7 @@ find_colocated_rscs(GListPtr colocated_rscs, resource_t * rsc, resource_t * orig - continue; - } - -- if (rsc_lh->variant <= pe_group && rsc->variant > pe_group) { -+ if (rsc_lh->variant <= pe_group && rsc->variant >= pe_clone) { - /* We do not know if rsc_lh will be colocated with orig_rsc in this case */ - continue; - } -diff --git a/pengine/utils.c b/pengine/utils.c -index ca25d4a..755f1c8 100644 ---- a/pengine/utils.c -+++ b/pengine/utils.c -@@ -242,13 +242,24 @@ native_assign_node(resource_t * rsc, GListPtr nodes, node_t * chosen, gboolean f - { - CRM_ASSERT(rsc->variant == pe_native); - -- if (force == FALSE -- && chosen != NULL && (can_run_resources(chosen) == FALSE || chosen->weight < 0)) { -- crm_debug("All nodes for resource %s are unavailable" -- ", unclean or shutting down (%s: %d, %d)", -- rsc->id, chosen->details->uname, can_run_resources(chosen), chosen->weight); -- rsc->next_role = RSC_ROLE_STOPPED; -- chosen = NULL; -+ if (force == FALSE && chosen != NULL) { -+ bool unset = FALSE; -+ -+ if(chosen->weight < 0) { -+ unset = TRUE; -+ -+ // Allow the graph to assume that the remote resource will come up -+ } else if(can_run_resources(chosen) == FALSE && !is_container_remote_node(chosen)) { -+ unset = TRUE; -+ } -+ -+ if(unset) { -+ crm_debug("All nodes for resource %s are unavailable" -+ ", unclean or shutting down (%s: %d, %d)", -+ rsc->id, chosen->details->uname, can_run_resources(chosen), chosen->weight); -+ rsc->next_role = RSC_ROLE_STOPPED; -+ chosen = NULL; -+ } - } - - /* todo: update the old node for each resource to reflect its -@@ -271,10 +282,10 @@ native_assign_node(resource_t * rsc, GListPtr nodes, node_t * chosen, gboolean f - - crm_debug("Processing %s", op->uuid); - if(safe_str_eq(RSC_STOP, op->task)) { -- update_action_flags(op, pe_action_optional | pe_action_clear, __FUNCTION__); -+ update_action_flags(op, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); - - } else if(safe_str_eq(RSC_START, op->task)) { -- update_action_flags(op, pe_action_runnable | pe_action_clear, __FUNCTION__); -+ update_action_flags(op, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); - /* set_bit(rsc->flags, pe_rsc_block); */ - - } else if(interval && safe_str_neq(interval, "0")) { -@@ -283,7 +294,7 @@ native_assign_node(resource_t * rsc, GListPtr nodes, node_t * chosen, gboolean f - - } else { - /* Normal monitor operation, cancel it */ -- update_action_flags(op, pe_action_runnable | pe_action_clear, __FUNCTION__); -+ update_action_flags(op, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); - } - } - } -diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c -index 4f3a2fc..67640c1 100644 ---- a/tools/crm_resource_runtime.c -+++ b/tools/crm_resource_runtime.c -@@ -1109,7 +1109,7 @@ cli_resource_restart(resource_t * rsc, const char *host, int timeout_ms, cib_t * - attr_set_type = XML_TAG_META_SETS; - - rsc_id = strdup(rsc->id); -- if(rsc->variant > pe_group) { -+ if(rsc->variant >= pe_clone) { - is_clone = TRUE; - } - -@@ -1624,7 +1624,7 @@ cli_resource_move(const char *rsc_id, const char *host_name, cib_t * cib, pe_wor - count = g_list_length(rsc->running_on); - } - -- } else if (rsc->variant > pe_group) { -+ } else if (rsc->variant >= pe_clone) { - count = g_list_length(rsc->running_on); - - } else if (g_list_length(rsc->running_on) > 1) { -diff --git a/xml/resources-2.8.rng b/xml/resources-2.8.rng -new file mode 100644 -index 0000000..f41f84d ---- /dev/null -+++ b/xml/resources-2.8.rng -@@ -0,0 +1,300 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ([0-9\-]+) -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ Stopped -+ Started -+ Slave -+ Master -+ -+ -+ -+ -+ -+ -+ nothing -+ quorum -+ fencing -+ unfencing -+ -+ -+ -+ -+ -+ -+ ignore -+ block -+ stop -+ restart -+ standby -+ fence -+ restart-container -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ocf -+ -+ -+ -+ -+ lsb -+ heartbeat -+ stonith -+ upstart -+ service -+ systemd -+ nagios -+ -+ -+ -+ -+ --- -1.8.3.1 - diff --git a/SOURCES/035-unmanaged-remotes.patch b/SOURCES/035-unmanaged-remotes.patch deleted file mode 100644 index 628a945..0000000 --- a/SOURCES/035-unmanaged-remotes.patch +++ /dev/null @@ -1,739 +0,0 @@ -From 0113ff6fb6bb576356d201cf698b98455dbf5180 Mon Sep 17 00:00:00 2001 -From: Klaus Wenninger -Date: Wed, 21 Dec 2016 18:08:40 +0100 -Subject: [PATCH] Fix: pacemaker-remote: pacemaker_remoted shutdown while - unmanaged - -Since introduction of the graceful shutdown of pacemaker_remoted -the shutdown is hanging if the remote-resource is unmanaged. -This happens as pacemaker_remoted is waiting for all resources -running on the remote-node to be shut down and pacemaker -on the other hand doesn't touch resources on a remote-node -when the remote-resource is unmanaged. - -Fixes rhbz#1388102 ---- - crmd/crmd_lrm.h | 2 + - crmd/lrm_state.c | 20 ++++--- - crmd/messages.c | 5 ++ - crmd/remote_lrmd_ra.c | 124 ++++++++++++++++++++++++++++++++++++++++--- - crmd/te_actions.c | 28 +++++++++- - include/crm/crm.h | 1 + - include/crm/lrmd.h | 1 + - include/crm/msg_xml.h | 2 + - include/crm/pengine/status.h | 1 + - include/crm_internal.h | 1 + - lib/lrmd/proxy_common.c | 15 ++++++ - lib/pengine/unpack.c | 34 ++++++++---- - lib/pengine/utils.c | 28 ++++++---- - lrmd/ipc_proxy.c | 5 ++ - lrmd/lrmd_private.h | 2 + - lrmd/main.c | 24 +++++++++ - pengine/allocate.c | 3 ++ - pengine/graph.c | 68 +++++++++++++++++++++++- - pengine/pengine.h | 1 + - 19 files changed, 329 insertions(+), 36 deletions(-) - -diff --git a/crmd/crmd_lrm.h b/crmd/crmd_lrm.h -index c6373f1..64d80c4 100644 ---- a/crmd/crmd_lrm.h -+++ b/crmd/crmd_lrm.h -@@ -162,5 +162,7 @@ int remote_ra_exec(lrm_state_t * lrm_state, const char *rsc_id, const char *acti - void remote_ra_cleanup(lrm_state_t * lrm_state); - void remote_ra_fail(const char *node_name); - void remote_ra_process_pseudo(xmlNode *xml); -+gboolean remote_ra_is_in_maintenance(lrm_state_t * lrm_state); -+void remote_ra_process_maintenance_nodes(xmlNode *xml); - - gboolean process_lrm_event(lrm_state_t * lrm_state, lrmd_event_data_t * op, struct recurring_op_s *pending); -diff --git a/crmd/lrm_state.c b/crmd/lrm_state.c -index 7b4379b..d55755e 100644 ---- a/crmd/lrm_state.c -+++ b/crmd/lrm_state.c -@@ -508,14 +508,22 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) - crm_notice("%s requested shutdown of its remote connection", - lrm_state->node_name); - -- now_s = crm_itoa(now); -- update_attrd(lrm_state->node_name, XML_CIB_ATTR_SHUTDOWN, now_s, NULL, TRUE); -- free(now_s); -+ if (!remote_ra_is_in_maintenance(lrm_state)) { -+ now_s = crm_itoa(now); -+ update_attrd(lrm_state->node_name, XML_CIB_ATTR_SHUTDOWN, now_s, NULL, TRUE); -+ free(now_s); - -- remote_proxy_ack_shutdown(lrmd); -+ remote_proxy_ack_shutdown(lrmd); - -- crm_warn("Reconnection attempts to %s may result in failures that must be cleared", -- lrm_state->node_name); -+ crm_warn("Reconnection attempts to %s may result in failures that must be cleared", -+ lrm_state->node_name); -+ } else { -+ remote_proxy_nack_shutdown(lrmd); -+ -+ crm_notice("Remote resource for %s is not managed so no ordered shutdown happening", -+ lrm_state->node_name); -+ } -+ return; - - } else if (safe_str_eq(op, LRMD_IPC_OP_REQUEST) && proxy->is_local) { - /* this is for the crmd, which we are, so don't try -diff --git a/crmd/messages.c b/crmd/messages.c -index 87d0acf..c79d96e 100644 ---- a/crmd/messages.c -+++ b/crmd/messages.c -@@ -872,6 +872,11 @@ handle_request(xmlNode * stored_msg, enum crmd_fsa_cause cause) - reap_crm_member(id, name); - } - -+ } else if (strcmp(op, CRM_OP_MAINTENANCE_NODES) == 0) { -+ xmlNode *xml = get_message_xml(stored_msg, F_CRM_DATA); -+ -+ remote_ra_process_maintenance_nodes(xml); -+ - } else { - crm_err("Unexpected request (%s) sent to %s", op, AM_I_DC ? "the DC" : "non-DC node"); - crm_log_xml_err(stored_msg, "Unexpected"); -diff --git a/crmd/remote_lrmd_ra.c b/crmd/remote_lrmd_ra.c -index e68d784..8085219 100644 ---- a/crmd/remote_lrmd_ra.c -+++ b/crmd/remote_lrmd_ra.c -@@ -80,6 +80,10 @@ typedef struct remote_ra_data_s { - enum remote_migration_status migrate_status; - - gboolean active; -+ gboolean is_maintenance; /* kind of complex to determine from crmd-context -+ * so we have it signalled back with the -+ * transition from pengine -+ */ - } remote_ra_data_t; - - static int handle_remote_ra_start(lrm_state_t * lrm_state, remote_ra_cmd_t * cmd, int timeout_ms); -@@ -485,6 +489,28 @@ monitor_timeout_cb(gpointer data) - return FALSE; - } - -+static void -+synthesize_lrmd_success(lrm_state_t *lrm_state, const char *rsc_id, const char *op_type) -+{ -+ lrmd_event_data_t op = { 0, }; -+ -+ if (lrm_state == NULL) { -+ /* if lrm_state not given assume local */ -+ lrm_state = lrm_state_find(fsa_our_uname); -+ } -+ CRM_ASSERT(lrm_state != NULL); -+ -+ op.type = lrmd_event_exec_complete; -+ op.rsc_id = rsc_id; -+ op.op_type = op_type; -+ op.rc = PCMK_OCF_OK; -+ op.op_status = PCMK_LRM_OP_DONE; -+ op.t_run = time(NULL); -+ op.t_rcchange = op.t_run; -+ op.call_id = generate_callid(); -+ process_lrm_event(lrm_state, &op, NULL); -+} -+ - void - remote_lrm_op_callback(lrmd_event_data_t * op) - { -@@ -536,9 +562,18 @@ remote_lrm_op_callback(lrmd_event_data_t * op) - (ra_data->cur_cmd == NULL) && - (ra_data->active == TRUE)) { - -- crm_err("Unexpected disconnect on remote-node %s", lrm_state->node_name); -- ra_data->recurring_cmds = fail_all_monitor_cmds(ra_data->recurring_cmds); -- ra_data->cmds = fail_all_monitor_cmds(ra_data->cmds); -+ if (!remote_ra_is_in_maintenance(lrm_state)) { -+ crm_err("Unexpected disconnect on remote-node %s", lrm_state->node_name); -+ ra_data->recurring_cmds = fail_all_monitor_cmds(ra_data->recurring_cmds); -+ ra_data->cmds = fail_all_monitor_cmds(ra_data->cmds); -+ } else { -+ crm_notice("Disconnect on unmanaged remote-node %s", lrm_state->node_name); -+ /* Do roughly what a 'stop' on the remote-resource would do */ -+ handle_remote_ra_stop(lrm_state, NULL); -+ remote_node_down(lrm_state->node_name, DOWN_KEEP_LRM); -+ /* now fake the reply of a successful 'stop' */ -+ synthesize_lrmd_success(NULL, lrm_state->node_name, "stop"); -+ } - return; - } - -@@ -651,8 +686,6 @@ handle_remote_ra_stop(lrm_state_t * lrm_state, remote_ra_cmd_t * cmd) - - ra_data->active = FALSE; - lrm_state_disconnect(lrm_state); -- cmd->rc = PCMK_OCF_OK; -- cmd->op_status = PCMK_LRM_OP_DONE; - - if (ra_data->cmds) { - g_list_free_full(ra_data->cmds, free_cmd); -@@ -664,7 +697,12 @@ handle_remote_ra_stop(lrm_state_t * lrm_state, remote_ra_cmd_t * cmd) - ra_data->recurring_cmds = NULL; - ra_data->cur_cmd = NULL; - -- report_remote_ra_result(cmd); -+ if (cmd) { -+ cmd->rc = PCMK_OCF_OK; -+ cmd->op_status = PCMK_LRM_OP_DONE; -+ -+ report_remote_ra_result(cmd); -+ } - } - - static int -@@ -1140,3 +1178,77 @@ remote_ra_process_pseudo(xmlNode *xml) - } - freeXpathObject(search); - } -+ -+static void -+remote_ra_maintenance(lrm_state_t * lrm_state, gboolean maintenance) -+{ -+ remote_ra_data_t *ra_data = lrm_state->remote_ra_data; -+ xmlNode *update, *state; -+ int call_opt, call_id = 0; -+ crm_node_t *node; -+ -+ call_opt = crmd_cib_smart_opt(); -+ node = crm_remote_peer_get(lrm_state->node_name); -+ CRM_CHECK(node != NULL, return); -+ update = create_xml_node(NULL, XML_CIB_TAG_STATUS); -+ state = create_node_state_update(node, node_update_none, update, -+ __FUNCTION__); -+ crm_xml_add(state, XML_NODE_IS_MAINTENANCE, maintenance?"1":"0"); -+ fsa_cib_update(XML_CIB_TAG_STATUS, update, call_opt, call_id, NULL); -+ if (call_id < 0) { -+ crm_perror(LOG_WARNING, "%s CIB node state update failed", lrm_state->node_name); -+ } else { -+ /* TODO: still not 100% sure that async update will succeed ... */ -+ ra_data->is_maintenance = maintenance; -+ } -+ free_xml(update); -+} -+ -+#define XPATH_PSEUDO_MAINTENANCE "//" XML_GRAPH_TAG_PSEUDO_EVENT \ -+ "[@" XML_LRM_ATTR_TASK "='" CRM_OP_MAINTENANCE_NODES "']/" \ -+ XML_GRAPH_TAG_MAINTENANCE -+ -+/*! -+ * \internal -+ * \brief Check a pseudo-action holding updates for maintenance state -+ * -+ * \param[in] xml XML of pseudo-action to check -+ */ -+ -+void -+remote_ra_process_maintenance_nodes(xmlNode *xml) -+{ -+ xmlXPathObjectPtr search = xpath_search(xml, XPATH_PSEUDO_MAINTENANCE); -+ -+ if (numXpathResults(search) == 1) { -+ xmlNode *node; -+ int cnt = 0, cnt_remote = 0; -+ -+ for (node = -+ first_named_child(getXpathResult(search, 0), XML_CIB_TAG_NODE); -+ node; node = __xml_next(node)) { -+ lrm_state_t *lrm_state = lrm_state_find(ID(node)); -+ -+ cnt++; -+ if (lrm_state && lrm_state->remote_ra_data && -+ ((remote_ra_data_t *) lrm_state->remote_ra_data)->active) { -+ cnt_remote++; -+ remote_ra_maintenance(lrm_state, -+ crm_atoi(crm_element_value(node, -+ XML_NODE_IS_MAINTENANCE), "0")); -+ -+ } -+ } -+ crm_trace("Action holds %d nodes (%d remotes found) " -+ "adjusting maintenance-mode", cnt, cnt_remote); -+ } -+ freeXpathObject(search); -+} -+ -+gboolean -+remote_ra_is_in_maintenance(lrm_state_t * lrm_state) -+{ -+ remote_ra_data_t *ra_data = lrm_state->remote_ra_data; -+ -+ return ra_data->is_maintenance; -+} -diff --git a/crmd/te_actions.c b/crmd/te_actions.c -index 5508234..c41d44d 100644 ---- a/crmd/te_actions.c -+++ b/crmd/te_actions.c -@@ -53,8 +53,32 @@ te_start_action_timer(crm_graph_t * graph, crm_action_t * action) - static gboolean - te_pseudo_action(crm_graph_t * graph, crm_action_t * pseudo) - { -- /* Check action for Pacemaker Remote node side effects */ -- remote_ra_process_pseudo(pseudo->xml); -+ const char *task = crm_element_value(pseudo->xml, XML_LRM_ATTR_TASK); -+ -+ /* send to peers as well? */ -+ if (safe_str_eq(task, CRM_OP_MAINTENANCE_NODES)) { -+ GHashTableIter iter; -+ crm_node_t *node = NULL; -+ -+ g_hash_table_iter_init(&iter, crm_peer_cache); -+ while (g_hash_table_iter_next(&iter, NULL, (gpointer *) &node)) { -+ xmlNode *cmd = NULL; -+ -+ if (safe_str_eq(fsa_our_uname, node->uname)) { -+ continue; -+ } -+ -+ cmd = create_request(task, pseudo->xml, node->uname, -+ CRM_SYSTEM_CRMD, CRM_SYSTEM_TENGINE, NULL); -+ send_cluster_message(node, crm_msg_crmd, cmd, FALSE); -+ free_xml(cmd); -+ } -+ -+ remote_ra_process_maintenance_nodes(pseudo->xml); -+ } else { -+ /* Check action for Pacemaker Remote node side effects */ -+ remote_ra_process_pseudo(pseudo->xml); -+ } - - crm_debug("Pseudo-action %d (%s) fired and confirmed", pseudo->id, - crm_element_value(pseudo->xml, XML_LRM_ATTR_TASK_KEY)); -diff --git a/include/crm/crm.h b/include/crm/crm.h -index 3f83a91..6afc771 100644 ---- a/include/crm/crm.h -+++ b/include/crm/crm.h -@@ -142,6 +142,7 @@ extern char *crm_system_name; - # define CRM_OP_RELAXED_SET "one-or-more" - # define CRM_OP_RELAXED_CLONE "clone-one-or-more" - # define CRM_OP_RM_NODE_CACHE "rm_node_cache" -+# define CRM_OP_MAINTENANCE_NODES "maintenance_nodes" - - # define CRMD_JOINSTATE_DOWN "down" - # define CRMD_JOINSTATE_PENDING "pending" -diff --git a/include/crm/lrmd.h b/include/crm/lrmd.h -index 446b39c..e4dc61c 100644 ---- a/include/crm/lrmd.h -+++ b/include/crm/lrmd.h -@@ -99,6 +99,7 @@ typedef struct lrmd_key_value_s { - #define LRMD_IPC_OP_RESPONSE "response" - #define LRMD_IPC_OP_SHUTDOWN_REQ "shutdown_req" - #define LRMD_IPC_OP_SHUTDOWN_ACK "shutdown_ack" -+#define LRMD_IPC_OP_SHUTDOWN_NACK "shutdown_nack" - - #define F_LRMD_IPC_OP "lrmd_ipc_op" - #define F_LRMD_IPC_IPC_SERVER "lrmd_ipc_server" -diff --git a/include/crm/msg_xml.h b/include/crm/msg_xml.h -index 4a3cd1e..3a0c0e8 100644 ---- a/include/crm/msg_xml.h -+++ b/include/crm/msg_xml.h -@@ -255,6 +255,7 @@ - # define XML_NODE_IS_PEER "crmd" - # define XML_NODE_IS_REMOTE "remote_node" - # define XML_NODE_IS_FENCED "node_fenced" -+# define XML_NODE_IS_MAINTENANCE "node_in_maintenance" - - # define XML_CIB_ATTR_SHUTDOWN "shutdown" - # define XML_CIB_ATTR_STONITH "stonith" -@@ -297,6 +298,7 @@ - # define XML_GRAPH_TAG_PSEUDO_EVENT "pseudo_event" - # define XML_GRAPH_TAG_CRM_EVENT "crm_event" - # define XML_GRAPH_TAG_DOWNED "downed" -+# define XML_GRAPH_TAG_MAINTENANCE "maintenance" - - # define XML_TAG_RULE "rule" - # define XML_RULE_ATTR_SCORE "score" -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index 79e4572..eb401be 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -160,6 +160,7 @@ struct node_shared_s { - gboolean rsc_discovery_enabled; - gboolean remote_requires_reset; - gboolean remote_was_fenced; -+ gboolean remote_maintenance; /* what the remote-rsc is thinking */ - }; - - struct node_s { -diff --git a/include/crm_internal.h b/include/crm_internal.h -index a498bcb..297e6b3 100644 ---- a/include/crm_internal.h -+++ b/include/crm_internal.h -@@ -381,6 +381,7 @@ typedef struct remote_proxy_s { - int remote_proxy_check(lrmd_t *lrmd, GHashTable *hash); - void remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg); - void remote_proxy_ack_shutdown(lrmd_t *lrmd); -+void remote_proxy_nack_shutdown(lrmd_t *lrmd); - - int remote_proxy_dispatch(const char *buffer, ssize_t length, gpointer userdata); - void remote_proxy_disconnected(gpointer data); -diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c -index eb17e4e..69cfa8c 100644 ---- a/lib/lrmd/proxy_common.c -+++ b/lib/lrmd/proxy_common.c -@@ -59,6 +59,21 @@ remote_proxy_ack_shutdown(lrmd_t *lrmd) - free_xml(msg); - } - -+/*! -+ * \brief We're not gonna shutdown as response to -+ * a remote proxy shutdown request. -+ * -+ * \param[in] lrmd Connection to proxy -+ */ -+void -+remote_proxy_nack_shutdown(lrmd_t *lrmd) -+{ -+ xmlNode *msg = create_xml_node(NULL, T_LRMD_IPC_PROXY); -+ crm_xml_add(msg, F_LRMD_IPC_OP, LRMD_IPC_OP_SHUTDOWN_NACK); -+ lrmd_internal_proxy_send(lrmd, msg); -+ free_xml(msg); -+} -+ - void - remote_proxy_relay_event(remote_proxy_t *proxy, xmlNode *msg) - { -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index e6a8f58..ed6ee7f 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -89,16 +89,22 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - set_bit(node->details->remote_rsc->flags, pe_rsc_failed); - - } else if (is_baremetal_remote_node(node)) { -- if(pe_can_fence(data_set, node)) { -- crm_warn("Node %s will be fenced %s", node->details->uname, reason); -+ resource_t *rsc = node->details->remote_rsc; -+ -+ if (rsc && (!is_set(rsc->flags, pe_rsc_managed))) { -+ crm_notice("Not fencing node %s because connection is unmanaged, " -+ "otherwise would %s", node->details->uname, reason); - } else { -- crm_warn("Node %s is unclean %s", node->details->uname, reason); -+ if (pe_can_fence(data_set, node)) { -+ crm_warn("Node %s will be fenced %s", node->details->uname, reason); -+ } else { -+ crm_warn("Node %s is unclean %s", node->details->uname, reason); -+ } -+ node->details->remote_requires_reset = TRUE; - } - node->details->unclean = TRUE; -- node->details->remote_requires_reset = TRUE; -- - } else if (node->details->unclean == FALSE) { -- if(pe_can_fence(data_set, node)) { -+ if (pe_can_fence(data_set, node)) { - crm_warn("Node %s will be fenced %s", node->details->uname, reason); - } else { - crm_warn("Node %s is unclean %s", node->details->uname, reason); -@@ -1163,6 +1169,7 @@ unpack_remote_status(xmlNode * status, pe_working_set_t * data_set) - const char *id = NULL; - const char *uname = NULL; - const char *shutdown = NULL; -+ resource_t *rsc = NULL; - - GListPtr gIter = NULL; - -@@ -1202,6 +1209,10 @@ unpack_remote_status(xmlNode * status, pe_working_set_t * data_set) - } - crm_trace("Processing remote node id=%s, uname=%s", id, uname); - -+ this_node->details->remote_maintenance = -+ crm_atoi(crm_element_value(state, XML_NODE_IS_MAINTENANCE), "0"); -+ -+ rsc = this_node->details->remote_rsc; - if (this_node->details->remote_requires_reset == FALSE) { - this_node->details->unclean = FALSE; - this_node->details->unseen = FALSE; -@@ -1211,11 +1222,11 @@ unpack_remote_status(xmlNode * status, pe_working_set_t * data_set) - - shutdown = g_hash_table_lookup(this_node->details->attrs, XML_CIB_ATTR_SHUTDOWN); - if (shutdown != NULL && safe_str_neq("0", shutdown)) { -- resource_t *rsc = this_node->details->remote_rsc; -- - crm_info("Node %s is shutting down", this_node->details->uname); - this_node->details->shutdown = TRUE; -- rsc->next_role = RSC_ROLE_STOPPED; -+ if (rsc) { -+ rsc->next_role = RSC_ROLE_STOPPED; -+ } - } - - if (crm_is_true(g_hash_table_lookup(this_node->details->attrs, "standby"))) { -@@ -1223,7 +1234,8 @@ unpack_remote_status(xmlNode * status, pe_working_set_t * data_set) - this_node->details->standby = TRUE; - } - -- if (crm_is_true(g_hash_table_lookup(this_node->details->attrs, "maintenance"))) { -+ if (crm_is_true(g_hash_table_lookup(this_node->details->attrs, "maintenance")) || -+ (rsc && !is_set(rsc->flags, pe_rsc_managed))) { - crm_info("Node %s is in maintenance-mode", this_node->details->uname); - this_node->details->maintenance = TRUE; - } -@@ -2825,7 +2837,7 @@ determine_op_status( - result = PCMK_LRM_OP_NOTSUPPORTED; - break; - -- } else if(pe_can_fence(data_set, node) == FALSE -+ } else if (pe_can_fence(data_set, node) == FALSE - && safe_str_eq(task, CRMD_ACTION_STOP)) { - /* If a stop fails and we can't fence, there's nothing else we can do */ - pe_proc_err("No further recovery can be attempted for %s: %s action failed with '%s' (%d)", -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 2b53999..0ce5c53 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -824,20 +824,28 @@ unpack_operation(action_t * action, xmlNode * xml_obj, resource_t * container, - * 2. start - a start failure indicates that an active connection does not already - * exist. The user can set op on-fail=fence if they really want to fence start - * failures. */ -- } else if (value == NULL && -- is_rsc_baremetal_remote_node(action->rsc, data_set) && -+ } else if (((value == NULL) || !is_set(action->rsc->flags, pe_rsc_managed)) && -+ (is_rsc_baremetal_remote_node(action->rsc, data_set) && - !(safe_str_eq(action->task, CRMD_ACTION_STATUS) && interval == 0) && -- (safe_str_neq(action->task, CRMD_ACTION_START))) { -+ (safe_str_neq(action->task, CRMD_ACTION_START)))) { - -- if (is_set(data_set->flags, pe_flag_stonith_enabled)) { -- value = "fence baremetal remote node (default)"; -- } else { -- value = "recover baremetal remote node connection (default)"; -- } -- if (action->rsc->remote_reconnect_interval) { -+ if (!is_set(action->rsc->flags, pe_rsc_managed)) { -+ action->on_fail = action_fail_stop; - action->fail_role = RSC_ROLE_STOPPED; -+ value = "stop unmanaged baremetal remote node (enforcing default)"; -+ -+ } else { -+ if (is_set(data_set->flags, pe_flag_stonith_enabled)) { -+ value = "fence baremetal remote node (default)"; -+ } else { -+ value = "recover baremetal remote node connection (default)"; -+ } -+ -+ if (action->rsc->remote_reconnect_interval) { -+ action->fail_role = RSC_ROLE_STOPPED; -+ } -+ action->on_fail = action_fail_reset_remote; - } -- action->on_fail = action_fail_reset_remote; - - } else if (value == NULL && safe_str_eq(action->task, CRMD_ACTION_STOP)) { - if (is_set(data_set->flags, pe_flag_stonith_enabled)) { -diff --git a/lrmd/ipc_proxy.c b/lrmd/ipc_proxy.c -index 07c13ab..5d6ab34 100644 ---- a/lrmd/ipc_proxy.c -+++ b/lrmd/ipc_proxy.c -@@ -164,6 +164,11 @@ ipc_proxy_forward_client(crm_client_t *ipc_proxy, xmlNode *xml) - return; - } - -+ if (safe_str_eq(msg_type, LRMD_IPC_OP_SHUTDOWN_NACK)) { -+ handle_shutdown_nack(); -+ return; -+ } -+ - ipc_client = crm_client_get_by_id(session); - if (ipc_client == NULL) { - xmlNode *msg = create_xml_node(NULL, T_LRMD_IPC_PROXY); -diff --git a/lrmd/lrmd_private.h b/lrmd/lrmd_private.h -index 62e9c84..5579b92 100644 ---- a/lrmd/lrmd_private.h -+++ b/lrmd/lrmd_private.h -@@ -85,6 +85,8 @@ void free_rsc(gpointer data); - - void handle_shutdown_ack(void); - -+void handle_shutdown_nack(void); -+ - void lrmd_client_destroy(crm_client_t *client); - - void client_disconnect_cleanup(const char *client_id); -diff --git a/lrmd/main.c b/lrmd/main.c -index e3d3aaa..a3aa08f 100644 ---- a/lrmd/main.c -+++ b/lrmd/main.c -@@ -364,6 +364,7 @@ void handle_shutdown_ack() - crm_info("Received shutdown ack"); - if (shutdown_ack_timer > 0) { - g_source_remove(shutdown_ack_timer); -+ shutdown_ack_timer = 0; - } - return; - } -@@ -371,6 +372,29 @@ void handle_shutdown_ack() - crm_debug("Ignoring unexpected shutdown ack"); - } - -+/*! -+ * \internal -+ * \brief Make short exit timer fire immediately -+ */ -+void handle_shutdown_nack() -+{ -+#ifdef ENABLE_PCMK_REMOTE -+ if (shutting_down) { -+ crm_info("Received shutdown nack"); -+ if (shutdown_ack_timer > 0) { -+ GSource *timer = -+ g_main_context_find_source_by_id(NULL, shutdown_ack_timer); -+ -+ if (timer != NULL) { -+ g_source_set_ready_time(timer, 0); -+ } -+ } -+ return; -+ } -+#endif -+ crm_debug("Ignoring unexpected shutdown nack"); -+} -+ - /* *INDENT-OFF* */ - static struct crm_option long_options[] = { - /* Top-level Options */ -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 9a87816..7562253 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -2150,6 +2150,9 @@ stage8(pe_working_set_t * data_set) - - crm_log_xml_trace(data_set->graph, "created resource-driven action list"); - -+ /* pseudo action to distribute list of nodes with maintenance state update */ -+ add_maintenance_update(data_set); -+ - /* catch any non-resource specific actions */ - crm_trace("processing non-resource actions"); - -diff --git a/pengine/graph.c b/pengine/graph.c -index 81d8355..5ba60f7 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -788,13 +788,15 @@ get_router_node(action_t *action) - * \param[in] id Node UUID to add - * \param[in,out] xml Parent XML tag to add to - */ --static void -+static xmlNode* - add_node_to_xml_by_id(const char *id, xmlNode *xml) - { - xmlNode *node_xml; - - node_xml = create_xml_node(xml, XML_CIB_TAG_NODE); - crm_xml_add(node_xml, XML_ATTR_UUID, id); -+ -+ return node_xml; - } - - /*! -@@ -812,6 +814,62 @@ add_node_to_xml(const node_t *node, void *xml) - - /*! - * \internal -+ * \brief Add XML with nodes that need an update of their maintenance state -+ * -+ * \param[in,out] xml Parent XML tag to add to -+ * \param[in] data_set Working set for cluster -+ */ -+static int -+add_maintenance_nodes(xmlNode *xml, const pe_working_set_t *data_set) -+{ -+ GListPtr gIter = NULL; -+ xmlNode *maintenance = -+ xml?create_xml_node(xml, XML_GRAPH_TAG_MAINTENANCE):NULL; -+ int count = 0; -+ -+ for (gIter = data_set->nodes; gIter != NULL; -+ gIter = gIter->next) { -+ node_t *node = (node_t *) gIter->data; -+ struct node_shared_s *details = node->details; -+ -+ if (!(is_remote_node(node))) { -+ continue; /* just remote nodes need to know atm */ -+ } -+ -+ if (details->maintenance != details->remote_maintenance) { -+ if (maintenance) { -+ crm_xml_add( -+ add_node_to_xml_by_id(node->details->id, maintenance), -+ XML_NODE_IS_MAINTENANCE, details->maintenance?"1":"0"); -+ } -+ count++; -+ } -+ } -+ crm_trace("%s %d nodes to adjust maintenance-mode " -+ "to transition", maintenance?"Added":"Counted", count); -+ return count; -+} -+ -+/*! -+ * \internal -+ * \brief Add pseudo action with nodes needing maintenance state update -+ * -+ * \param[in,out] data_set Working set for cluster -+ */ -+void -+add_maintenance_update(pe_working_set_t *data_set) -+{ -+ action_t *action = NULL; -+ -+ if (add_maintenance_nodes(NULL, data_set)) { -+ crm_trace("adding maintenance state update pseudo action"); -+ action = get_pseudo_op(CRM_OP_MAINTENANCE_NODES, data_set); -+ set_bit(action->flags, pe_action_print_always); -+ } -+} -+ -+/*! -+ * \internal - * \brief Add XML with nodes that an action is expected to bring down - * - * If a specified action is expected to bring any nodes down, add an XML block -@@ -874,6 +932,7 @@ static xmlNode * - action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set) - { - gboolean needs_node_info = TRUE; -+ gboolean needs_maintenance_info = FALSE; - xmlNode *action_xml = NULL; - xmlNode *args_xml = NULL; - -@@ -901,6 +960,9 @@ action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set) - /* action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT); */ - - } else if (is_set(action->flags, pe_action_pseudo)) { -+ if (safe_str_eq(action->task, CRM_OP_MAINTENANCE_NODES)) { -+ needs_maintenance_info = TRUE; -+ } - action_xml = create_xml_node(NULL, XML_GRAPH_TAG_PSEUDO_EVENT); - needs_node_info = FALSE; - -@@ -1082,6 +1144,10 @@ action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set) - add_downed_nodes(action_xml, action, data_set); - } - -+ if (needs_maintenance_info) { -+ add_maintenance_nodes(action_xml, data_set); -+ } -+ - crm_log_xml_trace(action_xml, "dumped action"); - return action_xml; - } -diff --git a/pengine/pengine.h b/pengine/pengine.h -index 5500819..e3f4874 100644 ---- a/pengine/pengine.h -+++ b/pengine/pengine.h -@@ -145,6 +145,7 @@ extern int new_rsc_order(resource_t * lh_rsc, const char *lh_task, - new_rsc_order(rsc1, CRMD_ACTION_STOP, rsc2, CRMD_ACTION_STOP, type, data_set) - - extern void graph_element_from_action(action_t * action, pe_working_set_t * data_set); -+extern void add_maintenance_update(pe_working_set_t *data_set); - - extern gboolean show_scores; - extern int scores_log_level; --- -1.8.3.1 - diff --git a/SOURCES/036-glib-compat.patch b/SOURCES/036-glib-compat.patch deleted file mode 100644 index ee8f74f..0000000 --- a/SOURCES/036-glib-compat.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 3246a236f7d959455137cc0e56a6a9d78d3ba5ec Mon Sep 17 00:00:00 2001 -From: Klaus Wenninger -Date: Tue, 21 Mar 2017 02:54:50 +0100 -Subject: [PATCH] Fix: pacemaker_remoted: Allow compilation with glib older - 2.36 - ---- - lrmd/main.c | 8 ++------ - 1 file changed, 2 insertions(+), 6 deletions(-) - -diff --git a/lrmd/main.c b/lrmd/main.c -index a3aa08f..0e1223c 100644 ---- a/lrmd/main.c -+++ b/lrmd/main.c -@@ -382,12 +382,8 @@ void handle_shutdown_nack() - if (shutting_down) { - crm_info("Received shutdown nack"); - if (shutdown_ack_timer > 0) { -- GSource *timer = -- g_main_context_find_source_by_id(NULL, shutdown_ack_timer); -- -- if (timer != NULL) { -- g_source_set_ready_time(timer, 0); -- } -+ g_source_remove(shutdown_ack_timer); -+ shutdown_ack_timer = g_timeout_add(0, lrmd_exit, NULL); - } - return; - } --- -1.8.3.1 - diff --git a/SOURCES/037-clone-detection.patch b/SOURCES/037-clone-detection.patch deleted file mode 100644 index df4124f..0000000 --- a/SOURCES/037-clone-detection.patch +++ /dev/null @@ -1,924 +0,0 @@ -From 2c91b4a54d5b70204409ea2f7e92fbc7748e4257 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 17 Mar 2017 16:32:45 -0500 -Subject: [PATCH 1/5] Log: various: minor improvements - -add missing newline, reword to avoid singular/plural issue, -and correct misspellings (in log messages and comments) ---- - configure.ac | 2 +- - crmd/join_dc.c | 2 +- - crmd/lrm.c | 4 ++-- - fencing/remote.c | 4 ++-- - include/crm/pengine/status.h | 8 ++++---- - lib/cluster/election.c | 2 +- - lib/common/xml.c | 2 +- - lib/pengine/utils.c | 4 ++-- - lrmd/lrmd.c | 5 +++-- - pengine/graph.c | 2 +- - pengine/native.c | 2 +- - tools/fake_transition.c | 4 ++-- - 12 files changed, 21 insertions(+), 20 deletions(-) - -diff --git a/configure.ac b/configure.ac -index b1465a3..687d3fe 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1759,7 +1759,7 @@ if test "$GCC" != yes; then - else - CFLAGS="$CFLAGS -ggdb" - --dnl when we don't have diagnostic push / pull we can't explicitely disable -+dnl When we don't have diagnostic push / pull, we can't explicitly disable - dnl checking for nonliteral formats in the places where they occur on purpose - dnl thus we disable nonliteral format checking globally as we are aborting - dnl on warnings. -diff --git a/crmd/join_dc.c b/crmd/join_dc.c -index 6af0884..d5ecc55 100644 ---- a/crmd/join_dc.c -+++ b/crmd/join_dc.c -@@ -385,7 +385,7 @@ do_dc_join_finalize(long long action, - /* This we can do straight away and avoid clients timing us out - * while we compute the latest CIB - */ -- crm_debug("Finializing join-%d for %d clients", -+ crm_debug("Finalizing join-%d for %d clients", - current_join_id, crmd_join_phase_count(crm_join_integrated)); - - crmd_join_phase_log(LOG_INFO); -diff --git a/crmd/lrm.c b/crmd/lrm.c -index 2d553cd..f7aefbf 100644 ---- a/crmd/lrm.c -+++ b/crmd/lrm.c -@@ -231,8 +231,8 @@ update_history_cache(lrm_state_t * lrm_state, lrmd_rsc_info_t * rsc, lrmd_event_ - } - - } else if (did_rsc_op_fail(op, target_rc)) { -- /* We must store failed monitors here -- * - otherwise the block below will cause them to be forgetten them when a stop happens -+ /* Store failed monitors here, otherwise the block below will cause them -+ * to be forgotten when a stop happens. - */ - if (entry->failed) { - lrmd_free_event(entry->failed); -diff --git a/fencing/remote.c b/fencing/remote.c -index 6c47f65..4a47d49 100644 ---- a/fencing/remote.c -+++ b/fencing/remote.c -@@ -1558,13 +1558,13 @@ call_remote_stonith(remote_fencing_op_t * op, st_query_result_t * peer) - } - - if (op->state == st_query) { -- crm_info("None of the %d peers have devices capable of fencing (%s) %s for %s (%d)", -+ crm_info("No peers (out of %d) have devices capable of fencing (%s) %s for %s (%d)", - op->replies, op->action, op->target, op->client_name, - op->state); - - rc = -ENODEV; - } else { -- crm_info("None of the %d peers are capable of fencing (%s) %s for %s (%d)", -+ crm_info("No peers (out of %d) are capable of fencing (%s) %s for %s (%d)", - op->replies, op->action, op->target, op->client_name, - op->state); - } -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index 79e4572..e748792 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -343,8 +343,8 @@ struct pe_action_s { - * requires at minimum X number of cloned instances to be running - * before an order dependency can run. Another option that uses - * this is 'require-all=false' in ordering constrants. This option -- * says "only required one instance of a resource to start before -- * allowing dependencies to start" basicall require-all=false is -+ * says "only require one instance of a resource to start before -+ * allowing dependencies to start" -- basically, require-all=false is - * the same as clone-min=1. - */ - -@@ -354,8 +354,8 @@ struct pe_action_s { - * to be considered runnable */ - int required_runnable_before; - -- GListPtr actions_before; /* action_warpper_t* */ -- GListPtr actions_after; /* action_warpper_t* */ -+ GListPtr actions_before; /* action_wrapper_t* */ -+ GListPtr actions_after; /* action_wrapper_t* */ - }; - - struct ticket_s { -diff --git a/lib/cluster/election.c b/lib/cluster/election.c -index a8902d3..a5bb1da 100644 ---- a/lib/cluster/election.c -+++ b/lib/cluster/election.c -@@ -461,7 +461,7 @@ election_count_vote(election_t *e, xmlNode *vote, bool can_win) - int peers = 1 + g_hash_table_size(crm_peer_cache); - - /* If every node has to vote down every other node, thats N*(N-1) total elections -- * Allow some leway before _really_ complaining -+ * Allow some leeway before _really_ complaining - */ - election_wins++; - if (election_wins > (peers * peers)) { -diff --git a/lib/common/xml.c b/lib/common/xml.c -index 6dce4cb..c566956 100644 ---- a/lib/common/xml.c -+++ b/lib/common/xml.c -@@ -3190,7 +3190,7 @@ crm_xml_escape(const char *text) - * converted back to their escape sequences. - * - * However xmlNodeDump() is randomly dog slow, even with the same -- * input. So we need to replicate the escapeing in our custom -+ * input. So we need to replicate the escaping in our custom - * version so that the result can be re-parsed by xmlCtxtReadDoc() - * when necessary. - */ -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 2b53999..74856fe 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -1099,8 +1099,8 @@ pe_free_action(action_t * action) - if (action == NULL) { - return; - } -- g_list_free_full(action->actions_before, free); /* action_warpper_t* */ -- g_list_free_full(action->actions_after, free); /* action_warpper_t* */ -+ g_list_free_full(action->actions_before, free); /* action_wrapper_t* */ -+ g_list_free_full(action->actions_after, free); /* action_wrapper_t* */ - if (action->extra) { - g_hash_table_destroy(action->extra); - } -diff --git a/lrmd/lrmd.c b/lrmd/lrmd.c -index 5669d34..c874aa5 100644 ---- a/lrmd/lrmd.c -+++ b/lrmd/lrmd.c -@@ -1464,9 +1464,10 @@ free_rsc(gpointer data) - - if (is_stonith) { - cmd->lrmd_op_status = PCMK_LRM_OP_CANCELLED; -- /* if a stonith cmd is in-flight, mark just mark it as cancelled, -+ /* If a stonith command is in-flight, just mark it as cancelled; - * it is not safe to finalize/free the cmd until the stonith api -- * says it has either completed or timed out.*/ -+ * says it has either completed or timed out. -+ */ - if (rsc->active != cmd) { - cmd_finalize(cmd, NULL); - } -diff --git a/pengine/graph.c b/pengine/graph.c -index 81d8355..8098f9e 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -1005,7 +1005,7 @@ action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set) - * - * If anyone toggles the unique flag to 'on', the - * 'instance free' name will correspond to an orphan -- * and fall into the claus above instead -+ * and fall into the clause above instead - */ - crm_xml_add(rsc_xml, XML_ATTR_ID, xml_id); - if (action->rsc->clone_name && safe_str_neq(xml_id, action->rsc->clone_name)) { -diff --git a/pengine/native.c b/pengine/native.c -index 52eba4f..a968fc7 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -1647,7 +1647,7 @@ colocation_match(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * co - - } else if (constraint->score < 0) { - /* nothing to do: -- * anti-colocation with something thats not running -+ * anti-colocation with something that is not running - */ - return; - } -diff --git a/tools/fake_transition.c b/tools/fake_transition.c -index 251f9bb..26f55a2 100644 ---- a/tools/fake_transition.c -+++ b/tools/fake_transition.c -@@ -70,8 +70,8 @@ inject_transient_attr(xmlNode * cib_node, const char *name, const char *value) - char *nvp_id = crm_concat(name, node_uuid, '-'); - - node_path = xmlGetNodePath(cib_node); -- quiet_log("Injecting attribute %s=%s into %s '%s'", name, value, node_path, -- ID(cib_node)); -+ quiet_log(" + Injecting attribute %s=%s into %s '%s'\n", -+ name, value, node_path, ID(cib_node)); - free(node_path); - - attrs = first_named_child(cib_node, XML_TAG_TRANSIENT_NODEATTRS); --- -1.8.3.1 - - -From 9251c17d97250103679aada63729d54a9537874f Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 17 Mar 2017 16:58:48 -0500 -Subject: [PATCH 2/5] Log: libcrmcluster,crmd: log join phase as text rather - than integer - ---- - crmd/join_dc.c | 51 +++++++++++++++------------------------------------ - include/crm/cluster.h | 14 ++++++++++++++ - 2 files changed, 29 insertions(+), 36 deletions(-) - -diff --git a/crmd/join_dc.c b/crmd/join_dc.c -index d5ecc55..71311de 100644 ---- a/crmd/join_dc.c -+++ b/crmd/join_dc.c -@@ -45,8 +45,9 @@ crm_update_peer_join(const char *source, crm_node_t * node, enum crm_join_phase - enum crm_join_phase last = 0; - - if(node == NULL) { -- crm_err("Could not update join because node not specified" CRM_XS -- " join-%u source=%s phase=%d", source, current_join_id, phase); -+ crm_err("Could not update join because node not specified" -+ CRM_XS " join-%u source=%s phase=%s", -+ current_join_id, source, crm_join_phase_str(phase)); - return; - } - -@@ -58,23 +59,21 @@ crm_update_peer_join(const char *source, crm_node_t * node, enum crm_join_phase - last = node->join; - - if(phase == last) { -- crm_trace("%s: Node %s[%u] - join-%u phase still %u", -- source, node->uname, node->id, current_join_id, last); -+ crm_trace("%s: Node %s[%u] - join-%u phase still %s", -+ source, node->uname, node->id, current_join_id, -+ crm_join_phase_str(last)); - -- } else if (phase <= crm_join_none) { -+ } else if ((phase <= crm_join_none) || (phase == (last + 1))) { - node->join = phase; -- crm_info("%s: Node %s[%u] - join-%u phase %u -> %u", -- source, node->uname, node->id, current_join_id, last, phase); -+ crm_info("%s: Node %s[%u] - join-%u phase %s -> %s", -+ source, node->uname, node->id, current_join_id, -+ crm_join_phase_str(last), crm_join_phase_str(phase)); - -- } else if(phase == last + 1) { -- node->join = phase; -- crm_info("%s: Node %s[%u] - join-%u phase %u -> %u", -- source, node->uname, node->id, current_join_id, last, phase); - } else { - crm_err("Could not update join for node %s because phase transition invalid " -- CRM_XS " join-%u source=%s node_id=%u last=%u new=%u", -- node->uname, current_join_id, source, node->id, last, phase); -- -+ CRM_XS " join-%u source=%s node_id=%u last=%s new=%s", -+ node->uname, current_join_id, source, node->id, -+ crm_join_phase_str(last), crm_join_phase_str(phase)); - } - } - -@@ -691,27 +690,7 @@ void crmd_join_phase_log(int level) - - g_hash_table_iter_init(&iter, crm_peer_cache); - while (g_hash_table_iter_next(&iter, NULL, (gpointer *) &peer)) { -- const char *state = "unknown"; -- switch(peer->join) { -- case crm_join_nack: -- state = "nack"; -- break; -- case crm_join_none: -- state = "none"; -- break; -- case crm_join_welcomed: -- state = "welcomed"; -- break; -- case crm_join_integrated: -- state = "integrated"; -- break; -- case crm_join_finalized: -- state = "finalized"; -- break; -- case crm_join_confirmed: -- state = "confirmed"; -- break; -- } -- do_crm_log(level, "join-%d: %s=%s", current_join_id, peer->uname, state); -+ do_crm_log(level, "join-%d: %s=%s", current_join_id, peer->uname, -+ crm_join_phase_str(peer->join)); - } - } -diff --git a/include/crm/cluster.h b/include/crm/cluster.h -index 27ee9eb..343ce08 100644 ---- a/include/crm/cluster.h -+++ b/include/crm/cluster.h -@@ -235,4 +235,18 @@ char *pcmk_message_common_cs(cpg_handle_t handle, uint32_t nodeid, uint32_t pid, - uint32_t *kind, const char **from); - # endif - -+static inline const char * -+crm_join_phase_str(enum crm_join_phase phase) -+{ -+ switch (phase) { -+ case crm_join_nack: return "nack"; -+ case crm_join_none: return "none"; -+ case crm_join_welcomed: return "welcomed"; -+ case crm_join_integrated: return "integrated"; -+ case crm_join_finalized: return "finalized"; -+ case crm_join_confirmed: return "confirmed"; -+ } -+ return "invalid"; -+} -+ - #endif --- -1.8.3.1 - - -From dc977b614de9ce4018fa44c4f00c2b6b43c65c75 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 17 Mar 2017 17:23:22 -0500 -Subject: [PATCH 3/5] Feature: libcrmcommon: add convenience functions for - managing XML IDs - -These handle ID sanitization and memory management for callers, -reducing the chance for mistakes. ---- - include/crm/common/xml.h | 4 ++++ - lib/common/xml.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 49 insertions(+) - -diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h -index a948915..f896464 100644 ---- a/include/crm/common/xml.h -+++ b/include/crm/common/xml.h -@@ -373,4 +373,8 @@ void save_xml_to_file(xmlNode * xml, const char *desc, const char *filename); - char *xml_get_path(xmlNode *xml); - - char * crm_xml_escape(const char *text); -+void crm_xml_sanitize_id(char *id); -+void crm_xml_set_id(xmlNode *xml, const char *format, ...) -+ __attribute__ ((__format__ (__printf__, 2, 3))); -+ - #endif -diff --git a/lib/common/xml.c b/lib/common/xml.c -index c566956..0ea33d9 100644 ---- a/lib/common/xml.c -+++ b/lib/common/xml.c -@@ -3036,6 +3036,51 @@ crm_xml_add_last_written(xmlNode *xml_node) - return crm_xml_add(xml_node, XML_CIB_ATTR_WRITTEN, now_str); - } - -+/*! -+ * \brief Sanitize a string so it is usable as an XML ID -+ * -+ * \param[in,out] id String to sanitize -+ */ -+void -+crm_xml_sanitize_id(char *id) -+{ -+ char *c; -+ -+ for (c = id; *c; ++c) { -+ /* @TODO Sanitize more comprehensively */ -+ switch (*c) { -+ case ':': -+ case '#': -+ *c = '.'; -+ } -+ } -+} -+ -+/*! -+ * \brief Set the ID of an XML element using a format -+ * -+ * \param[in,out] xml XML element -+ * \param[in] fmt printf-style format -+ * \param[in] ... any arguments required by format -+ */ -+void -+crm_xml_set_id(xmlNode *xml, const char *format, ...) -+{ -+ va_list ap; -+ int len = 0; -+ char *id = NULL; -+ -+ /* equivalent to crm_strdup_printf() */ -+ va_start(ap, format); -+ len = vasprintf(&id, format, ap); -+ va_end(ap); -+ CRM_ASSERT(len > 0); -+ -+ crm_xml_sanitize_id(id); -+ crm_xml_add(xml, XML_ATTR_ID, id); -+ free(id); -+} -+ - static int - write_xml_stream(xmlNode * xml_node, const char *filename, FILE * stream, gboolean compress) - { --- -1.8.3.1 - - -From bf39184154405621a07ce05a201fded861db2357 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 17 Mar 2017 18:21:05 -0500 -Subject: [PATCH 4/5] Refactor: various: use new convenience functions for - generating XML IDs - ---- - attrd/commands.c | 41 +++++++++++------------------------- - crmd/pengine.c | 8 +++---- - lib/cluster/corosync.c | 5 +---- - lib/pengine/unpack.c | 37 ++++++++------------------------- - tools/crm_node.c | 12 +++-------- - tools/crm_resource_ban.c | 54 +++++++++++------------------------------------- - tools/fake_transition.c | 5 +---- - 7 files changed, 41 insertions(+), 121 deletions(-) - -diff --git a/attrd/commands.c b/attrd/commands.c -index 486efb6..98b4215 100644 ---- a/attrd/commands.c -+++ b/attrd/commands.c -@@ -928,31 +928,9 @@ write_attributes(bool all, bool peer_discovered) - static void - build_update_element(xmlNode *parent, attribute_t *a, const char *nodeid, const char *value) - { -- char *set = NULL; -- char *uuid = NULL; -+ const char *set = NULL; - xmlNode *xml_obj = NULL; - -- if(a->set) { -- set = strdup(a->set); -- } else { -- set = crm_strdup_printf("%s-%s", XML_CIB_TAG_STATUS, nodeid); -- } -- -- if(a->uuid) { -- uuid = strdup(a->uuid); -- } else { -- int lpc; -- uuid = crm_strdup_printf("%s-%s", set, a->id); -- -- /* Minimal attempt at sanitizing automatic IDs */ -- for (lpc = 0; uuid[lpc] != 0; lpc++) { -- switch (uuid[lpc]) { -- case ':': -- uuid[lpc] = '.'; -- } -- } -- } -- - xml_obj = create_xml_node(parent, XML_CIB_TAG_STATE); - crm_xml_add(xml_obj, XML_ATTR_ID, nodeid); - -@@ -960,10 +938,19 @@ build_update_element(xmlNode *parent, attribute_t *a, const char *nodeid, const - crm_xml_add(xml_obj, XML_ATTR_ID, nodeid); - - xml_obj = create_xml_node(xml_obj, XML_TAG_ATTR_SETS); -- crm_xml_add(xml_obj, XML_ATTR_ID, set); -+ if (a->set) { -+ crm_xml_set_id(xml_obj, "%s", a->set); -+ } else { -+ crm_xml_set_id(xml_obj, "%s-%s", XML_CIB_TAG_STATUS, nodeid); -+ } -+ set = ID(xml_obj); - - xml_obj = create_xml_node(xml_obj, XML_CIB_TAG_NVPAIR); -- crm_xml_add(xml_obj, XML_ATTR_ID, uuid); -+ if (a->uuid) { -+ crm_xml_set_id(xml_obj, "%s", a->uuid); -+ } else { -+ crm_xml_set_id(xml_obj, "%s-%s", set, a->id); -+ } - crm_xml_add(xml_obj, XML_NVPAIR_ATTR_NAME, a->id); - - if(value) { -@@ -973,9 +960,6 @@ build_update_element(xmlNode *parent, attribute_t *a, const char *nodeid, const - crm_xml_add(xml_obj, XML_NVPAIR_ATTR_VALUE, ""); - crm_xml_add(xml_obj, "__delete__", XML_NVPAIR_ATTR_VALUE); - } -- -- free(uuid); -- free(set); - } - - void -diff --git a/crmd/pengine.c b/crmd/pengine.c -index 5a301c5..17613cf 100644 ---- a/crmd/pengine.c -+++ b/crmd/pengine.c -@@ -264,12 +264,12 @@ force_local_option(xmlNode *xml, const char *attr_name, const char *attr_value) - } - - if(max == 0) { -- char *attr_id = crm_concat(CIB_OPTIONS_FIRST, attr_name, '-'); - xmlNode *configuration = NULL; - xmlNode *crm_config = NULL; - xmlNode *cluster_property_set = NULL; - -- crm_trace("Creating %s/%s = %s", attr_id, attr_name, attr_value); -+ crm_trace("Creating %s-%s for %s=%s", -+ CIB_OPTIONS_FIRST, attr_name, attr_name, attr_value); - - configuration = find_entity(xml, XML_CIB_TAG_CONFIGURATION, NULL); - if (configuration == NULL) { -@@ -289,11 +289,9 @@ force_local_option(xmlNode *xml, const char *attr_name, const char *attr_value) - - xml = create_xml_node(cluster_property_set, XML_CIB_TAG_NVPAIR); - -- crm_xml_add(xml, XML_ATTR_ID, attr_id); -+ crm_xml_set_id(xml, "%s-%s", CIB_OPTIONS_FIRST, attr_name); - crm_xml_add(xml, XML_NVPAIR_ATTR_NAME, attr_name); - crm_xml_add(xml, XML_NVPAIR_ATTR_VALUE, attr_value); -- -- free(attr_id); - } - freeXpathObject(xpathObj); - } -diff --git a/lib/cluster/corosync.c b/lib/cluster/corosync.c -index b02ae73..dfc781c 100644 ---- a/lib/cluster/corosync.c -+++ b/lib/cluster/corosync.c -@@ -548,12 +548,9 @@ corosync_initialize_nodelist(void *cluster, gboolean force_member, xmlNode * xml - any = TRUE; - - if (xml_parent) { -- char buffer[64]; - xmlNode *node = create_xml_node(xml_parent, XML_CIB_TAG_NODE); - -- if(snprintf(buffer, 63, "%u", nodeid) > 0) { -- crm_xml_add(node, XML_ATTR_ID, buffer); -- } -+ crm_xml_set_id(node, "%u", nodeid); - crm_xml_add(node, XML_ATTR_UNAME, name); - if (force_member) { - crm_xml_add(node, XML_ATTR_TYPE, CRM_NODE_MEMBER); -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index e6a8f58..57aa5f2 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -373,7 +373,6 @@ expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, GHashTable **rsc_name_ - const char *remote_port = NULL; - const char *connect_timeout = "60s"; - const char *remote_allow_migrate=NULL; -- char *tmp_id = NULL; - - for (attr_set = __xml_first_child(xml_obj); attr_set != NULL; attr_set = __xml_next_element(attr_set)) { - if (safe_str_neq((const char *)attr_set->name, XML_TAG_META_SETS)) { -@@ -427,73 +426,55 @@ expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, GHashTable **rsc_name_ - crm_xml_add(xml_rsc, XML_ATTR_TYPE, "remote"); - - xml_tmp = create_xml_node(xml_rsc, XML_TAG_META_SETS); -- tmp_id = crm_concat(remote_name, XML_TAG_META_SETS, '_'); -- crm_xml_add(xml_tmp, XML_ATTR_ID, tmp_id); -- free(tmp_id); -+ crm_xml_set_id(xml_tmp, "%s_%s", remote_name, XML_TAG_META_SETS); - - attr = create_xml_node(xml_tmp, XML_CIB_TAG_NVPAIR); -- tmp_id = crm_concat(remote_name, "meta-attributes-container", '_'); -- crm_xml_add(attr, XML_ATTR_ID, tmp_id); -+ crm_xml_set_id(attr, "%s_%s", remote_name, "meta-attributes-container"); - crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, XML_RSC_ATTR_CONTAINER); - crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, container_id); -- free(tmp_id); - - attr = create_xml_node(xml_tmp, XML_CIB_TAG_NVPAIR); -- tmp_id = crm_concat(remote_name, "meta-attributes-internal", '_'); -- crm_xml_add(attr, XML_ATTR_ID, tmp_id); -+ crm_xml_set_id(attr, "%s_%s", remote_name, "meta-attributes-internal"); - crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, XML_RSC_ATTR_INTERNAL_RSC); - crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, "true"); -- free(tmp_id); - - if (remote_allow_migrate) { - attr = create_xml_node(xml_tmp, XML_CIB_TAG_NVPAIR); -- tmp_id = crm_concat(remote_name, "meta-attributes-container", '_'); -- crm_xml_add(attr, XML_ATTR_ID, tmp_id); -+ crm_xml_set_id(attr, "%s_%s", remote_name, "meta-attributes-container"); - crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, XML_OP_ATTR_ALLOW_MIGRATE); - crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, remote_allow_migrate); -- free(tmp_id); - } - - xml_tmp = create_xml_node(xml_rsc, "operations"); - attr = create_xml_node(xml_tmp, XML_ATTR_OP); -- tmp_id = crm_concat(remote_name, "monitor-interval-30s", '_'); -- crm_xml_add(attr, XML_ATTR_ID, tmp_id); -+ crm_xml_set_id(attr, "%s_%s", remote_name, "monitor-interval-30s"); - crm_xml_add(attr, XML_ATTR_TIMEOUT, "30s"); - crm_xml_add(attr, XML_LRM_ATTR_INTERVAL, "30s"); - crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, "monitor"); -- free(tmp_id); - - if (connect_timeout) { - attr = create_xml_node(xml_tmp, XML_ATTR_OP); -- tmp_id = crm_concat(remote_name, "start-interval-0", '_'); -- crm_xml_add(attr, XML_ATTR_ID, tmp_id); -+ crm_xml_set_id(attr, "%s_%s", remote_name, "start-interval-0"); - crm_xml_add(attr, XML_ATTR_TIMEOUT, connect_timeout); - crm_xml_add(attr, XML_LRM_ATTR_INTERVAL, "0"); - crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, "start"); -- free(tmp_id); - } - - if (remote_port || remote_server) { - xml_tmp = create_xml_node(xml_rsc, XML_TAG_ATTR_SETS); -- tmp_id = crm_concat(remote_name, XML_TAG_ATTR_SETS, '_'); -- crm_xml_add(xml_tmp, XML_ATTR_ID, tmp_id); -- free(tmp_id); -+ crm_xml_set_id(xml_tmp, "%s_%s", remote_name, XML_TAG_ATTR_SETS); - - if (remote_server) { - attr = create_xml_node(xml_tmp, XML_CIB_TAG_NVPAIR); -- tmp_id = crm_concat(remote_name, "instance-attributes-addr", '_'); -- crm_xml_add(attr, XML_ATTR_ID, tmp_id); -+ crm_xml_set_id(attr, "%s_%s", remote_name, "instance-attributes-addr"); - crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, "addr"); - crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, remote_server); -- free(tmp_id); - } - if (remote_port) { - attr = create_xml_node(xml_tmp, XML_CIB_TAG_NVPAIR); -- tmp_id = crm_concat(remote_name, "instance-attributes-port", '_'); -- crm_xml_add(attr, XML_ATTR_ID, tmp_id); -+ crm_xml_set_id(attr, "%s_%s", remote_name, "instance-attributes-port"); - crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, "port"); - crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, remote_port); -- free(tmp_id); - } - } - -diff --git a/tools/crm_node.c b/tools/crm_node.c -index 7092db4..9b60c55 100644 ---- a/tools/crm_node.c -+++ b/tools/crm_node.c -@@ -105,11 +105,8 @@ cib_remove_node(uint32_t id, const char *name) - crm_xml_add(node, XML_ATTR_UNAME, name); - crm_xml_add(node_state, XML_ATTR_UNAME, name); - if(id) { -- char buffer[64]; -- if(snprintf(buffer, 63, "%u", id) > 0) { -- crm_xml_add(node, XML_ATTR_ID, buffer); -- crm_xml_add(node_state, XML_ATTR_ID, buffer); -- } -+ crm_xml_set_id(node, "%u", id); -+ crm_xml_add(node_state, XML_ATTR_ID, ID(node)); - } - - cib = cib_new(); -@@ -200,10 +197,7 @@ int tools_remove_node_cache(const char *node, const char *target) - cmd = create_request(CRM_OP_RM_NODE_CACHE, - NULL, NULL, target, crm_system_name, admin_uuid); - if (n) { -- char buffer[64]; -- if(snprintf(buffer, 63, "%u", n) > 0) { -- crm_xml_add(cmd, XML_ATTR_ID, buffer); -- } -+ crm_xml_set_id(cmd, "%u", n); - } - crm_xml_add(cmd, XML_ATTR_UNAME, name); - } -diff --git a/tools/crm_resource_ban.c b/tools/crm_resource_ban.c -index 2f7b366..69b49bf 100644 ---- a/tools/crm_resource_ban.c -+++ b/tools/crm_resource_ban.c -@@ -62,7 +62,6 @@ cli_resource_ban(const char *rsc_id, const char *host, GListPtr allnodes, cib_t - { - char *later_s = NULL; - int rc = pcmk_ok; -- char *id = NULL; - xmlNode *fragment = NULL; - xmlNode *location = NULL; - -@@ -83,10 +82,8 @@ cli_resource_ban(const char *rsc_id, const char *host, GListPtr allnodes, cib_t - - fragment = create_xml_node(NULL, XML_CIB_TAG_CONSTRAINTS); - -- id = crm_strdup_printf("cli-ban-%s-on-%s", rsc_id, host); - location = create_xml_node(fragment, XML_CONS_TAG_RSC_LOCATION); -- crm_xml_add(location, XML_ATTR_ID, id); -- free(id); -+ crm_xml_set_id(location, "cli-ban-%s-on-%s", rsc_id, host); - - if (BE_QUIET == FALSE) { - CMD_ERR("WARNING: Creating rsc_location constraint '%s'" -@@ -117,27 +114,18 @@ cli_resource_ban(const char *rsc_id, const char *host, GListPtr allnodes, cib_t - xmlNode *rule = create_xml_node(location, XML_TAG_RULE); - xmlNode *expr = create_xml_node(rule, XML_TAG_EXPRESSION); - -- id = crm_strdup_printf("cli-ban-%s-on-%s-rule", rsc_id, host); -- crm_xml_add(rule, XML_ATTR_ID, id); -- free(id); -- -+ crm_xml_set_id(rule, "cli-ban-%s-on-%s-rule", rsc_id, host); - crm_xml_add(rule, XML_RULE_ATTR_SCORE, MINUS_INFINITY_S); - crm_xml_add(rule, XML_RULE_ATTR_BOOLEAN_OP, "and"); - -- id = crm_strdup_printf("cli-ban-%s-on-%s-expr", rsc_id, host); -- crm_xml_add(expr, XML_ATTR_ID, id); -- free(id); -- -+ crm_xml_set_id(expr, "cli-ban-%s-on-%s-expr", rsc_id, host); - crm_xml_add(expr, XML_EXPR_ATTR_ATTRIBUTE, "#uname"); - crm_xml_add(expr, XML_EXPR_ATTR_OPERATION, "eq"); - crm_xml_add(expr, XML_EXPR_ATTR_VALUE, host); - crm_xml_add(expr, XML_EXPR_ATTR_TYPE, "string"); - - expr = create_xml_node(rule, "date_expression"); -- id = crm_strdup_printf("cli-ban-%s-on-%s-lifetime", rsc_id, host); -- crm_xml_add(expr, XML_ATTR_ID, id); -- free(id); -- -+ crm_xml_set_id(expr, "cli-ban-%s-on-%s-lifetime", rsc_id, host); - crm_xml_add(expr, "operation", "lt"); - crm_xml_add(expr, "end", later_s); - } -@@ -156,7 +144,6 @@ cli_resource_prefer(const char *rsc_id, const char *host, cib_t * cib_conn) - { - char *later_s = parse_cli_lifetime(move_lifetime); - int rc = pcmk_ok; -- char *id = NULL; - xmlNode *location = NULL; - xmlNode *fragment = NULL; - -@@ -171,10 +158,8 @@ cli_resource_prefer(const char *rsc_id, const char *host, cib_t * cib_conn) - - fragment = create_xml_node(NULL, XML_CIB_TAG_CONSTRAINTS); - -- id = crm_strdup_printf("cli-prefer-%s", rsc_id); - location = create_xml_node(fragment, XML_CONS_TAG_RSC_LOCATION); -- crm_xml_add(location, XML_ATTR_ID, id); -- free(id); -+ crm_xml_set_id(location, "cli-prefer-%s", rsc_id); - - crm_xml_add(location, XML_LOC_ATTR_SOURCE, rsc_id); - if(scope_master) { -@@ -192,27 +177,18 @@ cli_resource_prefer(const char *rsc_id, const char *host, cib_t * cib_conn) - xmlNode *rule = create_xml_node(location, XML_TAG_RULE); - xmlNode *expr = create_xml_node(rule, XML_TAG_EXPRESSION); - -- id = crm_concat("cli-prefer-rule", rsc_id, '-'); -- crm_xml_add(rule, XML_ATTR_ID, id); -- free(id); -- -+ crm_xml_set_id(rule, "cli-prefer-rule-%s", rsc_id); - crm_xml_add(rule, XML_RULE_ATTR_SCORE, INFINITY_S); - crm_xml_add(rule, XML_RULE_ATTR_BOOLEAN_OP, "and"); - -- id = crm_concat("cli-prefer-expr", rsc_id, '-'); -- crm_xml_add(expr, XML_ATTR_ID, id); -- free(id); -- -+ crm_xml_set_id(expr, "cli-prefer-expr-%s", rsc_id); - crm_xml_add(expr, XML_EXPR_ATTR_ATTRIBUTE, "#uname"); - crm_xml_add(expr, XML_EXPR_ATTR_OPERATION, "eq"); - crm_xml_add(expr, XML_EXPR_ATTR_VALUE, host); - crm_xml_add(expr, XML_EXPR_ATTR_TYPE, "string"); - - expr = create_xml_node(rule, "date_expression"); -- id = crm_concat("cli-prefer-lifetime-end", rsc_id, '-'); -- crm_xml_add(expr, XML_ATTR_ID, id); -- free(id); -- -+ crm_xml_set_id(expr, "cli-prefer-lifetime-end-%s", rsc_id); - crm_xml_add(expr, "operation", "lt"); - crm_xml_add(expr, "end", later_s); - } -@@ -228,7 +204,6 @@ cli_resource_prefer(const char *rsc_id, const char *host, cib_t * cib_conn) - int - cli_resource_clear(const char *rsc_id, const char *host, GListPtr allnodes, cib_t * cib_conn) - { -- char *id = NULL; - int rc = pcmk_ok; - xmlNode *fragment = NULL; - xmlNode *location = NULL; -@@ -240,30 +215,25 @@ cli_resource_clear(const char *rsc_id, const char *host, GListPtr allnodes, cib_ - fragment = create_xml_node(NULL, XML_CIB_TAG_CONSTRAINTS); - - if(host) { -- id = crm_strdup_printf("cli-ban-%s-on-%s", rsc_id, host); - location = create_xml_node(fragment, XML_CONS_TAG_RSC_LOCATION); -- crm_xml_add(location, XML_ATTR_ID, id); -- free(id); -+ crm_xml_set_id(location, "cli-ban-%s-on-%s", rsc_id, host); - - } else { - GListPtr n = allnodes; - for(; n; n = n->next) { - node_t *target = n->data; - -- id = crm_strdup_printf("cli-ban-%s-on-%s", rsc_id, target->details->uname); - location = create_xml_node(fragment, XML_CONS_TAG_RSC_LOCATION); -- crm_xml_add(location, XML_ATTR_ID, id); -- free(id); -+ crm_xml_set_id(location, "cli-ban-%s-on-%s", -+ rsc_id, target->details->uname); - } - } - -- id = crm_strdup_printf("cli-prefer-%s", rsc_id); - location = create_xml_node(fragment, XML_CONS_TAG_RSC_LOCATION); -- crm_xml_add(location, XML_ATTR_ID, id); -+ crm_xml_set_id(location, "cli-prefer-%s", rsc_id); - if(host && do_force == FALSE) { - crm_xml_add(location, XML_CIB_TAG_NODE, host); - } -- free(id); - - crm_log_xml_info(fragment, "Delete"); - rc = cib_conn->cmds->delete(cib_conn, XML_CIB_TAG_CONSTRAINTS, fragment, cib_options); -diff --git a/tools/fake_transition.c b/tools/fake_transition.c -index 26f55a2..9f9eaed 100644 ---- a/tools/fake_transition.c -+++ b/tools/fake_transition.c -@@ -67,7 +67,6 @@ inject_transient_attr(xmlNode * cib_node, const char *name, const char *value) - xmlNode *nvp = NULL; - xmlChar *node_path; - const char *node_uuid = ID(cib_node); -- char *nvp_id = crm_concat(name, node_uuid, '-'); - - node_path = xmlGetNodePath(cib_node); - quiet_log(" + Injecting attribute %s=%s into %s '%s'\n", -@@ -87,11 +86,9 @@ inject_transient_attr(xmlNode * cib_node, const char *name, const char *value) - } - - nvp = create_xml_node(container, XML_CIB_TAG_NVPAIR); -- crm_xml_add(nvp, XML_ATTR_ID, nvp_id); -+ crm_xml_set_id(nvp, "%s-%s", name, node_uuid); - crm_xml_add(nvp, XML_NVPAIR_ATTR_NAME, name); - crm_xml_add(nvp, XML_NVPAIR_ATTR_VALUE, value); -- -- free(nvp_id); - } - - static void --- -1.8.3.1 - - -From c37145733538ee92153dc26e5b40c6fcfad47fdb Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 20 Mar 2017 10:52:42 -0500 -Subject: [PATCH 5/5] Refactor: libpe_status: add convenience functions for - clone detection - ---- - include/crm/pengine/status.h | 41 +++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 41 insertions(+) - -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index e748792..ce3236b 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -19,6 +19,7 @@ - # define PENGINE_STATUS__H - - # include -+# include - # include - # include - -@@ -433,4 +434,44 @@ node_t *pe_find_node_id(GListPtr node_list, const char *id); - node_t *pe_find_node_any(GListPtr node_list, const char *id, const char *uname); - GListPtr find_operations(const char *rsc, const char *node, gboolean active_filter, - pe_working_set_t * data_set); -+ -+/*! -+ * \brief Check whether a resource is any clone type -+ * -+ * \param[in] rsc Resource to check -+ * -+ * \return TRUE if resource is clone, FALSE otherwise -+ */ -+static inline bool -+pe_rsc_is_clone(resource_t *rsc) -+{ -+ return rsc && ((rsc->variant == pe_clone) || (rsc->variant == pe_master)); -+} -+ -+/*! -+ * \brief Check whether a resource is a globally unique clone -+ * -+ * \param[in] rsc Resource to check -+ * -+ * \return TRUE if resource is unique clone, FALSE otherwise -+ */ -+static inline bool -+pe_rsc_is_unique_clone(resource_t *rsc) -+{ -+ return pe_rsc_is_clone(rsc) && is_set(rsc->flags, pe_rsc_unique); -+} -+ -+/*! -+ * \brief Check whether a resource is an anonymous clone -+ * -+ * \param[in] rsc Resource to check -+ * -+ * \return TRUE if resource is anonymous clone, FALSE otherwise -+ */ -+static inline bool -+pe_rsc_is_anon_clone(resource_t *rsc) -+{ -+ return pe_rsc_is_clone(rsc) && is_not_set(rsc->flags, pe_rsc_unique); -+} -+ - #endif --- -1.8.3.1 - diff --git a/SOURCES/038-clone-handling.patch b/SOURCES/038-clone-handling.patch deleted file mode 100644 index 73f4e95..0000000 --- a/SOURCES/038-clone-handling.patch +++ /dev/null @@ -1,522 +0,0 @@ -From f296fea9e3d20bc5fd3e58725e5d536dff947ea8 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 21 Mar 2017 14:44:56 +1100 -Subject: [PATCH 1/2] PE: Restore ABI compatibility with pre-container code - ---- - fencing/main.c | 2 +- - include/crm/pengine/complex.h | 6 +++--- - lib/pengine/clone.c | 2 +- - lib/pengine/complex.c | 29 +++++++++++++++-------------- - lib/pengine/unpack.c | 6 +++--- - pengine/allocate.c | 32 ++++++++++++++++---------------- - pengine/clone.c | 6 +++--- - pengine/constraints.c | 14 +++++++------- - pengine/graph.c | 4 ++-- - pengine/native.c | 4 ++-- - pengine/utilization.c | 13 ++++--------- - tools/crm_resource_runtime.c | 21 ++++++++++----------- - 12 files changed, 67 insertions(+), 72 deletions(-) - -diff --git a/fencing/main.c b/fencing/main.c -index e6eb087..437c31f 100644 ---- a/fencing/main.c -+++ b/fencing/main.c -@@ -620,7 +620,7 @@ static void cib_device_update(resource_t *rsc, pe_working_set_t *data_set) - GListPtr gIter = NULL; - for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) { - cib_device_update(gIter->data, data_set); -- if(rsc->variant == pe_clone || rsc->variant == pe_master) { -+ if(pe_rsc_is_clone(rsc)) { - crm_trace("Only processing one copy of the clone %s", rsc->id); - break; - } -diff --git a/include/crm/pengine/complex.h b/include/crm/pengine/complex.h -index 92829f9..664d576 100644 ---- a/include/crm/pengine/complex.h -+++ b/include/crm/pengine/complex.h -@@ -31,9 +31,9 @@ enum pe_obj_types { - pe_unknown = -1, - pe_native = 0, - pe_group = 1, -- pe_container = 2, -- pe_clone = 3, -- pe_master = 4 -+ pe_clone = 2, -+ pe_master = 3, -+ pe_container = 4, - }; - - enum pe_obj_types get_resource_type(const char *name); -diff --git a/lib/pengine/clone.c b/lib/pengine/clone.c -index 6604a29..6652e59 100644 ---- a/lib/pengine/clone.c -+++ b/lib/pengine/clone.c -@@ -47,7 +47,7 @@ mark_as_orphan(resource_t * rsc) - void - force_non_unique_clone(resource_t * rsc, const char *rid, pe_working_set_t * data_set) - { -- if (rsc->variant == pe_clone || rsc->variant == pe_master) { -+ if (pe_rsc_is_clone(rsc)) { - clone_variant_data_t *clone_data = NULL; - - get_clone_variant_data(clone_data, rsc); -diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c -index adc8abc..c4823f4 100644 ---- a/lib/pengine/complex.c -+++ b/lib/pengine/complex.c -@@ -46,16 +46,6 @@ resource_object_functions_t resource_class_functions[] = { - group_free - }, - { -- container_unpack, -- native_find_rsc, -- native_parameter, -- container_print, -- container_active, -- container_resource_state, -- native_location, -- container_free -- }, -- { - clone_unpack, - native_find_rsc, - native_parameter, -@@ -73,7 +63,18 @@ resource_object_functions_t resource_class_functions[] = { - clone_active, - clone_resource_state, - native_location, -- clone_free} -+ clone_free -+ }, -+ { -+ container_unpack, -+ native_find_rsc, -+ native_parameter, -+ container_print, -+ container_active, -+ container_resource_state, -+ native_location, -+ container_free -+ } - }; - - enum pe_obj_types -@@ -404,7 +405,7 @@ handle_rsc_isolation(resource_t *rsc) - * at the clone level. this is really the only sane thing to do in this situation. - * This allows someone to clone an isolated resource without having to shuffle - * around the isolation attributes to the clone parent */ -- if (top == rsc->parent && top->variant >= pe_clone) { -+ if (top == rsc->parent && pe_rsc_is_clone(top)) { - iso = top; - } - -@@ -414,7 +415,7 @@ handle_rsc_isolation(resource_t *rsc) - set_rsc_opts: - clear_bit(rsc->flags, pe_rsc_allow_migrate); - set_bit(rsc->flags, pe_rsc_unique); -- if (top->variant >= pe_clone) { -+ if (pe_rsc_is_clone(top)) { - add_hash_param(rsc->meta, XML_RSC_ATTR_UNIQUE, XML_BOOLEAN_TRUE); - } - } -@@ -591,7 +592,7 @@ common_unpack(xmlNode * xml_obj, resource_t ** rsc, - - top = uber_parent(*rsc); - value = g_hash_table_lookup((*rsc)->meta, XML_RSC_ATTR_UNIQUE); -- if (crm_is_true(value) || top->variant < pe_clone) { -+ if (crm_is_true(value) || pe_rsc_is_clone(top) == FALSE) { - set_bit((*rsc)->flags, pe_rsc_unique); - } - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 717c23b..2f03493 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -1692,7 +1692,7 @@ find_anonymous_clone(pe_working_set_t * data_set, node_t * node, resource_t * pa - gboolean skip_inactive = FALSE; - - CRM_ASSERT(parent != NULL); -- CRM_ASSERT(parent->variant == pe_clone || parent->variant == pe_master); -+ CRM_ASSERT(pe_rsc_is_clone(parent)); - CRM_ASSERT(is_not_set(parent->flags, pe_rsc_unique)); - - /* Find an instance active (or partially active for grouped clones) on the specified node */ -@@ -1815,7 +1815,7 @@ unpack_find_resource(pe_working_set_t * data_set, node_t * node, const char *rsc - if(parent && parent->parent) { - rsc = find_container_child(rsc_id, rsc, node); - -- } else if (parent && parent->variant >= pe_clone) { -+ } else if (pe_rsc_is_clone(parent)) { - if (is_not_set(parent->flags, pe_rsc_unique)) { - char *base = clone_strip(rsc_id); - -@@ -2721,7 +2721,7 @@ unpack_rsc_op_failure(resource_t * rsc, node_t * node, int rc, xmlNode * xml_op, - if (fail_rsc->parent) { - resource_t *parent = uber_parent(fail_rsc); - -- if ((parent->variant == pe_clone || parent->variant == pe_master) -+ if (pe_rsc_is_clone(parent) - && is_not_set(parent->flags, pe_rsc_unique)) { - /* for clone and master resources, if a child fails on an operation - * with on-fail = stop, all the resources fail. Do this by preventing -diff --git a/pengine/allocate.c b/pengine/allocate.c -index bfc2471..3314d77 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -69,20 +69,6 @@ resource_alloc_functions_t resource_class_alloc_functions[] = { - group_append_meta, - }, - { -- container_merge_weights, -- container_color, -- container_create_actions, -- container_create_probe, -- container_internal_constraints, -- container_rsc_colocation_lh, -- container_rsc_colocation_rh, -- container_rsc_location, -- container_action_flags, -- container_update_actions, -- container_expand, -- container_append_meta, -- }, -- { - clone_merge_weights, - clone_color, - clone_create_actions, -@@ -109,6 +95,20 @@ resource_alloc_functions_t resource_class_alloc_functions[] = { - clone_update_actions, - clone_expand, - master_append_meta, -+ }, -+ { -+ container_merge_weights, -+ container_color, -+ container_create_actions, -+ container_create_probe, -+ container_internal_constraints, -+ container_rsc_colocation_lh, -+ container_rsc_colocation_rh, -+ container_rsc_location, -+ container_action_flags, -+ container_update_actions, -+ container_expand, -+ container_append_meta, - } - }; - -@@ -389,7 +389,7 @@ check_actions_for(xmlNode * rsc_entry, resource_t * rsc, node_t * node, pe_worki - if (is_set(rsc->flags, pe_rsc_orphan)) { - resource_t *parent = uber_parent(rsc); - if(parent == NULL -- || parent->variant < pe_clone -+ || pe_rsc_is_clone(parent) == FALSE - || is_set(parent->flags, pe_rsc_unique)) { - pe_rsc_trace(rsc, "Skipping param check for %s and deleting: orphan", rsc->id); - DeleteRsc(rsc, node, FALSE, data_set); -@@ -2022,7 +2022,7 @@ order_probes(pe_working_set_t * data_set) - crm_trace("Same parent %s for %s", first_rsc->id, start->uuid); - continue; - -- } else if(FALSE && uber_parent(first_rsc)->variant < pe_clone) { -+ } else if(FALSE && pe_rsc_is_clone(uber_parent(first_rsc)) == FALSE) { - crm_trace("Not a clone %s for %s", first_rsc->id, start->uuid); - continue; - } -diff --git a/pengine/clone.c b/pengine/clone.c -index 9e2835d..2b332b1 100644 ---- a/pengine/clone.c -+++ b/pengine/clone.c -@@ -1071,7 +1071,7 @@ clone_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation - pe_rsc_trace(rsc_rh, "Processing constraint %s: %s -> %s %d", - constraint->id, rsc_lh->id, rsc_rh->id, constraint->score); - -- if (constraint->rsc_lh->variant >= pe_clone) { -+ if (pe_rsc_is_clone(constraint->rsc_lh)) { - - get_clone_variant_data(clone_data_lh, constraint->rsc_lh); - if (clone_data_lh->interleave -@@ -1339,8 +1339,8 @@ clone_update_actions(action_t * first, action_t * then, node_t * node, enum pe_a - enum pe_graph_flags changed = pe_graph_none; - - if (first->rsc != then->rsc -- && first->rsc && first->rsc->variant >= pe_clone -- && then->rsc && then->rsc->variant >= pe_clone) { -+ && pe_rsc_is_clone(first->rsc) -+ && pe_rsc_is_clone(then->rsc)) { - clone_variant_data_t *clone_data = NULL; - - if (crm_ends_with(then->uuid, "_stop_0") -diff --git a/pengine/constraints.c b/pengine/constraints.c -index 92b9dd0..501cb57 100644 ---- a/pengine/constraints.c -+++ b/pengine/constraints.c -@@ -316,13 +316,13 @@ unpack_simple_rsc_order(xmlNode * xml_obj, pe_working_set_t * data_set) - crm_config_err("Constraint %s: no resource found for name '%s'", id, id_first); - return FALSE; - -- } else if (instance_then && rsc_then->variant < pe_clone) { -+ } else if (instance_then && pe_rsc_is_clone(rsc_then) == FALSE) { - crm_config_err("Invalid constraint '%s':" - " Resource '%s' is not a clone but instance %s was requested", - id, id_then, instance_then); - return FALSE; - -- } else if (instance_first && rsc_first->variant < pe_clone) { -+ } else if (instance_first && pe_rsc_is_clone(rsc_first) == FALSE) { - crm_config_err("Invalid constraint '%s':" - " Resource '%s' is not a clone but instance %s was requested", - id, id_first, instance_first); -@@ -350,11 +350,11 @@ unpack_simple_rsc_order(xmlNode * xml_obj, pe_working_set_t * data_set) - require_all_s = crm_element_value(xml_obj, "require-all"); - if (require_all_s - && crm_is_true(require_all_s) == FALSE -- && rsc_first->variant >= pe_clone) { -+ && pe_rsc_is_clone(rsc_first)) { - - /* require-all=false means only one instance of the clone is required */ - min_required_before = 1; -- } else if (rsc_first->variant >= pe_clone) { -+ } else if (pe_rsc_is_clone(rsc_first)) { - const char *min_clones_s = g_hash_table_lookup(rsc_first->meta, XML_RSC_ATTR_INCARNATION_MIN); - if (min_clones_s) { - /* if clone min is set, we require at a minimum X number of instances -@@ -2343,13 +2343,13 @@ unpack_simple_colocation(xmlNode * xml_obj, pe_working_set_t * data_set) - crm_config_err("Invalid constraint '%s': No resource named '%s'", id, id_rh); - return FALSE; - -- } else if (instance_lh && rsc_lh->variant < pe_clone) { -+ } else if (instance_lh && pe_rsc_is_clone(rsc_lh) == FALSE) { - crm_config_err - ("Invalid constraint '%s': Resource '%s' is not a clone but instance %s was requested", - id, id_lh, instance_lh); - return FALSE; - -- } else if (instance_rh && rsc_rh->variant < pe_clone) { -+ } else if (instance_rh && pe_rsc_is_clone(rsc_rh) == FALSE) { - crm_config_err - ("Invalid constraint '%s': Resource '%s' is not a clone but instance %s was requested", - id, id_rh, instance_rh); -@@ -2721,7 +2721,7 @@ unpack_simple_rsc_ticket(xmlNode * xml_obj, pe_working_set_t * data_set) - crm_config_err("Invalid constraint '%s': No resource named '%s'", id, id_lh); - return FALSE; - -- } else if (instance_lh && rsc_lh->variant < pe_clone) { -+ } else if (instance_lh && pe_rsc_is_clone(rsc_lh) == FALSE) { - crm_config_err - ("Invalid constraint '%s': Resource '%s' is not a clone but instance %s was requested", - id, id_lh, instance_lh); -diff --git a/pengine/graph.c b/pengine/graph.c -index 07fc60a..2dba08e 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -40,7 +40,7 @@ get_action_flags(action_t * action, node_t * node) - if (action->rsc) { - flags = action->rsc->cmds->action_flags(action, NULL); - -- if (action->rsc->variant >= pe_clone && node) { -+ if (pe_rsc_is_clone(action->rsc) && node) { - - /* We only care about activity on $node */ - enum pe_action_flags clone_flags = action->rsc->cmds->action_flags(action, node); -@@ -1426,7 +1426,7 @@ check_dump_input(int last_action, action_t * action, action_wrapper_t * wrapper) - && is_set(wrapper->action->rsc->flags, pe_rsc_failed) - && is_not_set(wrapper->action->rsc->flags, pe_rsc_managed) - && crm_ends_with(wrapper->action->uuid, "_stop_0") -- && action->rsc && action->rsc->variant >= pe_clone) { -+ && action->rsc && pe_rsc_is_clone(action->rsc)) { - crm_warn("Ignoring requirement that %s complete before %s:" - " unmanaged failed resources cannot prevent clone shutdown", - wrapper->action->uuid, action->uuid); -diff --git a/pengine/native.c b/pengine/native.c -index 4d91c00..d0cebb3 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -2827,7 +2827,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - if(is_set(rsc->flags, pe_rsc_fence_device) && is_set(data_set->flags, pe_flag_enable_unfencing)) { - top = rsc; - -- } else if (top->variant < pe_clone) { -+ } else if (pe_rsc_is_clone(top) == FALSE) { - top = rsc; - - } else { -@@ -3221,7 +3221,7 @@ native_append_meta(resource_t * rsc, xmlNode * xml) - - /* instance name for isolated environment */ - name = crm_meta_name(XML_RSC_ATTR_ISOLATION_INSTANCE); -- if (iso_parent->variant >= pe_clone) { -+ if (pe_rsc_is_clone(iso_parent)) { - /* if isolation is set at the clone/master level, we have to - * give this resource the unique isolation instance associated - * with the clone child (last_parent)*/ -diff --git a/pengine/utilization.c b/pengine/utilization.c -index e3996e2..5219fb8 100644 ---- a/pengine/utilization.c -+++ b/pengine/utilization.c -@@ -201,8 +201,7 @@ add_unallocated_utilization(GHashTable * all_utilization, resource_t * rsc, - orig_rsc->id, rsc->id); - group_add_unallocated_utilization(all_utilization, rsc, all_rscs); - -- } else if (rsc->variant == pe_clone || -- rsc->variant == pe_master) { -+ } else if (pe_rsc_is_clone(rsc)) { - GListPtr gIter1 = NULL; - gboolean existing = FALSE; - -@@ -317,7 +316,7 @@ find_colocated_rscs(GListPtr colocated_rscs, resource_t * rsc, resource_t * orig - continue; - } - -- if (rsc_lh->variant <= pe_group && rsc->variant >= pe_clone) { -+ if (pe_rsc_is_clone(rsc_lh) == FALSE && pe_rsc_is_clone(rsc)) { - /* We do not know if rsc_lh will be colocated with orig_rsc in this case */ - continue; - } -@@ -427,9 +426,7 @@ group_find_colocated_rscs(GListPtr colocated_rscs, resource_t * rsc, resource_t - group_variant_data_t *group_data = NULL; - - get_group_variant_data(group_data, rsc); -- if (group_data->colocated || -- (rsc->parent && -- (rsc->parent->variant == pe_clone || rsc->parent->variant == pe_master))) { -+ if (group_data->colocated || pe_rsc_is_clone(rsc->parent)) { - GListPtr gIter = rsc->children; - - for (; gIter != NULL; gIter = gIter->next) { -@@ -456,9 +453,7 @@ group_add_unallocated_utilization(GHashTable * all_utilization, resource_t * rsc - group_variant_data_t *group_data = NULL; - - get_group_variant_data(group_data, rsc); -- if (group_data->colocated || -- (rsc->parent && -- (rsc->parent->variant == pe_clone || rsc->parent->variant == pe_master))) { -+ if (group_data->colocated || pe_rsc_is_clone(rsc->parent)) { - GListPtr gIter = rsc->children; - - for (; gIter != NULL; gIter = gIter->next) { -diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c -index 9c201a0..af96909 100644 ---- a/tools/crm_resource_runtime.c -+++ b/tools/crm_resource_runtime.c -@@ -40,7 +40,7 @@ do_find_resource(const char *rsc, resource_t * the_rsc, pe_working_set_t * data_ - } else { - const char *state = ""; - -- if (the_rsc->variant < pe_clone && the_rsc->fns->state(the_rsc, TRUE) == RSC_ROLE_MASTER) { -+ if (!pe_rsc_is_clone(the_rsc) && the_rsc->fns->state(the_rsc, TRUE) == RSC_ROLE_MASTER) { - state = "Master"; - } - fprintf(stdout, "resource %s is running on: %s %s\n", rsc, node->details->uname, state); -@@ -71,7 +71,7 @@ cli_resource_search(const char *rsc, pe_working_set_t * data_set) - return -ENXIO; - } - -- if (the_rsc->variant >= pe_clone) { -+ if (pe_rsc_is_clone(the_rsc)) { - GListPtr gIter = the_rsc->children; - - for (; gIter != NULL; gIter = gIter->next) { -@@ -80,7 +80,7 @@ cli_resource_search(const char *rsc, pe_working_set_t * data_set) - - /* The anonymous clone children's common ID is supplied */ - } else if ((parent = uber_parent(the_rsc)) != NULL -- && parent->variant >= pe_clone -+ && pe_rsc_is_clone(parent) - && is_not_set(the_rsc->flags, pe_rsc_unique) - && the_rsc->clone_name - && safe_str_eq(rsc, the_rsc->clone_name) -@@ -618,8 +618,7 @@ cli_resource_delete(cib_t *cib_conn, crm_ipc_t *crmd_channel, const char *host_uname, - resource_t *child = (resource_t *) lpc->data; - - rc = cli_resource_delete(cib_conn, crmd_channel, host_uname, child, data_set); -- if(rc != pcmk_ok -- || (rsc->variant >= pe_clone && is_not_set(rsc->flags, pe_rsc_unique))) { -+ if(rc != pcmk_ok || (pe_rsc_is_clone(rsc) && is_not_set(rsc->flags, pe_rsc_unique))) { - return rc; - } - } -@@ -711,7 +710,7 @@ cli_resource_check(cib_t * cib_conn, resource_t *rsc) - printf("\n * The configuration specifies that '%s' should remain stopped\n", parent->id); - need_nl++; - -- } else if(parent->variant > pe_clone && role == RSC_ROLE_SLAVE) { -+ } else if(parent->variant == pe_master && role == RSC_ROLE_SLAVE) { - printf("\n * The configuration specifies that '%s' should not be promoted\n", parent->id); - need_nl++; - } -@@ -1117,7 +1116,7 @@ cli_resource_restart(resource_t * rsc, const char *host, int timeout_ms, cib_t * - attr_set_type = XML_TAG_META_SETS; - - rsc_id = strdup(rsc->id); -- if(rsc->variant >= pe_clone) { -+ if(pe_rsc_is_clone(rsc)) { - is_clone = TRUE; - } - -@@ -1489,7 +1488,7 @@ cli_resource_execute(const char *rsc_id, const char *rsc_action, GHashTable *ove - || safe_str_eq(rsc_action, "force-promote")) { - action = rsc_action+6; - -- if(rsc->variant >= pe_clone) { -+ if(pe_rsc_is_clone(rsc)) { - rc = cli_resource_search(rsc_id, data_set); - if(rc > 0 && do_force == FALSE) { - CMD_ERR("It is not safe to %s %s here: the cluster claims it is already active", action, rsc_id); -@@ -1499,7 +1498,7 @@ cli_resource_execute(const char *rsc_id, const char *rsc_action, GHashTable *ove - } - } - -- if(rsc->variant == pe_clone || rsc->variant == pe_master) { -+ if(pe_rsc_is_clone(rsc)) { - /* Grab the first child resource in the hope it's not a group */ - rsc = rsc->children->data; - } -@@ -1613,7 +1612,7 @@ cli_resource_move(const char *rsc_id, const char *host_name, cib_t * cib, pe_wor - CMD_ERR("Resource '%s' not moved: not found", rsc_id); - return -ENXIO; - -- } else if (scope_master && rsc->variant < pe_master) { -+ } else if (scope_master && rsc->variant != pe_master) { - resource_t *p = uber_parent(rsc); - if(p->variant == pe_master) { - CMD_ERR("Using parent '%s' for --move command instead of '%s'.", rsc->id, rsc_id); -@@ -1644,7 +1643,7 @@ cli_resource_move(const char *rsc_id, const char *host_name, cib_t * cib, pe_wor - count = g_list_length(rsc->running_on); - } - -- } else if (rsc->variant >= pe_clone) { -+ } else if (pe_rsc_is_clone(rsc)) { - count = g_list_length(rsc->running_on); - - } else if (g_list_length(rsc->running_on) > 1) { --- -1.8.3.1 - - -From 41e08386cb3671c19a5045b5a3084c9c8c4799c1 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 21 Mar 2017 14:47:16 +1100 -Subject: [PATCH 2/2] PE: Rename 'bucket' to 'bundle' for public consumption - ---- - include/crm/msg_xml.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/crm/msg_xml.h b/include/crm/msg_xml.h -index 7f8ee7e..7198fe5 100644 ---- a/include/crm/msg_xml.h -+++ b/include/crm/msg_xml.h -@@ -186,7 +186,7 @@ - # define XML_CIB_TAG_GROUP "group" - # define XML_CIB_TAG_INCARNATION "clone" - # define XML_CIB_TAG_MASTER "master" --# define XML_CIB_TAG_CONTAINER "bucket" -+# define XML_CIB_TAG_CONTAINER "bundle" - - # define XML_CIB_TAG_RSC_TEMPLATE "template" - --- -1.8.3.1 - diff --git a/SOURCES/039-bundle-fixes.patch b/SOURCES/039-bundle-fixes.patch deleted file mode 100644 index 0a7a2a4..0000000 --- a/SOURCES/039-bundle-fixes.patch +++ /dev/null @@ -1,752 +0,0 @@ -From 73d3531f313e7ff77b524d27c9f0f6012e8fabdd Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 21 Mar 2017 09:32:27 -0500 -Subject: [PATCH 01/10] Refactor: libcrmcommon: avoid duplicate variable for - /usr/sbin - ---- - lib/common/Makefile.am | 3 +-- - lib/common/watchdog.c | 2 +- - 2 files changed, 2 insertions(+), 3 deletions(-) - -diff --git a/lib/common/Makefile.am b/lib/common/Makefile.am -index 05a0d74..7a68d1f 100644 ---- a/lib/common/Makefile.am -+++ b/lib/common/Makefile.am -@@ -17,8 +17,7 @@ - # - include $(top_srcdir)/Makefile.common - --AM_CPPFLAGS += -I$(top_builddir)/lib/gnu -I$(top_srcdir)/lib/gnu \ -- -DSBINDIR=\"$(sbindir)\" -+AM_CPPFLAGS += -I$(top_builddir)/lib/gnu -I$(top_srcdir)/lib/gnu - - ## libraries - lib_LTLIBRARIES = libcrmcommon.la -diff --git a/lib/common/watchdog.c b/lib/common/watchdog.c -index a171721..4c4abc1 100644 ---- a/lib/common/watchdog.c -+++ b/lib/common/watchdog.c -@@ -216,7 +216,7 @@ pcmk_locate_sbd(void) - - /* Look for the pid file */ - pidfile = crm_strdup_printf("%s/sbd.pid", HA_STATE_DIR); -- sbd_path = crm_strdup_printf("%s/sbd", SBINDIR); -+ sbd_path = crm_strdup_printf("%s/sbd", SBIN_DIR); - - /* Read the pid file */ - CRM_ASSERT(pidfile); --- -1.8.3.1 - - -From 7642b2c27d074078326b8cc90ed99f1910900a2d Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 21 Mar 2017 09:49:22 -0500 -Subject: [PATCH 02/10] Low: libpe_status: use new ID generation functions - -Ensures values are sanitized, and fixes a memory leak ---- - lib/pengine/container.c | 41 ++++++++++++++++++++--------------------- - 1 file changed, 20 insertions(+), 21 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index d7d47ad..801d94a 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -88,10 +88,9 @@ create_resource(const char *name, const char *provider, const char *kind) - static void - create_nvp(xmlNode *parent, const char *name, const char *value) - { -- char *id = crm_strdup_printf("%s-%s", ID(parent), name); - xmlNode *xml_nvp = create_xml_node(parent, XML_CIB_TAG_NVPAIR); - -- crm_xml_add(xml_nvp, XML_ATTR_ID, id); free(id); -+ crm_xml_set_id(xml_nvp, "%s-%s", ID(parent), name); - crm_xml_add(xml_nvp, XML_NVPAIR_ATTR_NAME, name); - crm_xml_add(xml_nvp, XML_NVPAIR_ATTR_VALUE, value); - } -@@ -99,10 +98,9 @@ create_nvp(xmlNode *parent, const char *name, const char *value) - static void - create_op(xmlNode *parent, const char *prefix, const char *task, const char *interval) - { -- char *id = crm_strdup_printf("%s-%s-%s", prefix, task, interval); - xmlNode *xml_op = create_xml_node(parent, "op"); - -- crm_xml_add(xml_op, XML_ATTR_ID, id); free(id); -+ crm_xml_set_id(xml_op, "%s-%s-%s", prefix, task, interval); - crm_xml_add(xml_op, XML_LRM_ATTR_INTERVAL, interval); - crm_xml_add(xml_op, "name", task); - } -@@ -113,13 +111,16 @@ create_ip_resource( - pe_working_set_t * data_set) - { - if(data->ip_range_start) { -- char *id = crm_strdup_printf("%s-ip-%s", data->prefix, tuple->ipaddr); -- xmlNode *xml_ip = create_resource(id, "heartbeat", "IPaddr2"); -+ char *id = NULL; -+ xmlNode *xml_ip = NULL; - xmlNode *xml_obj = NULL; - -- id = crm_strdup_printf("%s-attributes-%d", data->prefix, tuple->offset); -+ id = crm_strdup_printf("%s-ip-%s", data->prefix, tuple->ipaddr); -+ crm_xml_sanitize_id(id); -+ xml_ip = create_resource(id, "heartbeat", "IPaddr2"); -+ - xml_obj = create_xml_node(xml_ip, XML_TAG_ATTR_SETS); -- crm_xml_add(xml_obj, XML_ATTR_ID, id); free(id); -+ crm_xml_set_id(xml_obj, "%s-attributes-%d", data->prefix, tuple->offset); - - create_nvp(xml_obj, "ip", tuple->ipaddr); - if(data->host_network) { -@@ -158,13 +159,16 @@ create_docker_resource( - int doffset = 0, dmax = 1024; - char *dbuffer = calloc(1, dmax+1); - -- char *id = crm_strdup_printf("%s-docker-%d", data->prefix, tuple->offset); -- xmlNode *xml_docker = create_resource(id, "heartbeat", "docker"); -+ char *id = NULL; -+ xmlNode *xml_docker = NULL; - xmlNode *xml_obj = NULL; - -- id = crm_strdup_printf("%s-attributes-%d", data->prefix, tuple->offset); -+ id = crm_strdup_printf("%s-docker-%d", data->prefix, tuple->offset); -+ crm_xml_sanitize_id(id); -+ xml_docker = create_resource(id, "heartbeat", "docker"); -+ - xml_obj = create_xml_node(xml_docker, XML_TAG_ATTR_SETS); -- crm_xml_add(xml_obj, XML_ATTR_ID, id); free(id); -+ crm_xml_set_id(xml_obj, "%s-attributes-%d", data->prefix, tuple->offset); - - create_nvp(xml_obj, "image", data->image); - create_nvp(xml_obj, "allow_pull", "true"); -@@ -288,16 +292,14 @@ create_remote_resource( - xml_obj = create_xml_node(xml_remote, "operations"); - create_op(xml_obj, ID(xml_remote), "monitor", "60s"); - -- id = crm_strdup_printf("%s-attributes-%d", data->prefix, tuple->offset); - xml_obj = create_xml_node(xml_remote, XML_TAG_ATTR_SETS); -- crm_xml_add(xml_obj, XML_ATTR_ID, id); free(id); -+ crm_xml_set_id(xml_obj, "%s-attributes-%d", data->prefix, tuple->offset); - - create_nvp(xml_obj, "addr", tuple->ipaddr); - create_nvp(xml_obj, "port", crm_itoa(DEFAULT_REMOTE_PORT)); - -- id = crm_strdup_printf("%s-meta-%d", data->prefix, tuple->offset); - xml_obj = create_xml_node(xml_remote, XML_TAG_META_SETS); -- crm_xml_add(xml_obj, XML_ATTR_ID, id); free(id); -+ crm_xml_set_id(xml_obj, "%s-meta-%d", data->prefix, tuple->offset); - - create_nvp(xml_obj, XML_OP_ATTR_ALLOW_MIGRATE, "false"); - -@@ -458,13 +460,10 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - xml_resource = create_xml_node(NULL, XML_CIB_TAG_INCARNATION); - } - -- value = crm_strdup_printf("%s-%s", container_data->prefix, xml_resource->name); -- crm_xml_add(xml_resource, XML_ATTR_ID, value); -- free(value); -+ crm_xml_set_id(xml_resource, "%s-%s", container_data->prefix, xml_resource->name); - -- value = crm_strdup_printf("%s-%s-meta", container_data->prefix, xml_resource->name); - xml_set = create_xml_node(xml_resource, XML_TAG_META_SETS); -- free(value); -+ crm_xml_set_id(xml_resource, "%s-%s-meta", container_data->prefix, xml_resource->name); - - create_nvp(xml_set, XML_RSC_ATTR_ORDERED, "true"); - --- -1.8.3.1 - - -From 0e42b7427e71a8336b2b8d3fb3ec4d9470cad1e3 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 21 Mar 2017 09:56:58 -0500 -Subject: [PATCH 03/10] Refactor: crmd,lrmd,liblrmd: pass pointer rather than - structure - ---- - crmd/lrm_state.c | 3 ++- - include/crm_internal.h | 2 +- - lib/lrmd/proxy_common.c | 4 ++-- - lrmd/remote_ctl.c | 2 +- - 4 files changed, 6 insertions(+), 5 deletions(-) - -diff --git a/crmd/lrm_state.c b/crmd/lrm_state.c -index 83532a5..9a810df 100644 ---- a/crmd/lrm_state.c -+++ b/crmd/lrm_state.c -@@ -408,7 +408,8 @@ crmd_remote_proxy_new(lrmd_t *lrmd, const char *node_name, const char *session_i - .dispatch = remote_proxy_dispatch, - .destroy = remote_proxy_disconnected - }; -- remote_proxy_t *proxy = remote_proxy_new(lrmd, proxy_callbacks, node_name, session_id, channel); -+ remote_proxy_t *proxy = remote_proxy_new(lrmd, &proxy_callbacks, node_name, -+ session_id, channel); - - if (safe_str_eq(channel, CRM_SYSTEM_CRMD)) { - proxy->is_local = TRUE; -diff --git a/include/crm_internal.h b/include/crm_internal.h -index 206ec5f..d2f2f07 100644 ---- a/include/crm_internal.h -+++ b/include/crm_internal.h -@@ -380,7 +380,7 @@ typedef struct remote_proxy_s { - } remote_proxy_t; - - remote_proxy_t *remote_proxy_new( -- lrmd_t *lrmd, struct ipc_client_callbacks proxy_callbacks, -+ lrmd_t *lrmd, struct ipc_client_callbacks *proxy_callbacks, - const char *node_name, const char *session_id, const char *channel); - - int remote_proxy_check(lrmd_t *lrmd, GHashTable *hash); -diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c -index 2e9d963..e0f3d87 100644 ---- a/lib/lrmd/proxy_common.c -+++ b/lib/lrmd/proxy_common.c -@@ -172,7 +172,7 @@ remote_proxy_disconnected(gpointer userdata) - } - - remote_proxy_t * --remote_proxy_new(lrmd_t *lrmd, struct ipc_client_callbacks proxy_callbacks, -+remote_proxy_new(lrmd_t *lrmd, struct ipc_client_callbacks *proxy_callbacks, - const char *node_name, const char *session_id, const char *channel) - { - remote_proxy_t *proxy = NULL; -@@ -188,7 +188,7 @@ remote_proxy_new(lrmd_t *lrmd, struct ipc_client_callbacks proxy_callbacks, - proxy->node_name = strdup(node_name); - proxy->session_id = strdup(session_id); - -- proxy->source = mainloop_add_ipc_client(channel, G_PRIORITY_LOW, 0, proxy, &proxy_callbacks); -+ proxy->source = mainloop_add_ipc_client(channel, G_PRIORITY_LOW, 0, proxy, proxy_callbacks); - proxy->ipc = mainloop_get_ipc_client(proxy->source); - proxy->lrm = lrmd; - -diff --git a/lrmd/remote_ctl.c b/lrmd/remote_ctl.c -index f3fc24f..4afa337 100644 ---- a/lrmd/remote_ctl.c -+++ b/lrmd/remote_ctl.c -@@ -259,7 +259,7 @@ ctl_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) - .destroy = remote_proxy_disconnected - }; - -- remote_proxy_new(lrmd, proxy_callbacks, options.node_name, session, channel); -+ remote_proxy_new(lrmd, &proxy_callbacks, options.node_name, session, channel); - - } else { - remote_proxy_cb(lrmd, options.node_name, msg); --- -1.8.3.1 - - -From 6e0782767bd8b057a363e6bb32327d6881699aae Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 21 Mar 2017 10:50:30 -0500 -Subject: [PATCH 04/10] Low: crmd,liblrmd: handle crmd-local proxy requests - properly - ---- - crmd/lrm_state.c | 14 ++++++++------ - lib/lrmd/proxy_common.c | 28 ++++++++++++++++++++-------- - 2 files changed, 28 insertions(+), 14 deletions(-) - -diff --git a/crmd/lrm_state.c b/crmd/lrm_state.c -index 9a810df..86cedd8 100644 ---- a/crmd/lrm_state.c -+++ b/crmd/lrm_state.c -@@ -410,10 +410,6 @@ crmd_remote_proxy_new(lrmd_t *lrmd, const char *node_name, const char *session_i - }; - remote_proxy_t *proxy = remote_proxy_new(lrmd, &proxy_callbacks, node_name, - session_id, channel); -- -- if (safe_str_eq(channel, CRM_SYSTEM_CRMD)) { -- proxy->is_local = TRUE; -- } - return proxy; - } - -@@ -526,7 +522,7 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) - } - return; - -- } else if (safe_str_eq(op, LRMD_IPC_OP_REQUEST) && proxy->is_local) { -+ } else if (safe_str_eq(op, LRMD_IPC_OP_REQUEST) && proxy && proxy->is_local) { - /* this is for the crmd, which we are, so don't try - * and connect/send to ourselves over ipc. instead - * do it directly. -@@ -534,9 +530,15 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) - int flags = 0; - xmlNode *request = get_message_xml(msg, F_LRMD_IPC_MSG); - -+ CRM_CHECK(request != NULL, return); -+#if ENABLE_ACL -+ CRM_CHECK(lrm_state->node_name, return); -+ crm_xml_add(request, XML_ACL_TAG_ROLE, "pacemaker-remote"); -+ crm_acl_get_set_user(request, F_LRMD_IPC_USER, lrm_state->node_name); -+#endif - crmd_proxy_dispatch(session, request); -- crm_element_value_int(msg, F_LRMD_IPC_MSG_FLAGS, &flags); - -+ crm_element_value_int(msg, F_LRMD_IPC_MSG_FLAGS, &flags); - if (flags & crm_ipc_client_response) { - int msg_id = 0; - xmlNode *op_reply = create_xml_node(NULL, "ack"); -diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c -index e0f3d87..81796d4 100644 ---- a/lib/lrmd/proxy_common.c -+++ b/lib/lrmd/proxy_common.c -@@ -187,15 +187,21 @@ remote_proxy_new(lrmd_t *lrmd, struct ipc_client_callbacks *proxy_callbacks, - - proxy->node_name = strdup(node_name); - proxy->session_id = strdup(session_id); -- -- proxy->source = mainloop_add_ipc_client(channel, G_PRIORITY_LOW, 0, proxy, proxy_callbacks); -- proxy->ipc = mainloop_get_ipc_client(proxy->source); - proxy->lrm = lrmd; - -- if (proxy->source == NULL) { -- remote_proxy_free(proxy); -- remote_proxy_notify_destroy(lrmd, session_id); -- return NULL; -+ if (safe_str_eq(crm_system_name, CRM_SYSTEM_CRMD) -+ && safe_str_eq(channel, CRM_SYSTEM_CRMD)) { -+ /* The crmd doesn't need to connect to itself */ -+ proxy->is_local = TRUE; -+ -+ } else { -+ proxy->source = mainloop_add_ipc_client(channel, G_PRIORITY_LOW, 0, proxy, proxy_callbacks); -+ proxy->ipc = mainloop_get_ipc_client(proxy->source); -+ if (proxy->source == NULL) { -+ remote_proxy_free(proxy); -+ remote_proxy_notify_destroy(lrmd, session_id); -+ return NULL; -+ } - } - - crm_trace("new remote proxy client established to %s on %s, session id %s", -@@ -237,7 +243,13 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) - /* proxy connection no longer exists */ - remote_proxy_notify_destroy(lrmd, session); - return; -- } else if ((proxy->is_local == FALSE) && (crm_ipc_connected(proxy->ipc) == FALSE)) { -+ } -+ -+ /* crmd requests MUST be handled by the crmd, not us */ -+ CRM_CHECK(proxy->is_local == FALSE, -+ remote_proxy_end_session(proxy); return); -+ -+ if (crm_ipc_connected(proxy->ipc) == FALSE) { - remote_proxy_end_session(proxy); - return; - } --- -1.8.3.1 - - -From c76c85f7ca5d5fe2127473f13516694882fda603 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 21 Mar 2017 10:51:22 -0500 -Subject: [PATCH 05/10] Refactor: libcrmcommon: remove dead code - ---- - include/crm_internal.h | 8 -------- - 1 file changed, 8 deletions(-) - -diff --git a/include/crm_internal.h b/include/crm_internal.h -index d2f2f07..cf0f32d 100644 ---- a/include/crm_internal.h -+++ b/include/crm_internal.h -@@ -162,10 +162,6 @@ crm_clear_bit(const char *function, int line, const char *target, long long word - { - long long rc = (word & ~bit); - -- /* if(bit == 0x00002) { */ -- /* crm_err("Bit 0x%.8llx for %s cleared by %s:%d", bit, target, function, line); */ -- /* } */ -- - if (rc == word) { - /* Unchanged */ - } else if (target) { -@@ -182,10 +178,6 @@ crm_set_bit(const char *function, int line, const char *target, long long word, - { - long long rc = (word | bit); - -- /* if(bit == 0x00002) { */ -- /* crm_err("Bit 0x%.8llx for %s set by %s:%d", bit, target, function, line); */ -- /* } */ -- - if (rc == word) { - /* Unchanged */ - } else if (target) { --- -1.8.3.1 - - -From 23cd184c09f2bdb19b9b5d34b8a091cd52d9d142 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 21 Mar 2017 10:58:09 -0500 -Subject: [PATCH 06/10] Low: libpe_status: allow more than 254 containers in a - bundle - ---- - lib/pengine/container.c | 22 +++++++++++++++------- - 1 file changed, 15 insertions(+), 7 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 801d94a..1c70f02 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -32,20 +32,28 @@ void tuple_free(container_grouping_t *tuple); - static char * - next_ip(const char *last_ip) - { -- int oct1 = 0; -- int oct2 = 0; -- int oct3 = 0; -- int oct4 = 0; -+ unsigned int oct1 = 0; -+ unsigned int oct2 = 0; -+ unsigned int oct3 = 0; -+ unsigned int oct4 = 0; -+ int rc = sscanf(last_ip, "%u.%u.%u.%u", &oct1, &oct2, &oct3, &oct4); - -- int rc = sscanf(last_ip, "%d.%d.%d.%d", &oct1, &oct2, &oct3, &oct4); - if (rc != 4) { -+ /*@ TODO check for IPv6 */ - return NULL; - -- } else if(oct4 > 255) { -+ } else if (oct3 > 253) { - return NULL; -+ -+ } else if (oct4 > 253) { -+ ++oct3; -+ oct4 = 1; -+ -+ } else { -+ ++oct4; - } - -- return crm_strdup_printf("%d.%d.%d.%d", oct1, oct2, oct3, oct4+1); -+ return crm_strdup_printf("%u.%u.%u.%u", oct1, oct2, oct3, oct4); - } - - static int --- -1.8.3.1 - - -From 4751d74fbfb1be557fb2d4fca9db2c4a2b896950 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 21 Mar 2017 11:10:54 -0500 -Subject: [PATCH 07/10] Low: libpe_status: avoid memory leaks in bundle - handling - ---- - lib/pengine/container.c | 16 +++++++++++----- - 1 file changed, 11 insertions(+), 5 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 1c70f02..816e96a 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -88,7 +88,7 @@ create_resource(const char *name, const char *provider, const char *kind) - crm_xml_add(rsc, XML_ATTR_ID, name); - crm_xml_add(rsc, XML_AGENT_ATTR_CLASS, "ocf"); - crm_xml_add(rsc, XML_AGENT_ATTR_PROVIDER, provider); -- crm_xml_add(rsc, "type", kind); -+ crm_xml_add(rsc, XML_ATTR_TYPE, kind); - - return rsc; - } -@@ -126,6 +126,7 @@ create_ip_resource( - id = crm_strdup_printf("%s-ip-%s", data->prefix, tuple->ipaddr); - crm_xml_sanitize_id(id); - xml_ip = create_resource(id, "heartbeat", "IPaddr2"); -+ free(id); - - xml_obj = create_xml_node(xml_ip, XML_TAG_ATTR_SETS); - crm_xml_set_id(xml_obj, "%s-attributes-%d", data->prefix, tuple->offset); -@@ -174,6 +175,7 @@ create_docker_resource( - id = crm_strdup_printf("%s-docker-%d", data->prefix, tuple->offset); - crm_xml_sanitize_id(id); - xml_docker = create_resource(id, "heartbeat", "docker"); -+ free(id); - - xml_obj = create_xml_node(xml_docker, XML_TAG_ATTR_SETS); - crm_xml_set_id(xml_obj, "%s-attributes-%d", data->prefix, tuple->offset); -@@ -203,6 +205,7 @@ create_docker_resource( - } - doffset += snprintf(dbuffer+doffset, dmax-doffset, "%s", source); - offset += snprintf(buffer+offset, max-offset, " -v %s:%s", source, mount->target); -+ free(source); - - } else { - offset += snprintf(buffer+offset, max-offset, " -v %s:%s", mount->source, mount->target); -@@ -287,16 +290,19 @@ create_remote_resource( - xmlNode *xml_obj = NULL; - xmlNode *xml_remote = NULL; - char *nodeid = crm_strdup_printf("%s-%d", data->prefix, tuple->offset); -- char *id = strdup(nodeid); -+ char *id = NULL; - -- if(remote_id_conflict(id, data_set)) { -+ if (remote_id_conflict(nodeid, data_set)) { - // The biggest hammer we have - id = crm_strdup_printf("pcmk-internal-%s-remote-%d", tuple->child->id, tuple->offset); -+ CRM_ASSERT(remote_id_conflict(id, data_set) == FALSE); -+ } else { -+ id = strdup(nodeid); - } - -- CRM_ASSERT(remote_id_conflict(id, data_set) == FALSE); -- - xml_remote = create_resource(id, "pacemaker", "remote"); -+ free(id); -+ - xml_obj = create_xml_node(xml_remote, "operations"); - create_op(xml_obj, ID(xml_remote), "monitor", "60s"); - --- -1.8.3.1 - - -From ef2cd27bf68b9950cb67872b72c878c995fac479 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 21 Mar 2017 11:14:41 -0500 -Subject: [PATCH 08/10] Refactor: libpe_status: rename newly exposed function - with pe_ prefix - ---- - fencing/main.c | 1 - - include/crm/pengine/internal.h | 3 ++- - lib/pengine/container.c | 3 ++- - lib/pengine/unpack.c | 19 ++++++++++++------- - 4 files changed, 16 insertions(+), 10 deletions(-) - -diff --git a/fencing/main.c b/fencing/main.c -index 437c31f..1c61d8b 100644 ---- a/fencing/main.c -+++ b/fencing/main.c -@@ -710,7 +710,6 @@ update_done: - } - - extern xmlNode *do_calculations(pe_working_set_t * data_set, xmlNode * xml_input, crm_time_t * now); --extern node_t *create_node(const char *id, const char *uname, const char *type, const char *score, pe_working_set_t * data_set); - - /*! - * \internal -diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h -index adafefd..0da02cc 100644 ---- a/include/crm/pengine/internal.h -+++ b/include/crm/pengine/internal.h -@@ -286,7 +286,8 @@ void print_rscs_brief(GListPtr rsc_list, const char * pre_text, long options, - void * print_data, gboolean print_all); - void pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason); - --node_t *create_node(const char *id, const char *uname, const char *type, const char *score, pe_working_set_t * data_set); -+node_t *pe_create_node(const char *id, const char *uname, const char *type, -+ const char *score, pe_working_set_t * data_set); - bool remote_id_conflict(const char *remote_name, pe_working_set_t *data); - void common_print(resource_t * rsc, const char *pre_text, const char *name, node_t *node, long options, void *print_data); - resource_t *find_container_child(const char *stem, resource_t * rsc, node_t *node); -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 816e96a..4dc7594 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -326,7 +326,8 @@ create_remote_resource( - // tuple->docker->fillers = g_list_append(tuple->docker->fillers, child); - - // -INFINITY prevents anyone else from running here -- node = create_node(strdup(nodeid), nodeid, "remote", "-INFINITY", data_set); -+ node = pe_create_node(strdup(nodeid), nodeid, "remote", "-INFINITY", -+ data_set); - tuple->node = node_copy(node); - tuple->node->weight = 500; - nodeid = NULL; -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 2f03493..ef51cd5 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -303,7 +303,8 @@ destroy_digest_cache(gpointer ptr) - } - - node_t * --create_node(const char *id, const char *uname, const char *type, const char *score, pe_working_set_t * data_set) -+pe_create_node(const char *id, const char *uname, const char *type, -+ const char *score, pe_working_set_t * data_set) - { - node_t *new_node = NULL; - -@@ -571,7 +572,7 @@ unpack_nodes(xmlNode * xml_nodes, pe_working_set_t * data_set) - crm_config_err("Must specify id tag in "); - continue; - } -- new_node = create_node(id, uname, type, score, data_set); -+ new_node = pe_create_node(id, uname, type, score, data_set); - - if (new_node == NULL) { - return FALSE; -@@ -595,7 +596,8 @@ unpack_nodes(xmlNode * xml_nodes, pe_working_set_t * data_set) - - if (data_set->localhost && pe_find_node(data_set->nodes, data_set->localhost) == NULL) { - crm_info("Creating a fake local node"); -- create_node(data_set->localhost, data_set->localhost, NULL, 0, data_set); -+ pe_create_node(data_set->localhost, data_set->localhost, NULL, 0, -+ data_set); - } - - return TRUE; -@@ -649,7 +651,8 @@ unpack_remote_nodes(xmlNode * xml_resources, pe_working_set_t * data_set) - * an expanded node that has already been added to the node list. */ - if (new_node_id && pe_find_node(data_set->nodes, new_node_id) == NULL) { - crm_trace("Found baremetal remote node %s in container resource %s", new_node_id, ID(xml_obj)); -- create_node(new_node_id, new_node_id, "remote", NULL, data_set); -+ pe_create_node(new_node_id, new_node_id, "remote", NULL, -+ data_set); - } - continue; - } -@@ -668,7 +671,8 @@ unpack_remote_nodes(xmlNode * xml_resources, pe_working_set_t * data_set) - - if (new_node_id && pe_find_node(data_set->nodes, new_node_id) == NULL) { - crm_trace("Found guest remote node %s in container resource %s", new_node_id, ID(xml_obj)); -- create_node(new_node_id, new_node_id, "remote", NULL, data_set); -+ pe_create_node(new_node_id, new_node_id, "remote", NULL, -+ data_set); - } - continue; - -@@ -681,7 +685,8 @@ unpack_remote_nodes(xmlNode * xml_resources, pe_working_set_t * data_set) - - if (new_node_id && pe_find_node(data_set->nodes, new_node_id) == NULL) { - crm_trace("Found guest remote node %s in container resource %s which is in group %s", new_node_id, ID(xml_obj2), ID(xml_obj)); -- create_node(new_node_id, new_node_id, "remote", NULL, data_set); -+ pe_create_node(new_node_id, new_node_id, "remote", NULL, -+ data_set); - } - } - } -@@ -1661,7 +1666,7 @@ create_fake_resource(const char *rsc_id, xmlNode * rsc_entry, pe_working_set_t * - rsc->is_remote_node = TRUE; - node = pe_find_node(data_set->nodes, rsc_id); - if (node == NULL) { -- node = create_node(rsc_id, rsc_id, "remote", NULL, data_set); -+ node = pe_create_node(rsc_id, rsc_id, "remote", NULL, data_set); - } - link_rsc2remotenode(data_set, rsc); - --- -1.8.3.1 - - -From b12bb91ab10166fa20f7ebcc7e48972688c3e8f8 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 21 Mar 2017 11:20:49 -0500 -Subject: [PATCH 09/10] Low: xml: rename bucket to bundle here, too - ---- - xml/resources-2.8.rng | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/xml/resources-2.8.rng b/xml/resources-2.8.rng -index f41f84d..2e69aba 100644 ---- a/xml/resources-2.8.rng -+++ b/xml/resources-2.8.rng -@@ -14,7 +14,7 @@ - - - -- -+ - - - -@@ -66,8 +66,8 @@ - - - -- -- -+ -+ - - - --- -1.8.3.1 - - -From 5e00b0b0d9df6cc8288f6368ffb1bce1ee24468a Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 21 Mar 2017 13:57:10 -0500 -Subject: [PATCH 10/10] Low: tools: update validity regression tests for 2.8 - schema - ---- - tools/regression.validity.exp | 22 ++++++++++++++++++---- - 1 file changed, 18 insertions(+), 4 deletions(-) - -diff --git a/tools/regression.validity.exp b/tools/regression.validity.exp -index 1278a09..8fcfcb2 100644 ---- a/tools/regression.validity.exp -+++ b/tools/regression.validity.exp -@@ -62,7 +62,11 @@ element rsc_order: Relax-NG validity error : Element constraints has extra conte - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - ( schemas.c:NNN ) trace: update_validation: pacemaker-2.7 validation failed --Your current configuration pacemaker-1.2 could not validate with any schema in range [pacemaker-1.2, pacemaker-2.7], cannot upgrade to pacemaker-2.0. -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.8' validation (14 of X) -+element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order -+element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.8 validation failed -+Your current configuration pacemaker-1.2 could not validate with any schema in range [pacemaker-1.2, pacemaker-2.8], cannot upgrade to pacemaker-2.0. - =#=#=#= End test: Run crm_simulate with invalid CIB (enum violation) - Required key not available (126) =#=#=#= - * Passed: crm_simulate - Run crm_simulate with invalid CIB (enum violation) - =#=#=#= Begin test: Try to make resulting CIB invalid (unrecognized validate-with) =#=#=#= -@@ -136,7 +140,10 @@ element cib: Relax-NG validity error : Invalid attribute validate-with for eleme - ( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.7' validation (13 of X) - element cib: Relax-NG validity error : Invalid attribute validate-with for element cib - ( schemas.c:NNN ) trace: update_validation: pacemaker-2.7 validation failed --Your current configuration pacemaker-9999.0 could not validate with any schema in range [unknown, pacemaker-2.7], cannot upgrade to pacemaker-2.0. -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.8' validation (14 of X) -+element cib: Relax-NG validity error : Invalid attribute validate-with for element cib -+( schemas.c:NNN ) trace: update_validation: pacemaker-2.8 validation failed -+Your current configuration pacemaker-9999.0 could not validate with any schema in range [unknown, pacemaker-2.8], cannot upgrade to pacemaker-2.0. - =#=#=#= End test: Run crm_simulate with invalid CIB (unrecognized validate-with) - Required key not available (126) =#=#=#= - * Passed: crm_simulate - Run crm_simulate with invalid CIB (unrecognized validate-with) - =#=#=#= Begin test: Try to make resulting CIB invalid, but possibly recoverable (valid with X.Y+1) =#=#=#= -@@ -187,8 +194,11 @@ element tags: Relax-NG validity error : Element configuration has extra content: - ( schemas.c:NNN ) debug: update_validation: pacemaker-2.6-style configuration is also valid for pacemaker-2.7 - ( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.7' validation (13 of X) - ( schemas.c:NNN ) debug: update_validation: Configuration valid for schema: pacemaker-2.7 --( schemas.c:NNN ) trace: update_validation: Stopping at pacemaker-2.7 --( schemas.c:NNN ) info: update_validation: Transformed the configuration from pacemaker-1.2 to pacemaker-2.7 -+( schemas.c:NNN ) debug: update_validation: pacemaker-2.7-style configuration is also valid for pacemaker-2.8 -+( schemas.c:NNN ) debug: update_validation: Testing 'pacemaker-2.8' validation (14 of X) -+( schemas.c:NNN ) debug: update_validation: Configuration valid for schema: pacemaker-2.8 -+( schemas.c:NNN ) trace: update_validation: Stopping at pacemaker-2.8 -+( schemas.c:NNN ) info: update_validation: Transformed the configuration from pacemaker-1.2 to pacemaker-2.8 - error: unpack_resources: Resource start-up disabled since no STONITH resources have been defined - error: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option - error: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity -@@ -314,6 +324,8 @@ element rsc_order: Relax-NG validity error : Invalid attribute first-action for - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order -+element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order -+element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - =#=#=#= Current cib after: Make resulting CIB invalid, and without validate-with attribute =#=#=#= - - -@@ -371,6 +383,8 @@ bad-1.2.xml:10: element rsc_order: Relax-NG validity error : Invalid attribute f - bad-1.2.xml:10: element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - bad-1.2.xml:10: element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order - bad-1.2.xml:10: element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order -+bad-1.2.xml:10: element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order -+bad-1.2.xml:10: element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order - error: unpack_resources: Resource start-up disabled since no STONITH resources have been defined - error: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option - error: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity --- -1.8.3.1 - diff --git a/SOURCES/040-bundle-control-port.patch b/SOURCES/040-bundle-control-port.patch deleted file mode 100644 index 39b8107..0000000 --- a/SOURCES/040-bundle-control-port.patch +++ /dev/null @@ -1,237 +0,0 @@ -From 14a7cc23e9e3b619f280dcc6d5032a17e84283b0 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 22 Mar 2017 11:25:22 +1100 -Subject: [PATCH 1/2] Remote: Allow the port to listen on to be specified on - the commandline - ---- - lrmd/main.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/lrmd/main.c b/lrmd/main.c -index a3aa08f..ddba619 100644 ---- a/lrmd/main.c -+++ b/lrmd/main.c -@@ -403,6 +403,9 @@ static struct crm_option long_options[] = { - {"verbose", 0, 0, 'V', "\tIncrease debug output"}, - - {"logfile", 1, 0, 'l', "\tSend logs to the additional named logfile"}, -+#ifndef ENABLE_PCMK_REMOTE -+ {"port", 1, 0, 'p', "\tPort to listen on"}, -+#endif - - /* For compatibility with the original lrmd */ - {"dummy", 0, 0, 'r', NULL, 1}, -@@ -440,6 +443,9 @@ main(int argc, char **argv) - case 'l': - crm_add_logfile(optarg); - break; -+ case 'p': -+ setenv("PCMK_remote_port", optarg, 1); -+ break; - case 'V': - crm_bump_log_level(argc, argv); - break; --- -1.8.3.1 - - -From 99502d17e5406c2402a4e630a3eaa95d2fe9434b Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 22 Mar 2017 11:29:51 +1100 -Subject: [PATCH 2/2] PE: Bundles: Better support for net=host, allow the - pacemaker-remote port to change - ---- - lib/pengine/container.c | 59 ++++++++++++++++++++++++++++++++++++++++++------- - lib/pengine/variant.h | 1 + - pengine/container.c | 13 +++++++---- - xml/resources-2.8.rng | 3 +++ - 4 files changed, 64 insertions(+), 12 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index d7d47ad..4018f70 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -108,6 +108,22 @@ create_op(xmlNode *parent, const char *prefix, const char *task, const char *int - } - - static bool -+valid_network(container_variant_data_t *data) -+{ -+ if(data->ip_range_start) { -+ return TRUE; -+ } -+ if(data->control_port && crm_str_eq(data->docker_network, "host", TRUE)) { -+ if(data->replicas_per_host > 1) { -+ pe_err("Specifying the 'control-port' with 'internal-network=host' for %s requires 'replicas-per-host=1'", data->prefix); -+ data->replicas_per_host = 1; -+ } -+ return TRUE; -+ } -+ return FALSE; -+} -+ -+static bool - create_ip_resource( - resource_t *parent, container_variant_data_t *data, container_grouping_t *tuple, - pe_working_set_t * data_set) -@@ -203,8 +219,12 @@ create_docker_resource( - for(GListPtr pIter = data->ports; pIter != NULL; pIter = pIter->next) { - char *port = pIter->data; - -- offset += snprintf(buffer+offset, max-offset, " -p %s:%s:%s", -- tuple->ipaddr, port, port); -+ if(tuple->ipaddr) { -+ offset += snprintf(buffer+offset, max-offset, " -p %s:%s:%s", -+ tuple->ipaddr, port, port); -+ } else { -+ offset += snprintf(buffer+offset, max-offset, " -p %s:%s", port, port); -+ } - } - - if(data->docker_run_options) { -@@ -222,7 +242,15 @@ create_docker_resource( - free(dbuffer); - - if(tuple->child) { -- create_nvp(xml_obj, "run_cmd", SBIN_DIR"/pacemaker_remoted"); -+ char *command = NULL; -+ -+ if(data->control_port) { -+ command = crm_strdup_printf(SBIN_DIR"/pacemaker_remoted -p %s", data->control_port); -+ } else { -+ command = crm_strdup_printf(SBIN_DIR"/pacemaker_remoted -p %d", DEFAULT_REMOTE_PORT); -+ } -+ create_nvp(xml_obj, "run_cmd", command); -+ free(command); - - /* TODO: Allow users to specify their own? - * -@@ -270,7 +298,7 @@ create_remote_resource( - resource_t *parent, container_variant_data_t *data, container_grouping_t *tuple, - pe_working_set_t * data_set) - { -- if(tuple->ip && tuple->child) { -+ if(valid_network(data) && tuple->child) { - node_t *node = NULL; - xmlNode *xml_obj = NULL; - xmlNode *xml_remote = NULL; -@@ -292,8 +320,17 @@ create_remote_resource( - xml_obj = create_xml_node(xml_remote, XML_TAG_ATTR_SETS); - crm_xml_set_id(xml_obj, "%s-attributes-%d", data->prefix, tuple->offset); - -- create_nvp(xml_obj, "addr", tuple->ipaddr); -- create_nvp(xml_obj, "port", crm_itoa(DEFAULT_REMOTE_PORT)); -+ if(tuple->ipaddr) { -+ create_nvp(xml_obj, "addr", tuple->ipaddr); -+ } else { -+ create_nvp(xml_obj, "addr", "localhost"); -+ } -+ -+ if(data->control_port) { -+ create_nvp(xml_obj, "port", data->control_port); -+ } else { -+ create_nvp(xml_obj, "port", crm_itoa(DEFAULT_REMOTE_PORT)); -+ } - - xml_obj = create_xml_node(xml_remote, XML_TAG_META_SETS); - crm_xml_set_id(xml_obj, "%s-meta-%d", data->prefix, tuple->offset); -@@ -405,6 +442,7 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - container_data->ip_range_start = crm_element_value_copy(xml_obj, "ip-range-start"); - container_data->host_netmask = crm_element_value_copy(xml_obj, "host-netmask"); - container_data->host_network = crm_element_value_copy(xml_obj, "host-network"); -+ container_data->control_port = crm_element_value_copy(xml_obj, "control-port"); - container_data->docker_network = crm_element_value_copy(xml_obj, "docker-network"); - - for (xmlNode *xml_child = __xml_first_child_element(xml_obj); xml_child != NULL; -@@ -447,7 +485,7 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - } - - xml_obj = first_named_child(rsc->xml, "primitive"); -- if(xml_obj && container_data->ip_range_start && container_data->replicas > 0) { -+ if(xml_obj && valid_network(container_data) && container_data->replicas > 0) { - char *value = NULL; - xmlNode *xml_set = NULL; - -@@ -523,7 +561,11 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - mount->flags = 1; - container_data->mounts = g_list_append(container_data->mounts, mount); - -- container_data->ports = g_list_append(container_data->ports, crm_itoa(DEFAULT_REMOTE_PORT)); -+ if(container_data->control_port) { -+ container_data->ports = g_list_append(container_data->ports, container_data->control_port); -+ } else { -+ container_data->ports = g_list_append(container_data->ports, crm_itoa(DEFAULT_REMOTE_PORT)); -+ } - - if (common_unpack(xml_resource, &new_rsc, rsc, data_set) == FALSE) { - pe_err("Failed unpacking resource %s", crm_element_value(rsc->xml, XML_ATTR_ID)); -@@ -779,6 +821,7 @@ container_free(resource_t * rsc) - - free(container_data->prefix); - free(container_data->image); -+ free(container_data->control_port); - free(container_data->host_network); - free(container_data->host_netmask); - free(container_data->ip_range_start); -diff --git a/lib/pengine/variant.h b/lib/pengine/variant.h -index b02aeb0..4a9e2fe 100644 ---- a/lib/pengine/variant.h -+++ b/lib/pengine/variant.h -@@ -87,6 +87,7 @@ typedef struct container_variant_data_s { - const char *ip_last; - char *host_network; - char *host_netmask; -+ char *control_port; - char *docker_network; - char *ip_range_start; - char *docker_host_options; -diff --git a/pengine/container.c b/pengine/container.c -index 84f2f16..b66b7b0 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -177,7 +177,6 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - } - - if(tuple->remote) { -- CRM_ASSERT(tuple->ip); - tuple->remote->cmds->internal_constraints(tuple->remote, data_set); - // Start docker then remote - new_rsc_order( -@@ -185,9 +184,15 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - new_rsc_order( - tuple->remote, RSC_STOP, tuple->docker, RSC_STOP, pe_order_implies_first, data_set); - -- id = crm_strdup_printf("%s-remote-with-ip-%d", rsc->id, tuple->offset); -- rsc_colocation_new(id, NULL, INFINITY, tuple->remote, tuple->ip, NULL, NULL, data_set); -- free(id); -+ if(tuple->ip) { -+ id = crm_strdup_printf("%s-remote-with-ip-%d", rsc->id, tuple->offset); -+ rsc_colocation_new(id, NULL, INFINITY, tuple->remote, tuple->ip, NULL, NULL, data_set); -+ free(id); -+ } else { -+ id = crm_strdup_printf("%s-remote-with-docker-%d", rsc->id, tuple->offset); -+ rsc_colocation_new(id, NULL, INFINITY, tuple->remote, tuple->docker, NULL, NULL, data_set); -+ free(id); -+ } - } - - if(tuple->child) { -diff --git a/xml/resources-2.8.rng b/xml/resources-2.8.rng -index 6329fea..1382bba 100644 ---- a/xml/resources-2.8.rng -+++ b/xml/resources-2.8.rng -@@ -100,6 +100,9 @@ - - - -+ -+ -+ - - - --- -1.8.3.1 - diff --git a/SOURCES/041-bundle-port-fixes.patch b/SOURCES/041-bundle-port-fixes.patch deleted file mode 100644 index a0604b4..0000000 --- a/SOURCES/041-bundle-port-fixes.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 1e37d7b1eefca9087afa7f82e3928ca1ff8b47e1 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 23 Mar 2017 11:26:00 +1100 -Subject: [PATCH 1/2] PE: Bundle: Fix use-after-free of control port - ---- - lib/pengine/container.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 71b74ed..6f3a3b9 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -576,7 +576,7 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - container_data->mounts = g_list_append(container_data->mounts, mount); - - if(container_data->control_port) { -- container_data->ports = g_list_append(container_data->ports, container_data->control_port); -+ container_data->ports = g_list_append(container_data->ports, strdup(container_data->control_port)); - } else { - container_data->ports = g_list_append(container_data->ports, crm_itoa(DEFAULT_REMOTE_PORT)); - } --- -1.8.3.1 - - -From 3ffafe02f63b2e57b866782c4693ef9ed6e7b1db Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 23 Mar 2017 11:57:56 +1100 -Subject: [PATCH 2/2] remote: Correctly expose the -p option - ---- - lrmd/main.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lrmd/main.c b/lrmd/main.c -index 5f5873a..ca8cdf2 100644 ---- a/lrmd/main.c -+++ b/lrmd/main.c -@@ -399,7 +399,7 @@ static struct crm_option long_options[] = { - {"verbose", 0, 0, 'V', "\tIncrease debug output"}, - - {"logfile", 1, 0, 'l', "\tSend logs to the additional named logfile"}, --#ifndef ENABLE_PCMK_REMOTE -+#ifdef ENABLE_PCMK_REMOTE - {"port", 1, 0, 'p', "\tPort to listen on"}, - #endif - --- -1.8.3.1 - diff --git a/SOURCES/042-bundle-internal-port.patch b/SOURCES/042-bundle-internal-port.patch deleted file mode 100644 index 8d8f7a5..0000000 --- a/SOURCES/042-bundle-internal-port.patch +++ /dev/null @@ -1,231 +0,0 @@ -From 12e12aef412d5a06696a58292088dfe1d01b2e34 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 27 Mar 2017 18:56:43 +1100 -Subject: [PATCH 1/3] PE: Containers: Allow custom control ports when using the - machine's local address - ---- - lib/pengine/container.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 6f3a3b9..710f5dc 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -119,9 +119,9 @@ valid_network(container_variant_data_t *data) - if(data->ip_range_start) { - return TRUE; - } -- if(data->control_port && crm_str_eq(data->docker_network, "host", TRUE)) { -+ if(data->control_port) { - if(data->replicas_per_host > 1) { -- pe_err("Specifying the 'control-port' with 'internal-network=host' for %s requires 'replicas-per-host=1'", data->prefix); -+ pe_err("Specifying the 'control-port' for %s requires 'replicas-per-host=1'", data->prefix); - data->replicas_per_host = 1; - } - return TRUE; --- -1.8.3.1 - - -From 2a6abd68c200d9c92e4003e26ff282619a4af346 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 28 Mar 2017 12:24:46 +1100 -Subject: [PATCH 2/3] PE: Containers: Allow the internal and external ports to - optionally differ - ---- - lib/pengine/container.c | 39 +++++++++++++++++++++++++++++---------- - lib/pengine/variant.h | 7 +++++++ - xml/resources-2.8.rng | 7 ++++++- - 3 files changed, 42 insertions(+), 11 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 710f5dc..ed63b80 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -232,13 +232,13 @@ create_docker_resource( - } - - for(GListPtr pIter = data->ports; pIter != NULL; pIter = pIter->next) { -- char *port = pIter->data; -+ container_port_t *port = pIter->data; - - if(tuple->ipaddr) { - offset += snprintf(buffer+offset, max-offset, " -p %s:%s:%s", -- tuple->ipaddr, port, port); -+ tuple->ipaddr, port->source, port->target); - } else { -- offset += snprintf(buffer+offset, max-offset, " -p %s:%s", port, port); -+ offset += snprintf(buffer+offset, max-offset, " -p %s:%s", port->source, port->target); - } - } - -@@ -410,6 +410,13 @@ static void mount_free(container_mount_t *mount) - free(mount); - } - -+static void port_free(container_port_t *port) -+{ -+ free(port->source); -+ free(port->target); -+ free(port); -+} -+ - gboolean - container_unpack(resource_t * rsc, pe_working_set_t * data_set) - { -@@ -465,16 +472,24 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - for (xmlNode *xml_child = __xml_first_child_element(xml_obj); xml_child != NULL; - xml_child = __xml_next_element(xml_child)) { - -- char *port = crm_element_value_copy(xml_child, "port"); -+ container_port_t *port = calloc(1, sizeof(container_port_t)); -+ port->source = crm_element_value_copy(xml_child, "port"); - -- if(port == NULL) { -- port = crm_element_value_copy(xml_child, "range"); -+ if(port->source == NULL) { -+ port->source = crm_element_value_copy(xml_child, "range"); -+ } else { -+ port->target = crm_element_value_copy(xml_child, "internal-port"); - } - -- if(port != NULL) { -+ if(port->source != NULL && strlen(port->source) > 0) { -+ if(port->target == NULL) { -+ port->target = strdup(port->source); -+ } - container_data->ports = g_list_append(container_data->ports, port); -+ - } else { - pe_err("Invalid port directive %s", ID(xml_child)); -+ port_free(port); - } - } - } -@@ -557,6 +572,7 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - GListPtr childIter = NULL; - resource_t *new_rsc = NULL; - container_mount_t *mount = NULL; -+ container_port_t *port = calloc(1, sizeof(container_port_t)); - - int offset = 0, max = 1024; - char *buffer = calloc(1, max+1); -@@ -576,11 +592,14 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - container_data->mounts = g_list_append(container_data->mounts, mount); - - if(container_data->control_port) { -- container_data->ports = g_list_append(container_data->ports, strdup(container_data->control_port)); -+ port->source = strdup(container_data->control_port); - } else { -- container_data->ports = g_list_append(container_data->ports, crm_itoa(DEFAULT_REMOTE_PORT)); -+ port->source = crm_itoa(DEFAULT_REMOTE_PORT); - } - -+ port->target = strdup(port->source); -+ container_data->ports = g_list_append(container_data->ports, port); -+ - if (common_unpack(xml_resource, &new_rsc, rsc, data_set) == FALSE) { - pe_err("Failed unpacking resource %s", crm_element_value(rsc->xml, XML_ATTR_ID)); - if (new_rsc != NULL && new_rsc->fns != NULL) { -@@ -845,7 +864,7 @@ container_free(resource_t * rsc) - - g_list_free_full(container_data->tuples, (GDestroyNotify)tuple_free); - g_list_free_full(container_data->mounts, (GDestroyNotify)mount_free); -- g_list_free_full(container_data->ports, free); -+ g_list_free_full(container_data->ports, (GDestroyNotify)port_free); - common_free(rsc); - } - -diff --git a/lib/pengine/variant.h b/lib/pengine/variant.h -index 4a9e2fe..aa2a1b7 100644 ---- a/lib/pengine/variant.h -+++ b/lib/pengine/variant.h -@@ -78,6 +78,13 @@ typedef struct - - } container_mount_t; - -+typedef struct -+{ -+ char *source; -+ char *target; -+ -+} container_port_t; -+ - typedef struct container_variant_data_s { - int masters; - int replicas; -diff --git a/xml/resources-2.8.rng b/xml/resources-2.8.rng -index d10c666..870e804 100644 ---- a/xml/resources-2.8.rng -+++ b/xml/resources-2.8.rng -@@ -115,7 +115,12 @@ - - - -- -+ -+ -+ -+ -+ -+ - - - ([0-9\-]+) --- -1.8.3.1 - - -From ee9c3cea4efc4ff633ef4e6eb1b4a3d49c1695a5 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 28 Mar 2017 13:09:08 +1100 -Subject: [PATCH 3/3] PE: Containers: Ensure replicas_per_host=1 is respected - during rediscovery and startup - ---- - pengine/container.c | 27 ++++++++++++++++++++++++++- - 1 file changed, 26 insertions(+), 1 deletion(-) - -diff --git a/pengine/container.c b/pengine/container.c -index b66b7b0..1623861 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -300,7 +300,32 @@ container_create_probe(resource_t * rsc, node_t * node, action_t * complete, - any_created |= tuple->child->cmds->create_probe(tuple->child, node, complete, force, data_set); - } - if(tuple->docker) { -- any_created |= tuple->docker->cmds->create_probe(tuple->docker, node, complete, force, data_set); -+ bool created = tuple->docker->cmds->create_probe(tuple->docker, node, complete, force, data_set); -+ -+ if(created) { -+ any_created = TRUE; -+ /* If we're limited to one replica per host (due to -+ * the lack of an IP range probably), then we don't -+ * want any of our peer containers starting until -+ * we've established that no other copies are already -+ * running. -+ * -+ * Partly this is to ensure that replicas_per_host is -+ * observed, but also to ensure that the containers -+ * don't fail to start because the necessary port -+ * mappings (which wont include an IP for uniqueness) -+ * are already taken -+ */ -+ -+ for (GListPtr tIter = container_data->tuples; tIter != NULL && container_data->replicas_per_host == 1; tIter = tIter->next) { -+ container_grouping_t *other = (container_grouping_t *)tIter->data; -+ if(other != tuple) { -+ custom_action_order(tuple->docker, generate_op_key(tuple->docker->id, RSC_STATUS, 0), NULL, -+ other->docker, generate_op_key(other->docker->id, RSC_START, 0), NULL, -+ pe_order_optional, data_set); -+ } -+ } -+ } - } - if(FALSE && tuple->remote) { - // TODO: Needed? --- -1.8.3.1 - diff --git a/SOURCES/043-coverity-happy.patch b/SOURCES/043-coverity-happy.patch deleted file mode 100644 index 419776b..0000000 --- a/SOURCES/043-coverity-happy.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 60ed0b06e9c5d23441df6c0dde52ba700d30db07 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 23 Mar 2017 14:18:15 -0500 -Subject: [PATCH] Low: tools: crm_resource should free result if re-running - function returns one - -Not an issue in practice, but makes static analysis happy ---- - tools/crm_resource_runtime.c | 22 ++++++++++++++-------- - 1 file changed, 14 insertions(+), 8 deletions(-) - -diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c -index af96909..41f4fc5 100644 ---- a/tools/crm_resource_runtime.c -+++ b/tools/crm_resource_runtime.c -@@ -1523,12 +1523,24 @@ cli_resource_execute(const char *rsc_id, const char *rsc_action, GHashTable *ove - g_hash_table_insert(params, strdup(XML_ATTR_CRM_VERSION), strdup(CRM_FEATURE_SET)); - - op = resources_action_create(rsc->id, rclass, rprov, rtype, action, 0, -1, params, 0); -+ if (op == NULL) { -+ /* Re-run with stderr enabled so we can display a sane error message */ -+ crm_enable_stderr(TRUE); -+ op = resources_action_create(rsc->id, rclass, rprov, rtype, action, 0, -+ -1, params, 0); -+ -+ /* We know op will be NULL, but this makes static analysis happy */ -+ services_action_free(op); -+ -+ return crm_exit(EINVAL); -+ } -+ - - if(do_trace) { - setenv("OCF_TRACE_RA", "1", 1); - } - -- if(op && override_hash) { -+ if (override_hash) { - GHashTableIter iter; - char *name = NULL; - char *value = NULL; -@@ -1541,13 +1553,7 @@ cli_resource_execute(const char *rsc_id, const char *rsc_action, GHashTable *ove - } - } - -- if(op == NULL) { -- /* Re-run but with stderr enabled so we can display a sane error message */ -- crm_enable_stderr(TRUE); -- resources_action_create(rsc->id, rclass, rprov, rtype, action, 0, -1, params, 0); -- return crm_exit(EINVAL); -- -- } else if (services_action_sync(op)) { -+ if (services_action_sync(op)) { - int more, lpc, last; - char *local_copy = NULL; - --- -1.8.3.1 - diff --git a/SOURCES/044-bundle-syntax.patch b/SOURCES/044-bundle-syntax.patch deleted file mode 100644 index 2e446df..0000000 --- a/SOURCES/044-bundle-syntax.patch +++ /dev/null @@ -1,456 +0,0 @@ -From 4896a948713f748ba04d81ce028befe61ad3dace Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 27 Mar 2017 14:32:18 -0500 -Subject: [PATCH 1/5] Low: xml: re-indent for consistency - ---- - xml/resources-2.8.rng | 166 +++++++++++++++++++++++++------------------------- - 1 file changed, 83 insertions(+), 83 deletions(-) - -diff --git a/xml/resources-2.8.rng b/xml/resources-2.8.rng -index 870e804..e6dfa3a 100644 ---- a/xml/resources-2.8.rng -+++ b/xml/resources-2.8.rng -@@ -68,89 +68,89 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ([0-9\-]+) -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ([0-9\-]+) -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - --- -1.8.3.1 - - -From 7b5c34893ebd631c2d98269b19fa6226ebc4b5e2 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 27 Mar 2017 14:33:18 -0500 -Subject: [PATCH 2/5] Low: libpe_status,xml: changes to new bundle syntax - -Get rid of pcmk-remote-bin attribute, rename host-network to host-interface, -and change 'docker-network' attribute of network element to 'network' attribute -of docker element. ---- - lib/pengine/container.c | 4 ++-- - xml/resources-2.8.rng | 9 ++------- - 2 files changed, 4 insertions(+), 9 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index ed63b80..0d22bca 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -459,15 +459,15 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - - container_data->docker_run_options = crm_element_value_copy(xml_obj, "options"); - container_data->image = crm_element_value_copy(xml_obj, "image"); -+ container_data->docker_network = crm_element_value_copy(xml_obj, "network"); - - xml_obj = first_named_child(rsc->xml, "network"); - if(xml_obj) { - - container_data->ip_range_start = crm_element_value_copy(xml_obj, "ip-range-start"); - container_data->host_netmask = crm_element_value_copy(xml_obj, "host-netmask"); -- container_data->host_network = crm_element_value_copy(xml_obj, "host-network"); -+ container_data->host_network = crm_element_value_copy(xml_obj, "host-interface"); - container_data->control_port = crm_element_value_copy(xml_obj, "control-port"); -- container_data->docker_network = crm_element_value_copy(xml_obj, "docker-network"); - - for (xmlNode *xml_child = __xml_first_child_element(xml_obj); xml_child != NULL; - xml_child = __xml_next_element(xml_child)) { -diff --git a/xml/resources-2.8.rng b/xml/resources-2.8.rng -index e6dfa3a..3bc74be 100644 ---- a/xml/resources-2.8.rng -+++ b/xml/resources-2.8.rng -@@ -73,7 +73,6 @@ - - - -- - - - -@@ -86,13 +85,12 @@ - - - -- -+ - - - - - -- - - - -@@ -103,14 +101,11 @@ - - - -- -+ - - - - -- -- -- - - - --- -1.8.3.1 - - -From 758c51110e8a1b0bf2f3f1fdcf4241a3e365ffa2 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 27 Mar 2017 10:51:13 -0500 -Subject: [PATCH 3/5] Low: libpe_status: improve bundle docker defaults - -Masters now defaults to 0 instead of 1. -Replicas now defaults to masters if masters > 0, otherwise 1. -Replicas and replicas-per-host are now constrained to be positive. ---- - lib/pengine/container.c | 33 ++++++++++++++++++++++++--------- - 1 file changed, 24 insertions(+), 9 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 0d22bca..316f341 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -123,6 +123,7 @@ valid_network(container_variant_data_t *data) - if(data->replicas_per_host > 1) { - pe_err("Specifying the 'control-port' for %s requires 'replicas-per-host=1'", data->prefix); - data->replicas_per_host = 1; -+ /* @TODO to be sure: clear_bit(rsc->flags, pe_rsc_unique); */ - } - return TRUE; - } -@@ -436,11 +437,24 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - return FALSE; - } - -+ value = crm_element_value(xml_obj, "masters"); -+ container_data->masters = crm_parse_int(value, "0"); -+ if (container_data->masters < 0) { -+ pe_err("'masters' for %s must be nonnegative integer, using 0", -+ rsc->id); -+ container_data->masters = 0; -+ } -+ - value = crm_element_value(xml_obj, "replicas"); -- if(value == NULL) { -- value = crm_element_value(xml_obj, "masters"); -+ if ((value == NULL) && (container_data->masters > 0)) { -+ container_data->replicas = container_data->masters; -+ } else { -+ container_data->replicas = crm_parse_int(value, "1"); -+ } -+ if (container_data->replicas < 1) { -+ pe_err("'replicas' for %s must be positive integer, using 1", rsc->id); -+ container_data->replicas = 1; - } -- container_data->replicas = crm_parse_int(value, "1"); - - /* - * Communication between containers on the same host via the -@@ -449,14 +463,15 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - */ - value = crm_element_value(xml_obj, "replicas-per-host"); - container_data->replicas_per_host = crm_parse_int(value, "1"); -- -- if(container_data->replicas_per_host == 1) { -+ if (container_data->replicas_per_host < 1) { -+ pe_err("'replicas-per-host' for %s must be positive integer, using 1", -+ rsc->id); -+ container_data->replicas_per_host = 1; -+ } -+ if (container_data->replicas_per_host == 1) { - clear_bit(rsc->flags, pe_rsc_unique); - } - -- value = crm_element_value(xml_obj, "masters"); -- container_data->masters = crm_parse_int(value, "1"); -- - container_data->docker_run_options = crm_element_value_copy(xml_obj, "options"); - container_data->image = crm_element_value_copy(xml_obj, "image"); - container_data->docker_network = crm_element_value_copy(xml_obj, "network"); -@@ -517,7 +532,7 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - } - - xml_obj = first_named_child(rsc->xml, "primitive"); -- if(xml_obj && valid_network(container_data) && container_data->replicas > 0) { -+ if (xml_obj && valid_network(container_data)) { - char *value = NULL; - xmlNode *xml_set = NULL; - --- -1.8.3.1 - - -From e07efba927386780227d1e19789d50e8c91a6b91 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 28 Mar 2017 11:37:05 -0500 -Subject: [PATCH 4/5] Log: libpe_status: ip-start-range is not only possible - networking - ---- - lib/pengine/container.c | 19 ++++++++++++++----- - 1 file changed, 14 insertions(+), 5 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 316f341..7e99e68 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -113,6 +113,18 @@ create_op(xmlNode *parent, const char *prefix, const char *task, const char *int - crm_xml_add(xml_op, "name", task); - } - -+/*! -+ * \internal -+ * \brief Check whether cluster can manage resource inside container -+ * -+ * \param[in] data Container variant data -+ * -+ * \return TRUE if networking configuration is acceptable, FALSE otherwise -+ * -+ * \note The resource is manageable if an IP range or control port has been -+ * specified. If a control port is used without an IP range, replicas per -+ * host must be 1. -+ */ - static bool - valid_network(container_variant_data_t *data) - { -@@ -314,7 +326,7 @@ create_remote_resource( - resource_t *parent, container_variant_data_t *data, container_grouping_t *tuple, - pe_working_set_t * data_set) - { -- if(valid_network(data) && tuple->child) { -+ if (tuple->child && valid_network(data)) { - node_t *node = NULL; - xmlNode *xml_obj = NULL; - xmlNode *xml_remote = NULL; -@@ -573,11 +585,8 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - //crm_xml_add(xml_obj, XML_ATTR_ID, container_data->prefix); - add_node_copy(xml_resource, xml_obj); - -- /* } else if(xml_obj && container_data->ip_range_start) { */ -- /* xml_resource = copy_xml(xml_resource); */ -- - } else if(xml_obj) { -- pe_err("Cannot control %s inside container %s without a value for ip-range-start", -+ pe_err("Cannot control %s inside %s without either ip-range-start or control-port", - rsc->id, ID(xml_obj)); - return FALSE; - } --- -1.8.3.1 - - -From 88d4114345adf5abacc3bb1fbea3f3d5c28373fd Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 23 Mar 2017 17:16:02 -0500 -Subject: [PATCH 5/5] Low: liblrmd: remote_proxy_end_session() should be static - -Looks like that was intended but got lost in a merge ---- - include/crm_internal.h | 1 - - lib/lrmd/proxy_common.c | 2 +- - 2 files changed, 1 insertion(+), 2 deletions(-) - -diff --git a/include/crm_internal.h b/include/crm_internal.h -index cf0f32d..ab96b8f 100644 ---- a/include/crm_internal.h -+++ b/include/crm_internal.h -@@ -384,7 +384,6 @@ int remote_proxy_dispatch(const char *buffer, ssize_t length, gpointer userdata - void remote_proxy_disconnected(gpointer data); - void remote_proxy_free(gpointer data); - --void remote_proxy_end_session(remote_proxy_t *proxy); - void remote_proxy_relay_event(remote_proxy_t *proxy, xmlNode *msg); - void remote_proxy_relay_response(remote_proxy_t *proxy, xmlNode *msg, int msg_id); - -diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c -index 81796d4..67f310d 100644 ---- a/lib/lrmd/proxy_common.c -+++ b/lib/lrmd/proxy_common.c -@@ -100,7 +100,7 @@ remote_proxy_relay_response(remote_proxy_t *proxy, xmlNode *msg, int msg_id) - free_xml(response); - } - --void -+static void - remote_proxy_end_session(remote_proxy_t *proxy) - { - if (proxy == NULL) { --- -1.8.3.1 - diff --git a/SOURCES/045-bundle-logging.patch b/SOURCES/045-bundle-logging.patch deleted file mode 100644 index 43e5419..0000000 --- a/SOURCES/045-bundle-logging.patch +++ /dev/null @@ -1,209 +0,0 @@ -From ee02f542f8ea6e411a1802b3181735aad29b7e29 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 28 Mar 2017 19:48:29 -0500 -Subject: [PATCH 1/5] Test: tools: suppress valgrind warning for crm_failcount - -memory leak in bash ---- - valgrind-pcmk.suppressions | 26 ++++++++++++++++++++++++++ - 1 file changed, 26 insertions(+) - -diff --git a/valgrind-pcmk.suppressions b/valgrind-pcmk.suppressions -index a942f30..48eec9e 100644 ---- a/valgrind-pcmk.suppressions -+++ b/valgrind-pcmk.suppressions -@@ -29,6 +29,32 @@ - } - - { -+ Bash leak in cli regression testing -+ Memcheck:Leak -+ match-leak-kinds: definite -+ fun:malloc -+ fun:xmalloc -+ obj:/usr/bin/bash -+ fun:execute_command_internal -+ obj:/usr/bin/bash -+ fun:execute_command_internal -+ fun:parse_and_execute -+ fun:command_substitute -+ obj:/usr/bin/bash -+ obj:/usr/bin/bash -+ obj:/usr/bin/bash -+ fun:expand_string_assignment -+ obj:/usr/bin/bash -+ obj:/usr/bin/bash -+ obj:/usr/bin/bash -+ obj:/usr/bin/bash -+ fun:execute_command_internal -+ fun:execute_command_internal -+ fun:execute_command -+ fun:execute_command_internal -+} -+ -+{ - Ignore option parsing - Memcheck:Leak - fun:realloc --- -1.8.3.1 - - -From 4b08e8fc208bd1da2c0ce6d018ad32bb7e23f151 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 29 Mar 2017 17:34:08 -0500 -Subject: [PATCH 2/5] Fix: libpe_status: set id on correct tag for bundle clone - resource - ---- - lib/pengine/container.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 7e99e68..722e534 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -558,7 +558,7 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - crm_xml_set_id(xml_resource, "%s-%s", container_data->prefix, xml_resource->name); - - xml_set = create_xml_node(xml_resource, XML_TAG_META_SETS); -- crm_xml_set_id(xml_resource, "%s-%s-meta", container_data->prefix, xml_resource->name); -+ crm_xml_set_id(xml_set, "%s-%s-meta", container_data->prefix, xml_resource->name); - - create_nvp(xml_set, XML_RSC_ATTR_ORDERED, "true"); - --- -1.8.3.1 - - -From 4427c95a37da16128d1bf45c81c081ac2bde1250 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 30 Mar 2017 12:42:04 -0500 -Subject: [PATCH 3/5] Low: build: define constant for log directory - -This defines CRM_LOG_DIR for (by default) /var/log/pacemaker. This will be used -as the location for container logs, and (when we are ready to make a -significant user-visible change) eventually for the main pacemaker log. ---- - configure.ac | 4 ++++ - include/crm_config.h.in | 3 +++ - lib/common/logging.c | 4 ++++ - mcp/corosync.c | 7 +++++++ - 4 files changed, 18 insertions(+) - -diff --git a/configure.ac b/configure.ac -index 8ef503c..ee98f9b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1076,6 +1076,10 @@ CRM_STATE_DIR=${localstatedir}/run/crm - AC_DEFINE_UNQUOTED(CRM_STATE_DIR,"$CRM_STATE_DIR", Where to keep state files and sockets) - AC_SUBST(CRM_STATE_DIR) - -+CRM_LOG_DIR="${localstatedir}/log/pacemaker" -+AC_DEFINE_UNQUOTED(CRM_LOG_DIR,"$CRM_LOG_DIR", Where Pacemaker can store log files) -+AC_SUBST(CRM_LOG_DIR) -+ - CRM_PACEMAKER_DIR=${localstatedir}/lib/pacemaker - AC_DEFINE_UNQUOTED(CRM_PACEMAKER_DIR,"$CRM_PACEMAKER_DIR", Location to store directory produced by Pacemaker daemons) - AC_SUBST(CRM_PACEMAKER_DIR) -diff --git a/include/crm_config.h.in b/include/crm_config.h.in -index 30cec80..7eb01d4 100755 ---- a/include/crm_config.h.in -+++ b/include/crm_config.h.in -@@ -43,6 +43,9 @@ - - /****** Directories ******/ - -+/* Where Pacemaker can store log files */ -+#undef CRM_LOG_DIR -+ - /* Location for Pacemaker daemons */ - #undef CRM_DAEMON_DIR - -diff --git a/lib/common/logging.c b/lib/common/logging.c -index b608143..b9a1c80 100644 ---- a/lib/common/logging.c -+++ b/lib/common/logging.c -@@ -223,6 +223,10 @@ crm_add_logfile(const char *filename) - bool is_default = false; - static int default_fd = -1; - static gboolean have_logfile = FALSE; -+ -+ /* @COMPAT This should be CRM_LOG_DIR "/pacemaker.log". We aren't changing -+ * it yet because it will be a significant user-visible change to publicize. -+ */ - const char *default_logfile = "/var/log/pacemaker.log"; - - struct stat parent; -diff --git a/mcp/corosync.c b/mcp/corosync.c -index 975b93c..7502da7 100644 ---- a/mcp/corosync.c -+++ b/mcp/corosync.c -@@ -394,6 +394,13 @@ mcp_read_config(void) - free(debug_enabled); - } - -+ /* If the user didn't explicitly configure a Pacemaker log file, check -+ * whether they configured a heartbeat or corosync log file, and use that. -+ * -+ * @COMPAT This should all go away, and we should just rely on the logging -+ * set up by crm_log_init(). We aren't doing this yet because it is a -+ * significant user-visible change that will need to be publicized. -+ */ - const_value = daemon_option("debugfile"); - if (daemon_option("logfile")) { - /* File logging is already setup by crm_log_init() */ --- -1.8.3.1 - - -From eaa2f881fd7d52dd369a8daa1837a0977fa40d38 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 30 Mar 2017 15:05:24 -0500 -Subject: [PATCH 4/5] Low: libpe_status: change directory used for container - logs - ---- - lib/pengine/container.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 722e534..e052879 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -609,7 +609,7 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - container_data->mounts = g_list_append(container_data->mounts, mount); - - mount = calloc(1, sizeof(container_mount_t)); -- mount->source = strdup("/var/log/containers"); -+ mount->source = strdup(CRM_LOG_DIR "/bundles"); - mount->target = strdup("/var/log"); - mount->options = NULL; - mount->flags = 1; --- -1.8.3.1 - - -From c1eb528bc077839148405cd0cca08e8b6f20b98a Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 30 Mar 2017 15:05:37 -0500 -Subject: [PATCH 5/5] Low: logrotate: rotate pacemaker logs inside bundled - containers - ---- - extra/logrotate/pacemaker.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/extra/logrotate/pacemaker.in b/extra/logrotate/pacemaker.in -index d382433..2fae2bf 100644 ---- a/extra/logrotate/pacemaker.in -+++ b/extra/logrotate/pacemaker.in -@@ -1,4 +1,4 @@ --@localstatedir@/log/pacemaker.log { -+@localstatedir@/log/pacemaker.log @CRM_LOG_DIR@/bundles/*/pacemaker.log { - compress - dateext - weekly --- -1.8.3.1 - diff --git a/SOURCES/046-bundle-run-command.patch b/SOURCES/046-bundle-run-command.patch deleted file mode 100644 index 2e87736..0000000 --- a/SOURCES/046-bundle-run-command.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 5c25d7cae4de3d66792d90178c8b1f57a9cddf12 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 31 Mar 2017 11:41:52 +1100 -Subject: [PATCH] PE: Containers: Allow custom docker run commands - ---- - lib/pengine/container.c | 18 +++++++++++------- - lib/pengine/variant.h | 1 + - xml/resources-2.8.rng | 2 +- - 3 files changed, 13 insertions(+), 8 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index ed63b80..388dd88 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -222,6 +209,12 @@ create_docker_resource( - offset += snprintf(buffer+offset, max-offset, " --net=%s", data->docker_network); - } - -+ if(data->control_port) { -+ offset += snprintf(buffer+offset, max-offset, " -e PCMK_remote_port=%s", data->control_port); -+ } else { -+ offset += snprintf(buffer+offset, max-offset, " -e PCMK_remote_port=%d", DEFAULT_REMOTE_PORT); -+ } -+ - for(GListPtr pIter = data->mounts; pIter != NULL; pIter = pIter->next) { - container_mount_t *mount = pIter->data; - -@@ -276,15 +263,11 @@ create_docker_resource( - free(dbuffer); - - if(tuple->child) { -- char *command = NULL; -- -- if(data->control_port) { -- command = crm_strdup_printf(SBIN_DIR"/pacemaker_remoted -p %s", data->control_port); -+ if(data->docker_run_command) { -+ create_nvp(xml_obj, "run_cmd", data->docker_run_command); - } else { -- command = crm_strdup_printf(SBIN_DIR"/pacemaker_remoted -p %d", DEFAULT_REMOTE_PORT); -+ create_nvp(xml_obj, "run_cmd", SBIN_DIR"/pacemaker_remoted"); - } -- create_nvp(xml_obj, "run_cmd", command); -- free(command); - - /* TODO: Allow users to specify their own? - * -@@ -486,6 +470,7 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - clear_bit(rsc->flags, pe_rsc_unique); - } - -+ container_data->docker_run_command = crm_element_value_copy(xml_obj, "run-command"); - container_data->docker_run_options = crm_element_value_copy(xml_obj, "options"); - container_data->image = crm_element_value_copy(xml_obj, "image"); - container_data->docker_network = crm_element_value_copy(xml_obj, "network"); -@@ -886,6 +863,7 @@ container_free(resource_t * rsc) - free(container_data->ip_range_start); - free(container_data->docker_network); - free(container_data->docker_run_options); -+ free(container_data->docker_run_command); - free(container_data->docker_host_options); - - g_list_free_full(container_data->tuples, (GDestroyNotify)tuple_free); -diff --git a/lib/pengine/variant.h b/lib/pengine/variant.h -index aa2a1b7..c8fe159 100644 ---- a/lib/pengine/variant.h -+++ b/lib/pengine/variant.h -@@ -99,6 +99,7 @@ typedef struct container_variant_data_s { - char *ip_range_start; - char *docker_host_options; - char *docker_run_options; -+ char *docker_run_command; - - resource_t *child; - -diff --git a/xml/resources-2.8.rng b/xml/resources-2.8.rng -index 870e804..5c83e07 100644 ---- a/xml/resources-2.8.rng -+++ b/xml/resources-2.8.rng -@@ -84,6 +84,9 @@ - - - -+ -+ -+ - - - --- -1.8.3.1 - diff --git a/SOURCES/047-more-bundle-fixes.patch b/SOURCES/047-more-bundle-fixes.patch deleted file mode 100644 index d4686c1..0000000 --- a/SOURCES/047-more-bundle-fixes.patch +++ /dev/null @@ -1,492 +0,0 @@ -From a30e9fa6c209ad310bddc079c4afd14fb4876f4f Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 3 Apr 2017 15:33:24 -0500 -Subject: [PATCH 1/8] Fix: libpe_status: avoid memory leak when bundle resource - fails to unpack - ---- - lib/pengine/container.c | 31 ++++++++++++++++--------------- - 1 file changed, 16 insertions(+), 15 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 09113ae..cae62f0 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -599,10 +599,22 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - GListPtr childIter = NULL; - resource_t *new_rsc = NULL; - container_mount_t *mount = NULL; -- container_port_t *port = calloc(1, sizeof(container_port_t)); -+ container_port_t *port = NULL; - - int offset = 0, max = 1024; -- char *buffer = calloc(1, max+1); -+ char *buffer = NULL; -+ -+ if (common_unpack(xml_resource, &new_rsc, rsc, data_set) == FALSE) { -+ pe_err("Failed unpacking resource %s", ID(rsc->xml)); -+ if (new_rsc != NULL && new_rsc->fns != NULL) { -+ new_rsc->fns->free(new_rsc); -+ } -+ return FALSE; -+ } -+ -+ container_data->child = new_rsc; -+ container_data->child->orig_xml = xml_obj; // Also the trigger for common_free() -+ // to free xml_resource as container_data->child->xml - - mount = calloc(1, sizeof(container_mount_t)); - mount->source = strdup(DEFAULT_REMOTE_KEY_LOCATION); -@@ -618,27 +630,16 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - mount->flags = 1; - container_data->mounts = g_list_append(container_data->mounts, mount); - -+ port = calloc(1, sizeof(container_port_t)); - if(container_data->control_port) { - port->source = strdup(container_data->control_port); - } else { - port->source = crm_itoa(DEFAULT_REMOTE_PORT); - } -- - port->target = strdup(port->source); - container_data->ports = g_list_append(container_data->ports, port); - -- if (common_unpack(xml_resource, &new_rsc, rsc, data_set) == FALSE) { -- pe_err("Failed unpacking resource %s", crm_element_value(rsc->xml, XML_ATTR_ID)); -- if (new_rsc != NULL && new_rsc->fns != NULL) { -- new_rsc->fns->free(new_rsc); -- } -- return FALSE; -- } -- -- container_data->child = new_rsc; -- container_data->child->orig_xml = xml_obj; // Also the trigger for common_free() -- // to free xml_resource as container_data->child->xml -- -+ buffer = calloc(1, max+1); - for(childIter = container_data->child->children; childIter != NULL; childIter = childIter->next) { - container_grouping_t *tuple = calloc(1, sizeof(container_grouping_t)); - tuple->child = childIter->data; --- -1.8.3.1 - - -From 21ed491adc82fd04b39bc2d6035527b1514e99f4 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 3 Apr 2017 15:40:56 -0500 -Subject: [PATCH 2/8] Refactor: libpe_status: remove dead code - -died in 09f233dd ---- - lib/pengine/unpack.c | 5 ----- - 1 file changed, 5 deletions(-) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index ef51cd5..6aa51dd 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -637,7 +637,6 @@ gboolean - unpack_remote_nodes(xmlNode * xml_resources, pe_working_set_t * data_set) - { - xmlNode *xml_obj = NULL; -- GHashTable *rsc_name_check = NULL; - - /* generate remote nodes from resource config before unpacking resources */ - for (xml_obj = __xml_first_child(xml_resources); xml_obj != NULL; xml_obj = __xml_next_element(xml_obj)) { -@@ -691,10 +690,6 @@ unpack_remote_nodes(xmlNode * xml_resources, pe_working_set_t * data_set) - } - } - } -- if (rsc_name_check) { -- g_hash_table_destroy(rsc_name_check); -- } -- - return TRUE; - } - --- -1.8.3.1 - - -From 3093687bc307b0a554ba5837d28ca1fc11f22935 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 3 Apr 2017 15:43:55 -0500 -Subject: [PATCH 3/8] Low: pengine: ensure other container in constraint has - Docker info - -Not really necessary, but makes static analysis happy ---- - pengine/container.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/pengine/container.c b/pengine/container.c -index 1623861..3da19aa 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -313,13 +313,16 @@ container_create_probe(resource_t * rsc, node_t * node, action_t * complete, - * Partly this is to ensure that replicas_per_host is - * observed, but also to ensure that the containers - * don't fail to start because the necessary port -- * mappings (which wont include an IP for uniqueness) -+ * mappings (which won't include an IP for uniqueness) - * are already taken - */ - - for (GListPtr tIter = container_data->tuples; tIter != NULL && container_data->replicas_per_host == 1; tIter = tIter->next) { - container_grouping_t *other = (container_grouping_t *)tIter->data; -- if(other != tuple) { -+ -+ if ((other != tuple) && (other != NULL) -+ && (other->docker != NULL)) { -+ - custom_action_order(tuple->docker, generate_op_key(tuple->docker->id, RSC_STATUS, 0), NULL, - other->docker, generate_op_key(other->docker->id, RSC_START, 0), NULL, - pe_order_optional, data_set); --- -1.8.3.1 - - -From 50399650dbd6425218638cef32c77f02a0807472 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 3 Apr 2017 15:46:01 -0500 -Subject: [PATCH 4/8] Low: libpe_status: ensure resource is not NULL - -not really necessary, but makes static analysis happy ---- - lib/pengine/container.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index cae62f0..2a60e4c 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -440,6 +440,7 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - xmlNode *xml_resource = NULL; - container_variant_data_t *container_data = NULL; - -+ CRM_ASSERT(rsc != NULL); - pe_rsc_trace(rsc, "Processing resource %s...", rsc->id); - - container_data = calloc(1, sizeof(container_variant_data_t)); --- -1.8.3.1 - - -From a755fb0a64873c16aac9924d95b0c2bdb13f5065 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 3 Apr 2017 16:52:54 -0500 -Subject: [PATCH 5/8] Low: libpe_status: improve container print functions - ---- - lib/pengine/container.c | 92 ++++++++++++++++++++++++++++++------------------- - 1 file changed, 56 insertions(+), 36 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 2a60e4c..2af2558 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -716,6 +716,21 @@ find_container_child(const char *stem, resource_t * rsc, node_t *node) - } - - static void -+print_rsc_in_list(resource_t *rsc, const char *pre_text, long options, -+ void *print_data) -+{ -+ if (rsc != NULL) { -+ if (options & pe_print_html) { -+ status_print("
  • "); -+ } -+ rsc->fns->print(rsc, pre_text, options, print_data); -+ if (options & pe_print_html) { -+ status_print("
  • \n"); -+ } -+ } -+} -+ -+static void - container_print_xml(resource_t * rsc, const char *pre_text, long options, void *print_data) - { - container_variant_data_t *container_data = NULL; -@@ -725,39 +740,31 @@ container_print_xml(resource_t * rsc, const char *pre_text, long options, void * - if (pre_text == NULL) { - pre_text = ""; - } -- child_text = crm_concat(pre_text, " ", ' '); -+ child_text = crm_concat(pre_text, " ", ' '); - -- status_print("%sid); -+ status_print("type=\"docker\" "); -+ status_print("image=\"%s\" ", container_data->image); -+ status_print("unique=\"%s\" ", is_set(rsc->flags, pe_rsc_unique)? "true" : "false"); - status_print("managed=\"%s\" ", is_set(rsc->flags, pe_rsc_managed) ? "true" : "false"); - status_print("failed=\"%s\" ", is_set(rsc->flags, pe_rsc_failed) ? "true" : "false"); - status_print(">\n"); - -- get_container_variant_data(container_data, rsc); -- -- status_print("%sDocker container: %s [%s]%s%s", -- pre_text, rsc->id, container_data->image, -- is_set(rsc->flags, pe_rsc_unique) ? " (unique)" : "", -- is_set(rsc->flags, pe_rsc_managed) ? "" : " (unmanaged)"); -- - for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - - CRM_ASSERT(tuple); -- if(tuple->ip) { -- tuple->ip->fns->print(tuple->ip, child_text, options, print_data); -- } -- if(tuple->child) { -- tuple->child->fns->print(tuple->child, child_text, options, print_data); -- } -- if(tuple->docker) { -- tuple->docker->fns->print(tuple->docker, child_text, options, print_data); -- } -- if(tuple->remote) { -- tuple->remote->fns->print(tuple->remote, child_text, options, print_data); -- } -- } -- status_print("%s\n", pre_text); -+ status_print("%s \n", pre_text, tuple->offset); -+ print_rsc_in_list(tuple->ip, child_text, options, print_data); -+ print_rsc_in_list(tuple->child, child_text, options, print_data); -+ print_rsc_in_list(tuple->docker, child_text, options, print_data); -+ print_rsc_in_list(tuple->remote, child_text, options, print_data); -+ status_print("%s \n", pre_text); -+ } -+ status_print("%s\n", pre_text); - free(child_text); - } - -@@ -809,37 +816,50 @@ container_print(resource_t * rsc, const char *pre_text, long options, void *prin - pre_text = " "; - } - -- child_text = crm_strdup_printf(" %s", pre_text); - status_print("%sDocker container%s: %s [%s]%s%s\n", - pre_text, container_data->replicas>1?" set":"", rsc->id, container_data->image, - is_set(rsc->flags, pe_rsc_unique) ? " (unique)" : "", - is_set(rsc->flags, pe_rsc_managed) ? "" : " (unmanaged)"); -+ if (options & pe_print_html) { -+ status_print("
    \n
      \n"); -+ } -+ - - for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - - CRM_ASSERT(tuple); -+ if (options & pe_print_html) { -+ status_print("
    • "); -+ } -+ - if(is_set(options, pe_print_clone_details)) { -+ child_text = crm_strdup_printf(" %s", pre_text); - if(g_list_length(container_data->tuples) > 1) { - status_print(" %sReplica[%d]\n", pre_text, tuple->offset); - } -- -- if(tuple->ip) { -- tuple->ip->fns->print(tuple->ip, child_text, options, print_data); -- } -- if(tuple->docker) { -- tuple->docker->fns->print(tuple->docker, child_text, options, print_data); -- } -- if(tuple->remote) { -- tuple->remote->fns->print(tuple->remote, child_text, options, print_data); -+ if (options & pe_print_html) { -+ status_print("
      \n
        \n"); - } -- if(tuple->child) { -- tuple->child->fns->print(tuple->child, child_text, options, print_data); -+ print_rsc_in_list(tuple->ip, child_text, options, print_data); -+ print_rsc_in_list(tuple->docker, child_text, options, print_data); -+ print_rsc_in_list(tuple->remote, child_text, options, print_data); -+ print_rsc_in_list(tuple->child, child_text, options, print_data); -+ if (options & pe_print_html) { -+ status_print("
      \n"); - } - } else { -- char *child_text = crm_strdup_printf("%s ", pre_text); -+ child_text = crm_strdup_printf("%s ", pre_text); - tuple_print(tuple, child_text, options, print_data); - } -+ free(child_text); -+ -+ if (options & pe_print_html) { -+ status_print("
    • \n"); -+ } -+ } -+ if (options & pe_print_html) { -+ status_print("
    \n"); - } - } - --- -1.8.3.1 - - -From 1302b775b8bc4913b894081707f9ad386402d25d Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 3 Apr 2017 17:06:06 -0500 -Subject: [PATCH 6/8] Low: tools: update crm_mon RNG schema for bundles - ---- - xml/crm_mon.rng | 26 ++++++++++++++++++++++++++ - 1 file changed, 26 insertions(+) - -diff --git a/xml/crm_mon.rng b/xml/crm_mon.rng -index 653c15e..731c118 100644 ---- a/xml/crm_mon.rng -+++ b/xml/crm_mon.rng -@@ -241,6 +241,9 @@ - - - -+ -+ -+ - -
    - -@@ -298,4 +301,27 @@ -
    -
    - -+ -+ -+ -+ -+ -+ docker -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - --- -1.8.3.1 - - -From 3b5f0f58bae3b2764222eede878da5801336b2c9 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 3 Apr 2017 18:21:19 -0500 -Subject: [PATCH 7/8] Fix: libpe_status: run-command should apply even without - a primitive - ---- - lib/pengine/container.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 2af2558..9c59be6 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -301,6 +301,10 @@ create_docker_resource( - * create_nvp(xml_obj, "monitor_cmd", "/usr/libexec/pacemaker/lrmd_internal_ctl -c poke"); - */ - } else { -+ if(data->docker_run_command) { -+ create_nvp(xml_obj, "run_cmd", data->docker_run_command); -+ } -+ - /* TODO: Allow users to specify their own? - * - * We don't know what's in the container, so we just want --- -1.8.3.1 - - -From 75b29dee7fa4adf0141f8932b060392a238adbc7 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 3 Apr 2017 17:44:03 -0500 -Subject: [PATCH 8/8] Fix: libpe_status: implement active check for bundles - ---- - lib/pengine/container.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 49 insertions(+), 1 deletion(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 9c59be6..b93d98f 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -683,10 +683,58 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - return TRUE; - } - -+static int -+tuple_rsc_active(resource_t *rsc, gboolean all) -+{ -+ if (rsc) { -+ gboolean child_active = rsc->fns->active(rsc, all); -+ -+ if (child_active && !all) { -+ return TRUE; -+ } else if (!child_active && all) { -+ return FALSE; -+ } -+ } -+ return -1; -+} -+ - gboolean - container_active(resource_t * rsc, gboolean all) - { -- return TRUE; -+ container_variant_data_t *container_data = NULL; -+ GListPtr iter = NULL; -+ -+ get_container_variant_data(container_data, rsc); -+ for (iter = container_data->tuples; iter != NULL; iter = iter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)(iter->data); -+ int rsc_active; -+ -+ rsc_active = tuple_rsc_active(tuple->ip, all); -+ if (rsc_active >= 0) { -+ return (gboolean) rsc_active; -+ } -+ -+ rsc_active = tuple_rsc_active(tuple->child, all); -+ if (rsc_active >= 0) { -+ return (gboolean) rsc_active; -+ } -+ -+ rsc_active = tuple_rsc_active(tuple->docker, all); -+ if (rsc_active >= 0) { -+ return (gboolean) rsc_active; -+ } -+ -+ rsc_active = tuple_rsc_active(tuple->remote, all); -+ if (rsc_active >= 0) { -+ return (gboolean) rsc_active; -+ } -+ } -+ -+ /* If "all" is TRUE, we've already checked that no resources were inactive, -+ * so return TRUE; if "all" is FALSE, we didn't find any active resources, -+ * so return FALSE. -+ */ -+ return all; - } - - resource_t * --- -1.8.3.1 - diff --git a/SOURCES/048-bundle-hostname.patch b/SOURCES/048-bundle-hostname.patch deleted file mode 100644 index 3d0ded3..0000000 --- a/SOURCES/048-bundle-hostname.patch +++ /dev/null @@ -1,146 +0,0 @@ -From b30af11ddd465a299cf1bd66cc3c42a1ce741368 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 4 Apr 2017 16:22:03 -0500 -Subject: [PATCH 1/4] Log: libcrmcommon: more useful message if can't open dump - file - -also avoids a static analysis false positive ---- - lib/common/schemas.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/lib/common/schemas.c b/lib/common/schemas.c -index f1a0238..055d141 100644 ---- a/lib/common/schemas.c -+++ b/lib/common/schemas.c -@@ -553,7 +553,10 @@ dump_file(const char *filename) - CRM_CHECK(filename != NULL, return); - - fp = fopen(filename, "r"); -- CRM_CHECK(fp != NULL, return); -+ if (fp == NULL) { -+ crm_perror(LOG_ERR, "Could not open %s for reading", filename); -+ return; -+ } - - fprintf(stderr, "%4d ", ++line); - do { --- -1.8.3.1 - - -From 9d912a09ca730b9fa9612de850839a2340aeb6d0 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 4 Apr 2017 16:27:47 -0500 -Subject: [PATCH 2/4] Low: libpe_status: only set container hostname if have IP - ---- - lib/pengine/container.c | 13 +++++++++++-- - 1 file changed, 11 insertions(+), 2 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index b93d98f..127b144 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -214,8 +214,17 @@ create_docker_resource( - create_nvp(xml_obj, "force_kill", "false"); - create_nvp(xml_obj, "reuse", "false"); - -- offset += snprintf(buffer+offset, max-offset, "-h %s-%d --restart=no ", -- data->prefix, tuple->offset); -+ offset += snprintf(buffer+offset, max-offset, " --restart=no"); -+ -+ /* Set a container hostname only if we have an IP to map it to. -+ * The user can set -h or --uts=host themselves if they want a nicer -+ * name for logs, but this makes applications happy who need their -+ * hostname to match the IP they bind to. -+ */ -+ if (data->ip_range_start != NULL) { -+ offset += snprintf(buffer+offset, max-offset, " -h %s-%d", -+ data->prefix, tuple->offset); -+ } - - if(data->docker_network) { - // offset += snprintf(buffer+offset, max-offset, " --link-local-ip=%s", tuple->ipaddr); --- -1.8.3.1 - - -From ff8813761d1024de2bba3d813e3e8aacc698bb54 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 4 Apr 2017 16:44:20 -0500 -Subject: [PATCH 3/4] Fix: crmd: don't abandon fencing after one "no devices" - failure - ---- - crmd/te_callbacks.c | 7 ------- - 1 file changed, 7 deletions(-) - -diff --git a/crmd/te_callbacks.c b/crmd/te_callbacks.c -index ff0a664..6c0670c 100644 ---- a/crmd/te_callbacks.c -+++ b/crmd/te_callbacks.c -@@ -633,7 +633,6 @@ process_te_message(xmlNode * msg, xmlNode * xml_data) - GHashTable *stonith_failures = NULL; - struct st_fail_rec { - int count; -- int last_rc; - }; - - gboolean -@@ -639,9 +638,6 @@ too_many_st_failures(void) - if (value->count > 10) { - crm_notice("Too many failures to fence %s (%d), giving up", key, value->count); - return TRUE; -- } else if (value->last_rc == -ENODEV) { -- crm_notice("No devices found in cluster to fence %s, giving up", key); -- return TRUE; - } - } - return FALSE; -@@ -671,7 +667,6 @@ st_fail_count_reset(const char *target) - - if (rec) { - rec->count = 0; -- rec->last_rc = 0; - } - } - -@@ -697,8 +692,6 @@ st_fail_count_increment(const char *target, int rc) - rec->count = 1; - g_hash_table_insert(stonith_failures, strdup(target), rec); - } -- rec->last_rc = rc; -- - } - - void --- -1.8.3.1 - - -From bf4eda2d233f40795ff4141aad8985f0da5a7b0b Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 4 Apr 2017 17:55:59 -0500 -Subject: [PATCH 4/4] Test: make new valgrind suppression compatible with older - versions - ---- - valgrind-pcmk.suppressions | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/valgrind-pcmk.suppressions b/valgrind-pcmk.suppressions -index 48eec9e..33d3b06 100644 ---- a/valgrind-pcmk.suppressions -+++ b/valgrind-pcmk.suppressions -@@ -31,7 +31,6 @@ - { - Bash leak in cli regression testing - Memcheck:Leak -- match-leak-kinds: definite - fun:malloc - fun:xmalloc - obj:/usr/bin/bash --- -1.8.3.1 - diff --git a/SOURCES/049-stonith-max-attempts.patch b/SOURCES/049-stonith-max-attempts.patch deleted file mode 100644 index 72f4379..0000000 --- a/SOURCES/049-stonith-max-attempts.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 52153c502ad12c723231f5c7cb80d50a5d0691cd Mon Sep 17 00:00:00 2001 -From: aravind-kumar -Date: Wed, 15 Mar 2017 22:46:42 +0530 -Subject: [PATCH] new cluster option stonith-max-attempts with default value - 10, number of retry attempts to be made before giving up - ---- - crmd/te_callbacks.c | 14 +++++++++++++- - crmd/te_callbacks.h | 2 ++ - 2 files changed, 31 insertions(+), 1 deletion(-) - -diff --git a/crmd/te_callbacks.c b/crmd/te_callbacks.c -index 4c86bde..ff0a664 100644 ---- a/crmd/te_callbacks.c -+++ b/crmd/te_callbacks.c -@@ -37,6 +37,8 @@ gboolean shuttingdown = FALSE; - crm_graph_t *transition_graph; - crm_trigger_t *transition_trigger = NULL; - -+static unsigned long int stonith_max_attempts = 10; -+ - /* #define rsc_op_template "//"XML_TAG_DIFF_ADDED"//"XML_TAG_CIB"//"XML_CIB_TAG_STATE"[@uname='%s']"//"XML_LRM_TAG_RSC_OP"[@id='%s]" */ - #define rsc_op_template "//"XML_TAG_DIFF_ADDED"//"XML_TAG_CIB"//"XML_LRM_TAG_RSC_OP"[@id='%s']" - -@@ -53,6 +55,16 @@ get_node_id(xmlNode * rsc_op) - return ID(node); - } - -+void -+update_stonith_max_attempts(const char* value) -+{ -+ if (safe_str_eq(value, INFINITY_S)) { -+ stonith_max_attempts = node_score_infinity; -+ } -+ else { -+ stonith_max_attempts = crm_int_helper(value, NULL); -+ } -+} - static void - te_legacy_update_diff(const char *event, xmlNode * diff) - { -@@ -637,7 +649,7 @@ too_many_st_failures(void) - - g_hash_table_iter_init(&iter, stonith_failures); - while (g_hash_table_iter_next(&iter, (gpointer *) & key, (gpointer *) & value)) { -- if (value->count > 10) { -+ if (value->count > stonith_max_attempts ) { - crm_notice("Too many failures to fence %s (%d), giving up", key, value->count); - return TRUE; - } -diff --git a/crmd/te_callbacks.h b/crmd/te_callbacks.h -index a87d72c..64a5cf5 100644 ---- a/crmd/te_callbacks.h -+++ b/crmd/te_callbacks.h -@@ -33,4 +33,6 @@ extern void te_update_diff(const char *event, xmlNode * msg); - - extern void tengine_stonith_callback(stonith_t * stonith, stonith_callback_data_t * data); - -+void update_stonith_max_attempts(const char* value); -+ - #endif diff --git a/SOURCES/050-stonith-fail-handling.patch b/SOURCES/050-stonith-fail-handling.patch deleted file mode 100644 index 76f7ca1..0000000 --- a/SOURCES/050-stonith-fail-handling.patch +++ /dev/null @@ -1,1020 +0,0 @@ -From b005b4f2809020304862000326b22cded7b14377 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 6 Apr 2017 15:51:47 -0500 -Subject: [PATCH 01/13] Fix: libpe_status: guest nodes from bundles may have - attributes - -Previously, if a guest node created by a bundle had a node attribute, -pe_create_node() would get called twice, once when parsing the entry and -once when parsing the , resulting in any bundle primitive being unable -to run. ---- - lib/pengine/container.c | 15 ++++++++++++--- - 1 file changed, 12 insertions(+), 3 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 127b144..054ef5f 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -390,9 +390,18 @@ create_remote_resource( - - // tuple->docker->fillers = g_list_append(tuple->docker->fillers, child); - -- // -INFINITY prevents anyone else from running here -- node = pe_create_node(strdup(nodeid), nodeid, "remote", "-INFINITY", -- data_set); -+ /* Ensure a node has been created for the guest (it may have already -+ * been, if it has a permanent node attribute), and ensure its weight is -+ * -INFINITY so no other resources can run on it. -+ */ -+ node = pe_find_node(data_set->nodes, nodeid); -+ if (node == NULL) { -+ node = pe_create_node(strdup(nodeid), nodeid, "remote", "-INFINITY", -+ data_set); -+ } else { -+ node->weight = -INFINITY; -+ } -+ - tuple->node = node_copy(node); - tuple->node->weight = 500; - nodeid = NULL; --- -1.8.3.1 - - -From 7b89ff8b65fcdcad55676578361080eb23edb3e4 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 6 Apr 2017 16:56:52 -0500 -Subject: [PATCH 02/13] Low: fencing: ignore empty 'action' parameter in fence - devices - -This makes the fix in 9c0c3d6 more comprehensive. ---- - fencing/commands.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/fencing/commands.c b/fencing/commands.c -index b4e6eb5..deec050 100644 ---- a/fencing/commands.c -+++ b/fencing/commands.c -@@ -829,7 +829,10 @@ xml2device_params(const char *name, xmlNode *dev) - crm_warn("%s has '%s' parameter, which should never be specified in configuration", - name, STONITH_ATTR_ACTION_OP); - -- if (strcmp(value, "reboot") == 0) { -+ if (*value == '\0') { -+ crm_warn("Ignoring empty '%s' parameter", STONITH_ATTR_ACTION_OP); -+ -+ } else if (strcmp(value, "reboot") == 0) { - crm_warn("Ignoring %s='reboot' (see stonith-action cluster property instead)", - STONITH_ATTR_ACTION_OP); - --- -1.8.3.1 - - -From 100dd5fda476ef526ac1964260252b30864d5ca7 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 7 Apr 2017 16:51:29 -0500 -Subject: [PATCH 03/13] Fix: crmd: check for too many stonith failures only - when aborting for that reason - -Previously, crmd would check for too many stonith failures whenever aborting -a transition. This would lead to a new transition not being triggered when -aborting for some other unrelated reason, such as a configuration change. - -Now, crmd checks for too many stonith failures only when aborting due to a new -stonith failure. ---- - crmd/crmd_utils.h | 2 +- - crmd/te_actions.c | 12 ++++-------- - crmd/te_callbacks.c | 24 ++++++++++++++++++++++-- - crmd/te_utils.c | 2 +- - 4 files changed, 28 insertions(+), 12 deletions(-) - -diff --git a/crmd/crmd_utils.h b/crmd/crmd_utils.h -index a1aaad3..d2f8eb2 100644 ---- a/crmd/crmd_utils.h -+++ b/crmd/crmd_utils.h -@@ -100,8 +100,8 @@ int crmd_join_phase_count(enum crm_join_phase phase); - void crmd_join_phase_log(int level); - - const char *get_timer_desc(fsa_timer_t * timer); --gboolean too_many_st_failures(void); - void st_fail_count_reset(const char * target); -+void abort_for_stonith_failure(xmlNode *reason); - void crmd_peer_down(crm_node_t *peer, bool full); - - /* Convenience macro for registering a CIB callback -diff --git a/crmd/te_actions.c b/crmd/te_actions.c -index a8ad86f..66dd16e 100644 ---- a/crmd/te_actions.c -+++ b/crmd/te_actions.c -@@ -726,15 +726,11 @@ notify_crmd(crm_graph_t * graph) - case tg_restart: - type = "restart"; - if (fsa_state == S_TRANSITION_ENGINE) { -- if (too_many_st_failures() == FALSE) { -- if (transition_timer->period_ms > 0) { -- crm_timer_stop(transition_timer); -- crm_timer_start(transition_timer); -- } else { -- event = I_PE_CALC; -- } -+ if (transition_timer->period_ms > 0) { -+ crm_timer_stop(transition_timer); -+ crm_timer_start(transition_timer); - } else { -- event = I_TE_SUCCESS; -+ event = I_PE_CALC; - } - - } else if (fsa_state == S_POLICY_ENGINE) { -diff --git a/crmd/te_callbacks.c b/crmd/te_callbacks.c -index 6c0670c..a0aa081 100644 ---- a/crmd/te_callbacks.c -+++ b/crmd/te_callbacks.c -@@ -635,7 +635,7 @@ struct st_fail_rec { - int count; - }; - --gboolean -+static gboolean - too_many_st_failures(void) - { - GHashTableIter iter; -@@ -694,6 +694,26 @@ st_fail_count_increment(const char *target, int rc) - } - } - -+/*! -+ * \internal -+ * \brief Abort transition due to stonith failure -+ * -+ * \param[in] reason Failed stonith action XML, or NULL -+ */ -+void -+abort_for_stonith_failure(xmlNode *reason) -+{ -+ enum transition_action abort_action = tg_restart; -+ -+ /* If stonith repeatedly fails, we eventually give up on starting a new -+ * transition for that reason. -+ */ -+ if (too_many_st_failures()) { -+ abort_action = tg_stop; -+ } -+ abort_transition(INFINITY, abort_action, "Stonith failed", reason); -+} -+ - void - tengine_stonith_callback(stonith_t * stonith, stonith_callback_data_t * data) - { -@@ -759,7 +779,7 @@ tengine_stonith_callback(stonith_t * stonith, stonith_callback_data_t * data) - action->failed = TRUE; - crm_notice("Stonith operation %d for %s failed (%s): aborting transition.", - call_id, target, pcmk_strerror(rc)); -- abort_transition(INFINITY, tg_restart, "Stonith failed", NULL); -+ abort_for_stonith_failure(NULL); - st_fail_count_increment(target, rc); - } - -diff --git a/crmd/te_utils.c b/crmd/te_utils.c -index 3b67afe..4603307 100644 ---- a/crmd/te_utils.c -+++ b/crmd/te_utils.c -@@ -162,7 +162,7 @@ fail_incompletable_stonith(crm_graph_t * graph) - - if (last_action != NULL) { - crm_warn("STONITHd failure resulted in un-runnable actions"); -- abort_transition(INFINITY, tg_restart, "Stonith failure", last_action); -+ abort_for_stonith_failure(last_action); - return TRUE; - } - --- -1.8.3.1 - - -From 3c49a1cf86cb819eca18c841661d90fa65bcb185 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 7 Apr 2017 21:03:31 -0500 -Subject: [PATCH 04/13] Low: crmd: consider target when checking stonith - failures - -Previously, if the crmd aborted a transition due to failure to fence a -particular node, a new transition would not be started if *any* node had -been fenced too many times. Now, only failures of the particular target are -checked in that situation. ---- - crmd/crmd_utils.h | 2 +- - crmd/te_callbacks.c | 33 +++++++++++++++++++++++---------- - crmd/te_utils.c | 2 +- - 3 files changed, 25 insertions(+), 12 deletions(-) - -diff --git a/crmd/crmd_utils.h b/crmd/crmd_utils.h -index d2f8eb2..f0289d4 100644 ---- a/crmd/crmd_utils.h -+++ b/crmd/crmd_utils.h -@@ -101,7 +101,7 @@ void crmd_join_phase_log(int level); - - const char *get_timer_desc(fsa_timer_t * timer); - void st_fail_count_reset(const char * target); --void abort_for_stonith_failure(xmlNode *reason); -+void abort_for_stonith_failure(const char *target, xmlNode *reason); - void crmd_peer_down(crm_node_t *peer, bool full); - - /* Convenience macro for registering a CIB callback -diff --git a/crmd/te_callbacks.c b/crmd/te_callbacks.c -index a0aa081..6e306fd 100644 ---- a/crmd/te_callbacks.c -+++ b/crmd/te_callbacks.c -@@ -636,7 +636,7 @@ struct st_fail_rec { - }; - - static gboolean --too_many_st_failures(void) -+too_many_st_failures(const char *target) - { - GHashTableIter iter; - const char *key = NULL; -@@ -646,14 +646,26 @@ too_many_st_failures(void) - return FALSE; - } - -- g_hash_table_iter_init(&iter, stonith_failures); -- while (g_hash_table_iter_next(&iter, (gpointer *) & key, (gpointer *) & value)) { -- if (value->count > stonith_max_attempts ) { -- crm_notice("Too many failures to fence %s (%d), giving up", key, value->count); -- return TRUE; -+ if (target == NULL) { -+ g_hash_table_iter_init(&iter, stonith_failures); -+ while (g_hash_table_iter_next(&iter, (gpointer *) & key, (gpointer *) & value)) { -+ if (value->count > stonith_max_attempts) { -+ target = (const char*)key; -+ goto too_many; -+ } -+ } -+ } else { -+ value = g_hash_table_lookup(stonith_failures, target); -+ if ((value != NULL) && (value->count > stonith_max_attempts)) { -+ goto too_many; - } - } - return FALSE; -+ -+too_many: -+ crm_warn("Too many failures (%d) to fence %s, giving up", -+ value->count, target); -+ return TRUE; - } - - void -@@ -698,17 +710,18 @@ st_fail_count_increment(const char *target, int rc) - * \internal - * \brief Abort transition due to stonith failure - * -- * \param[in] reason Failed stonith action XML, or NULL -+ * \param[in] target Don't restart if this (NULL for any) has too many failures -+ * \param[in] reason Log this stonith action XML as abort reason (or NULL) - */ - void --abort_for_stonith_failure(xmlNode *reason) -+abort_for_stonith_failure(const char *target, xmlNode *reason) - { - enum transition_action abort_action = tg_restart; - - /* If stonith repeatedly fails, we eventually give up on starting a new - * transition for that reason. - */ -- if (too_many_st_failures()) { -+ if (too_many_st_failures(target)) { - abort_action = tg_stop; - } - abort_transition(INFINITY, abort_action, "Stonith failed", reason); -@@ -779,7 +792,7 @@ tengine_stonith_callback(stonith_t * stonith, stonith_callback_data_t * data) - action->failed = TRUE; - crm_notice("Stonith operation %d for %s failed (%s): aborting transition.", - call_id, target, pcmk_strerror(rc)); -- abort_for_stonith_failure(NULL); -+ abort_for_stonith_failure(target, NULL); - st_fail_count_increment(target, rc); - } - -diff --git a/crmd/te_utils.c b/crmd/te_utils.c -index 4603307..66b0883 100644 ---- a/crmd/te_utils.c -+++ b/crmd/te_utils.c -@@ -162,7 +162,7 @@ fail_incompletable_stonith(crm_graph_t * graph) - - if (last_action != NULL) { - crm_warn("STONITHd failure resulted in un-runnable actions"); -- abort_for_stonith_failure(last_action); -+ abort_for_stonith_failure(NULL, last_action); - return TRUE; - } - --- -1.8.3.1 - - -From 0c43785dad9be38566cccce677c54da42ff2c691 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 10 Apr 2017 14:22:45 -0500 -Subject: [PATCH 05/13] Fix: crmd: forget stonith failures when forgetting node - ---- - crmd/messages.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/crmd/messages.c b/crmd/messages.c -index c79d96e..4307fca 100644 ---- a/crmd/messages.c -+++ b/crmd/messages.c -@@ -870,6 +870,12 @@ handle_request(xmlNode * stored_msg, enum crmd_fsa_cause cause) - - } else { - reap_crm_member(id, name); -+ -+ /* If we're forgetting this node, also forget any failures to fence -+ * it, so we don't carry that over to any node added later with the -+ * same name. -+ */ -+ st_fail_count_reset(name); - } - - } else if (strcmp(op, CRM_OP_MAINTENANCE_NODES) == 0) { --- -1.8.3.1 - - -From 515424f01b8ac5eb8705cecb26a60e17de3a7df6 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 10 Apr 2017 15:23:46 -0500 -Subject: [PATCH 06/13] Fix: crmd: track stonith fail counts on all nodes - -Previously, the stonith fail count was incremented in -tengine_stonith_callback(), which is called only on the DC. Now, it is -incremented in tengine_stonith_notify() instead, which is called on all nodes, -ensuring the count is correct when a new node takes over DC. ---- - crmd/crmd_utils.h | 1 + - crmd/te_callbacks.c | 5 ++--- - crmd/te_utils.c | 9 ++++++--- - 3 files changed, 9 insertions(+), 6 deletions(-) - -diff --git a/crmd/crmd_utils.h b/crmd/crmd_utils.h -index f0289d4..fd8fe76 100644 ---- a/crmd/crmd_utils.h -+++ b/crmd/crmd_utils.h -@@ -101,6 +101,7 @@ void crmd_join_phase_log(int level); - - const char *get_timer_desc(fsa_timer_t * timer); - void st_fail_count_reset(const char * target); -+void st_fail_count_increment(const char *target); - void abort_for_stonith_failure(const char *target, xmlNode *reason); - void crmd_peer_down(crm_node_t *peer, bool full); - -diff --git a/crmd/te_callbacks.c b/crmd/te_callbacks.c -index 6e306fd..aa4a141 100644 ---- a/crmd/te_callbacks.c -+++ b/crmd/te_callbacks.c -@@ -682,8 +682,8 @@ st_fail_count_reset(const char *target) - } - } - --static void --st_fail_count_increment(const char *target, int rc) -+void -+st_fail_count_increment(const char *target) - { - struct st_fail_rec *rec = NULL; - -@@ -793,7 +793,6 @@ tengine_stonith_callback(stonith_t * stonith, stonith_callback_data_t * data) - crm_notice("Stonith operation %d for %s failed (%s): aborting transition.", - call_id, target, pcmk_strerror(rc)); - abort_for_stonith_failure(target, NULL); -- st_fail_count_increment(target, rc); - } - - update_graph(transition_graph, action); -diff --git a/crmd/te_utils.c b/crmd/te_utils.c -index 66b0883..32ddae1 100644 ---- a/crmd/te_utils.c -+++ b/crmd/te_utils.c -@@ -259,9 +259,12 @@ tengine_stonith_notify(stonith_t * st, stonith_event_t * st_event) - return; - } - -- if (st_event->result == pcmk_ok && -- safe_str_eq(st_event->operation, T_STONITH_NOTIFY_FENCE)) { -- st_fail_count_reset(st_event->target); -+ if (safe_str_eq(st_event->operation, T_STONITH_NOTIFY_FENCE)) { -+ if (st_event->result == pcmk_ok) { -+ st_fail_count_reset(st_event->target); -+ } else { -+ st_fail_count_increment(st_event->target); -+ } - } - - crm_notice("Peer %s was%s terminated (%s) by %s for %s: %s (ref=%s) by client %s", --- -1.8.3.1 - - -From 714a8d07a500675d84e6ef779ba21e6c23e27853 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 10 Apr 2017 17:20:08 -0500 -Subject: [PATCH 07/13] Low: crmd: allow clearing all stonith fail counts - -for future improvements ---- - crmd/te_callbacks.c | 29 ++++++++++++++++++++++++----- - 1 file changed, 24 insertions(+), 5 deletions(-) - -diff --git a/crmd/te_callbacks.c b/crmd/te_callbacks.c -index aa4a141..4f896ee 100644 ---- a/crmd/te_callbacks.c -+++ b/crmd/te_callbacks.c -@@ -668,17 +668,36 @@ too_many: - return TRUE; - } - -+/*! -+ * \internal -+ * \brief Reset a stonith fail count -+ * -+ * \param[in] target Name of node to reset, or NULL for all -+ */ - void - st_fail_count_reset(const char *target) - { -- struct st_fail_rec *rec = NULL; -+ if (stonith_failures == NULL) { -+ return; -+ } -+ -+ if (target) { -+ struct st_fail_rec *rec = NULL; - -- if (stonith_failures) { - rec = g_hash_table_lookup(stonith_failures, target); -- } -+ if (rec) { -+ rec->count = 0; -+ } -+ } else { -+ GHashTableIter iter; -+ const char *key = NULL; -+ struct st_fail_rec *rec = NULL; - -- if (rec) { -- rec->count = 0; -+ g_hash_table_iter_init(&iter, stonith_failures); -+ while (g_hash_table_iter_next(&iter, (gpointer *) &key, -+ (gpointer *) &rec)) { -+ rec->count = 0; -+ } - } - } - --- -1.8.3.1 - - -From 8fd6691558d94a8294f3d860cc9451c1a8e0c7a1 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 17 Apr 2017 13:55:19 -0500 -Subject: [PATCH 08/13] Low: crmd: skip restart at (not above) - stonith-max-attempts - ---- - crmd/te_callbacks.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/crmd/te_callbacks.c b/crmd/te_callbacks.c -index 4f896ee..b4d8713 100644 ---- a/crmd/te_callbacks.c -+++ b/crmd/te_callbacks.c -@@ -649,14 +649,14 @@ too_many_st_failures(const char *target) - if (target == NULL) { - g_hash_table_iter_init(&iter, stonith_failures); - while (g_hash_table_iter_next(&iter, (gpointer *) & key, (gpointer *) & value)) { -- if (value->count > stonith_max_attempts) { -+ if (value->count >= stonith_max_attempts) { - target = (const char*)key; - goto too_many; - } - } - } else { - value = g_hash_table_lookup(stonith_failures, target); -- if ((value != NULL) && (value->count > stonith_max_attempts)) { -+ if ((value != NULL) && (value->count >= stonith_max_attempts)) { - goto too_many; - } - } --- -1.8.3.1 - - -From 9e9a271fd666ff371487f22c28ba9e420a22434c Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 17 Apr 2017 18:18:42 -0500 -Subject: [PATCH 09/13] Fix: crmd: don't restart transition if no fence devices - -This restores the behavior removed by ff881376, but more precisely where it's -needed. ---- - crmd/crmd_utils.h | 4 +++- - crmd/te_callbacks.c | 21 ++++++++++++++++----- - crmd/te_utils.c | 2 +- - include/crm/transition.h | 4 ++++ - 4 files changed, 24 insertions(+), 7 deletions(-) - -diff --git a/crmd/crmd_utils.h b/crmd/crmd_utils.h -index fd8fe76..9a09340 100644 ---- a/crmd/crmd_utils.h -+++ b/crmd/crmd_utils.h -@@ -19,6 +19,7 @@ - # define CRMD_UTILS__H - - # include -+# include - # include - # include /* For CIB_OP_MODIFY */ - # include "notify.h" -@@ -102,7 +103,8 @@ void crmd_join_phase_log(int level); - const char *get_timer_desc(fsa_timer_t * timer); - void st_fail_count_reset(const char * target); - void st_fail_count_increment(const char *target); --void abort_for_stonith_failure(const char *target, xmlNode *reason); -+void abort_for_stonith_failure(enum transition_action abort_action, -+ const char *target, xmlNode *reason); - void crmd_peer_down(crm_node_t *peer, bool full); - - /* Convenience macro for registering a CIB callback -diff --git a/crmd/te_callbacks.c b/crmd/te_callbacks.c -index b4d8713..c2b0c0d 100644 ---- a/crmd/te_callbacks.c -+++ b/crmd/te_callbacks.c -@@ -729,18 +729,18 @@ st_fail_count_increment(const char *target) - * \internal - * \brief Abort transition due to stonith failure - * -+ * \param[in] abort_action Whether to restart or stop transition - * \param[in] target Don't restart if this (NULL for any) has too many failures - * \param[in] reason Log this stonith action XML as abort reason (or NULL) - */ - void --abort_for_stonith_failure(const char *target, xmlNode *reason) -+abort_for_stonith_failure(enum transition_action abort_action, -+ const char *target, xmlNode *reason) - { -- enum transition_action abort_action = tg_restart; -- - /* If stonith repeatedly fails, we eventually give up on starting a new - * transition for that reason. - */ -- if (too_many_st_failures(target)) { -+ if ((abort_action != tg_stop) && too_many_st_failures(target)) { - abort_action = tg_stop; - } - abort_transition(INFINITY, abort_action, "Stonith failed", reason); -@@ -807,11 +807,22 @@ tengine_stonith_callback(stonith_t * stonith, stonith_callback_data_t * data) - - } else { - const char *target = crm_element_value_const(action->xml, XML_LRM_ATTR_TARGET); -+ enum transition_action abort_action = tg_restart; - - action->failed = TRUE; - crm_notice("Stonith operation %d for %s failed (%s): aborting transition.", - call_id, target, pcmk_strerror(rc)); -- abort_for_stonith_failure(target, NULL); -+ -+ /* If no fence devices were available, there's no use in immediately -+ * checking again, so don't start a new transition in that case. -+ */ -+ if (rc == -ENODEV) { -+ crm_warn("No devices found in cluster to fence %s, giving up", -+ target); -+ abort_action = tg_stop; -+ } -+ -+ abort_for_stonith_failure(abort_action, target, NULL); - } - - update_graph(transition_graph, action); -diff --git a/crmd/te_utils.c b/crmd/te_utils.c -index 32ddae1..dcfbb3b 100644 ---- a/crmd/te_utils.c -+++ b/crmd/te_utils.c -@@ -162,7 +162,7 @@ fail_incompletable_stonith(crm_graph_t * graph) - - if (last_action != NULL) { - crm_warn("STONITHd failure resulted in un-runnable actions"); -- abort_for_stonith_failure(NULL, last_action); -+ abort_for_stonith_failure(tg_restart, NULL, last_action); - return TRUE; - } - -diff --git a/include/crm/transition.h b/include/crm/transition.h -index f2069cc..21f7c55 100644 ---- a/include/crm/transition.h -+++ b/include/crm/transition.h -@@ -15,6 +15,8 @@ - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -+#ifndef CRM_TRANSITION__H -+# define CRM_TRANSITION__H - - #include - #include -@@ -147,3 +149,5 @@ bool update_abort_priority(crm_graph_t * graph, int priority, - const char *actiontype2text(action_type_e type); - lrmd_event_data_t *convert_graph_action(xmlNode * resource, crm_action_t * action, int status, - int rc); -+ -+#endif --- -1.8.3.1 - - -From 268f70f9ab644783a8038aa82bcca3628cc942dc Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 17 Apr 2017 14:39:19 -0500 -Subject: [PATCH 10/13] Low: crmd: avoid DC sending offer to itself twice - ---- - crmd/join_dc.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/crmd/join_dc.c b/crmd/join_dc.c -index 71311de..999996d 100644 ---- a/crmd/join_dc.c -+++ b/crmd/join_dc.c -@@ -242,8 +242,10 @@ do_dc_join_offer_one(long long action, - /* always offer to the DC (ourselves) - * this ensures the correct value for max_generation_from - */ -- member = crm_get_peer(0, fsa_our_uname); -- join_make_offer(NULL, member, NULL); -+ if (strcmp(join_to, fsa_our_uname) != 0) { -+ member = crm_get_peer(0, fsa_our_uname); -+ join_make_offer(NULL, member, NULL); -+ } - - /* this was a genuine join request, cancel any existing - * transition and invoke the PE --- -1.8.3.1 - - -From 249c7c9a83371a67e573276a285697994fe66fed Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 17 Apr 2017 15:41:18 -0500 -Subject: [PATCH 11/13] Fix: crmd: don't fence old DC if it's shutting down as - soon-to-be DC joins - -Existing peers of a DC that is shutting down can avoid fencing it (by updating -its expected state) because it broadcasts its shutdown request. However, a -newly joining node won't get that broadcast. - -Previously, if the joining node became the new DC, it would fence the old one. -Now, the DC notifies joining nodes (via a join message field) whether it is -shutting down, and joining nodes update its expected state accordingly. ---- - crmd/join_client.c | 24 ++++++++++++++++++++++++ - crmd/join_dc.c | 32 ++++++++++++++++++++++++++------ - include/crm/msg_xml.h | 1 + - 3 files changed, 51 insertions(+), 6 deletions(-) - -diff --git a/crmd/join_client.c b/crmd/join_client.c -index 319272d..4510483 100644 ---- a/crmd/join_client.c -+++ b/crmd/join_client.c -@@ -30,6 +30,26 @@ void join_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, v - - extern ha_msg_input_t *copy_ha_msg_input(ha_msg_input_t * orig); - -+/*! -+ * \internal -+ * \brief Remember if DC is shutting down as we join -+ * -+ * If we're joining while the current DC is shutting down, update its expected -+ * state, so we don't fence it if we become the new DC. (We weren't a peer -+ * when it broadcast its shutdown request.) -+ * -+ * \param[in] msg A join message from the DC -+ */ -+static void -+update_dc_expected(xmlNode *msg) -+{ -+ if (fsa_our_dc && crm_is_true(crm_element_value(msg, F_CRM_DC_LEAVING))) { -+ crm_node_t *dc_node = crm_get_peer(0, fsa_our_dc); -+ -+ crm_update_peer_expected(__FUNCTION__, dc_node, CRMD_JOINSTATE_DOWN); -+ } -+} -+ - /* A_CL_JOIN_QUERY */ - /* is there a DC out there? */ - void -@@ -128,6 +148,8 @@ do_cl_join_offer_respond(long long action, - return; - } - -+ update_dc_expected(input->msg); -+ - CRM_LOG_ASSERT(input != NULL); - query_call_id = - fsa_cib_conn->cmds->query(fsa_cib_conn, NULL, NULL, cib_scope_local | cib_no_children); -@@ -250,6 +272,8 @@ do_cl_join_finalize_respond(long long action, - return; - } - -+ update_dc_expected(input->msg); -+ - /* send our status section to the DC */ - tmp1 = do_lrm_query(TRUE, fsa_our_uname); - if (tmp1 != NULL) { -diff --git a/crmd/join_dc.c b/crmd/join_dc.c -index 999996d..ebb5059 100644 ---- a/crmd/join_dc.c -+++ b/crmd/join_dc.c -@@ -106,6 +106,30 @@ initialize_join(gboolean before) - } - } - -+/*! -+ * \internal -+ * \brief Create a join message from the DC -+ * -+ * \param[in] join_op Join operation name -+ * \param[in] host_to Recipient of message -+ */ -+static xmlNode * -+create_dc_message(const char *join_op, const char *host_to) -+{ -+ xmlNode *msg = create_request(join_op, NULL, host_to, CRM_SYSTEM_CRMD, -+ CRM_SYSTEM_DC, NULL); -+ -+ /* Identify which election this is a part of */ -+ crm_xml_add_int(msg, F_CRM_JOIN_ID, current_join_id); -+ -+ /* Add a field specifying whether the DC is shutting down. This keeps the -+ * joining node from fencing the old DC if it becomes the new DC. -+ */ -+ crm_xml_add_boolean(msg, F_CRM_DC_LEAVING, -+ is_set(fsa_input_register, R_SHUTDOWN)); -+ return msg; -+} -+ - static void - join_make_offer(gpointer key, gpointer value, gpointer user_data) - { -@@ -147,10 +171,8 @@ join_make_offer(gpointer key, gpointer value, gpointer user_data) - - crm_update_peer_join(__FUNCTION__, (crm_node_t*)member, crm_join_none); - -- offer = create_request(CRM_OP_JOIN_OFFER, NULL, member->uname, -- CRM_SYSTEM_CRMD, CRM_SYSTEM_DC, NULL); -+ offer = create_dc_message(CRM_OP_JOIN_OFFER, member->uname); - -- crm_xml_add_int(offer, F_CRM_JOIN_ID, current_join_id); - /* send the welcome */ - crm_info("join-%d: Sending offer to %s", current_join_id, member->uname); - -@@ -588,9 +610,7 @@ finalize_join_for(gpointer key, gpointer value, gpointer user_data) - } - - /* send the ack/nack to the node */ -- acknak = create_request(CRM_OP_JOIN_ACKNAK, NULL, join_to, -- CRM_SYSTEM_CRMD, CRM_SYSTEM_DC, NULL); -- crm_xml_add_int(acknak, F_CRM_JOIN_ID, current_join_id); -+ acknak = create_dc_message(CRM_OP_JOIN_ACKNAK, join_to); - - crm_debug("join-%d: ACK'ing join request from %s", - current_join_id, join_to); -diff --git a/include/crm/msg_xml.h b/include/crm/msg_xml.h -index 7198fe5..7504744 100644 ---- a/include/crm/msg_xml.h -+++ b/include/crm/msg_xml.h -@@ -64,6 +64,7 @@ - # define F_CRM_ORIGIN "origin" - # define F_CRM_USER "crm_user" - # define F_CRM_JOIN_ID "join_id" -+# define F_CRM_DC_LEAVING "dc-leaving" - # define F_CRM_ELECTION_ID "election-id" - # define F_CRM_ELECTION_AGE_S "election-age-sec" - # define F_CRM_ELECTION_AGE_US "election-age-nano-sec" --- -1.8.3.1 - - -From 9fe47194b7636bfe3aebdeece0ec89a7f588d77d Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 17 Apr 2017 19:03:03 -0500 -Subject: [PATCH 12/13] Refactor: extra: use whitespace consistently in Dummy - -to make changes easier ---- - extra/resources/Dummy | 102 +++++++++++++++++++++++++------------------------- - 1 file changed, 51 insertions(+), 51 deletions(-) - -diff --git a/extra/resources/Dummy b/extra/resources/Dummy -index 1fd6156..bab56e4 100644 ---- a/extra/resources/Dummy -+++ b/extra/resources/Dummy -@@ -1,8 +1,8 @@ - #!/bin/sh - # - # --# Dummy OCF RA. Does nothing but wait a few seconds, can be --# configured to fail occassionally. -+# Dummy OCF RA. Does nothing but wait a few seconds, can be -+# configured to fail occassionally. - # - # Copyright (c) 2004 SUSE LINUX AG, Lars Marowsky-Br�e - # All Rights Reserved. -@@ -37,7 +37,7 @@ - ####################################################################### - - meta_data() { -- cat < - - -@@ -130,12 +130,12 @@ END - # don't exit on TERM, to test that lrmd makes sure that we do exit - trap sigterm_handler TERM - sigterm_handler() { -- ocf_log info "They use TERM to bring us down. No such luck." -- return -+ ocf_log info "They use TERM to bring us down. No such luck." -+ return - } - - dummy_usage() { -- cat < -Date: Mon, 17 Apr 2017 19:04:58 -0500 -Subject: [PATCH 13/13] Test: extra: Dummy stop shouldn't fail if monitor is in - progress - ---- - extra/resources/Dummy | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/extra/resources/Dummy b/extra/resources/Dummy -index bab56e4..4a6884c 100644 ---- a/extra/resources/Dummy -+++ b/extra/resources/Dummy -@@ -172,7 +172,7 @@ dummy_start() { - } - - dummy_stop() { -- dummy_monitor -+ dummy_monitor --force - if [ $? -eq $OCF_SUCCESS ]; then - rm ${OCF_RESKEY_state} - fi -@@ -186,7 +186,7 @@ dummy_monitor() { - # That is THREE states, not just yes/no. - - if [ $OCF_RESKEY_op_sleep -ne 0 ]; then -- if [ -f "${VERIFY_SERIALIZED_FILE}" ]; then -+ if [ "$1" = "" -a -f "${VERIFY_SERIALIZED_FILE}" ]; then - # two monitor ops have occurred at the same time. - # this is to verify a condition in the lrmd regression tests. - ocf_log err "$VERIFY_SERIALIZED_FILE exists already" --- -1.8.3.1 - diff --git a/SOURCES/051-spelling.patch b/SOURCES/051-spelling.patch deleted file mode 100644 index 5e9df13..0000000 --- a/SOURCES/051-spelling.patch +++ /dev/null @@ -1,34 +0,0 @@ -From c757d842b4fbc9a056f1ebaf212a64e9196b2b2d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ferenc=20W=C3=A1gner?= -Date: Sat, 5 Nov 2016 03:25:32 +0100 -Subject: [PATCH] Fix spelling: Negligable -> Negligible - ---- - crmd/throttle.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/crmd/throttle.c b/crmd/throttle.c -index ae371c6..ce330fe 100644 ---- a/crmd/throttle.c -+++ b/crmd/throttle.c -@@ -377,7 +377,7 @@ throttle_handle_load(float load, const char *desc, int cores) - return throttle_low; - } - -- crm_trace("Negligable %s detected: %f", desc, adjusted_load); -+ crm_trace("Negligible %s detected: %f", desc, adjusted_load); - return throttle_none; - } - -@@ -433,7 +433,7 @@ throttle_mode(void) - mode |= throttle_low; - - } else { -- crm_trace("Negligable %s detected: %f", desc, load); -+ crm_trace("Negligible %s detected: %f", desc, load); - } - } - --- -1.8.3.1 - diff --git a/SOURCES/052-hotplug-cpus.patch b/SOURCES/052-hotplug-cpus.patch deleted file mode 100644 index 187f75e..0000000 --- a/SOURCES/052-hotplug-cpus.patch +++ /dev/null @@ -1,639 +0,0 @@ -From a882a3ff25bcae8d703277ebd850fde0b1128ce9 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 25 Apr 2017 17:23:04 -0500 -Subject: [PATCH 1/5] Refactor: crmd: functionize setting throttle load target - -Make as much in throttle.c static as possible, for better isolation. ---- - crmd/control.c | 4 ++-- - crmd/throttle.c | 46 ++++++++++++++++++++++++++-------------------- - crmd/throttle.h | 4 +--- - 3 files changed, 29 insertions(+), 25 deletions(-) - -diff --git a/crmd/control.c b/crmd/control.c -index f4823b9..af9c2c2 100644 ---- a/crmd/control.c -+++ b/crmd/control.c -@@ -1046,7 +1046,7 @@ config_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void - - value = crmd_pref(config_hash, "load-threshold"); - if(value) { -- throttle_load_target = strtof(value, NULL) / 100; -+ throttle_set_load_target(strtof(value, NULL) / 100.0); - } - - value = crmd_pref(config_hash, "no-quorum-policy"); - -diff --git a/crmd/throttle.c b/crmd/throttle.c -index ce330fe..b9add7d 100644 ---- a/crmd/throttle.c -+++ b/crmd/throttle.c -@@ -33,8 +33,7 @@ - #include - - --enum throttle_state_e --{ -+enum throttle_state_e { - throttle_extreme = 0x1000, - throttle_high = 0x0100, - throttle_med = 0x0010, -@@ -42,24 +41,24 @@ enum throttle_state_e - throttle_none = 0x0000, - }; - --struct throttle_record_s --{ -- int max; -- enum throttle_state_e mode; -- char *node; -+struct throttle_record_s { -+ int max; -+ enum throttle_state_e mode; -+ char *node; - }; - --int throttle_job_max = 0; --float throttle_load_target = 0.0; -+static int throttle_job_max = 0; -+static float throttle_load_target = 0.0; - - #define THROTTLE_FACTOR_LOW 1.2 - #define THROTTLE_FACTOR_MEDIUM 1.6 - #define THROTTLE_FACTOR_HIGH 2.0 - --GHashTable *throttle_records = NULL; --mainloop_timer_t *throttle_timer = NULL; -+static GHashTable *throttle_records = NULL; -+static mainloop_timer_t *throttle_timer = NULL; - --int throttle_num_cores(void) -+static int -+throttle_num_cores(void) - { - static int cores = 0; - char buffer[256]; -@@ -102,14 +101,16 @@ int throttle_num_cores(void) - * This will return NULL if the daemon is being run via valgrind. - * This should be called only on Linux systems. - */ --static char *find_cib_loadfile(void) -+static char * -+find_cib_loadfile(void) - { - int pid = crm_procfs_pid_of("cib"); - - return pid? crm_strdup_printf("/proc/%d/stat", pid) : NULL; - } - --static bool throttle_cib_load(float *load) -+static bool -+throttle_cib_load(float *load) - { - /* - /proc/[pid]/stat -@@ -233,7 +234,8 @@ static bool throttle_cib_load(float *load) - return FALSE; - } - --static bool throttle_load_avg(float *load) -+static bool -+throttle_load_avg(float *load) - { - char buffer[256]; - FILE *stream = NULL; -@@ -266,7 +268,8 @@ static bool throttle_load_avg(float *load) - return FALSE; - } - --static bool throttle_io_load(float *load, unsigned int *blocked) -+static bool -+throttle_io_load(float *load, unsigned int *blocked) - { - char buffer[64*1024]; - FILE *stream = NULL; -@@ -514,7 +517,13 @@ throttle_record_free(gpointer p) - } - - void --throttle_update_job_max(const char *preference) -+throttle_set_load_target(float target) -+{ -+ throttle_load_target = target; -+} -+ -+void -+throttle_update_job_max(const char *preference) - { - int max = 0; - -@@ -547,7 +556,6 @@ throttle_update_job_max(const char *preference) - } - } - -- - void - throttle_init(void) - { -@@ -568,7 +576,6 @@ throttle_fini(void) - g_hash_table_destroy(throttle_records); throttle_records = NULL; - } - -- - int - throttle_get_total_job_limit(int l) - { -@@ -673,4 +680,3 @@ throttle_update(xmlNode *xml) - crm_debug("Host %s supports a maximum of %d jobs and throttle mode %.4x. New job limit is %d", - from, max, mode, throttle_get_job_limit(from)); - } -- -diff --git a/crmd/throttle.h b/crmd/throttle.h -index bdb33e7..9d1b97b 100644 ---- a/crmd/throttle.h -+++ b/crmd/throttle.h -@@ -17,12 +17,10 @@ - */ - - --extern float throttle_load_target; -- - void throttle_init(void); - void throttle_fini(void); - --int throttle_num_cores(void); -+void throttle_set_load_target(float target); - void throttle_update(xmlNode *xml); - void throttle_update_job_max(const char *preference); - int throttle_get_job_limit(const char *node); --- -1.8.3.1 - - -From acbbca50ab2fc9f71b9517d62e22bde7891ee67d Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 28 Apr 2017 14:09:36 -0500 -Subject: [PATCH 2/5] Refactor: crmd: functionize checking throttle thresholds - -... to reduce code duplication ---- - crmd/throttle.c | 92 ++++++++++++++++++++++++++++++++------------------------- - 1 file changed, 51 insertions(+), 41 deletions(-) - -diff --git a/crmd/throttle.c b/crmd/throttle.c -index b9add7d..8ab6f01 100644 ---- a/crmd/throttle.c -+++ b/crmd/throttle.c -@@ -350,45 +350,68 @@ throttle_io_load(float *load, unsigned int *blocked) - return FALSE; - } - -+/*! -+ * \internal -+ * \brief Check a load value against throttling thresholds -+ * -+ * \param[in] load Load value to check -+ * \param[in] desc Description of metric (for logging) -+ * \param[in] thresholds Low/medium/high/extreme thresholds -+ * -+ * \return Throttle mode corresponding to load value -+ */ - static enum throttle_state_e --throttle_handle_load(float load, const char *desc, int cores) -+throttle_check_thresholds(float load, const char *desc, float thresholds[4]) - { -- float adjusted_load = load; -- -- if(cores <= 0) { -- /* No fudging of the supplied load value */ -- -- } else if(cores == 1) { -- /* On a single core machine, a load of 1.0 is already too high */ -- adjusted_load = load * THROTTLE_FACTOR_MEDIUM; -- -- } else { -- /* Normalize the load to be per-core */ -- adjusted_load = load / cores; -- } -+ if (load > thresholds[3]) { -+ crm_notice("Extreme %s detected: %f", desc, load); -+ return throttle_extreme; - -- if(adjusted_load > THROTTLE_FACTOR_HIGH * throttle_load_target) { -+ } else if (load > thresholds[2]) { - crm_notice("High %s detected: %f", desc, load); - return throttle_high; - -- } else if(adjusted_load > THROTTLE_FACTOR_MEDIUM * throttle_load_target) { -+ } else if (load > thresholds[1]) { - crm_info("Moderate %s detected: %f", desc, load); - return throttle_med; - -- } else if(adjusted_load > THROTTLE_FACTOR_LOW * throttle_load_target) { -+ } else if (load > thresholds[0]) { - crm_debug("Noticeable %s detected: %f", desc, load); - return throttle_low; - } - -- crm_trace("Negligible %s detected: %f", desc, adjusted_load); -+ crm_trace("Negligible %s detected: %f", desc, load); - return throttle_none; - } - - static enum throttle_state_e -+throttle_handle_load(float load, const char *desc, int cores) -+{ -+ float normalize; -+ float thresholds[4]; -+ -+ if (cores == 1) { -+ /* On a single core machine, a load of 1.0 is already too high */ -+ normalize = 0.6; -+ -+ } else { -+ /* Normalize the load to be per-core */ -+ normalize = cores; -+ } -+ thresholds[0] = throttle_load_target * normalize * THROTTLE_FACTOR_LOW; -+ thresholds[1] = throttle_load_target * normalize * THROTTLE_FACTOR_MEDIUM; -+ thresholds[2] = throttle_load_target * normalize * THROTTLE_FACTOR_HIGH; -+ thresholds[3] = load + 1.0; /* never extreme */ -+ -+ return throttle_check_thresholds(load, desc, thresholds); -+} -+ -+static enum throttle_state_e - throttle_mode(void) - { - int cores; - float load; -+ float thresholds[4]; - unsigned int blocked = 0; - enum throttle_state_e mode = throttle_none; - -@@ -399,16 +422,16 @@ throttle_mode(void) - cores = throttle_num_cores(); - if(throttle_cib_load(&load)) { - float cib_max_cpu = 0.95; -- const char *desc = "CIB load"; -- /* The CIB is a single threaded task and thus cannot consume -+ -+ /* The CIB is a single-threaded task and thus cannot consume - * more than 100% of a CPU (and 1/cores of the overall system - * load). - * -- * On a many cored system, the CIB might therefor be maxed out -+ * On a many-cored system, the CIB might therefore be maxed out - * (causing operations to fail or appear to fail) even though - * the overall system load is still reasonable. - * -- * Therefor the 'normal' thresholds can not apply here and we -+ * Therefore, the 'normal' thresholds can not apply here, and we - * need a special case. - */ - if(cores == 1) { -@@ -418,26 +441,13 @@ throttle_mode(void) - cib_max_cpu = throttle_load_target; - } - -- if(load > 1.5 * cib_max_cpu) { -- /* Can only happen on machines with a low number of cores */ -- crm_notice("Extreme %s detected: %f", desc, load); -- mode |= throttle_extreme; -- -- } else if(load > cib_max_cpu) { -- crm_notice("High %s detected: %f", desc, load); -- mode |= throttle_high; -+ thresholds[0] = cib_max_cpu * 0.8; -+ thresholds[1] = cib_max_cpu * 0.9; -+ thresholds[2] = cib_max_cpu; -+ /* Can only happen on machines with a low number of cores */ -+ thresholds[3] = cib_max_cpu * 1.5; - -- } else if(load > cib_max_cpu * 0.9) { -- crm_info("Moderate %s detected: %f", desc, load); -- mode |= throttle_med; -- -- } else if(load > cib_max_cpu * 0.8) { -- crm_debug("Noticeable %s detected: %f", desc, load); -- mode |= throttle_low; -- -- } else { -- crm_trace("Negligible %s detected: %f", desc, load); -- } -+ mode |= throttle_check_thresholds(load, "CIB load", thresholds); - } - - if(throttle_load_target <= 0) { --- -1.8.3.1 - - -From 89175e75f3b38b10ea163c1a8d621d1296570e7f Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 28 Apr 2017 14:30:55 -0500 -Subject: [PATCH 3/5] Feature: libcrmcommon: add function to get number of CPU - cores - -Compared to the previous implementation in crmd/throttle.c, this -parses /proc/stat, which is smaller than /proc/cpuinfo. ---- - include/crm/common/internal.h | 1 + - lib/common/procfs.c | 30 ++++++++++++++++++++++++++++++ - 2 files changed, 31 insertions(+) - -diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h -index 475128f..c34b03b 100644 ---- a/include/crm/common/internal.h -+++ b/include/crm/common/internal.h -@@ -54,6 +54,7 @@ int crm_write_sync(int fd, const char *contents); - - int crm_procfs_process_info(struct dirent *entry, char *name, int *pid); - int crm_procfs_pid_of(const char *name); -+unsigned int crm_procfs_num_cores(void); - - - /* internal XML schema functions (from xml.c) */ -diff --git a/lib/common/procfs.c b/lib/common/procfs.c -index 12d01ff..fbbf9eb 100644 ---- a/lib/common/procfs.c -+++ b/lib/common/procfs.c -@@ -28,6 +28,7 @@ - #include - #include - #include -+#include - - /*! - * \internal -@@ -140,3 +141,32 @@ crm_procfs_pid_of(const char *name) - closedir(dp); - return pid; - } -+ -+/*! -+ * \internal -+ * \brief Calculate number of logical CPU cores from procfs -+ * -+ * \return Number of cores (or 1 if unable to determine) -+ */ -+unsigned int -+crm_procfs_num_cores(void) -+{ -+ int cores = 0; -+ FILE *stream = NULL; -+ -+ /* Parse /proc/stat instead of /proc/cpuinfo because it's smaller */ -+ stream = fopen("/proc/stat", "r"); -+ if (stream == NULL) { -+ crm_perror(LOG_INFO, "Could not open /proc/stat"); -+ } else { -+ char buffer[2048]; -+ -+ while (fgets(buffer, sizeof(buffer), stream)) { -+ if (!strncmp(buffer, "cpu", 3) && isdigit(buffer[3])) { -+ ++cores; -+ } -+ } -+ fclose(stream); -+ } -+ return cores? cores : 1; -+} --- -1.8.3.1 - - -From 0307614c92664078ffae0566324de85c2f990353 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 28 Apr 2017 14:41:50 -0500 -Subject: [PATCH 4/5] Low: crmd: remove I/O load checks - -Due to bugs, the crmd's throttling checks for I/O load and blocked processes -would always get 0. In any case, both are already included in the load average -checked elsewhere, so there is no need to check them. ---- - crmd/throttle.c | 88 --------------------------------------------------------- - 1 file changed, 88 deletions(-) - -diff --git a/crmd/throttle.c b/crmd/throttle.c -index 8ab6f01..387e58d 100644 ---- a/crmd/throttle.c -+++ b/crmd/throttle.c -@@ -268,88 +268,6 @@ throttle_load_avg(float *load) - return FALSE; - } - --static bool --throttle_io_load(float *load, unsigned int *blocked) --{ -- char buffer[64*1024]; -- FILE *stream = NULL; -- const char *loadfile = "/proc/stat"; -- -- if(load == NULL) { -- return FALSE; -- } -- -- stream = fopen(loadfile, "r"); -- if(stream == NULL) { -- int rc = errno; -- crm_warn("Couldn't read %s: %s (%d)", loadfile, pcmk_strerror(rc), rc); -- return FALSE; -- } -- -- if(fgets(buffer, sizeof(buffer), stream)) { -- /* Borrowed from procps-ng's sysinfo.c */ -- -- char *b = NULL; -- unsigned long long cpu_use = 0; -- unsigned long long cpu_nic = 0; -- unsigned long long cpu_sys = 0; -- unsigned long long cpu_idl = 0; -- unsigned long long cpu_iow = 0; /* not separated out until the 2.5.41 kernel */ -- unsigned long long cpu_xxx = 0; /* not separated out until the 2.6.0-test4 kernel */ -- unsigned long long cpu_yyy = 0; /* not separated out until the 2.6.0-test4 kernel */ -- unsigned long long cpu_zzz = 0; /* not separated out until the 2.6.11 kernel */ -- -- long long divo2 = 0; -- long long duse = 0; -- long long dsys = 0; -- long long didl =0; -- long long diow =0; -- long long dstl = 0; -- long long Div = 0; -- -- b = strstr(buffer, "cpu "); -- if(b) sscanf(b, "cpu %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu", -- &cpu_use, &cpu_nic, &cpu_sys, &cpu_idl, &cpu_iow, &cpu_xxx, &cpu_yyy, &cpu_zzz); -- -- if(blocked) { -- b = strstr(buffer, "procs_blocked "); -- if(b) sscanf(b, "procs_blocked %u", blocked); -- } -- -- duse = cpu_use + cpu_nic; -- dsys = cpu_sys + cpu_xxx + cpu_yyy; -- didl = cpu_idl; -- diow = cpu_iow; -- dstl = cpu_zzz; -- Div = duse + dsys + didl + diow + dstl; -- if (!Div) Div = 1, didl = 1; -- divo2 = Div / 2UL; -- -- /* vmstat output: -- * -- * procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- -- * r b swpd free buff cache si so bi bo in cs us sy id wa -- * 1 0 5537800 958592 204180 1737740 1 1 12 15 0 0 2 1 97 0 -- * -- * The last four columns are calculated as: -- * -- * (unsigned)( (100*duse + divo2) / Div ), -- * (unsigned)( (100*dsys + divo2) / Div ), -- * (unsigned)( (100*didl + divo2) / Div ), -- * (unsigned)( (100*diow + divo2) / Div ) -- * -- */ -- *load = (diow + divo2) / Div; -- crm_debug("Current IO load is %f", *load); -- -- fclose(stream); -- return TRUE; -- } -- -- fclose(stream); -- return FALSE; --} -- - /*! - * \internal - * \brief Check a load value against throttling thresholds -@@ -412,7 +330,6 @@ throttle_mode(void) - int cores; - float load; - float thresholds[4]; -- unsigned int blocked = 0; - enum throttle_state_e mode = throttle_none; - - #if defined(ON_BSD) || defined(ON_SOLARIS) -@@ -459,11 +376,6 @@ throttle_mode(void) - mode |= throttle_handle_load(load, "CPU load", cores); - } - -- if(throttle_io_load(&load, &blocked)) { -- mode |= throttle_handle_load(load, "IO load", 0); -- mode |= throttle_handle_load(blocked, "blocked IO ratio", cores); -- } -- - if(mode & throttle_extreme) { - return throttle_extreme; - } else if(mode & throttle_high) { --- -1.8.3.1 - - -From da00177e186dc7b7e63fecb7e0d461003eda2eea Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 28 Apr 2017 14:56:12 -0500 -Subject: [PATCH 5/5] Fix: crmd,libcrmcommon: update throttle when CPUs are - hot-plugged - -Previously, the number of CPU cores was determined the first time it was -needed, and remembered permanently after that. That becomes inaccurate when -cores are hot-plugged in and out of a virtual machine. Now, the number of cores -is parsed each time it is needed (using the new libcrmcommon function). ---- - crmd/throttle.c | 42 ++++-------------------------------------- - 1 file changed, 4 insertions(+), 38 deletions(-) - -diff --git a/crmd/throttle.c b/crmd/throttle.c -index 387e58d..90ddb90 100644 ---- a/crmd/throttle.c -+++ b/crmd/throttle.c -@@ -57,40 +57,6 @@ static float throttle_load_target = 0.0; - static GHashTable *throttle_records = NULL; - static mainloop_timer_t *throttle_timer = NULL; - --static int --throttle_num_cores(void) --{ -- static int cores = 0; -- char buffer[256]; -- FILE *stream = NULL; -- const char *cpufile = "/proc/cpuinfo"; -- -- if(cores) { -- return cores; -- } -- stream = fopen(cpufile, "r"); -- if(stream == NULL) { -- int rc = errno; -- crm_warn("Couldn't read %s, assuming a single processor: %s (%d)", cpufile, pcmk_strerror(rc), rc); -- return 1; -- } -- -- while (fgets(buffer, sizeof(buffer), stream)) { -- if(strstr(buffer, "processor") == buffer) { -- cores++; -- } -- } -- -- fclose(stream); -- -- if(cores == 0) { -- crm_warn("No processors found in %s, assuming 1", cpufile); -- return 1; -- } -- -- return cores; --} -- - /*! - * \internal - * \brief Return name of /proc file containing the CIB deamon's load statistics -@@ -259,7 +225,6 @@ throttle_load_avg(float *load) - *load = strtof(buffer, NULL); - if(nl) { nl[0] = 0; } - -- crm_debug("Current load is %f (full: %s)", *load, buffer); - fclose(stream); - return TRUE; - } -@@ -327,7 +292,7 @@ throttle_handle_load(float load, const char *desc, int cores) - static enum throttle_state_e - throttle_mode(void) - { -- int cores; -+ unsigned int cores; - float load; - float thresholds[4]; - enum throttle_state_e mode = throttle_none; -@@ -336,7 +301,7 @@ throttle_mode(void) - return throttle_none; - #endif - -- cores = throttle_num_cores(); -+ cores = crm_procfs_num_cores(); - if(throttle_cib_load(&load)) { - float cib_max_cpu = 0.95; - -@@ -373,6 +338,7 @@ throttle_mode(void) - } - - if(throttle_load_avg(&load)) { -+ crm_debug("Current load is %f across %u core(s)", load, cores); - mode |= throttle_handle_load(load, "CPU load", cores); - } - -@@ -449,7 +415,7 @@ throttle_update_job_max(const char *preference) - { - int max = 0; - -- throttle_job_max = 2 * throttle_num_cores(); -+ throttle_job_max = 2 * crm_procfs_num_cores(); - - if(preference) { - /* Global preference from the CIB */ --- -1.8.3.1 - diff --git a/SOURCES/053-ipc-eviction.patch b/SOURCES/053-ipc-eviction.patch deleted file mode 100644 index d706141..0000000 --- a/SOURCES/053-ipc-eviction.patch +++ /dev/null @@ -1,480 +0,0 @@ -From 33b3b7e7004e3ec5501c32a2217ec32775a5a487 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 24 Apr 2017 10:38:50 -0500 -Subject: [PATCH 1/6] Refactor: libcib: functionize destroying op callback - table - -reduces code duplication ---- - lib/cib/cib_client.c | 29 ++++++++++++----------------- - 1 file changed, 12 insertions(+), 17 deletions(-) - -diff --git a/lib/cib/cib_client.c b/lib/cib/cib_client.c -index 5ded943..0f53330 100644 ---- a/lib/cib/cib_client.c -+++ b/lib/cib/cib_client.c -@@ -206,6 +206,15 @@ cib_destroy_op_callback(gpointer data) - free(blob); - } - -+static void -+destroy_op_callback_table() -+{ -+ if (cib_op_callback_table != NULL) { -+ g_hash_table_destroy(cib_op_callback_table); -+ cib_op_callback_table = NULL; -+ } -+} -+ - char * - get_shadow_file(const char *suffix) - { -@@ -348,14 +357,7 @@ cib_new_variant(void) - - new_cib = calloc(1, sizeof(cib_t)); - -- if (cib_op_callback_table != NULL) { -- g_hash_table_destroy(cib_op_callback_table); -- cib_op_callback_table = NULL; -- } -- if (cib_op_callback_table == NULL) { -- cib_op_callback_table = g_hash_table_new_full(g_direct_hash, g_direct_equal, -- NULL, cib_destroy_op_callback); -- } -+ remove_cib_op_callback(0, TRUE); /* remove all */ - - new_cib->call_id = 1; - new_cib->variant = cib_undefined; -@@ -419,10 +421,7 @@ cib_delete(cib_t * cib) - free(client); - } - -- if(cib_op_callback_table) { -- g_hash_table_destroy(cib_op_callback_table); -- cib_op_callback_table = NULL; -- } -+ destroy_op_callback_table(); - - if(cib) { - cib->cmds->free(cib); -@@ -639,13 +638,9 @@ void - remove_cib_op_callback(int call_id, gboolean all_callbacks) - { - if (all_callbacks) { -- if (cib_op_callback_table != NULL) { -- g_hash_table_destroy(cib_op_callback_table); -- } -- -+ destroy_op_callback_table(); - cib_op_callback_table = g_hash_table_new_full(g_direct_hash, g_direct_equal, - NULL, cib_destroy_op_callback); -- - } else { - g_hash_table_remove(cib_op_callback_table, GINT_TO_POINTER(call_id)); - } --- -1.8.3.1 - - -From 360cf350722f9646581e47b4d73d971aa81e6cec Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 21 Apr 2017 11:31:01 -0500 -Subject: [PATCH 2/6] Low: crmd: avoid use-after-free when disconnecting from - CIB - -crmd_exit() freed the CIB connection, then drained the mainloop. -However, the mainloop could call functions (such as do_cib_control() or -cib_native_destroy()) that would use the connection object. - -This would lead to a segfault, though the harm was minimal, since the crmd was -already exiting at this point. - -Also log a notice comparable to what's done for the crmd's other disconnects. ---- - crmd/cib.c | 17 ++++++----------- - crmd/control.c | 10 ++++++++-- - include/crm/cib.h | 1 + - lib/cib/cib_client.c | 35 ++++++++++++++++++++++++----------- - 4 files changed, 39 insertions(+), 24 deletions(-) - -diff --git a/crmd/cib.c b/crmd/cib.c -index 40fed4a..41f4f3d 100644 ---- a/crmd/cib.c -+++ b/crmd/cib.c -@@ -159,19 +159,16 @@ do_cib_replaced(const char *event, xmlNode * msg) - register_fsa_input(C_FSA_INTERNAL, I_ELECTION, NULL); - } - --/* A_CIB_STOP, A_CIB_START, A_CIB_RESTART, */ -+/* A_CIB_STOP, A_CIB_START, O_CIB_RESTART */ - void - do_cib_control(long long action, - enum crmd_fsa_cause cause, - enum crmd_fsa_state cur_state, - enum crmd_fsa_input current_input, fsa_data_t * msg_data) - { -- struct crm_subsystem_s *this_subsys = cib_subsystem; -+ CRM_ASSERT(fsa_cib_conn != NULL); - -- long long stop_actions = A_CIB_STOP; -- long long start_actions = A_CIB_START; -- -- if (action & stop_actions) { -+ if (action & A_CIB_STOP) { - - if (fsa_cib_conn->state != cib_disconnected && last_resource_update != 0) { - crm_info("Waiting for resource update %d to complete", last_resource_update); -@@ -181,7 +178,6 @@ do_cib_control(long long action, - - crm_info("Disconnecting CIB"); - clear_bit(fsa_input_register, R_CIB_CONNECTED); -- CRM_ASSERT(fsa_cib_conn != NULL); - - fsa_cib_conn->cmds->del_notify_callback(fsa_cib_conn, T_CIB_DIFF_NOTIFY, do_cib_updated); - -@@ -189,15 +185,14 @@ do_cib_control(long long action, - fsa_cib_conn->cmds->set_slave(fsa_cib_conn, cib_scope_local); - fsa_cib_conn->cmds->signoff(fsa_cib_conn); - } -+ crm_notice("Disconnected from the CIB"); - } - -- if (action & start_actions) { -+ if (action & A_CIB_START) { - int rc = pcmk_ok; - -- CRM_ASSERT(fsa_cib_conn != NULL); -- - if (cur_state == S_STOPPING) { -- crm_err("Ignoring request to start %s after shutdown", this_subsys->name); -+ crm_err("Ignoring request to start the CIB after shutdown"); - return; - } - -diff --git a/crmd/control.c b/crmd/control.c -index af9c2c2..a9c0b73 100644 ---- a/crmd/control.c -+++ b/crmd/control.c -@@ -355,8 +355,11 @@ crmd_exit(int rc) - election_fini(fsa_election); - fsa_election = NULL; - -- cib_delete(fsa_cib_conn); -- fsa_cib_conn = NULL; -+ /* Tear down the CIB connection, but don't free it yet -- it could be used -+ * when we drain the mainloop later. -+ */ -+ cib_free_callbacks(fsa_cib_conn); -+ fsa_cib_conn->cmds->signoff(fsa_cib_conn); - - verify_stopped(fsa_state, LOG_WARNING); - clear_bit(fsa_input_register, R_LRM_CONNECTED); -@@ -485,6 +488,9 @@ crmd_exit(int rc) - mainloop_destroy_signal(SIGCHLD); - } - -+ cib_delete(fsa_cib_conn); -+ fsa_cib_conn = NULL; -+ - /* Graceful */ - return rc; - } -diff --git a/include/crm/cib.h b/include/crm/cib.h -index a1246d1..ec52602 100644 ---- a/include/crm/cib.h -+++ b/include/crm/cib.h -@@ -172,6 +172,7 @@ cib_t *cib_new_no_shadow(void); - char *get_shadow_file(const char *name); - cib_t *cib_shadow_new(const char *name); - -+void cib_free_callbacks(cib_t *cib); - void cib_delete(cib_t * cib); - - void cib_dump_pending_callbacks(void); -diff --git a/lib/cib/cib_client.c b/lib/cib/cib_client.c -index 0f53330..907bb5a 100644 ---- a/lib/cib/cib_client.c -+++ b/lib/cib/cib_client.c -@@ -406,24 +406,37 @@ cib_new_variant(void) - return new_cib; - } - -+/*! -+ * \brief Free all callbacks for a CIB connection -+ * -+ * \param[in] cib CIB connection to clean up -+ */ - void --cib_delete(cib_t * cib) -+cib_free_callbacks(cib_t *cib) - { -- GList *list = NULL; -- if(cib) { -- list = cib->notify_list; -- } -+ if (cib) { -+ GList *list = cib->notify_list; - -- while (list != NULL) { -- cib_notify_client_t *client = g_list_nth_data(list, 0); -+ while (list != NULL) { -+ cib_notify_client_t *client = g_list_nth_data(list, 0); - -- list = g_list_remove(list, client); -- free(client); -+ list = g_list_remove(list, client); -+ free(client); -+ } - } -- - destroy_op_callback_table(); -+} - -- if(cib) { -+/*! -+ * \brief Free all memory used by CIB connection -+ * -+ * \param[in] cib CIB connection to delete -+ */ -+void -+cib_delete(cib_t *cib) -+{ -+ cib_free_callbacks(cib); -+ if (cib) { - cib->cmds->free(cib); - } - } --- -1.8.3.1 - - -From a6383a30d3258856efef1c067790faa78d1a5787 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 21 Apr 2017 11:33:53 -0500 -Subject: [PATCH 3/6] Low: crmd: don't destroy election structure twice - -didn't cause any harm, but unnecessary ---- - crmd/control.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/crmd/control.c b/crmd/control.c -index a9c0b73..5d91b1d 100644 ---- a/crmd/control.c -+++ b/crmd/control.c -@@ -388,7 +388,6 @@ crmd_exit(int rc) - free(integration_timer); integration_timer = NULL; - free(finalization_timer); finalization_timer = NULL; - free(election_trigger); election_trigger = NULL; -- election_fini(fsa_election); - free(shutdown_escalation_timer); shutdown_escalation_timer = NULL; - free(wait_timer); wait_timer = NULL; - free(recheck_timer); recheck_timer = NULL; --- -1.8.3.1 - - -From 8183dbf57bc92a79b54c7e56942e4e3bda36654f Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 1 May 2017 14:58:58 -0500 -Subject: [PATCH 4/6] Log: libcib: downgrade ACL status message to trace - -gets logged 1-3 times for every CIB op ---- - lib/cib/cib_utils.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c -index 1908401..ab48f16 100644 ---- a/lib/cib/cib_utils.c -+++ b/lib/cib/cib_utils.c -@@ -282,7 +282,7 @@ cib_acl_enabled(xmlNode *xml, const char *user) - g_hash_table_destroy(options); - } - -- crm_debug("CIB ACL is %s", rc ? "enabled" : "disabled"); -+ crm_trace("CIB ACL is %s", rc ? "enabled" : "disabled"); - #endif - return rc; - } --- -1.8.3.1 - - -From f1f9bf7ceb3737ed4d731669c2e5744a9e234a04 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 1 May 2017 17:06:03 -0500 -Subject: [PATCH 5/6] Low: libcrmcommon: don't delay next flush by more than 5 - seconds - -If an IPC client falls behind on processing incoming events, we set a -progressive delay between queue flushes. However, at the maximum backlog -of 500 events, this would be 51 seconds. Cap this delay at 5 seconds. ---- - lib/common/ipc.c | 22 +++++++++++++++++++--- - 1 file changed, 19 insertions(+), 3 deletions(-) - -diff --git a/lib/common/ipc.c b/lib/common/ipc.c -index 2949837..c9e3da2 100644 ---- a/lib/common/ipc.c -+++ b/lib/common/ipc.c -@@ -463,12 +463,28 @@ crm_ipcs_flush_events_cb(gpointer data) - return FALSE; - } - -+/*! -+ * \internal -+ * \brief Add progressive delay before next event queue flush -+ * -+ * \param[in,out] c Client connection to add delay to -+ * \param[in] queue_len Current event queue length -+ */ -+static inline void -+delay_next_flush(crm_client_t *c, unsigned int queue_len) -+{ -+ /* Delay a maximum of 5 seconds */ -+ guint delay = (queue_len < 40)? (1000 + 100 * queue_len) : 5000; -+ -+ c->event_timer = g_timeout_add(delay, crm_ipcs_flush_events_cb, c); -+} -+ - ssize_t - crm_ipcs_flush_events(crm_client_t * c) - { -- int sent = 0; - ssize_t rc = 0; -- int queue_len = 0; -+ unsigned int sent = 0; -+ unsigned int queue_len = 0; - - if (c == NULL) { - return pcmk_ok; -@@ -523,8 +539,8 @@ crm_ipcs_flush_events(crm_client_t * c) - qb_ipcs_disconnect(c->ipcs); - return rc; - } -+ delay_next_flush(c, queue_len); - -- c->event_timer = g_timeout_add(1000 + 100 * queue_len, crm_ipcs_flush_events_cb, c); - } - - return rc; --- -1.8.3.1 - - -From 5d94da7af947810ca4b12dc1d9dce18a7d638f73 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 1 May 2017 17:39:02 -0500 -Subject: [PATCH 6/6] Fix: libcrmcommon: avoid evicting IPC client if messages - spike briefly - -Before, an IP server would evict a client if its event queue grew to 500 -messages. Now, we avoid evicting if the backlog is new (a quick spike of many -messages that immediately crosses the threshold). ---- - include/crm/common/ipcs.h | 5 ++++- - lib/common/ipc.c | 41 ++++++++++++++++++++++++++++++++--------- - 2 files changed, 36 insertions(+), 10 deletions(-) - -diff --git a/include/crm/common/ipcs.h b/include/crm/common/ipcs.h -index 2fec931..ba1ccef 100644 ---- a/include/crm/common/ipcs.h -+++ b/include/crm/common/ipcs.h -@@ -73,6 +73,8 @@ struct crm_client_s { - char *name; - char *user; - -+ /* Provided for server use (not used by library) */ -+ /* @TODO merge options, flags, and kind (reserving lower bits for server) */ - long long options; - - int request_id; -@@ -80,7 +82,7 @@ struct crm_client_s { - void *userdata; - - int event_timer; -- GList *event_queue; -+ GList *event_queue; /* @TODO use GQueue instead */ - - /* Depending on the value of kind, only some of the following - * will be populated/valid -@@ -91,6 +93,7 @@ struct crm_client_s { - - struct crm_remote_s *remote; /* TCP/TLS */ - -+ unsigned int backlog_len; /* IPC queue length after last flush */ - }; - - extern GHashTable *client_connections; -diff --git a/lib/common/ipc.c b/lib/common/ipc.c -index c9e3da2..d32e373 100644 ---- a/lib/common/ipc.c -+++ b/lib/common/ipc.c -@@ -37,6 +37,9 @@ - - #define PCMK_IPC_VERSION 1 - -+/* Evict clients whose event queue grows this large */ -+#define PCMK_IPC_MAX_QUEUE 500 -+ - struct crm_ipc_response_header { - struct qb_ipc_response_header qb; - uint32_t size_uncompressed; -@@ -523,24 +526,44 @@ crm_ipcs_flush_events(crm_client_t * c) - } - - queue_len -= sent; -- if (sent > 0 || c->event_queue) { -+ if (sent > 0 || queue_len) { - crm_trace("Sent %d events (%d remaining) for %p[%d]: %s (%lld)", - sent, queue_len, c->ipcs, c->pid, - pcmk_strerror(rc < 0 ? rc : 0), (long long) rc); - } - -- if (c->event_queue) { -- if (queue_len % 100 == 0 && queue_len > 99) { -- crm_warn("Event queue for %p[%d] has grown to %d", c->ipcs, c->pid, queue_len); -+ if (queue_len) { -+ /* We want to allow clients to briefly fall behind on processing -+ * incoming messages, but drop completely unresponsive clients so the -+ * connection doesn't consume resources indefinitely. -+ * -+ * @TODO It is possible that the queue could reasonably grow large in a -+ * short time. An example is a reprobe of hundreds of resources on many -+ * nodes resulting in a surge of CIB replies to the crmd. We could -+ * possibly give cluster daemons a higher threshold here, and/or prevent -+ * such a surge by throttling LRM history writes in the crmd. -+ */ - -- } else if (queue_len > 500) { -- crm_err("Evicting slow client %p[%d]: event queue reached %d entries", -- c->ipcs, c->pid, queue_len); -- qb_ipcs_disconnect(c->ipcs); -- return rc; -+ if (queue_len > PCMK_IPC_MAX_QUEUE) { -+ if ((c->backlog_len <= 1) || (queue_len < c->backlog_len)) { -+ /* Don't evict for a new or shrinking backlog */ -+ crm_warn("Client with process ID %u has a backlog of %u messages " -+ CRM_XS " %p", c->pid, queue_len, c->ipcs); -+ } else { -+ crm_err("Evicting client with process ID %u due to backlog of %u messages " -+ CRM_XS " %p", c->pid, queue_len, c->ipcs); -+ c->backlog_len = 0; -+ qb_ipcs_disconnect(c->ipcs); -+ return rc; -+ } - } -+ -+ c->backlog_len = queue_len; - delay_next_flush(c, queue_len); - -+ } else { -+ /* Event queue is empty, there is no backlog */ -+ c->backlog_len = 0; - } - - return rc; --- -1.8.3.1 - diff --git a/SOURCES/054-bundles-on-remotes.patch b/SOURCES/054-bundles-on-remotes.patch deleted file mode 100644 index 6f7092d..0000000 --- a/SOURCES/054-bundles-on-remotes.patch +++ /dev/null @@ -1,646 +0,0 @@ -From 26c59fb7d128f83d0b4d35ae9b9d088359103d31 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 12 Apr 2017 20:07:56 +1000 -Subject: [PATCH 1/2] PE: Remote: Allow remote nodes that start containers with - pacemaker remote inside - ---- - include/crm/pengine/internal.h | 2 +- - include/crm/pengine/status.h | 1 + - lib/pengine/container.c | 3 +- - lib/pengine/unpack.c | 275 ++++++++++++++++++------------------- - lib/pengine/utils.c | 39 ++++++ - pengine/container.c | 8 ++ - pengine/test10/bug-cl-5247.summary | 4 +- - 7 files changed, 190 insertions(+), 142 deletions(-) - -diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h -index 0da02cc..1b6afd1 100644 ---- a/include/crm/pengine/internal.h -+++ b/include/crm/pengine/internal.h -@@ -291,6 +291,6 @@ node_t *pe_create_node(const char *id, const char *uname, const char *type, - bool remote_id_conflict(const char *remote_name, pe_working_set_t *data); - void common_print(resource_t * rsc, const char *pre_text, const char *name, node_t *node, long options, void *print_data); - resource_t *find_container_child(const char *stem, resource_t * rsc, node_t *node); -- -+bool fix_remote_addr(resource_t * rsc); - - #endif -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index 00b20ab..4cc3919 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -142,6 +142,7 @@ struct node_shared_s { - gboolean shutdown; - gboolean expected_up; - gboolean is_dc; -+ gboolean unpacked; - - int num_resources; - GListPtr running_rsc; /* resource_t* */ -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 127b144..d06997a 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -368,7 +368,8 @@ create_remote_resource( - if(tuple->ipaddr) { - create_nvp(xml_obj, "addr", tuple->ipaddr); - } else { -- create_nvp(xml_obj, "addr", "localhost"); -+ // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside -+ create_nvp(xml_obj, "addr", "#uname"); - } - - if(data->control_port) { -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 6aa51dd..29a1013 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -1017,6 +1017,133 @@ get_ticket_state_legacy(gpointer key, gpointer value, gpointer user_data) - } - } - -+static void -+unpack_handle_remote_attrs(node_t *this_node, xmlNode *state, pe_working_set_t * data_set) -+{ -+ const char *resource_discovery_enabled = NULL; -+ xmlNode *attrs = NULL; -+ resource_t *rsc = NULL; -+ const char *shutdown = NULL; -+ -+ if (crm_str_eq((const char *)state->name, XML_CIB_TAG_STATE, TRUE) == FALSE) { -+ return; -+ } -+ -+ if ((this_node == NULL) || (is_remote_node(this_node) == FALSE)) { -+ return; -+ } -+ crm_trace("Processing remote node id=%s, uname=%s", this_node->details->id, this_node->details->uname); -+ -+ this_node->details->remote_maintenance = -+ crm_atoi(crm_element_value(state, XML_NODE_IS_MAINTENANCE), "0"); -+ -+ rsc = this_node->details->remote_rsc; -+ if (this_node->details->remote_requires_reset == FALSE) { -+ this_node->details->unclean = FALSE; -+ this_node->details->unseen = FALSE; -+ } -+ attrs = find_xml_node(state, XML_TAG_TRANSIENT_NODEATTRS, FALSE); -+ add_node_attrs(attrs, this_node, TRUE, data_set); -+ -+ shutdown = g_hash_table_lookup(this_node->details->attrs, XML_CIB_ATTR_SHUTDOWN); -+ if (shutdown != NULL && safe_str_neq("0", shutdown)) { -+ crm_info("Node %s is shutting down", this_node->details->uname); -+ this_node->details->shutdown = TRUE; -+ if (rsc) { -+ rsc->next_role = RSC_ROLE_STOPPED; -+ } -+ } -+ -+ if (crm_is_true(g_hash_table_lookup(this_node->details->attrs, "standby"))) { -+ crm_info("Node %s is in standby-mode", this_node->details->uname); -+ this_node->details->standby = TRUE; -+ } -+ -+ if (crm_is_true(g_hash_table_lookup(this_node->details->attrs, "maintenance")) || -+ (rsc && !is_set(rsc->flags, pe_rsc_managed))) { -+ crm_info("Node %s is in maintenance-mode", this_node->details->uname); -+ this_node->details->maintenance = TRUE; -+ } -+ -+ resource_discovery_enabled = g_hash_table_lookup(this_node->details->attrs, XML_NODE_ATTR_RSC_DISCOVERY); -+ if (resource_discovery_enabled && !crm_is_true(resource_discovery_enabled)) { -+ if (is_baremetal_remote_node(this_node) && is_not_set(data_set->flags, pe_flag_stonith_enabled)) { -+ crm_warn("ignoring %s attribute on baremetal remote node %s, disabling resource discovery requires stonith to be enabled.", -+ XML_NODE_ATTR_RSC_DISCOVERY, this_node->details->uname); -+ } else { -+ /* if we're here, this is either a baremetal node and fencing is enabled, -+ * or this is a container node which we don't care if fencing is enabled -+ * or not on. container nodes are 'fenced' by recovering the container resource -+ * regardless of whether fencing is enabled. */ -+ crm_info("Node %s has resource discovery disabled", this_node->details->uname); -+ this_node->details->rsc_discovery_enabled = FALSE; -+ } -+ } -+} -+ -+static bool -+unpack_node_loop(xmlNode * status, bool fence, pe_working_set_t * data_set) -+{ -+ bool changed = false; -+ xmlNode *lrm_rsc = NULL; -+ -+ for (xmlNode *state = __xml_first_child(status); state != NULL; state = __xml_next_element(state)) { -+ const char *id = NULL; -+ const char *uname = NULL; -+ node_t *this_node = NULL; -+ bool process = FALSE; -+ -+ if (crm_str_eq((const char *)state->name, XML_CIB_TAG_STATE, TRUE) == FALSE) { -+ continue; -+ } -+ -+ id = crm_element_value(state, XML_ATTR_ID); -+ uname = crm_element_value(state, XML_ATTR_UNAME); -+ this_node = pe_find_node_any(data_set->nodes, id, uname); -+ -+ if (this_node == NULL) { -+ crm_info("Node %s is unknown", id); -+ continue; -+ -+ } else if (this_node->details->unpacked) { -+ crm_info("Node %s is already processed", id); -+ continue; -+ -+ } else if (is_remote_node(this_node) == FALSE && is_set(data_set->flags, pe_flag_stonith_enabled)) { -+ // A redundant test, but preserves the order for regression tests -+ process = TRUE; -+ -+ } else if (is_remote_node(this_node)) { -+ resource_t *rsc = this_node->details->remote_rsc; -+ -+ if (fence || (rsc && rsc->role == RSC_ROLE_STARTED)) { -+ determine_remote_online_status(data_set, this_node); -+ unpack_handle_remote_attrs(this_node, state, data_set); -+ process = TRUE; -+ } -+ -+ } else if (this_node->details->online) { -+ process = TRUE; -+ -+ } else if (fence) { -+ process = TRUE; -+ } -+ -+ if(process) { -+ crm_trace("Processing lrm resource entries on %shealthy%s node: %s", -+ fence?"un":"", is_remote_node(this_node)?" remote":"", -+ this_node->details->uname); -+ changed = TRUE; -+ this_node->details->unpacked = TRUE; -+ -+ lrm_rsc = find_xml_node(state, XML_CIB_TAG_LRM, FALSE); -+ lrm_rsc = find_xml_node(lrm_rsc, XML_LRM_TAG_RESOURCES, FALSE); -+ unpack_lrm_resources(this_node, lrm_rsc, data_set); -+ } -+ } -+ return changed; -+} -+ - /* remove nodes that are down, stopping */ - /* create +ve rsc_to_node constraints between resources and the nodes they are running on */ - /* anything else? */ -@@ -1027,7 +1154,6 @@ unpack_status(xmlNode * status, pe_working_set_t * data_set) - const char *uname = NULL; - - xmlNode *state = NULL; -- xmlNode *lrm_rsc = NULL; - node_t *this_node = NULL; - - crm_trace("Beginning unpack"); -@@ -1125,152 +1251,25 @@ unpack_status(xmlNode * status, pe_working_set_t * data_set) - } - } - -- /* Now that we know all node states, we can safely handle migration ops */ -- for (state = __xml_first_child(status); state != NULL; state = __xml_next_element(state)) { -- if (crm_str_eq((const char *)state->name, XML_CIB_TAG_STATE, TRUE) == FALSE) { -- continue; -- } -- -- id = crm_element_value(state, XML_ATTR_ID); -- uname = crm_element_value(state, XML_ATTR_UNAME); -- this_node = pe_find_node_any(data_set->nodes, id, uname); -- -- if (this_node == NULL) { -- crm_info("Node %s is unknown", id); -- continue; -- -- } else if (is_remote_node(this_node)) { -- -- /* online status of remote node can not be determined until all other -- * resource status is unpacked. */ -- continue; -- } else if (this_node->details->online || is_set(data_set->flags, pe_flag_stonith_enabled)) { -- crm_trace("Processing lrm resource entries on healthy node: %s", -- this_node->details->uname); -- lrm_rsc = find_xml_node(state, XML_CIB_TAG_LRM, FALSE); -- lrm_rsc = find_xml_node(lrm_rsc, XML_LRM_TAG_RESOURCES, FALSE); -- unpack_lrm_resources(this_node, lrm_rsc, data_set); -- } -- } -- -- /* now that the rest of the cluster's status is determined -- * calculate remote-nodes */ -- unpack_remote_status(status, data_set); - -- return TRUE; --} -- --gboolean --unpack_remote_status(xmlNode * status, pe_working_set_t * data_set) --{ -- const char *id = NULL; -- const char *uname = NULL; -- const char *shutdown = NULL; -- resource_t *rsc = NULL; -- -- GListPtr gIter = NULL; -- -- xmlNode *state = NULL; -- xmlNode *lrm_rsc = NULL; -- node_t *this_node = NULL; -- -- if (is_set(data_set->flags, pe_flag_have_remote_nodes) == FALSE) { -- crm_trace("no remote nodes to unpack"); -- return TRUE; -+ while(unpack_node_loop(status, FALSE, data_set)) { -+ crm_trace("Start another loop"); - } - -- /* get online status */ -- for (gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) { -- this_node = gIter->data; -+ // Now catch any nodes we didnt see -+ unpack_node_loop(status, is_set(data_set->flags, pe_flag_stonith_enabled), data_set); - -- if ((this_node == NULL) || (is_remote_node(this_node) == FALSE)) { -- continue; -- } -- determine_remote_online_status(data_set, this_node); -- } -+ for (GListPtr gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) { -+ node_t *this_node = gIter->data; - -- /* process attributes */ -- for (state = __xml_first_child(status); state != NULL; state = __xml_next_element(state)) { -- const char *resource_discovery_enabled = NULL; -- xmlNode *attrs = NULL; -- if (crm_str_eq((const char *)state->name, XML_CIB_TAG_STATE, TRUE) == FALSE) { -- continue; -- } -- -- id = crm_element_value(state, XML_ATTR_ID); -- uname = crm_element_value(state, XML_ATTR_UNAME); -- this_node = pe_find_node_any(data_set->nodes, id, uname); -- -- if ((this_node == NULL) || (is_remote_node(this_node) == FALSE)) { -+ if (this_node == NULL) { - continue; -- } -- crm_trace("Processing remote node id=%s, uname=%s", id, uname); -- -- this_node->details->remote_maintenance = -- crm_atoi(crm_element_value(state, XML_NODE_IS_MAINTENANCE), "0"); -- -- rsc = this_node->details->remote_rsc; -- if (this_node->details->remote_requires_reset == FALSE) { -- this_node->details->unclean = FALSE; -- this_node->details->unseen = FALSE; -- } -- attrs = find_xml_node(state, XML_TAG_TRANSIENT_NODEATTRS, FALSE); -- add_node_attrs(attrs, this_node, TRUE, data_set); -- -- shutdown = g_hash_table_lookup(this_node->details->attrs, XML_CIB_ATTR_SHUTDOWN); -- if (shutdown != NULL && safe_str_neq("0", shutdown)) { -- crm_info("Node %s is shutting down", this_node->details->uname); -- this_node->details->shutdown = TRUE; -- if (rsc) { -- rsc->next_role = RSC_ROLE_STOPPED; -- } -- } -- -- if (crm_is_true(g_hash_table_lookup(this_node->details->attrs, "standby"))) { -- crm_info("Node %s is in standby-mode", this_node->details->uname); -- this_node->details->standby = TRUE; -- } -- -- if (crm_is_true(g_hash_table_lookup(this_node->details->attrs, "maintenance")) || -- (rsc && !is_set(rsc->flags, pe_rsc_managed))) { -- crm_info("Node %s is in maintenance-mode", this_node->details->uname); -- this_node->details->maintenance = TRUE; -- } -- -- resource_discovery_enabled = g_hash_table_lookup(this_node->details->attrs, XML_NODE_ATTR_RSC_DISCOVERY); -- if (resource_discovery_enabled && !crm_is_true(resource_discovery_enabled)) { -- if (is_baremetal_remote_node(this_node) && is_not_set(data_set->flags, pe_flag_stonith_enabled)) { -- crm_warn("ignoring %s attribute on baremetal remote node %s, disabling resource discovery requires stonith to be enabled.", -- XML_NODE_ATTR_RSC_DISCOVERY, this_node->details->uname); -- } else { -- /* if we're here, this is either a baremetal node and fencing is enabled, -- * or this is a container node which we don't care if fencing is enabled -- * or not on. container nodes are 'fenced' by recovering the container resource -- * regardless of whether fencing is enabled. */ -- crm_info("Node %s has resource discovery disabled", this_node->details->uname); -- this_node->details->rsc_discovery_enabled = FALSE; -- } -- } -- } -- -- /* process node rsc status */ -- for (state = __xml_first_child(status); state != NULL; state = __xml_next_element(state)) { -- if (crm_str_eq((const char *)state->name, XML_CIB_TAG_STATE, TRUE) == FALSE) { -+ } else if(is_remote_node(this_node) == FALSE) { - continue; -- } -- -- id = crm_element_value(state, XML_ATTR_ID); -- uname = crm_element_value(state, XML_ATTR_UNAME); -- this_node = pe_find_node_any(data_set->nodes, id, uname); -- -- if ((this_node == NULL) || (is_remote_node(this_node) == FALSE)) { -+ } else if(this_node->details->unpacked) { - continue; - } -- crm_trace("Processing lrm resource entries on healthy remote node: %s", -- this_node->details->uname); -- lrm_rsc = find_xml_node(state, XML_CIB_TAG_LRM, FALSE); -- lrm_rsc = find_xml_node(lrm_rsc, XML_LRM_TAG_RESOURCES, FALSE); -- unpack_lrm_resources(this_node, lrm_rsc, data_set); -+ determine_remote_online_status(data_set, this_node); - } - - return TRUE; -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index bff5a4c..177fb84 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -1675,6 +1675,38 @@ filter_parameters(xmlNode * param_set, const char *param_string, bool need_prese - } - } - -+bool fix_remote_addr(resource_t * rsc) -+{ -+ const char *name; -+ const char *value; -+ const char *attr_list[] = { -+ XML_ATTR_TYPE, -+ XML_AGENT_ATTR_CLASS, -+ XML_AGENT_ATTR_PROVIDER -+ }; -+ const char *value_list[] = { -+ "remote", -+ "ocf", -+ "pacemaker" -+ }; -+ -+ name = "addr"; -+ value = g_hash_table_lookup(rsc->parameters, name); -+ if (safe_str_eq(value, "#uname") == FALSE) { -+ return FALSE; -+ } -+ -+ for (int lpc = 0; rsc && lpc < DIMOF(attr_list); lpc++) { -+ name = attr_list[lpc]; -+ value = crm_element_value(rsc->xml, attr_list[lpc]); -+ if (safe_str_eq(value, value_list[lpc]) == FALSE) { -+ return FALSE; -+ } -+ } -+ -+ return TRUE; -+} -+ - op_digest_cache_t * - rsc_action_digest_cmp(resource_t * rsc, xmlNode * xml_op, node_t * node, - pe_working_set_t * data_set) -@@ -1724,6 +1756,13 @@ rsc_action_digest_cmp(resource_t * rsc, xmlNode * xml_op, node_t * node, - g_hash_destroy_str, g_hash_destroy_str); - get_rsc_attributes(local_rsc_params, rsc, node, data_set); - data->params_all = create_xml_node(NULL, XML_TAG_PARAMS); -+ -+ if(fix_remote_addr(rsc) && node) { -+ // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside -+ crm_xml_add(data->params_all, "addr", node->details->uname); -+ crm_trace("Fixing addr for %s on %s", rsc->id, node->details->uname); -+ } -+ - g_hash_table_foreach(local_rsc_params, hash2field, data->params_all); - g_hash_table_foreach(action->extra, hash2field, data->params_all); - g_hash_table_foreach(rsc->parameters, hash2field, data->params_all); -diff --git a/pengine/container.c b/pengine/container.c -index 3da19aa..8c70f54 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -263,7 +263,15 @@ container_expand(resource_t * rsc, pe_working_set_t * data_set) - for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - -+ - CRM_ASSERT(tuple); -+ if(fix_remote_addr(tuple->remote) && tuple->docker->allocated_to) { -+ // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside -+ xmlNode *nvpair = get_xpath_object("//nvpair[@name='addr']", tuple->remote->xml, LOG_ERR); -+ -+ g_hash_table_replace(tuple->remote->parameters, strdup("addr"), strdup(tuple->docker->allocated_to->details->uname)); -+ crm_xml_add(nvpair, "value", tuple->docker->allocated_to->details->uname); -+ } - if(tuple->ip) { - tuple->ip->cmds->expand(tuple->ip, data_set); - } -diff --git a/pengine/test10/bug-cl-5247.summary b/pengine/test10/bug-cl-5247.summary -index 09dc301..91ed8db 100644 ---- a/pengine/test10/bug-cl-5247.summary -+++ b/pengine/test10/bug-cl-5247.summary -@@ -90,8 +90,8 @@ Containers: [ pgsr01:prmDB1 ] - Resource Group: grpStonith2 - prmStonith2-2 (stonith:external/ipmi): Started bl460g8n3 - Resource Group: master-group -- vip-master (ocf::heartbeat:Dummy): FAILED[ pgsr02 pgsr01 ] -- vip-rep (ocf::heartbeat:Dummy): FAILED[ pgsr02 pgsr01 ] -+ vip-master (ocf::heartbeat:Dummy): FAILED[ pgsr01 pgsr02 ] -+ vip-rep (ocf::heartbeat:Dummy): FAILED[ pgsr01 pgsr02 ] - Master/Slave Set: msPostgresql [pgsql] - Masters: [ pgsr01 ] - Stopped: [ bl460g8n3 bl460g8n4 ] --- -1.8.3.1 - - -From 8abdd82ba85ee384ab78ce1db617f51b692e9df6 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 19 Apr 2017 12:55:08 +1000 -Subject: [PATCH 2/2] lrmd: Have pacemaker-remote reap zombies if it is running - as pid 1 - ---- - configure.ac | 10 +++++ - lrmd/main.c | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 131 insertions(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index ee98f9b..5e08e7b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -823,6 +823,16 @@ if test "$ac_cv_header_libxslt_xslt_h" != "yes"; then - AC_MSG_ERROR(The libxslt developement headers were not found) - fi - -+AC_CACHE_CHECK(whether __progname and __progname_full are available, -+ pf_cv_var_progname, -+ AC_TRY_LINK([extern char *__progname, *__progname_full;], -+ [__progname = "foo"; __progname_full = "foo bar";], -+ pf_cv_var_progname="yes", pf_cv_var_progname="no")) -+ -+if test "$pf_cv_var_progname" = "yes"; then -+ AC_DEFINE(HAVE___PROGNAME,1,[ ]) -+fi -+ - dnl ======================================================================== - dnl Structures - dnl ======================================================================== -diff --git a/lrmd/main.c b/lrmd/main.c -index ca8cdf2..412ce24 100644 ---- a/lrmd/main.c -+++ b/lrmd/main.c -@@ -21,6 +21,11 @@ - - #include - #include -+#include -+ -+#include -+#include -+#include - - #include - #include -@@ -391,6 +396,119 @@ void handle_shutdown_nack() - crm_debug("Ignoring unexpected shutdown nack"); - } - -+ -+static pid_t main_pid = 0; -+static void -+sigdone(void) -+{ -+ exit(0); -+} -+ -+static void -+sigreap(void) -+{ -+ pid_t pid = 0; -+ int status; -+ do { -+ /* -+ * Opinions seem to differ as to what to put here: -+ * -1, any child process -+ * 0, any child process whose process group ID is equal to that of the calling process -+ */ -+ pid = waitpid(-1, &status, WNOHANG); -+ if(pid == main_pid) { -+ /* Exit when pacemaker-remote exits and use the same return code */ -+ if (WIFEXITED(status)) { -+ exit(WEXITSTATUS(status)); -+ } -+ exit(1); -+ } -+ -+ } while (pid > 0); -+} -+ -+static struct { -+ int sig; -+ void (*handler)(void); -+} sigmap[] = { -+ { SIGCHLD, sigreap }, -+ { SIGINT, sigdone }, -+}; -+ -+static void spawn_pidone(int argc, char **argv, char **envp) -+{ -+ sigset_t set; -+ -+ if (getpid() != 1) { -+ return; -+ } -+ -+ sigfillset(&set); -+ sigprocmask(SIG_BLOCK, &set, 0); -+ -+ main_pid = fork(); -+ switch (main_pid) { -+ case 0: -+ sigprocmask(SIG_UNBLOCK, &set, NULL); -+ setsid(); -+ setpgid(0, 0); -+ -+ /* Child remains as pacemaker_remoted */ -+ return; -+ case -1: -+ perror("fork"); -+ } -+ -+ /* Parent becomes the reaper of zombie processes */ -+ /* Safe to initialize logging now if needed */ -+ -+#ifdef HAVE___PROGNAME -+ /* Differentiate ourselves in the 'ps' output */ -+ { -+ char *p; -+ int i, maxlen; -+ char *LastArgv = NULL; -+ const char *name = "pcmk-init"; -+ -+ for(i = 0; i < argc; i++) { -+ if(!i || (LastArgv + 1 == argv[i])) -+ LastArgv = argv[i] + strlen(argv[i]); -+ } -+ -+ for(i = 0; envp[i] != NULL; i++) { -+ if((LastArgv + 1) == envp[i]) { -+ LastArgv = envp[i] + strlen(envp[i]); -+ } -+ } -+ -+ maxlen = (LastArgv - argv[0]) - 2; -+ -+ i = strlen(name); -+ /* We can overwrite individual argv[] arguments */ -+ snprintf(argv[0], maxlen, "%s", name); -+ -+ /* Now zero out everything else */ -+ p = &argv[0][i]; -+ while(p < LastArgv) -+ *p++ = '\0'; -+ argv[1] = NULL; -+ } -+#endif /* HAVE___PROGNAME */ -+ -+ while (1) { -+ int sig; -+ size_t i; -+ -+ sigwait(&set, &sig); -+ for (i = 0; i < DIMOF(sigmap); i++) { -+ if (sigmap[i].sig == sig) { -+ sigmap[i].handler(); -+ break; -+ } -+ } -+ } -+} -+ - /* *INDENT-OFF* */ - static struct crm_option long_options[] = { - /* Top-level Options */ -@@ -410,12 +528,14 @@ static struct crm_option long_options[] = { - /* *INDENT-ON* */ - - int --main(int argc, char **argv) -+main(int argc, char **argv, char **envp) - { - int flag = 0; - int index = 0; - const char *option = NULL; - -+ /* If necessary, create PID1 now before any FDs are opened */ -+ spawn_pidone(argc, argv, envp); - - #ifndef ENABLE_PCMK_REMOTE - crm_log_preinit("lrmd", argc, argv); --- -1.8.3.1 - diff --git a/SOURCES/055-bundle-interleave.patch b/SOURCES/055-bundle-interleave.patch deleted file mode 100644 index ffb10cd..0000000 --- a/SOURCES/055-bundle-interleave.patch +++ /dev/null @@ -1,183 +0,0 @@ -From cad6b2007800516e466440a536cd11bd4bac19ab Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Wed, 3 May 2017 11:55:10 +0200 -Subject: [PATCH] Low: xml: relax the strict element order within the bundle - body - -Technically, there's no need to require particular order as -unpack_container always sticks with the first occurrence of -the element carrying particular name. ---- - xml/resources-2.8.rng | 156 +++++++++++++++++++++++++------------------------- - 1 file changed, 79 insertions(+), 77 deletions(-) - -diff --git a/xml/resources-2.8.rng b/xml/resources-2.8.rng -index b64fe27..e20215b 100644 ---- a/xml/resources-2.8.rng -+++ b/xml/resources-2.8.rng -@@ -72,83 +72,85 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ([0-9\-]+) -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ([0-9\-]+) -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - --- -1.8.3.1 - diff --git a/SOURCES/056-resource-agents-deps.patch b/SOURCES/056-resource-agents-deps.patch deleted file mode 100644 index 41e45bd..0000000 --- a/SOURCES/056-resource-agents-deps.patch +++ /dev/null @@ -1,197 +0,0 @@ -From 7bb912e1c313c42683d11f5261edabb971028cf6 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 2 May 2017 10:55:21 -0500 -Subject: [PATCH 1/4] Build: rpmlintrc: update rpmlint filters - ---- - rpmlintrc | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/rpmlintrc b/rpmlintrc -index 2e9aca3..ee3c772 100644 ---- a/rpmlintrc -+++ b/rpmlintrc -@@ -39,3 +39,9 @@ addFilter("E: incoherent-logrotate-file /etc/logrotate.d/pacemaker") - - # buildbot builds the not-yet-released version - addFilter("W: incoherent-version-in-changelog") -+ -+# pacemaker_remote scriptlets use a state file -+addFilter("W: dangerous-command-in-%(pre|postun|posttrans) rm") -+ -+# We should really use "pacemaker-remote", but we don't -+addFilter("W: incoherent-init-script-name pacemaker_remote") --- -1.8.3.1 - - -From 06e2e269091ba69e699301d8c86c58ef94809be0 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 2 May 2017 08:57:08 -0500 -Subject: [PATCH 2/4] Low: systemd unit files: add dependency on - resource-agents-deps - -also clean up unit files a bit ---- - lrmd/pacemaker_remote.service.in | 5 +++++ - mcp/pacemaker.service.in | 33 +++++++++++++++++++++------------ - tools/crm_mon.service.in | 1 + - 3 files changed, 27 insertions(+), 12 deletions(-) - -diff --git a/lrmd/pacemaker_remote.service.in b/lrmd/pacemaker_remote.service.in -index 6309ad2..86c2fd0 100644 ---- a/lrmd/pacemaker_remote.service.in -+++ b/lrmd/pacemaker_remote.service.in -@@ -1,8 +1,13 @@ - [Unit] - Description=Pacemaker Remote Service - Documentation=man:pacemaker_remoted http://clusterlabs.org/doc/en-US/Pacemaker/1.1-pcs/html/Pacemaker_Remote/index.html -+ - After=network.target - After=time-sync.target -+After=resource-agents-deps.target -+Wants=resource-agents-deps.target -+After=syslog.service -+After=rsyslog.service - - [Install] - WantedBy=multi-user.target -diff --git a/mcp/pacemaker.service.in b/mcp/pacemaker.service.in -index 4d17b52..8ebadc6 100644 ---- a/mcp/pacemaker.service.in -+++ b/mcp/pacemaker.service.in -@@ -2,23 +2,35 @@ - Description=Pacemaker High Availability Cluster Manager - Documentation=man:pacemakerd http://clusterlabs.org/doc/en-US/Pacemaker/1.1-pcs/html/Pacemaker_Explained/index.html - --After=dbus.service --After=basic.target --After=syslog.service --After=rsyslog.service -+# DefaultDependencies takes care of sysinit.target, -+# basic.target, and shutdown.target -+ -+# We need networking to bind to a network address. It is recommended not to -+# use Wants or Requires with network.target, and not to use -+# network-online.target for server daemons. - After=network.target -+ -+# Time syncs can make the clock jump backward, which messes with logging -+# and failure timestamps, so wait until it's done. - After=time-sync.target --After=corosync.service - --Requires=dbus.service --Requires=basic.target -+# Some OCF resources may have dependencies that aren't managed by the cluster; -+# these must be started before Pacemaker and stopped after it. The -+# resource-agents package provides this target, which lets system adminstrators -+# add drop-ins for those dependencies. -+After=resource-agents-deps.target -+Wants=resource-agents-deps.target -+ -+After=syslog.service -+After=rsyslog.service -+After=corosync.service - Requires=corosync.service --# if you use crm_mon, uncomment the line below. --# Wants=crm_mon.service -+ - - [Install] - WantedBy=multi-user.target - -+ - [Service] - Type=simple - KillMode=process -@@ -62,6 +74,3 @@ Restart=on-failure - # crm_perror() writes directly to stderr, so ignore it here - # to avoid double-logging with the wrong format - StandardError=null -- --# if you use crm_mon, uncomment the line below. --# ExecStopPost=/bin/sh -c 'systemctl status crm_mon >/dev/null && systemctl stop crm_mon' -diff --git a/tools/crm_mon.service.in b/tools/crm_mon.service.in -index 1199f5f..7ae6649 100644 ---- a/tools/crm_mon.service.in -+++ b/tools/crm_mon.service.in -@@ -1,6 +1,7 @@ - [Unit] - Description=Daemon for pacemaker monitor - Documentation=man:crm_mon -+After=pacemaker.service - - [Service] - Type=forking --- -1.8.3.1 - - -From 5f264b4be1cd21cecc86a07d159bacc112042cce Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 2 May 2017 12:15:54 -0500 -Subject: [PATCH 3/4] Fix: libcib: avoid use-after-free when deleting CIB - connection - -360cf350 ironically introduced one use-after-free while fixing another ---- - lib/cib/cib_client.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lib/cib/cib_client.c b/lib/cib/cib_client.c -index 907bb5a..f0e332b 100644 ---- a/lib/cib/cib_client.c -+++ b/lib/cib/cib_client.c -@@ -423,6 +423,7 @@ cib_free_callbacks(cib_t *cib) - list = g_list_remove(list, client); - free(client); - } -+ cib->notify_list = NULL; - } - destroy_op_callback_table(); - } --- -1.8.3.1 - - -From f2948e786548942b20c9724b59d243b6178e5411 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 3 May 2017 11:51:26 -0500 -Subject: [PATCH 4/4] Low: xml: allow meta-attributes in bundles - -ignored for now, but eventually will allow is-managed and target-role -to be inherited by bundle components - -also allows id and desc attributes to be interleaved ---- - xml/resources-2.8.rng | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/xml/resources-2.8.rng b/xml/resources-2.8.rng -index e20215b..b27a026 100644 ---- a/xml/resources-2.8.rng -+++ b/xml/resources-2.8.rng -@@ -65,14 +65,14 @@ - - - -- - - -- -- -- -- - -+ -+ -+ -+ -+ - - - --- -1.8.3.1 - diff --git a/SOURCES/057-bundle-remote-remotes.patch b/SOURCES/057-bundle-remote-remotes.patch deleted file mode 100644 index f64d823..0000000 --- a/SOURCES/057-bundle-remote-remotes.patch +++ /dev/null @@ -1,202 +0,0 @@ -From c0ddb31cd04837216e36768f027cc1b1b3ac95a3 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 5 May 2017 18:02:32 +1000 -Subject: [PATCH 1/4] lrmd: Ensure verbosity options are handled after - crm_log_init() - ---- - lrmd/main.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/lrmd/main.c b/lrmd/main.c -index 412ce24..110bef5 100644 ---- a/lrmd/main.c -+++ b/lrmd/main.c -@@ -532,6 +532,7 @@ main(int argc, char **argv, char **envp) - { - int flag = 0; - int index = 0; -+ int bump_log_num = 0; - const char *option = NULL; - - /* If necessary, create PID1 now before any FDs are opened */ -@@ -563,7 +564,7 @@ main(int argc, char **argv, char **envp) - setenv("PCMK_remote_port", optarg, 1); - break; - case 'V': -- crm_bump_log_level(argc, argv); -+ bump_log_num++; - break; - case '?': - case '$': -@@ -577,6 +578,11 @@ main(int argc, char **argv, char **envp) - - crm_log_init(NULL, LOG_INFO, TRUE, FALSE, argc, argv, FALSE); - -+ while (bump_log_num > 0) { -+ crm_bump_log_level(argc, argv); -+ bump_log_num--; -+ } -+ - option = daemon_option("logfacility"); - if(option && safe_str_neq(option, "none")) { - setenv("HA_LOGFACILITY", option, 1); /* Used by the ocf_log/ha_log OCF macro */ --- -1.8.3.1 - - -From 4d19e6e14d0b4a95673bfc3f04cacaae1fa8bae0 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 5 May 2017 18:03:00 +1000 -Subject: [PATCH 2/4] Containers: Remove redundant constraint - ---- - pengine/container.c | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git a/pengine/container.c b/pengine/container.c -index 8c70f54..49b288a 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -188,10 +188,8 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - id = crm_strdup_printf("%s-remote-with-ip-%d", rsc->id, tuple->offset); - rsc_colocation_new(id, NULL, INFINITY, tuple->remote, tuple->ip, NULL, NULL, data_set); - free(id); -- } else { -- id = crm_strdup_printf("%s-remote-with-docker-%d", rsc->id, tuple->offset); -- rsc_colocation_new(id, NULL, INFINITY, tuple->remote, tuple->docker, NULL, NULL, data_set); -- free(id); -+// } else { -+ // remote-with-docker is already handled in native_internal_constraints() by 'resource-with-container' - } - } - --- -1.8.3.1 - - -From 42f9f877c0745697de144d55a93297e570ace7a6 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 5 May 2017 18:04:32 +1000 -Subject: [PATCH 3/4] Containers: Ensure remote resources are only allocated to - full cluster nodes - ---- - lib/pengine/container.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 45eadea..a7aeb43 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -342,6 +342,7 @@ create_remote_resource( - pe_working_set_t * data_set) - { - if (tuple->child && valid_network(data)) { -+ GHashTableIter gIter; - node_t *node = NULL; - xmlNode *xml_obj = NULL; - xmlNode *xml_remote = NULL; -@@ -412,6 +413,14 @@ create_remote_resource( - return FALSE; - } - -+ g_hash_table_iter_init(&gIter, tuple->remote->allowed_nodes); -+ while (g_hash_table_iter_next(&gIter, NULL, (void **)&node)) { -+ if(is_remote_node(node)) { -+ /* Remote resources can only run on 'normal' cluster node */ -+ node->weight = -INFINITY; -+ } -+ } -+ - tuple->node->details->remote_rsc = tuple->remote; - parent->children = g_list_append(parent->children, tuple->remote); - } --- -1.8.3.1 - - -From b71a458dbd2ae06a86c5f99cbdd1e8010094e22d Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 5 May 2017 18:05:14 +1000 -Subject: [PATCH 4/4] Containers: Relax docker/remote colocation constraint - when appropriate - -We prefer the remote resource to be allocated to the same node as the -corresponding container, but there are situations where it is safe to -allow it to run elsewhere. - -We may want to expand this capability to other scenarios in the future, -but for now limit it to bundle resources since we generate the resources -for those and know they are safe. ---- - include/crm/pengine/status.h | 2 ++ - lib/pengine/container.c | 13 +++++++++++++ - pengine/native.c | 7 +++++-- - 3 files changed, 20 insertions(+), 2 deletions(-) - -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index 4cc3919..b9032b5 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -192,6 +192,8 @@ struct node_s { - # define pe_rsc_try_reload 0x00001000ULL - # define pe_rsc_reload 0x00002000ULL - -+# define pe_rsc_allow_remote_remotes 0x00004000ULL -+ - # define pe_rsc_failed 0x00010000ULL - # define pe_rsc_shutdown 0x00020000ULL - # define pe_rsc_runnable 0x00040000ULL -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index a7aeb43..1280227 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -446,6 +446,19 @@ create_container( - add_hash_param(tuple->child->meta, "external-ip", tuple->ipaddr); - } - -+ if(tuple->remote) { -+ /* -+ * Allow the remote connection resource to be allocated to a -+ * different node than the one on which the docker container -+ * is active. -+ * -+ * Makes it possible to have remote nodes, running docker -+ * containers with pacemaker_remoted inside in order to start -+ * services inside those containers. -+ */ -+ set_bit(tuple->remote->flags, pe_rsc_allow_remote_remotes); -+ } -+ - return FALSE; - } - -diff --git a/pengine/native.c b/pengine/native.c -index d0cebb3..f3ea1c5 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -1466,7 +1466,7 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - } - } - } else { -- -+ int score = 10000; /* Highly preferred but not essential */ - crm_trace("Generating order and colocation rules for rsc %s with container %s", rsc->id, rsc->container->id); - custom_action_order(rsc->container, generate_op_key(rsc->container->id, RSC_START, 0), NULL, - rsc, generate_op_key(rsc->id, RSC_START, 0), NULL, -@@ -1476,7 +1476,10 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - rsc->container, generate_op_key(rsc->container->id, RSC_STOP, 0), NULL, - pe_order_implies_first, data_set); - -- rsc_colocation_new("resource-with-container", NULL, INFINITY, rsc, rsc->container, NULL, -+ if(is_not_set(rsc->flags, pe_rsc_allow_remote_remotes)) { -+ score = INFINITY; /* Force them to run on the same host */ -+ } -+ rsc_colocation_new("resource-with-container", NULL, score, rsc, rsc->container, NULL, - NULL, data_set); - } - } --- -1.8.3.1 - diff --git a/SOURCES/058-guest-cleanup.patch b/SOURCES/058-guest-cleanup.patch deleted file mode 100644 index 8cbf7e7..0000000 --- a/SOURCES/058-guest-cleanup.patch +++ /dev/null @@ -1,4469 +0,0 @@ -From d3322b19c38200d4a7a535618fb8b4b6061386b4 Mon Sep 17 00:00:00 2001 -From: Klaus Wenninger -Date: Thu, 4 May 2017 19:43:43 +0200 -Subject: [PATCH 1/4] Fix: pengine: have guest-node connection-resources probed - ---- - pengine/native.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pengine/native.c b/pengine/native.c -index d0cebb3..283772f 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -2737,7 +2737,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - - return any_created; - -- } else if (rsc->container) { -+ } else if ((rsc->container) && (!rsc->is_remote_node)) { - pe_rsc_trace(rsc, "Skipping %s: it is within container %s", rsc->id, rsc->container->id); - return FALSE; - } --- -1.8.3.1 - - -From bda2ddcfb1a4902c6fa9b6691eecc1230eb7dbcf Mon Sep 17 00:00:00 2001 -From: Klaus Wenninger -Date: Thu, 4 May 2017 23:08:40 +0200 -Subject: [PATCH 2/4] Test: pengine: update regression tests for probes of - guest-connections - ---- - pengine/test10/bug-cl-5247.dot | 3 + - pengine/test10/bug-cl-5247.exp | 286 +++++++++--------- - pengine/test10/bug-cl-5247.summary | 6 +- - pengine/test10/guest-node-host-dies.dot | 18 ++ - pengine/test10/guest-node-host-dies.exp | 322 +++++++++++++-------- - pengine/test10/guest-node-host-dies.summary | 6 + - pengine/test10/whitebox-fail3.dot | 2 + - pengine/test10/whitebox-fail3.exp | 72 +++-- - pengine/test10/whitebox-fail3.summary | 3 +- - pengine/test10/whitebox-migrate1.dot | 4 + - pengine/test10/whitebox-migrate1.exp | 92 +++--- - pengine/test10/whitebox-migrate1.summary | 1 + - pengine/test10/whitebox-ms-ordering-move.dot | 16 + - pengine/test10/whitebox-ms-ordering-move.exp | 194 +++++++++---- - pengine/test10/whitebox-ms-ordering-move.summary | 8 + - pengine/test10/whitebox-ms-ordering.dot | 12 + - pengine/test10/whitebox-ms-ordering.exp | 262 +++++++++++------ - pengine/test10/whitebox-ms-ordering.summary | 6 + - pengine/test10/whitebox-nested-group.dot | 6 + - pengine/test10/whitebox-nested-group.exp | 216 ++++++++------ - pengine/test10/whitebox-nested-group.summary | 3 + - pengine/test10/whitebox-unexpectedly-running.dot | 2 + - pengine/test10/whitebox-unexpectedly-running.exp | 46 +-- - .../test10/whitebox-unexpectedly-running.summary | 1 + - 24 files changed, 1018 insertions(+), 569 deletions(-) - -diff --git a/pengine/test10/bug-cl-5247.dot b/pengine/test10/bug-cl-5247.dot -index 0ab7893..44f788d 100644 ---- a/pengine/test10/bug-cl-5247.dot -+++ b/pengine/test10/bug-cl-5247.dot -@@ -89,6 +89,9 @@ digraph "g" { - "pgsql_stop_0 pgsr02" -> "all_stopped" [ style = bold] - "pgsql_stop_0 pgsr02" -> "msPostgresql_stopped_0" [ style = bold] - "pgsql_stop_0 pgsr02" [ style=bold color="green" fontcolor="orange"] -+"pgsr01_monitor_0 bl460g8n4" [ style=bold color="green" fontcolor="black"] -+"pgsr02_monitor_0 bl460g8n3" -> "pgsr02_stop_0 bl460g8n4" [ style = bold] -+"pgsr02_monitor_0 bl460g8n3" [ style=bold color="green" fontcolor="black"] - "pgsr02_stop_0 bl460g8n4" -> "all_stopped" [ style = bold] - "pgsr02_stop_0 bl460g8n4" -> "prmDB2_stop_0 bl460g8n4" [ style = bold] - "pgsr02_stop_0 bl460g8n4" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bug-cl-5247.exp b/pengine/test10/bug-cl-5247.exp -index 8ef8b9d..e7bac9c 100644 ---- a/pengine/test10/bug-cl-5247.exp -+++ b/pengine/test10/bug-cl-5247.exp -@@ -8,28 +8,28 @@ -
    - - -- -+ - - -
    - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,32 +46,32 @@ - - - -- -+ - -
    -
    - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -87,10 +87,10 @@ - - - -- -+ - - -- -+ - -
    -
    -@@ -109,22 +109,22 @@ -
    - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -141,32 +141,32 @@ - - - -- -+ - -
    -
    - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -182,10 +182,10 @@ - - - -- -+ - - -- -+ - -
    -
    -@@ -204,349 +204,349 @@ -
    - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -554,124 +554,133 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -679,11 +688,24 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -- -+ - -- -+ - - - -@@ -696,19 +718,19 @@ - -
    -
    -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - - - -@@ -719,31 +741,31 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - -
    -
    -diff --git a/pengine/test10/bug-cl-5247.summary b/pengine/test10/bug-cl-5247.summary -index 91ed8db..a13754f 100644 ---- a/pengine/test10/bug-cl-5247.summary -+++ b/pengine/test10/bug-cl-5247.summary -@@ -32,8 +32,8 @@ Executing cluster transition: - * Pseudo action: grpStonith2_stop_0 - * Resource action: prmStonith2-2 stop on bl460g8n3 - * Pseudo action: msPostgresql_pre_notify_demote_0 -- * Resource action: pgsr02 stop on bl460g8n4 -- * Resource action: prmDB2 stop on bl460g8n4 -+ * Resource action: pgsr01 monitor on bl460g8n4 -+ * Resource action: pgsr02 monitor on bl460g8n3 - * Pseudo action: grpStonith1_stopped_0 - * Pseudo action: grpStonith1_start_0 - * Pseudo action: grpStonith2_stopped_0 -@@ -41,6 +41,8 @@ Executing cluster transition: - * Resource action: pgsql notify on pgsr01 - * Pseudo action: msPostgresql_confirmed-pre_notify_demote_0 - * Pseudo action: msPostgresql_demote_0 -+ * Resource action: pgsr02 stop on bl460g8n4 -+ * Resource action: prmDB2 stop on bl460g8n4 - * Pseudo action: stonith-pgsr02-off on pgsr02 - * Pseudo action: stonith_complete - * Pseudo action: pgsql_post_notify_stop_0 -diff --git a/pengine/test10/guest-node-host-dies.dot b/pengine/test10/guest-node-host-dies.dot -index c1ced94..1fdec7b 100644 ---- a/pengine/test10/guest-node-host-dies.dot -+++ b/pengine/test10/guest-node-host-dies.dot -@@ -63,6 +63,15 @@ digraph "g" { - "lxc-ms_stop_0 lxc2" -> "lxc-ms-master_stopped_0" [ style = bold] - "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] - "lxc1_start_0 rhel7-2" -> "lxc-ms_start_0 lxc1" [ style = bold] -@@ -72,6 +81,15 @@ digraph "g" { - "lxc1_stop_0 rhel7-1" -> "container1_stop_0 rhel7-1" [ style = bold] - "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] - "lxc2_start_0 rhel7-3" -> "lxc-ms_start_0 lxc2" [ style = bold] -diff --git a/pengine/test10/guest-node-host-dies.exp b/pengine/test10/guest-node-host-dies.exp -index 2029b60..5f49eb1 100644 ---- a/pengine/test10/guest-node-host-dies.exp -+++ b/pengine/test10/guest-node-host-dies.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -20,7 +20,7 @@ - - - -- -+ - -
    -
    -@@ -39,258 +39,258 @@ -
    - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -298,194 +298,284 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ - - -- -+ - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -496,9 +586,9 @@ - - - -- -+ - -- -+ - - - -@@ -507,13 +597,13 @@ - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -522,29 +612,29 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -552,31 +642,31 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/guest-node-host-dies.summary b/pengine/test10/guest-node-host-dies.summary -index 83af5ce..c6180ca 100644 ---- a/pengine/test10/guest-node-host-dies.summary -+++ b/pengine/test10/guest-node-host-dies.summary -@@ -23,6 +23,12 @@ Transition Summary: - Executing cluster transition: - * Resource action: Fencing stop on rhel7-4 - * Pseudo action: lxc-ms-master_demote_0 -+ * Resource action: lxc1 monitor on rhel7-5 -+ * Resource action: lxc1 monitor on rhel7-4 -+ * Resource action: lxc1 monitor on rhel7-3 -+ * 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 -diff --git a/pengine/test10/whitebox-fail3.dot b/pengine/test10/whitebox-fail3.dot -index 123acd0..b3c1535 100644 ---- a/pengine/test10/whitebox-fail3.dot -+++ b/pengine/test10/whitebox-fail3.dot -@@ -1,4 +1,6 @@ - digraph "g" { -+"18builder_monitor_0 dvossel-laptop2" -> "18builder_start_0 dvossel-laptop2" [ style = bold] -+"18builder_monitor_0 dvossel-laptop2" [ style=bold color="green" fontcolor="black"] - "18builder_monitor_30000 dvossel-laptop2" [ style=bold color="green" fontcolor="black"] - "18builder_start_0 dvossel-laptop2" -> "18builder_monitor_30000 dvossel-laptop2" [ style = bold] - "18builder_start_0 dvossel-laptop2" -> "FAKE_start_0 18builder" [ style = bold] -diff --git a/pengine/test10/whitebox-fail3.exp b/pengine/test10/whitebox-fail3.exp -index 1cbd24a..8ddaba0 100644 ---- a/pengine/test10/whitebox-fail3.exp -+++ b/pengine/test10/whitebox-fail3.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -10,23 +10,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -35,54 +35,54 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -90,54 +90,54 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -145,39 +145,51 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ -+ -+ -+ - - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-fail3.summary b/pengine/test10/whitebox-fail3.summary -index 7acf1b6..19b2e3d 100644 ---- a/pengine/test10/whitebox-fail3.summary -+++ b/pengine/test10/whitebox-fail3.summary -@@ -24,8 +24,9 @@ Executing cluster transition: - * Resource action: FAKE stop on dvossel-laptop2 - * Pseudo action: W-master_start_0 - * Pseudo action: X-master_start_0 -- * Resource action: 18builder start on dvossel-laptop2 -+ * Resource action: 18builder monitor on dvossel-laptop2 - * Pseudo action: all_stopped -+ * Resource action: 18builder start on dvossel-laptop2 - * Resource action: FAKE start on 18builder - * Resource action: W start on 18builder - * Pseudo action: W-master_running_0 -diff --git a/pengine/test10/whitebox-migrate1.dot b/pengine/test10/whitebox-migrate1.dot -index b00e272..e54df2c 100644 ---- a/pengine/test10/whitebox-migrate1.dot -+++ b/pengine/test10/whitebox-migrate1.dot -@@ -25,6 +25,10 @@ - "rhel7-node1_migrate_from_0 rhel7-node3" [ style=bold color="green" fontcolor="black"] - "rhel7-node1_migrate_to_0 rhel7-node2" -> "rhel7-node1_migrate_from_0 rhel7-node3" [ style = bold] - "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] - "rhel7-node1_start_0 rhel7-node3" [ style=bold color="green" fontcolor="orange"] -diff --git a/pengine/test10/whitebox-migrate1.exp b/pengine/test10/whitebox-migrate1.exp -index 6ce29eb..1b6c451 100644 ---- a/pengine/test10/whitebox-migrate1.exp -+++ b/pengine/test10/whitebox-migrate1.exp -@@ -1,33 +1,33 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -36,33 +36,33 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -71,20 +71,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -93,136 +93,154 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ -+ -+ -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ -+ -+ -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ -+ -+ -+ - - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-migrate1.summary b/pengine/test10/whitebox-migrate1.summary -index 7cbe03d..a6e4c00 100644 ---- a/pengine/test10/whitebox-migrate1.summary -+++ b/pengine/test10/whitebox-migrate1.summary -@@ -23,6 +23,7 @@ Executing cluster transition: - * Resource action: shooter1 stop on rhel7-node3 - * Resource action: FAKE3 stop on rhel7-node3 - * Resource action: remote-rsc migrate_to on rhel7-node2 -+ * Resource action: rhel7-node1 monitor on rhel7-node3 - * Resource action: shooter1 start on rhel7-node2 - * Resource action: FAKE3 start on rhel7-node2 - * Resource action: remote-rsc migrate_from on rhel7-node3 -diff --git a/pengine/test10/whitebox-ms-ordering-move.dot b/pengine/test10/whitebox-ms-ordering-move.dot -index 0e4df3c..fe0b0e8 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.dot -+++ b/pengine/test10/whitebox-ms-ordering-move.dot -@@ -40,6 +40,18 @@ digraph "g" { - "lxc-ms_stop_0 lxc1" -> "lxc-ms_start_0 lxc1" [ style = bold] - "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] - "lxc1_start_0 rhel7-2" -> "lxc-ms_start_0 lxc1" [ style = bold] -@@ -49,4 +61,8 @@ digraph "g" { - "lxc1_stop_0 rhel7-1" -> "container1_stop_0 rhel7-1" [ style = bold] - "lxc1_stop_0 rhel7-1" -> "lxc1_start_0 rhel7-2" [ style = bold] - "lxc1_stop_0 rhel7-1" [ style=bold color="green" fontcolor="black"] -+"lxc2_monitor_0 rhel7-2" [ style=bold color="green" fontcolor="black"] -+"lxc2_monitor_0 rhel7-3" [ style=bold color="green" fontcolor="black"] -+"lxc2_monitor_0 rhel7-4" [ style=bold color="green" fontcolor="black"] -+"lxc2_monitor_0 rhel7-5" [ style=bold color="green" fontcolor="black"] - } -diff --git a/pengine/test10/whitebox-ms-ordering-move.exp b/pengine/test10/whitebox-ms-ordering-move.exp -index 54067f0..f8718de 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.exp -+++ b/pengine/test10/whitebox-ms-ordering-move.exp -@@ -1,118 +1,118 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -120,123 +120,135 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - - -@@ -246,25 +258,109 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-ms-ordering-move.summary b/pengine/test10/whitebox-ms-ordering-move.summary -index 5777b84..d5f133b 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.summary -+++ b/pengine/test10/whitebox-ms-ordering-move.summary -@@ -36,6 +36,14 @@ Transition Summary: - - Executing cluster transition: - * Pseudo action: lxc-ms-master_demote_0 -+ * Resource action: lxc1 monitor on rhel7-5 -+ * Resource action: lxc1 monitor on rhel7-4 -+ * Resource action: lxc1 monitor on rhel7-3 -+ * Resource action: lxc1 monitor on rhel7-2 -+ * Resource action: lxc2 monitor on rhel7-5 -+ * Resource action: lxc2 monitor on rhel7-4 -+ * Resource action: lxc2 monitor on rhel7-3 -+ * Resource action: lxc2 monitor on rhel7-2 - * Resource action: lxc-ms demote on lxc1 - * Pseudo action: lxc-ms-master_demoted_0 - * Pseudo action: lxc-ms-master_stop_0 -diff --git a/pengine/test10/whitebox-ms-ordering.dot b/pengine/test10/whitebox-ms-ordering.dot -index bd77363..1a942f4 100644 ---- a/pengine/test10/whitebox-ms-ordering.dot -+++ b/pengine/test10/whitebox-ms-ordering.dot -@@ -69,11 +69,23 @@ - "lxc-ms_stop_0 lxc2" -> "lxc-ms-master_stopped_0" [ style = bold] - "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 18node1" -> "lxc1_start_0 18node1" [ style = bold] -+"lxc1_monitor_0 18node1" [ style=bold color="green" fontcolor="black"] -+"lxc1_monitor_0 18node2" -> "lxc1_start_0 18node1" [ style = bold] -+"lxc1_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] -+"lxc1_monitor_0 18node3" -> "lxc1_start_0 18node1" [ style = bold] -+"lxc1_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] - "lxc1_monitor_30000 18node1" [ style=bold color="green" fontcolor="black"] - "lxc1_start_0 18node1" -> "lxc-ms_promote_0 lxc1" [ style = bold] - "lxc1_start_0 18node1" -> "lxc-ms_start_0 lxc1" [ style = bold] - "lxc1_start_0 18node1" -> "lxc1_monitor_30000 18node1" [ style = bold] - "lxc1_start_0 18node1" [ style=bold color="green" fontcolor="black"] -+"lxc2_monitor_0 18node1" -> "lxc2_start_0 18node1" [ style = bold] -+"lxc2_monitor_0 18node1" [ style=bold color="green" fontcolor="black"] -+"lxc2_monitor_0 18node2" -> "lxc2_start_0 18node1" [ style = bold] -+"lxc2_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] -+"lxc2_monitor_0 18node3" -> "lxc2_start_0 18node1" [ style = bold] -+"lxc2_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] - "lxc2_monitor_30000 18node1" [ style=bold color="green" fontcolor="black"] - "lxc2_start_0 18node1" -> "lxc-ms_monitor_10000 lxc2" [ style = bold] - "lxc2_start_0 18node1" -> "lxc-ms_start_0 lxc2" [ style = bold] -diff --git a/pengine/test10/whitebox-ms-ordering.exp b/pengine/test10/whitebox-ms-ordering.exp -index 5d32d6f..de4f4d0 100644 ---- a/pengine/test10/whitebox-ms-ordering.exp -+++ b/pengine/test10/whitebox-ms-ordering.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -11,19 +11,19 @@ - - - -- -+ - - -- -+ - - -- -+ - -
    -
    - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -60,19 +60,19 @@ - - - -- -+ - - -- -+ - - -- -+ - -
    -
    - - -- -+ - - - -@@ -81,7 +81,7 @@ - - - -- -+ - - - -@@ -99,54 +99,54 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -155,40 +155,40 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - -
    -
    - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -197,7 +197,7 @@ - - - -- -+ - - - -@@ -215,75 +215,75 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -291,91 +291,91 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -384,80 +384,152 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - -
    -
    - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -466,9 +538,9 @@ - - - -- -+ - -- -+ - - - -@@ -477,22 +549,22 @@ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -500,13 +572,13 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-ms-ordering.summary b/pengine/test10/whitebox-ms-ordering.summary -index 5d7c042..365cf8d 100644 ---- a/pengine/test10/whitebox-ms-ordering.summary -+++ b/pengine/test10/whitebox-ms-ordering.summary -@@ -27,6 +27,12 @@ Executing cluster transition: - * Resource action: lxc-ms monitor on 18node2 - * Resource action: lxc-ms monitor on 18node1 - * Pseudo action: lxc-ms-master_demote_0 -+ * Resource action: lxc1 monitor on 18node3 -+ * Resource action: lxc1 monitor on 18node2 -+ * Resource action: lxc1 monitor on 18node1 -+ * Resource action: lxc2 monitor on 18node3 -+ * Resource action: lxc2 monitor on 18node2 -+ * Resource action: lxc2 monitor on 18node1 - * Pseudo action: stonith-lxc2-reboot on lxc2 - * Pseudo action: stonith-lxc1-reboot on lxc1 - * Pseudo action: stonith_complete -diff --git a/pengine/test10/whitebox-nested-group.dot b/pengine/test10/whitebox-nested-group.dot -index 2e41e3e..e149f9a 100644 ---- a/pengine/test10/whitebox-nested-group.dot -+++ b/pengine/test10/whitebox-nested-group.dot -@@ -1,4 +1,10 @@ - digraph "g" { -+"c7auto4_monitor_0 c7auto1" -> "c7auto4_start_0 c7auto1" [ style = bold] -+"c7auto4_monitor_0 c7auto1" [ style=bold color="green" fontcolor="black"] -+"c7auto4_monitor_0 c7auto2" -> "c7auto4_start_0 c7auto1" [ style = bold] -+"c7auto4_monitor_0 c7auto2" [ style=bold color="green" fontcolor="black"] -+"c7auto4_monitor_0 c7auto3" -> "c7auto4_start_0 c7auto1" [ style = bold] -+"c7auto4_monitor_0 c7auto3" [ style=bold color="green" fontcolor="black"] - "c7auto4_monitor_30000 c7auto1" [ style=bold color="green" fontcolor="black"] - "c7auto4_start_0 c7auto1" -> "c7auto4_monitor_30000 c7auto1" [ style = bold] - "c7auto4_start_0 c7auto1" -> "fake2_monitor_10000 c7auto4" [ style = bold] -diff --git a/pengine/test10/whitebox-nested-group.exp b/pengine/test10/whitebox-nested-group.exp -index 67767d3..e6b68f2 100644 ---- a/pengine/test10/whitebox-nested-group.exp -+++ b/pengine/test10/whitebox-nested-group.exp -@@ -1,20 +1,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -24,16 +24,16 @@ - - - -- -+ - - -- -+ - -
    -
    - - -- -+ - - - -@@ -42,7 +42,7 @@ - - - -- -+ - - - -@@ -60,23 +60,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -86,19 +86,19 @@ - - - -- -+ - - -- -+ - - -- -+ - -
    -
    - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -@@ -125,20 +125,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -148,16 +148,16 @@ - - - -- -+ - - -- -+ - -
    -
    - - -- -+ - - - -@@ -166,7 +166,7 @@ - - - -- -+ - - - -@@ -184,20 +184,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -207,16 +207,16 @@ - - - -- -+ - - -- -+ - -
    -
    - - -- -+ - - - -@@ -225,7 +225,7 @@ - - - -- -+ - - - -@@ -243,23 +243,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -269,19 +269,19 @@ - - - -- -+ - - -- -+ - - -- -+ - -
    -
    - - -- -+ - - - -@@ -290,7 +290,7 @@ - - - -- -+ - - - -@@ -308,33 +308,33 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -343,33 +343,33 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -378,59 +378,59 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -445,31 +445,31 @@ -
    - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -478,34 +478,34 @@ - - - -- -+ - - -- -+ - -
    -
    - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -513,20 +513,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -536,19 +536,19 @@ - - - -- -+ - - -- -+ - - -- -+ - -
    - - - -- -+ - - - -@@ -557,7 +557,7 @@ - - - -- -+ - - - -@@ -575,57 +575,93 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/whitebox-nested-group.summary b/pengine/test10/whitebox-nested-group.summary -index 6e6287a..ca9c47f 100644 ---- a/pengine/test10/whitebox-nested-group.summary -+++ b/pengine/test10/whitebox-nested-group.summary -@@ -52,6 +52,9 @@ Executing cluster transition: - * Resource action: fake_fs monitor on c7auto3 - * Resource action: fake_fs monitor on c7auto2 - * Resource action: fake_fs monitor on c7auto1 -+ * Resource action: c7auto4 monitor on c7auto3 -+ * Resource action: c7auto4 monitor on c7auto2 -+ * Resource action: c7auto4 monitor on c7auto1 - * Resource action: fake1 start on c7auto3 - * Resource action: fake3 start on c7auto2 - * Resource action: fake4 start on c7auto3 -diff --git a/pengine/test10/whitebox-unexpectedly-running.dot b/pengine/test10/whitebox-unexpectedly-running.dot -index 2915d77..0e2e5bb 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.dot -+++ b/pengine/test10/whitebox-unexpectedly-running.dot -@@ -8,6 +8,8 @@ - "FAKE_stop_0 18builder" -> "stonith 'reboot' remote1" [ style = bold] - "FAKE_stop_0 18builder" [ style=bold color="green" fontcolor="black"] - "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"] - "remote1_monitor_30000 18builder" [ style=bold color="green" fontcolor="black"] - "remote1_start_0 18builder" -> "remote1_monitor_30000 18builder" [ style = bold] - "remote1_start_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 17606ce..a0e5cae 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.exp -+++ b/pengine/test10/whitebox-unexpectedly-running.exp -@@ -1,33 +1,33 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -36,33 +36,45 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ -+ -+ -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -71,23 +83,23 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - - - -@@ -95,10 +107,10 @@ - - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-unexpectedly-running.summary b/pengine/test10/whitebox-unexpectedly-running.summary -index 7d5b908..0b5ca42 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.summary -+++ b/pengine/test10/whitebox-unexpectedly-running.summary -@@ -10,6 +10,7 @@ Transition Summary: - - Executing cluster transition: - * Resource action: FAKE stop on 18builder -+ * Resource action: remote1 monitor on 18builder - * Pseudo action: stonith-remote1-reboot on remote1 - * Pseudo action: stonith_complete - * Pseudo action: all_stopped --- -1.8.3.1 - - -From 43450d8bfabc981b2637189e9872aaa0b7cdccb3 Mon Sep 17 00:00:00 2001 -From: Klaus Wenninger -Date: Fri, 5 May 2017 00:50:33 +0200 -Subject: [PATCH 3/4] Fix: pengine: unique ids for meta-attributes of - guest-connection - ---- - lib/pengine/unpack.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 29a1013..0e9f2b1 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -463,7 +463,7 @@ expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, pe_working_set_t *data - - if (remote_allow_migrate) { - attr = create_xml_node(xml_tmp, XML_CIB_TAG_NVPAIR); -- crm_xml_set_id(attr, "%s_%s", remote_name, "meta-attributes-container"); -+ crm_xml_set_id(attr, "%s_%s", remote_name, "meta-attributes-migrate"); - crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, XML_OP_ATTR_ALLOW_MIGRATE); - crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, remote_allow_migrate); - } --- -1.8.3.1 - - -From f5a8c701b81b6e4bde989feeef93fb5b1e539d28 Mon Sep 17 00:00:00 2001 -From: Klaus Wenninger -Date: Thu, 4 May 2017 19:48:06 +0200 -Subject: [PATCH 4/4] Feature: pengine: unmanage guest-container puts guest in - maintenance - -sync managed-state of connection-resource with container -can be used to do - otherwise not possible - cleanup of connection - -Fixes rhbz#1303742 ---- - lib/pengine/unpack.c | 32 ++++++++++++++++++++++++-------- - 1 file changed, 24 insertions(+), 8 deletions(-) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 0e9f2b1..6ec7daf 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -72,15 +72,21 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - resource_t *rsc = node->details->remote_rsc->container; - - if (is_set(rsc->flags, pe_rsc_failed) == FALSE) { -- crm_warn("Guest node %s will be fenced (by recovering %s) %s", -- node->details->uname, rsc->id, reason); -+ if (!is_set(rsc->flags, pe_rsc_managed)) { -+ crm_notice("Not fencing guest node %s because the container is " -+ "unmanaged, otherwise we would do so recovering %s " -+ "%s", node->details->uname, rsc->id, reason); -+ } else { -+ crm_warn("Guest node %s will be fenced (by recovering %s) %s", -+ node->details->uname, rsc->id, reason); - -- /* We don't mark the node as unclean, because that would prevent the -- * node from running resources. We want to allow it to run resources -- * in this transition if the recovery succeeds. -- */ -- node->details->remote_requires_reset = TRUE; -- set_bit(rsc->flags, pe_rsc_failed); -+ /* We don't mark the node as unclean because that would prevent the -+ * node from running resources. We want to allow it to run resources -+ * in this transition if the recovery succeeds. -+ */ -+ node->details->remote_requires_reset = TRUE; -+ set_bit(rsc->flags, pe_rsc_failed); -+ } - } - } else if (is_dangling_container_remote_node(node)) { - crm_info("Cleaning up dangling connection resource for guest node %s %s" -@@ -409,6 +415,7 @@ expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, pe_working_set_t *data - const char *remote_port = NULL; - const char *connect_timeout = "60s"; - const char *remote_allow_migrate=NULL; -+ const char *container_managed = NULL; - - for (attr_set = __xml_first_child(xml_obj); attr_set != NULL; attr_set = __xml_next_element(attr_set)) { - if (safe_str_neq((const char *)attr_set->name, XML_TAG_META_SETS)) { -@@ -429,6 +436,8 @@ expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, pe_working_set_t *data - connect_timeout = value; - } else if (safe_str_eq(name, "remote-allow-migrate")) { - remote_allow_migrate=value; -+ } else if (safe_str_eq(name, XML_RSC_ATTR_MANAGED)) { -+ container_managed = value; - } - } - } -@@ -468,6 +477,13 @@ expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, pe_working_set_t *data - crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, remote_allow_migrate); - } - -+ if (container_managed) { -+ attr = create_xml_node(xml_tmp, XML_CIB_TAG_NVPAIR); -+ crm_xml_set_id(attr, "%s_%s", remote_name, "meta-attributes-managed"); -+ crm_xml_add(attr, XML_NVPAIR_ATTR_NAME, XML_RSC_ATTR_MANAGED); -+ crm_xml_add(attr, XML_NVPAIR_ATTR_VALUE, container_managed); -+ } -+ - xml_tmp = create_xml_node(xml_rsc, "operations"); - attr = create_xml_node(xml_tmp, XML_ATTR_OP); - crm_xml_set_id(attr, "%s_%s", remote_name, "monitor-interval-30s"); --- -1.8.3.1 - diff --git a/SOURCES/059-soname-compat.patch b/SOURCES/059-soname-compat.patch deleted file mode 100644 index cbb3811..0000000 --- a/SOURCES/059-soname-compat.patch +++ /dev/null @@ -1,44 +0,0 @@ -From d8c70161a608500de9e692d74a6df54dd6495059 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 8 May 2017 13:00:10 -0500 -Subject: [PATCH] Refactor: libpe_status: ensure new fields are at end of - struct - -struct is internal, but better safe than sorry ---- - include/crm/pengine/status.h | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index 50940d4..e0297f9 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -132,7 +132,8 @@ typedef struct pe_working_set_s { - struct node_shared_s { - const char *id; - const char *uname; --/* Make all these flags into a bitfield one day */ -+ -+ /* @TODO convert these flags (and the ones at the end) into a bitfield */ - gboolean online; - gboolean standby; - gboolean standby_onfail; -@@ -142,7 +143,6 @@ struct node_shared_s { - gboolean shutdown; - gboolean expected_up; - gboolean is_dc; -- gboolean unpacked; - - int num_resources; - GListPtr running_rsc; /* resource_t* */ -@@ -163,6 +163,7 @@ struct node_shared_s { - gboolean remote_requires_reset; - gboolean remote_was_fenced; - gboolean remote_maintenance; /* what the remote-rsc is thinking */ -+ gboolean unpacked; - }; - - struct node_s { --- -1.8.3.1 - diff --git a/SOURCES/060-bundle-remote-fixes.patch b/SOURCES/060-bundle-remote-fixes.patch deleted file mode 100644 index 49e3613..0000000 --- a/SOURCES/060-bundle-remote-fixes.patch +++ /dev/null @@ -1,3735 +0,0 @@ -From 7a9d55107fd3cd7c7f11854e8bf06f35900ded98 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 19 May 2017 13:55:51 +1000 -Subject: [PATCH 01/13] Fix: PE: Partially restore 62ed004 to ensure remote - connections are available before attempting resource recovery - -However only do so for non-container connections ---- - pengine/allocate.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 3314d77..3819c24 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -1836,6 +1836,15 @@ apply_remote_node_ordering(pe_working_set_t *data_set) - NULL, - pe_order_preserve | pe_order_implies_first, - data_set); -+ } else if(container == NULL) { -+ custom_action_order(remote_rsc, -+ generate_op_key(remote_rsc->id, RSC_START, 0), -+ NULL, -+ action->rsc, -+ NULL, -+ action, -+ pe_order_preserve | pe_order_implies_then | pe_order_runnable_left, -+ data_set); - } - - if(container && is_set(container->flags, pe_rsc_failed)) { --- -1.8.3.1 - - -From 4d52523d6b101226a6bf71fe009c98df15c7ad3e Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 19 May 2017 13:59:50 +1000 -Subject: [PATCH 02/13] Test: PE: Ensure remote connections are available - before attempting resource recovery - ---- - pengine/regression.sh | 1 + - pengine/test10/remote-recovery.dot | 221 +++++++ - pengine/test10/remote-recovery.exp | 1118 ++++++++++++++++++++++++++++++++ - pengine/test10/remote-recovery.scores | 848 ++++++++++++++++++++++++ - pengine/test10/remote-recovery.summary | 164 +++++ - pengine/test10/remote-recovery.xml | 739 +++++++++++++++++++++ - 6 files changed, 3091 insertions(+) - create mode 100644 pengine/test10/remote-recovery.dot - create mode 100644 pengine/test10/remote-recovery.exp - create mode 100644 pengine/test10/remote-recovery.scores - create mode 100644 pengine/test10/remote-recovery.summary - create mode 100644 pengine/test10/remote-recovery.xml - -diff --git a/pengine/regression.sh b/pengine/regression.sh -index e2e7bf6..62fc066 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -837,6 +837,7 @@ do_test remote-recover-fail "Make sure start failure causes fencing if rsc a - do_test remote-start-fail "Make sure a start failure does not result in fencing if no active resources are on remote." - do_test remote-unclean2 "Make monitor failure always results in fencing, even if no rsc are active on remote." - do_test remote-fence-before-reconnect "Fence before clearing recurring monitor failure" -+do_test remote-recovery "Recover remote connections before attempting demotion" - - echo "" - do_test resource-discovery "Exercises resource-discovery location constraint option." -diff --git a/pengine/test10/remote-recovery.dot b/pengine/test10/remote-recovery.dot -new file mode 100644 -index 0000000..31a82af ---- /dev/null -+++ b/pengine/test10/remote-recovery.dot -@@ -0,0 +1,221 @@ -+digraph "g" { -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"galera-0_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-0_start_0 controller-2" -> "galera-0_monitor_20000 controller-2" [ style = bold] -+"galera-0_start_0 controller-2" -> "galera_demote_0 galera-0" [ style = bold] -+"galera-0_start_0 controller-2" -> "galera_monitor_10000 galera-0" [ style = bold] -+"galera-0_start_0 controller-2" -> "galera_promote_0 galera-0" [ style = bold] -+"galera-0_start_0 controller-2" -> "galera_start_0 galera-0" [ style = bold] -+"galera-0_start_0 controller-2" -> "galera_stop_0 galera-0" [ style = bold] -+"galera-0_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-0_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"galera-0_stop_0 controller-1" -> "galera-0_start_0 controller-2" [ style = bold] -+"galera-0_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"galera-2_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-2_start_0 controller-2" -> "galera-2_monitor_20000 controller-2" [ style = bold] -+"galera-2_start_0 controller-2" -> "galera_demote_0 galera-2" [ style = bold] -+"galera-2_start_0 controller-2" -> "galera_monitor_10000 galera-2" [ style = bold] -+"galera-2_start_0 controller-2" -> "galera_promote_0 galera-2" [ style = bold] -+"galera-2_start_0 controller-2" -> "galera_start_0 galera-2" [ style = bold] -+"galera-2_start_0 controller-2" -> "galera_stop_0 galera-2" [ style = bold] -+"galera-2_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-2_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"galera-2_stop_0 controller-1" -> "galera-2_start_0 controller-2" [ style = bold] -+"galera-2_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"galera-master_demote_0" -> "galera-master_demoted_0" [ style = bold] -+"galera-master_demote_0" -> "galera_demote_0 galera-0" [ style = bold] -+"galera-master_demote_0" -> "galera_demote_0 galera-2" [ style = bold] -+"galera-master_demote_0" [ style=bold color="green" fontcolor="orange"] -+"galera-master_demoted_0" -> "galera-master_promote_0" [ style = bold] -+"galera-master_demoted_0" -> "galera-master_start_0" [ style = bold] -+"galera-master_demoted_0" -> "galera-master_stop_0" [ style = bold] -+"galera-master_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"galera-master_promote_0" -> "galera_promote_0 galera-0" [ style = bold] -+"galera-master_promote_0" -> "galera_promote_0 galera-2" [ style = bold] -+"galera-master_promote_0" [ style=bold color="green" fontcolor="orange"] -+"galera-master_promoted_0" [ style=bold color="green" fontcolor="orange"] -+"galera-master_running_0" -> "galera-master_promote_0" [ style = bold] -+"galera-master_running_0" [ style=bold color="green" fontcolor="orange"] -+"galera-master_start_0" -> "galera-master_running_0" [ style = bold] -+"galera-master_start_0" -> "galera_start_0 galera-0" [ style = bold] -+"galera-master_start_0" -> "galera_start_0 galera-2" [ style = bold] -+"galera-master_start_0" [ style=bold color="green" fontcolor="orange"] -+"galera-master_stop_0" -> "galera-master_stopped_0" [ style = bold] -+"galera-master_stop_0" -> "galera_stop_0 galera-0" [ style = bold] -+"galera-master_stop_0" -> "galera_stop_0 galera-2" [ style = bold] -+"galera-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"galera-master_stopped_0" -> "galera-master_promote_0" [ style = bold] -+"galera-master_stopped_0" -> "galera-master_start_0" [ style = bold] -+"galera-master_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"galera_demote_0 galera-0" -> "galera-master_demoted_0" [ style = bold] -+"galera_demote_0 galera-0" -> "galera_demote_0 galera-2" [ style = bold] -+"galera_demote_0 galera-0" -> "galera_promote_0 galera-0" [ style = bold] -+"galera_demote_0 galera-0" -> "galera_stop_0 galera-0" [ style = bold] -+"galera_demote_0 galera-0" [ style=bold color="green" fontcolor="black"] -+"galera_demote_0 galera-2" -> "galera-master_demoted_0" [ style = bold] -+"galera_demote_0 galera-2" -> "galera_promote_0 galera-2" [ style = bold] -+"galera_demote_0 galera-2" -> "galera_stop_0 galera-2" [ style = bold] -+"galera_demote_0 galera-2" [ style=bold color="green" fontcolor="black"] -+"galera_monitor_10000 galera-0" [ style=bold color="green" fontcolor="black"] -+"galera_monitor_10000 galera-2" [ style=bold color="green" fontcolor="black"] -+"galera_promote_0 galera-0" -> "galera-master_promoted_0" [ style = bold] -+"galera_promote_0 galera-0" -> "galera_monitor_10000 galera-0" [ style = bold] -+"galera_promote_0 galera-0" [ style=bold color="green" fontcolor="black"] -+"galera_promote_0 galera-2" -> "galera-master_promoted_0" [ style = bold] -+"galera_promote_0 galera-2" -> "galera_monitor_10000 galera-2" [ style = bold] -+"galera_promote_0 galera-2" -> "galera_promote_0 galera-0" [ style = bold] -+"galera_promote_0 galera-2" [ style=bold color="green" fontcolor="black"] -+"galera_start_0 galera-0" -> "galera-master_running_0" [ style = bold] -+"galera_start_0 galera-0" -> "galera_monitor_10000 galera-0" [ style = bold] -+"galera_start_0 galera-0" -> "galera_promote_0 galera-0" [ style = bold] -+"galera_start_0 galera-0" [ style=bold color="green" fontcolor="black"] -+"galera_start_0 galera-2" -> "galera-master_running_0" [ style = bold] -+"galera_start_0 galera-2" -> "galera_monitor_10000 galera-2" [ style = bold] -+"galera_start_0 galera-2" -> "galera_promote_0 galera-2" [ style = bold] -+"galera_start_0 galera-2" -> "galera_start_0 galera-0" [ style = bold] -+"galera_start_0 galera-2" [ style=bold color="green" fontcolor="black"] -+"galera_stop_0 galera-0" -> "all_stopped" [ style = bold] -+"galera_stop_0 galera-0" -> "galera-master_stopped_0" [ style = bold] -+"galera_stop_0 galera-0" -> "galera_start_0 galera-0" [ style = bold] -+"galera_stop_0 galera-0" -> "galera_stop_0 galera-2" [ style = bold] -+"galera_stop_0 galera-0" [ style=bold color="green" fontcolor="black"] -+"galera_stop_0 galera-2" -> "all_stopped" [ style = bold] -+"galera_stop_0 galera-2" -> "galera-master_stopped_0" [ style = bold] -+"galera_stop_0 galera-2" -> "galera_start_0 galera-2" [ style = bold] -+"galera_stop_0 galera-2" [ style=bold color="green" fontcolor="black"] -+"haproxy-clone_stop_0" -> "haproxy-clone_stopped_0" [ style = bold] -+"haproxy-clone_stop_0" -> "haproxy_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-clone_stopped_0" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"haproxy_stop_0 controller-1" -> "haproxy-clone_stopped_0" [ style = bold] -+"haproxy_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.1.14_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.14_start_0 controller-2" -> "ip-172.17.1.14_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.1.14_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.14_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.1.14_stop_0 controller-1" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold] -+"ip-172.17.1.14_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.1.17_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.17_start_0 controller-2" -> "ip-172.17.1.17_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.1.17_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.17_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.1.17_stop_0 controller-1" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold] -+"ip-172.17.1.17_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.4.11_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.4.11_start_0 controller-2" -> "ip-172.17.4.11_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.4.11_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.4.11_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.4.11_stop_0 controller-1" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold] -+"ip-172.17.4.11_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"messaging-1_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"] -+"messaging-1_start_0 controller-2" -> "messaging-1_monitor_20000 controller-2" [ style = bold] -+"messaging-1_start_0 controller-2" -> "rabbitmq_monitor_10000 messaging-1" [ style = bold] -+"messaging-1_start_0 controller-2" -> "rabbitmq_start_0 messaging-1" [ style = bold] -+"messaging-1_start_0 controller-2" -> "rabbitmq_stop_0 messaging-1" [ style = bold] -+"messaging-1_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"messaging-1_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"messaging-1_stop_0 controller-1" -> "messaging-1_start_0 controller-2" [ style = bold] -+"messaging-1_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-clone_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-clone_start_0" -> "rabbitmq-clone_running_0" [ style = bold] -+"rabbitmq-clone_start_0" -> "rabbitmq_start_0 messaging-1" [ style = bold] -+"rabbitmq-clone_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-clone_stop_0" -> "rabbitmq-clone_stopped_0" [ style = bold] -+"rabbitmq-clone_stop_0" -> "rabbitmq_stop_0 messaging-1" [ style = bold] -+"rabbitmq-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-clone_stopped_0" -> "rabbitmq-clone_start_0" [ style = bold] -+"rabbitmq-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_monitor_10000 messaging-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_start_0 messaging-1" -> "rabbitmq-clone_running_0" [ style = bold] -+"rabbitmq_start_0 messaging-1" -> "rabbitmq_monitor_10000 messaging-1" [ style = bold] -+"rabbitmq_start_0 messaging-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_stop_0 messaging-1" -> "all_stopped" [ style = bold] -+"rabbitmq_stop_0 messaging-1" -> "rabbitmq-clone_stopped_0" [ style = bold] -+"rabbitmq_stop_0 messaging-1" -> "rabbitmq_start_0 messaging-1" [ style = bold] -+"rabbitmq_stop_0 messaging-1" [ style=bold color="green" fontcolor="black"] -+"redis-master_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -+"redis-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_confirmed-pre_notify_stop_0" -> "redis-master_post_notify_stopped_0" [ style = bold] -+"redis-master_confirmed-pre_notify_stop_0" -> "redis-master_stop_0" [ style = bold] -+"redis-master_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_post_notify_stopped_0" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 controller-0" [ style = bold] -+"redis-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 controller-2" [ style = bold] -+"redis-master_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_pre_notify_stop_0" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 controller-0" [ style = bold] -+"redis-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 controller-2" [ style = bold] -+"redis-master_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_stop_0" -> "redis-master_stopped_0" [ style = bold] -+"redis-master_stop_0" -> "redis_stop_0 controller-1" [ style = bold] -+"redis-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_stopped_0" -> "redis-master_post_notify_stopped_0" [ style = bold] -+"redis-master_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis_confirmed-post_notify_stonith_0" -> "all_stopped" [ style = bold] -+"redis_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"redis_post_notify_stonith_0 controller-0" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_stonith_0 controller-2" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-2" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_stonith_0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 controller-0" [ style = bold] -+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 controller-2" [ style = bold] -+"redis_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"redis_pre_notify_stop_0 controller-0" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"redis_pre_notify_stop_0 controller-2" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"redis_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"redis_stop_0 controller-1" -> "redis-master_stopped_0" [ style = bold] -+"redis_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"stonith 'reboot' controller-1" -> "galera-0_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "galera-2_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "haproxy-clone_stop_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "haproxy_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "messaging-1_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis-master_stop_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis_post_notify_stonith_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' controller-1" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_monitor_60000 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" -> "stonith-fence_ipmilan-5254005bdbb5_monitor_60000 controller-2" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" -> "stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"stonith-fence_ipmilan-525400b4f6bd_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" -> "stonith-fence_ipmilan-525400b4f6bd_monitor_60000 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_start_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_monitor_60000 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith_complete" -> "all_stopped" [ style = bold] -+"stonith_complete" -> "galera-0_start_0 controller-2" [ style = bold] -+"stonith_complete" -> "galera-2_start_0 controller-2" [ style = bold] -+"stonith_complete" -> "galera_promote_0 galera-0" [ style = bold] -+"stonith_complete" -> "galera_promote_0 galera-2" [ style = bold] -+"stonith_complete" -> "galera_start_0 galera-0" [ style = bold] -+"stonith_complete" -> "galera_start_0 galera-2" [ style = bold] -+"stonith_complete" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold] -+"stonith_complete" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold] -+"stonith_complete" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold] -+"stonith_complete" -> "messaging-1_start_0 controller-2" [ style = bold] -+"stonith_complete" -> "rabbitmq_start_0 messaging-1" [ style = bold] -+"stonith_complete" [ style=bold color="green" fontcolor="orange"] -+} -diff --git a/pengine/test10/remote-recovery.exp b/pengine/test10/remote-recovery.exp -new file mode 100644 -index 0000000..70492f4 ---- /dev/null -+++ b/pengine/test10/remote-recovery.exp -@@ -0,0 +1,1118 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/remote-recovery.scores b/pengine/test10/remote-recovery.scores -new file mode 100644 -index 0000000..56a18eb ---- /dev/null -+++ b/pengine/test10/remote-recovery.scores -@@ -0,0 +1,848 @@ -+Allocation scores: -+Using the original execution date of: 2017-05-03 13:33:24Z -+clone_color: galera-master allocation score on controller-0: -INFINITY -+clone_color: galera-master allocation score on controller-1: -INFINITY -+clone_color: galera-master allocation score on controller-2: -INFINITY -+clone_color: galera-master allocation score on galera-0: 0 -+clone_color: galera-master allocation score on galera-1: 0 -+clone_color: galera-master allocation score on galera-2: 0 -+clone_color: galera-master allocation score on messaging-0: -INFINITY -+clone_color: galera-master allocation score on messaging-1: -INFINITY -+clone_color: galera-master allocation score on messaging-2: -INFINITY -+clone_color: galera:0 allocation score on controller-0: -INFINITY -+clone_color: galera:0 allocation score on controller-1: -INFINITY -+clone_color: galera:0 allocation score on controller-2: -INFINITY -+clone_color: galera:0 allocation score on galera-0: 0 -+clone_color: galera:0 allocation score on galera-1: INFINITY -+clone_color: galera:0 allocation score on galera-2: 0 -+clone_color: galera:0 allocation score on messaging-0: -INFINITY -+clone_color: galera:0 allocation score on messaging-1: -INFINITY -+clone_color: galera:0 allocation score on messaging-2: -INFINITY -+clone_color: galera:1 allocation score on controller-0: -INFINITY -+clone_color: galera:1 allocation score on controller-1: -INFINITY -+clone_color: galera:1 allocation score on controller-2: -INFINITY -+clone_color: galera:1 allocation score on galera-0: 0 -+clone_color: galera:1 allocation score on galera-1: 0 -+clone_color: galera:1 allocation score on galera-2: INFINITY -+clone_color: galera:1 allocation score on messaging-0: -INFINITY -+clone_color: galera:1 allocation score on messaging-1: -INFINITY -+clone_color: galera:1 allocation score on messaging-2: -INFINITY -+clone_color: galera:2 allocation score on controller-0: -INFINITY -+clone_color: galera:2 allocation score on controller-1: -INFINITY -+clone_color: galera:2 allocation score on controller-2: -INFINITY -+clone_color: galera:2 allocation score on galera-0: INFINITY -+clone_color: galera:2 allocation score on galera-1: 0 -+clone_color: galera:2 allocation score on galera-2: 0 -+clone_color: galera:2 allocation score on messaging-0: -INFINITY -+clone_color: galera:2 allocation score on messaging-1: -INFINITY -+clone_color: galera:2 allocation score on messaging-2: -INFINITY -+clone_color: galera:3 allocation score on controller-0: -INFINITY -+clone_color: galera:3 allocation score on controller-1: -INFINITY -+clone_color: galera:3 allocation score on controller-2: -INFINITY -+clone_color: galera:3 allocation score on galera-0: 0 -+clone_color: galera:3 allocation score on galera-1: 0 -+clone_color: galera:3 allocation score on galera-2: 0 -+clone_color: galera:3 allocation score on messaging-0: -INFINITY -+clone_color: galera:3 allocation score on messaging-1: -INFINITY -+clone_color: galera:3 allocation score on messaging-2: -INFINITY -+clone_color: galera:4 allocation score on controller-0: -INFINITY -+clone_color: galera:4 allocation score on controller-1: -INFINITY -+clone_color: galera:4 allocation score on controller-2: -INFINITY -+clone_color: galera:4 allocation score on galera-0: 0 -+clone_color: galera:4 allocation score on galera-1: 0 -+clone_color: galera:4 allocation score on galera-2: 0 -+clone_color: galera:4 allocation score on messaging-0: -INFINITY -+clone_color: galera:4 allocation score on messaging-1: -INFINITY -+clone_color: galera:4 allocation score on messaging-2: -INFINITY -+clone_color: galera:5 allocation score on controller-0: -INFINITY -+clone_color: galera:5 allocation score on controller-1: -INFINITY -+clone_color: galera:5 allocation score on controller-2: -INFINITY -+clone_color: galera:5 allocation score on galera-0: 0 -+clone_color: galera:5 allocation score on galera-1: 0 -+clone_color: galera:5 allocation score on galera-2: 0 -+clone_color: galera:5 allocation score on messaging-0: -INFINITY -+clone_color: galera:5 allocation score on messaging-1: -INFINITY -+clone_color: galera:5 allocation score on messaging-2: -INFINITY -+clone_color: galera:6 allocation score on controller-0: -INFINITY -+clone_color: galera:6 allocation score on controller-1: -INFINITY -+clone_color: galera:6 allocation score on controller-2: -INFINITY -+clone_color: galera:6 allocation score on galera-0: 0 -+clone_color: galera:6 allocation score on galera-1: 0 -+clone_color: galera:6 allocation score on galera-2: 0 -+clone_color: galera:6 allocation score on messaging-0: -INFINITY -+clone_color: galera:6 allocation score on messaging-1: -INFINITY -+clone_color: galera:6 allocation score on messaging-2: -INFINITY -+clone_color: galera:7 allocation score on controller-0: -INFINITY -+clone_color: galera:7 allocation score on controller-1: -INFINITY -+clone_color: galera:7 allocation score on controller-2: -INFINITY -+clone_color: galera:7 allocation score on galera-0: 0 -+clone_color: galera:7 allocation score on galera-1: 0 -+clone_color: galera:7 allocation score on galera-2: 0 -+clone_color: galera:7 allocation score on messaging-0: -INFINITY -+clone_color: galera:7 allocation score on messaging-1: -INFINITY -+clone_color: galera:7 allocation score on messaging-2: -INFINITY -+clone_color: galera:8 allocation score on controller-0: -INFINITY -+clone_color: galera:8 allocation score on controller-1: -INFINITY -+clone_color: galera:8 allocation score on controller-2: -INFINITY -+clone_color: galera:8 allocation score on galera-0: 0 -+clone_color: galera:8 allocation score on galera-1: 0 -+clone_color: galera:8 allocation score on galera-2: 0 -+clone_color: galera:8 allocation score on messaging-0: -INFINITY -+clone_color: galera:8 allocation score on messaging-1: -INFINITY -+clone_color: galera:8 allocation score on messaging-2: -INFINITY -+clone_color: haproxy-clone allocation score on controller-0: INFINITY -+clone_color: haproxy-clone allocation score on controller-1: 0 -+clone_color: haproxy-clone allocation score on controller-2: 0 -+clone_color: haproxy-clone allocation score on galera-0: -INFINITY -+clone_color: haproxy-clone allocation score on galera-1: -INFINITY -+clone_color: haproxy-clone allocation score on galera-2: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-0: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-1: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-2: -INFINITY -+clone_color: haproxy:0 allocation score on controller-0: 0 -+clone_color: haproxy:0 allocation score on controller-1: INFINITY -+clone_color: haproxy:0 allocation score on controller-2: 0 -+clone_color: haproxy:0 allocation score on galera-0: -INFINITY -+clone_color: haproxy:0 allocation score on galera-1: -INFINITY -+clone_color: haproxy:0 allocation score on galera-2: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:1 allocation score on controller-0: INFINITY -+clone_color: haproxy:1 allocation score on controller-1: 0 -+clone_color: haproxy:1 allocation score on controller-2: 0 -+clone_color: haproxy:1 allocation score on galera-0: -INFINITY -+clone_color: haproxy:1 allocation score on galera-1: -INFINITY -+clone_color: haproxy:1 allocation score on galera-2: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:2 allocation score on controller-0: 0 -+clone_color: haproxy:2 allocation score on controller-1: 0 -+clone_color: haproxy:2 allocation score on controller-2: INFINITY -+clone_color: haproxy:2 allocation score on galera-0: -INFINITY -+clone_color: haproxy:2 allocation score on galera-1: -INFINITY -+clone_color: haproxy:2 allocation score on galera-2: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:3 allocation score on controller-0: 0 -+clone_color: haproxy:3 allocation score on controller-1: 0 -+clone_color: haproxy:3 allocation score on controller-2: 0 -+clone_color: haproxy:3 allocation score on galera-0: -INFINITY -+clone_color: haproxy:3 allocation score on galera-1: -INFINITY -+clone_color: haproxy:3 allocation score on galera-2: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:4 allocation score on controller-0: 0 -+clone_color: haproxy:4 allocation score on controller-1: 0 -+clone_color: haproxy:4 allocation score on controller-2: 0 -+clone_color: haproxy:4 allocation score on galera-0: -INFINITY -+clone_color: haproxy:4 allocation score on galera-1: -INFINITY -+clone_color: haproxy:4 allocation score on galera-2: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:5 allocation score on controller-0: 0 -+clone_color: haproxy:5 allocation score on controller-1: 0 -+clone_color: haproxy:5 allocation score on controller-2: 0 -+clone_color: haproxy:5 allocation score on galera-0: -INFINITY -+clone_color: haproxy:5 allocation score on galera-1: -INFINITY -+clone_color: haproxy:5 allocation score on galera-2: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:6 allocation score on controller-0: 0 -+clone_color: haproxy:6 allocation score on controller-1: 0 -+clone_color: haproxy:6 allocation score on controller-2: 0 -+clone_color: haproxy:6 allocation score on galera-0: -INFINITY -+clone_color: haproxy:6 allocation score on galera-1: -INFINITY -+clone_color: haproxy:6 allocation score on galera-2: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:7 allocation score on controller-0: 0 -+clone_color: haproxy:7 allocation score on controller-1: 0 -+clone_color: haproxy:7 allocation score on controller-2: 0 -+clone_color: haproxy:7 allocation score on galera-0: -INFINITY -+clone_color: haproxy:7 allocation score on galera-1: -INFINITY -+clone_color: haproxy:7 allocation score on galera-2: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:8 allocation score on controller-0: 0 -+clone_color: haproxy:8 allocation score on controller-1: 0 -+clone_color: haproxy:8 allocation score on controller-2: 0 -+clone_color: haproxy:8 allocation score on galera-0: -INFINITY -+clone_color: haproxy:8 allocation score on galera-1: -INFINITY -+clone_color: haproxy:8 allocation score on galera-2: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-0: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-1: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-0: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-1: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on messaging-0: 0 -+clone_color: rabbitmq-clone allocation score on messaging-1: 0 -+clone_color: rabbitmq-clone allocation score on messaging-2: 0 -+clone_color: rabbitmq:0 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on messaging-0: 0 -+clone_color: rabbitmq:0 allocation score on messaging-1: 0 -+clone_color: rabbitmq:0 allocation score on messaging-2: INFINITY -+clone_color: rabbitmq:1 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on messaging-0: INFINITY -+clone_color: rabbitmq:1 allocation score on messaging-1: 0 -+clone_color: rabbitmq:1 allocation score on messaging-2: 0 -+clone_color: rabbitmq:2 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on messaging-0: 0 -+clone_color: rabbitmq:2 allocation score on messaging-1: INFINITY -+clone_color: rabbitmq:2 allocation score on messaging-2: 0 -+clone_color: rabbitmq:3 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:3 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:3 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:3 allocation score on messaging-0: 0 -+clone_color: rabbitmq:3 allocation score on messaging-1: 0 -+clone_color: rabbitmq:3 allocation score on messaging-2: 0 -+clone_color: rabbitmq:4 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:4 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:4 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:4 allocation score on messaging-0: 0 -+clone_color: rabbitmq:4 allocation score on messaging-1: 0 -+clone_color: rabbitmq:4 allocation score on messaging-2: 0 -+clone_color: rabbitmq:5 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:5 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:5 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:5 allocation score on messaging-0: 0 -+clone_color: rabbitmq:5 allocation score on messaging-1: 0 -+clone_color: rabbitmq:5 allocation score on messaging-2: 0 -+clone_color: rabbitmq:6 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:6 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:6 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:6 allocation score on messaging-0: 0 -+clone_color: rabbitmq:6 allocation score on messaging-1: 0 -+clone_color: rabbitmq:6 allocation score on messaging-2: 0 -+clone_color: rabbitmq:7 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:7 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:7 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:7 allocation score on messaging-0: 0 -+clone_color: rabbitmq:7 allocation score on messaging-1: 0 -+clone_color: rabbitmq:7 allocation score on messaging-2: 0 -+clone_color: rabbitmq:8 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:8 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:8 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:8 allocation score on messaging-0: 0 -+clone_color: rabbitmq:8 allocation score on messaging-1: 0 -+clone_color: rabbitmq:8 allocation score on messaging-2: 0 -+clone_color: redis-master allocation score on controller-0: 0 -+clone_color: redis-master allocation score on controller-1: 0 -+clone_color: redis-master allocation score on controller-2: 0 -+clone_color: redis-master allocation score on galera-0: -INFINITY -+clone_color: redis-master allocation score on galera-1: -INFINITY -+clone_color: redis-master allocation score on galera-2: -INFINITY -+clone_color: redis-master allocation score on messaging-0: -INFINITY -+clone_color: redis-master allocation score on messaging-1: -INFINITY -+clone_color: redis-master allocation score on messaging-2: -INFINITY -+clone_color: redis:0 allocation score on controller-0: 0 -+clone_color: redis:0 allocation score on controller-1: INFINITY -+clone_color: redis:0 allocation score on controller-2: 0 -+clone_color: redis:0 allocation score on galera-0: -INFINITY -+clone_color: redis:0 allocation score on galera-1: -INFINITY -+clone_color: redis:0 allocation score on galera-2: -INFINITY -+clone_color: redis:0 allocation score on messaging-0: -INFINITY -+clone_color: redis:0 allocation score on messaging-1: -INFINITY -+clone_color: redis:0 allocation score on messaging-2: -INFINITY -+clone_color: redis:1 allocation score on controller-0: INFINITY -+clone_color: redis:1 allocation score on controller-1: 0 -+clone_color: redis:1 allocation score on controller-2: 0 -+clone_color: redis:1 allocation score on galera-0: -INFINITY -+clone_color: redis:1 allocation score on galera-1: -INFINITY -+clone_color: redis:1 allocation score on galera-2: -INFINITY -+clone_color: redis:1 allocation score on messaging-0: -INFINITY -+clone_color: redis:1 allocation score on messaging-1: -INFINITY -+clone_color: redis:1 allocation score on messaging-2: -INFINITY -+clone_color: redis:2 allocation score on controller-0: 0 -+clone_color: redis:2 allocation score on controller-1: 0 -+clone_color: redis:2 allocation score on controller-2: INFINITY -+clone_color: redis:2 allocation score on galera-0: -INFINITY -+clone_color: redis:2 allocation score on galera-1: -INFINITY -+clone_color: redis:2 allocation score on galera-2: -INFINITY -+clone_color: redis:2 allocation score on messaging-0: -INFINITY -+clone_color: redis:2 allocation score on messaging-1: -INFINITY -+clone_color: redis:2 allocation score on messaging-2: -INFINITY -+clone_color: redis:3 allocation score on controller-0: 0 -+clone_color: redis:3 allocation score on controller-1: 0 -+clone_color: redis:3 allocation score on controller-2: 0 -+clone_color: redis:3 allocation score on galera-0: -INFINITY -+clone_color: redis:3 allocation score on galera-1: -INFINITY -+clone_color: redis:3 allocation score on galera-2: -INFINITY -+clone_color: redis:3 allocation score on messaging-0: -INFINITY -+clone_color: redis:3 allocation score on messaging-1: -INFINITY -+clone_color: redis:3 allocation score on messaging-2: -INFINITY -+clone_color: redis:4 allocation score on controller-0: 0 -+clone_color: redis:4 allocation score on controller-1: 0 -+clone_color: redis:4 allocation score on controller-2: 0 -+clone_color: redis:4 allocation score on galera-0: -INFINITY -+clone_color: redis:4 allocation score on galera-1: -INFINITY -+clone_color: redis:4 allocation score on galera-2: -INFINITY -+clone_color: redis:4 allocation score on messaging-0: -INFINITY -+clone_color: redis:4 allocation score on messaging-1: -INFINITY -+clone_color: redis:4 allocation score on messaging-2: -INFINITY -+clone_color: redis:5 allocation score on controller-0: 0 -+clone_color: redis:5 allocation score on controller-1: 0 -+clone_color: redis:5 allocation score on controller-2: 0 -+clone_color: redis:5 allocation score on galera-0: -INFINITY -+clone_color: redis:5 allocation score on galera-1: -INFINITY -+clone_color: redis:5 allocation score on galera-2: -INFINITY -+clone_color: redis:5 allocation score on messaging-0: -INFINITY -+clone_color: redis:5 allocation score on messaging-1: -INFINITY -+clone_color: redis:5 allocation score on messaging-2: -INFINITY -+clone_color: redis:6 allocation score on controller-0: 0 -+clone_color: redis:6 allocation score on controller-1: 0 -+clone_color: redis:6 allocation score on controller-2: 0 -+clone_color: redis:6 allocation score on galera-0: -INFINITY -+clone_color: redis:6 allocation score on galera-1: -INFINITY -+clone_color: redis:6 allocation score on galera-2: -INFINITY -+clone_color: redis:6 allocation score on messaging-0: -INFINITY -+clone_color: redis:6 allocation score on messaging-1: -INFINITY -+clone_color: redis:6 allocation score on messaging-2: -INFINITY -+clone_color: redis:7 allocation score on controller-0: 0 -+clone_color: redis:7 allocation score on controller-1: 0 -+clone_color: redis:7 allocation score on controller-2: 0 -+clone_color: redis:7 allocation score on galera-0: -INFINITY -+clone_color: redis:7 allocation score on galera-1: -INFINITY -+clone_color: redis:7 allocation score on galera-2: -INFINITY -+clone_color: redis:7 allocation score on messaging-0: -INFINITY -+clone_color: redis:7 allocation score on messaging-1: -INFINITY -+clone_color: redis:7 allocation score on messaging-2: -INFINITY -+clone_color: redis:8 allocation score on controller-0: 0 -+clone_color: redis:8 allocation score on controller-1: 0 -+clone_color: redis:8 allocation score on controller-2: 0 -+clone_color: redis:8 allocation score on galera-0: -INFINITY -+clone_color: redis:8 allocation score on galera-1: -INFINITY -+clone_color: redis:8 allocation score on galera-2: -INFINITY -+clone_color: redis:8 allocation score on messaging-0: -INFINITY -+clone_color: redis:8 allocation score on messaging-1: -INFINITY -+clone_color: redis:8 allocation score on messaging-2: -INFINITY -+galera:0 promotion score on galera-1: 100 -+galera:1 promotion score on galera-2: 100 -+galera:2 promotion score on galera-0: 100 -+galera:3 promotion score on none: 0 -+galera:4 promotion score on none: 0 -+galera:5 promotion score on none: 0 -+galera:6 promotion score on none: 0 -+galera:7 promotion score on none: 0 -+galera:8 promotion score on none: 0 -+native_color: galera-0 allocation score on controller-0: 0 -+native_color: galera-0 allocation score on controller-1: INFINITY -+native_color: galera-0 allocation score on controller-2: 0 -+native_color: galera-0 allocation score on galera-0: -INFINITY -+native_color: galera-0 allocation score on galera-1: -INFINITY -+native_color: galera-0 allocation score on galera-2: -INFINITY -+native_color: galera-0 allocation score on messaging-0: -INFINITY -+native_color: galera-0 allocation score on messaging-1: -INFINITY -+native_color: galera-0 allocation score on messaging-2: -INFINITY -+native_color: galera-1 allocation score on controller-0: INFINITY -+native_color: galera-1 allocation score on controller-1: 0 -+native_color: galera-1 allocation score on controller-2: 0 -+native_color: galera-1 allocation score on galera-0: -INFINITY -+native_color: galera-1 allocation score on galera-1: -INFINITY -+native_color: galera-1 allocation score on galera-2: -INFINITY -+native_color: galera-1 allocation score on messaging-0: -INFINITY -+native_color: galera-1 allocation score on messaging-1: -INFINITY -+native_color: galera-1 allocation score on messaging-2: -INFINITY -+native_color: galera-2 allocation score on controller-0: 0 -+native_color: galera-2 allocation score on controller-1: INFINITY -+native_color: galera-2 allocation score on controller-2: 0 -+native_color: galera-2 allocation score on galera-0: -INFINITY -+native_color: galera-2 allocation score on galera-1: -INFINITY -+native_color: galera-2 allocation score on galera-2: -INFINITY -+native_color: galera-2 allocation score on messaging-0: -INFINITY -+native_color: galera-2 allocation score on messaging-1: -INFINITY -+native_color: galera-2 allocation score on messaging-2: -INFINITY -+native_color: galera:0 allocation score on controller-0: -INFINITY -+native_color: galera:0 allocation score on controller-1: -INFINITY -+native_color: galera:0 allocation score on controller-2: -INFINITY -+native_color: galera:0 allocation score on galera-0: 0 -+native_color: galera:0 allocation score on galera-1: INFINITY -+native_color: galera:0 allocation score on galera-2: 0 -+native_color: galera:0 allocation score on messaging-0: -INFINITY -+native_color: galera:0 allocation score on messaging-1: -INFINITY -+native_color: galera:0 allocation score on messaging-2: -INFINITY -+native_color: galera:1 allocation score on controller-0: -INFINITY -+native_color: galera:1 allocation score on controller-1: -INFINITY -+native_color: galera:1 allocation score on controller-2: -INFINITY -+native_color: galera:1 allocation score on galera-0: 0 -+native_color: galera:1 allocation score on galera-1: -INFINITY -+native_color: galera:1 allocation score on galera-2: INFINITY -+native_color: galera:1 allocation score on messaging-0: -INFINITY -+native_color: galera:1 allocation score on messaging-1: -INFINITY -+native_color: galera:1 allocation score on messaging-2: -INFINITY -+native_color: galera:2 allocation score on controller-0: -INFINITY -+native_color: galera:2 allocation score on controller-1: -INFINITY -+native_color: galera:2 allocation score on controller-2: -INFINITY -+native_color: galera:2 allocation score on galera-0: INFINITY -+native_color: galera:2 allocation score on galera-1: -INFINITY -+native_color: galera:2 allocation score on galera-2: -INFINITY -+native_color: galera:2 allocation score on messaging-0: -INFINITY -+native_color: galera:2 allocation score on messaging-1: -INFINITY -+native_color: galera:2 allocation score on messaging-2: -INFINITY -+native_color: galera:3 allocation score on controller-0: -INFINITY -+native_color: galera:3 allocation score on controller-1: -INFINITY -+native_color: galera:3 allocation score on controller-2: -INFINITY -+native_color: galera:3 allocation score on galera-0: -INFINITY -+native_color: galera:3 allocation score on galera-1: -INFINITY -+native_color: galera:3 allocation score on galera-2: -INFINITY -+native_color: galera:3 allocation score on messaging-0: -INFINITY -+native_color: galera:3 allocation score on messaging-1: -INFINITY -+native_color: galera:3 allocation score on messaging-2: -INFINITY -+native_color: galera:4 allocation score on controller-0: -INFINITY -+native_color: galera:4 allocation score on controller-1: -INFINITY -+native_color: galera:4 allocation score on controller-2: -INFINITY -+native_color: galera:4 allocation score on galera-0: -INFINITY -+native_color: galera:4 allocation score on galera-1: -INFINITY -+native_color: galera:4 allocation score on galera-2: -INFINITY -+native_color: galera:4 allocation score on messaging-0: -INFINITY -+native_color: galera:4 allocation score on messaging-1: -INFINITY -+native_color: galera:4 allocation score on messaging-2: -INFINITY -+native_color: galera:5 allocation score on controller-0: -INFINITY -+native_color: galera:5 allocation score on controller-1: -INFINITY -+native_color: galera:5 allocation score on controller-2: -INFINITY -+native_color: galera:5 allocation score on galera-0: -INFINITY -+native_color: galera:5 allocation score on galera-1: -INFINITY -+native_color: galera:5 allocation score on galera-2: -INFINITY -+native_color: galera:5 allocation score on messaging-0: -INFINITY -+native_color: galera:5 allocation score on messaging-1: -INFINITY -+native_color: galera:5 allocation score on messaging-2: -INFINITY -+native_color: galera:6 allocation score on controller-0: -INFINITY -+native_color: galera:6 allocation score on controller-1: -INFINITY -+native_color: galera:6 allocation score on controller-2: -INFINITY -+native_color: galera:6 allocation score on galera-0: -INFINITY -+native_color: galera:6 allocation score on galera-1: -INFINITY -+native_color: galera:6 allocation score on galera-2: -INFINITY -+native_color: galera:6 allocation score on messaging-0: -INFINITY -+native_color: galera:6 allocation score on messaging-1: -INFINITY -+native_color: galera:6 allocation score on messaging-2: -INFINITY -+native_color: galera:7 allocation score on controller-0: -INFINITY -+native_color: galera:7 allocation score on controller-1: -INFINITY -+native_color: galera:7 allocation score on controller-2: -INFINITY -+native_color: galera:7 allocation score on galera-0: -INFINITY -+native_color: galera:7 allocation score on galera-1: -INFINITY -+native_color: galera:7 allocation score on galera-2: -INFINITY -+native_color: galera:7 allocation score on messaging-0: -INFINITY -+native_color: galera:7 allocation score on messaging-1: -INFINITY -+native_color: galera:7 allocation score on messaging-2: -INFINITY -+native_color: galera:8 allocation score on controller-0: -INFINITY -+native_color: galera:8 allocation score on controller-1: -INFINITY -+native_color: galera:8 allocation score on controller-2: -INFINITY -+native_color: galera:8 allocation score on galera-0: -INFINITY -+native_color: galera:8 allocation score on galera-1: -INFINITY -+native_color: galera:8 allocation score on galera-2: -INFINITY -+native_color: galera:8 allocation score on messaging-0: -INFINITY -+native_color: galera:8 allocation score on messaging-1: -INFINITY -+native_color: galera:8 allocation score on messaging-2: -INFINITY -+native_color: haproxy:0 allocation score on controller-0: -INFINITY -+native_color: haproxy:0 allocation score on controller-1: -INFINITY -+native_color: haproxy:0 allocation score on controller-2: -INFINITY -+native_color: haproxy:0 allocation score on galera-0: -INFINITY -+native_color: haproxy:0 allocation score on galera-1: -INFINITY -+native_color: haproxy:0 allocation score on galera-2: -INFINITY -+native_color: haproxy:0 allocation score on messaging-0: -INFINITY -+native_color: haproxy:0 allocation score on messaging-1: -INFINITY -+native_color: haproxy:0 allocation score on messaging-2: -INFINITY -+native_color: haproxy:1 allocation score on controller-0: INFINITY -+native_color: haproxy:1 allocation score on controller-1: -INFINITY -+native_color: haproxy:1 allocation score on controller-2: 0 -+native_color: haproxy:1 allocation score on galera-0: -INFINITY -+native_color: haproxy:1 allocation score on galera-1: -INFINITY -+native_color: haproxy:1 allocation score on galera-2: -INFINITY -+native_color: haproxy:1 allocation score on messaging-0: -INFINITY -+native_color: haproxy:1 allocation score on messaging-1: -INFINITY -+native_color: haproxy:1 allocation score on messaging-2: -INFINITY -+native_color: haproxy:2 allocation score on controller-0: -INFINITY -+native_color: haproxy:2 allocation score on controller-1: -INFINITY -+native_color: haproxy:2 allocation score on controller-2: INFINITY -+native_color: haproxy:2 allocation score on galera-0: -INFINITY -+native_color: haproxy:2 allocation score on galera-1: -INFINITY -+native_color: haproxy:2 allocation score on galera-2: -INFINITY -+native_color: haproxy:2 allocation score on messaging-0: -INFINITY -+native_color: haproxy:2 allocation score on messaging-1: -INFINITY -+native_color: haproxy:2 allocation score on messaging-2: -INFINITY -+native_color: haproxy:3 allocation score on controller-0: -INFINITY -+native_color: haproxy:3 allocation score on controller-1: -INFINITY -+native_color: haproxy:3 allocation score on controller-2: -INFINITY -+native_color: haproxy:3 allocation score on galera-0: -INFINITY -+native_color: haproxy:3 allocation score on galera-1: -INFINITY -+native_color: haproxy:3 allocation score on galera-2: -INFINITY -+native_color: haproxy:3 allocation score on messaging-0: -INFINITY -+native_color: haproxy:3 allocation score on messaging-1: -INFINITY -+native_color: haproxy:3 allocation score on messaging-2: -INFINITY -+native_color: haproxy:4 allocation score on controller-0: -INFINITY -+native_color: haproxy:4 allocation score on controller-1: -INFINITY -+native_color: haproxy:4 allocation score on controller-2: -INFINITY -+native_color: haproxy:4 allocation score on galera-0: -INFINITY -+native_color: haproxy:4 allocation score on galera-1: -INFINITY -+native_color: haproxy:4 allocation score on galera-2: -INFINITY -+native_color: haproxy:4 allocation score on messaging-0: -INFINITY -+native_color: haproxy:4 allocation score on messaging-1: -INFINITY -+native_color: haproxy:4 allocation score on messaging-2: -INFINITY -+native_color: haproxy:5 allocation score on controller-0: -INFINITY -+native_color: haproxy:5 allocation score on controller-1: -INFINITY -+native_color: haproxy:5 allocation score on controller-2: -INFINITY -+native_color: haproxy:5 allocation score on galera-0: -INFINITY -+native_color: haproxy:5 allocation score on galera-1: -INFINITY -+native_color: haproxy:5 allocation score on galera-2: -INFINITY -+native_color: haproxy:5 allocation score on messaging-0: -INFINITY -+native_color: haproxy:5 allocation score on messaging-1: -INFINITY -+native_color: haproxy:5 allocation score on messaging-2: -INFINITY -+native_color: haproxy:6 allocation score on controller-0: -INFINITY -+native_color: haproxy:6 allocation score on controller-1: -INFINITY -+native_color: haproxy:6 allocation score on controller-2: -INFINITY -+native_color: haproxy:6 allocation score on galera-0: -INFINITY -+native_color: haproxy:6 allocation score on galera-1: -INFINITY -+native_color: haproxy:6 allocation score on galera-2: -INFINITY -+native_color: haproxy:6 allocation score on messaging-0: -INFINITY -+native_color: haproxy:6 allocation score on messaging-1: -INFINITY -+native_color: haproxy:6 allocation score on messaging-2: -INFINITY -+native_color: haproxy:7 allocation score on controller-0: -INFINITY -+native_color: haproxy:7 allocation score on controller-1: -INFINITY -+native_color: haproxy:7 allocation score on controller-2: -INFINITY -+native_color: haproxy:7 allocation score on galera-0: -INFINITY -+native_color: haproxy:7 allocation score on galera-1: -INFINITY -+native_color: haproxy:7 allocation score on galera-2: -INFINITY -+native_color: haproxy:7 allocation score on messaging-0: -INFINITY -+native_color: haproxy:7 allocation score on messaging-1: -INFINITY -+native_color: haproxy:7 allocation score on messaging-2: -INFINITY -+native_color: haproxy:8 allocation score on controller-0: -INFINITY -+native_color: haproxy:8 allocation score on controller-1: -INFINITY -+native_color: haproxy:8 allocation score on controller-2: -INFINITY -+native_color: haproxy:8 allocation score on galera-0: -INFINITY -+native_color: haproxy:8 allocation score on galera-1: -INFINITY -+native_color: haproxy:8 allocation score on galera-2: -INFINITY -+native_color: haproxy:8 allocation score on messaging-0: -INFINITY -+native_color: haproxy:8 allocation score on messaging-1: -INFINITY -+native_color: haproxy:8 allocation score on messaging-2: -INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-0: INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-2: 0 -+native_color: ip-10.0.0.102 allocation score on galera-0: -INFINITY -+native_color: ip-10.0.0.102 allocation score on galera-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on galera-2: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-0: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-0: 0 -+native_color: ip-172.17.1.14 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-2: 0 -+native_color: ip-172.17.1.14 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.1.17 allocation score on controller-0: 0 -+native_color: ip-172.17.1.17 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on controller-2: 0 -+native_color: ip-172.17.1.17 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.1.17 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-0: INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-2: 0 -+native_color: ip-172.17.3.15 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.3.15 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on controller-0: 0 -+native_color: ip-172.17.4.11 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on controller-2: 0 -+native_color: ip-172.17.4.11 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-2: -INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-0: INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-2: 0 -+native_color: ip-192.168.24.6 allocation score on galera-0: -INFINITY -+native_color: ip-192.168.24.6 allocation score on galera-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on galera-2: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-0: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-2: -INFINITY -+native_color: messaging-0 allocation score on controller-0: INFINITY -+native_color: messaging-0 allocation score on controller-1: 0 -+native_color: messaging-0 allocation score on controller-2: 0 -+native_color: messaging-0 allocation score on galera-0: -INFINITY -+native_color: messaging-0 allocation score on galera-1: -INFINITY -+native_color: messaging-0 allocation score on galera-2: -INFINITY -+native_color: messaging-0 allocation score on messaging-0: -INFINITY -+native_color: messaging-0 allocation score on messaging-1: -INFINITY -+native_color: messaging-0 allocation score on messaging-2: -INFINITY -+native_color: messaging-1 allocation score on controller-0: 0 -+native_color: messaging-1 allocation score on controller-1: INFINITY -+native_color: messaging-1 allocation score on controller-2: 0 -+native_color: messaging-1 allocation score on galera-0: -INFINITY -+native_color: messaging-1 allocation score on galera-1: -INFINITY -+native_color: messaging-1 allocation score on galera-2: -INFINITY -+native_color: messaging-1 allocation score on messaging-0: -INFINITY -+native_color: messaging-1 allocation score on messaging-1: -INFINITY -+native_color: messaging-1 allocation score on messaging-2: -INFINITY -+native_color: messaging-2 allocation score on controller-0: INFINITY -+native_color: messaging-2 allocation score on controller-1: 0 -+native_color: messaging-2 allocation score on controller-2: 0 -+native_color: messaging-2 allocation score on galera-0: -INFINITY -+native_color: messaging-2 allocation score on galera-1: -INFINITY -+native_color: messaging-2 allocation score on galera-2: -INFINITY -+native_color: messaging-2 allocation score on messaging-0: -INFINITY -+native_color: messaging-2 allocation score on messaging-1: -INFINITY -+native_color: messaging-2 allocation score on messaging-2: -INFINITY -+native_color: openstack-cinder-volume allocation score on controller-0: INFINITY -+native_color: openstack-cinder-volume allocation score on controller-1: 0 -+native_color: openstack-cinder-volume allocation score on controller-2: 0 -+native_color: openstack-cinder-volume allocation score on galera-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on galera-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on galera-2: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:0 allocation score on messaging-0: 0 -+native_color: rabbitmq:0 allocation score on messaging-1: 0 -+native_color: rabbitmq:0 allocation score on messaging-2: INFINITY -+native_color: rabbitmq:1 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:1 allocation score on messaging-0: INFINITY -+native_color: rabbitmq:1 allocation score on messaging-1: 0 -+native_color: rabbitmq:1 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-1: INFINITY -+native_color: rabbitmq:2 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-2: -INFINITY -+native_color: redis:0 allocation score on controller-0: -INFINITY -+native_color: redis:0 allocation score on controller-1: -INFINITY -+native_color: redis:0 allocation score on controller-2: -INFINITY -+native_color: redis:0 allocation score on galera-0: -INFINITY -+native_color: redis:0 allocation score on galera-1: -INFINITY -+native_color: redis:0 allocation score on galera-2: -INFINITY -+native_color: redis:0 allocation score on messaging-0: -INFINITY -+native_color: redis:0 allocation score on messaging-1: -INFINITY -+native_color: redis:0 allocation score on messaging-2: -INFINITY -+native_color: redis:1 allocation score on controller-0: INFINITY -+native_color: redis:1 allocation score on controller-1: -INFINITY -+native_color: redis:1 allocation score on controller-2: 0 -+native_color: redis:1 allocation score on galera-0: -INFINITY -+native_color: redis:1 allocation score on galera-1: -INFINITY -+native_color: redis:1 allocation score on galera-2: -INFINITY -+native_color: redis:1 allocation score on messaging-0: -INFINITY -+native_color: redis:1 allocation score on messaging-1: -INFINITY -+native_color: redis:1 allocation score on messaging-2: -INFINITY -+native_color: redis:2 allocation score on controller-0: -INFINITY -+native_color: redis:2 allocation score on controller-1: -INFINITY -+native_color: redis:2 allocation score on controller-2: INFINITY -+native_color: redis:2 allocation score on galera-0: -INFINITY -+native_color: redis:2 allocation score on galera-1: -INFINITY -+native_color: redis:2 allocation score on galera-2: -INFINITY -+native_color: redis:2 allocation score on messaging-0: -INFINITY -+native_color: redis:2 allocation score on messaging-1: -INFINITY -+native_color: redis:2 allocation score on messaging-2: -INFINITY -+native_color: redis:3 allocation score on controller-0: -INFINITY -+native_color: redis:3 allocation score on controller-1: -INFINITY -+native_color: redis:3 allocation score on controller-2: -INFINITY -+native_color: redis:3 allocation score on galera-0: -INFINITY -+native_color: redis:3 allocation score on galera-1: -INFINITY -+native_color: redis:3 allocation score on galera-2: -INFINITY -+native_color: redis:3 allocation score on messaging-0: -INFINITY -+native_color: redis:3 allocation score on messaging-1: -INFINITY -+native_color: redis:3 allocation score on messaging-2: -INFINITY -+native_color: redis:4 allocation score on controller-0: -INFINITY -+native_color: redis:4 allocation score on controller-1: -INFINITY -+native_color: redis:4 allocation score on controller-2: -INFINITY -+native_color: redis:4 allocation score on galera-0: -INFINITY -+native_color: redis:4 allocation score on galera-1: -INFINITY -+native_color: redis:4 allocation score on galera-2: -INFINITY -+native_color: redis:4 allocation score on messaging-0: -INFINITY -+native_color: redis:4 allocation score on messaging-1: -INFINITY -+native_color: redis:4 allocation score on messaging-2: -INFINITY -+native_color: redis:5 allocation score on controller-0: -INFINITY -+native_color: redis:5 allocation score on controller-1: -INFINITY -+native_color: redis:5 allocation score on controller-2: -INFINITY -+native_color: redis:5 allocation score on galera-0: -INFINITY -+native_color: redis:5 allocation score on galera-1: -INFINITY -+native_color: redis:5 allocation score on galera-2: -INFINITY -+native_color: redis:5 allocation score on messaging-0: -INFINITY -+native_color: redis:5 allocation score on messaging-1: -INFINITY -+native_color: redis:5 allocation score on messaging-2: -INFINITY -+native_color: redis:6 allocation score on controller-0: -INFINITY -+native_color: redis:6 allocation score on controller-1: -INFINITY -+native_color: redis:6 allocation score on controller-2: -INFINITY -+native_color: redis:6 allocation score on galera-0: -INFINITY -+native_color: redis:6 allocation score on galera-1: -INFINITY -+native_color: redis:6 allocation score on galera-2: -INFINITY -+native_color: redis:6 allocation score on messaging-0: -INFINITY -+native_color: redis:6 allocation score on messaging-1: -INFINITY -+native_color: redis:6 allocation score on messaging-2: -INFINITY -+native_color: redis:7 allocation score on controller-0: -INFINITY -+native_color: redis:7 allocation score on controller-1: -INFINITY -+native_color: redis:7 allocation score on controller-2: -INFINITY -+native_color: redis:7 allocation score on galera-0: -INFINITY -+native_color: redis:7 allocation score on galera-1: -INFINITY -+native_color: redis:7 allocation score on galera-2: -INFINITY -+native_color: redis:7 allocation score on messaging-0: -INFINITY -+native_color: redis:7 allocation score on messaging-1: -INFINITY -+native_color: redis:7 allocation score on messaging-2: -INFINITY -+native_color: redis:8 allocation score on controller-0: -INFINITY -+native_color: redis:8 allocation score on controller-1: -INFINITY -+native_color: redis:8 allocation score on controller-2: -INFINITY -+native_color: redis:8 allocation score on galera-0: -INFINITY -+native_color: redis:8 allocation score on galera-1: -INFINITY -+native_color: redis:8 allocation score on galera-2: -INFINITY -+native_color: redis:8 allocation score on messaging-0: -INFINITY -+native_color: redis:8 allocation score on messaging-1: -INFINITY -+native_color: redis:8 allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-1: INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-0: INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-0: INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-1: 0 -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-2: -INFINITY -+redis:0 promotion score on none: 0 -+redis:1 promotion score on controller-0: 1 -+redis:2 promotion score on controller-2: 1 -+redis:3 promotion score on none: 0 -+redis:4 promotion score on none: 0 -+redis:5 promotion score on none: 0 -+redis:6 promotion score on none: 0 -+redis:7 promotion score on none: 0 -+redis:8 promotion score on none: 0 -diff --git a/pengine/test10/remote-recovery.summary b/pengine/test10/remote-recovery.summary -new file mode 100644 -index 0000000..251febc ---- /dev/null -+++ b/pengine/test10/remote-recovery.summary -@@ -0,0 +1,164 @@ -+Using the original execution date of: 2017-05-03 13:33:24Z -+ -+Current cluster status: -+Node controller-1 (2): UNCLEAN (offline) -+Online: [ controller-0 controller-2 ] -+RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ -+ messaging-0 (ocf::pacemaker:remote): Started controller-0 -+ messaging-1 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ messaging-2 (ocf::pacemaker:remote): Started controller-0 -+ galera-0 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ galera-1 (ocf::pacemaker:remote): Started controller-0 -+ galera-2 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ Clone Set: rabbitmq-clone [rabbitmq] -+ Started: [ messaging-0 messaging-1 messaging-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 ] -+ Master/Slave Set: galera-master [galera] -+ Masters: [ galera-0 galera-1 galera-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 messaging-0 messaging-1 messaging-2 ] -+ Master/Slave Set: redis-master [redis] -+ redis (ocf::heartbeat:redis): Slave controller-1 (UNCLEAN) -+ Masters: [ controller-0 ] -+ Slaves: [ controller-2 ] -+ Stopped: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ ip-192.168.24.6 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-10.0.0.102 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ ip-172.17.1.17 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ ip-172.17.3.15 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.4.11 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ Clone Set: haproxy-clone [haproxy] -+ haproxy (systemd:haproxy): Started controller-1 (UNCLEAN) -+ Started: [ controller-0 controller-2 ] -+ Stopped: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-0 -+ stonith-fence_ipmilan-525400bbf613 (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) -+ -+Transition Summary: -+ * Move messaging-1 (Started controller-1 -> controller-2) -+ * Move galera-0 (Started controller-1 -> controller-2) -+ * Move galera-2 (Started controller-1 -> controller-2) -+ * Restart rabbitmq:2 (Started messaging-1) -+ * Restart galera:1 (Master galera-2) -+ * Restart galera:2 (Master galera-0) -+ * Stop redis:0 (controller-1) -+ * Move ip-172.17.1.14 (Started controller-1 -> controller-2) -+ * Move ip-172.17.1.17 (Started controller-1 -> controller-2) -+ * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -+ * Stop haproxy:0 (controller-1) -+ * Restart stonith-fence_ipmilan-525400bbf613 (Started controller-0) -+ * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) -+ * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -+ -+Executing cluster transition: -+ * Pseudo action: rabbitmq-clone_stop_0 -+ * Pseudo action: galera-master_demote_0 -+ * Pseudo action: redis-master_pre_notify_stop_0 -+ * Resource action: stonith-fence_ipmilan-525400bbf613 stop on controller-0 -+ * Resource action: stonith-fence_ipmilan-525400bbf613 start on controller-0 -+ * Resource action: stonith-fence_ipmilan-525400bbf613 monitor=60000 on controller-0 -+ * Resource action: stonith-fence_ipmilan-525400b4f6bd stop on controller-0 -+ * Resource action: stonith-fence_ipmilan-525400b4f6bd start on controller-0 -+ * Resource action: stonith-fence_ipmilan-525400b4f6bd monitor=60000 on controller-0 -+ * Pseudo action: stonith-fence_ipmilan-5254005bdbb5_stop_0 -+ * Fencing controller-1 (reboot) -+ * Pseudo action: stonith_complete -+ * Pseudo action: messaging-1_stop_0 -+ * Pseudo action: galera-0_stop_0 -+ * Pseudo action: galera-2_stop_0 -+ * Pseudo action: redis_post_notify_stop_0 -+ * Resource action: redis notify on controller-0 -+ * Resource action: redis notify on controller-2 -+ * Pseudo action: redis-master_confirmed-pre_notify_stop_0 -+ * Pseudo action: redis-master_stop_0 -+ * Pseudo action: haproxy-clone_stop_0 -+ * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2 -+ * Resource action: messaging-1 start on controller-2 -+ * Resource action: galera-0 start on controller-2 -+ * Resource action: galera-2 start on controller-2 -+ * Resource action: rabbitmq stop on messaging-1 -+ * Pseudo action: rabbitmq-clone_stopped_0 -+ * Pseudo action: rabbitmq-clone_start_0 -+ * Resource action: galera demote on galera-0 -+ * Pseudo action: redis_stop_0 -+ * Pseudo action: redis-master_stopped_0 -+ * Pseudo action: haproxy_stop_0 -+ * Pseudo action: haproxy-clone_stopped_0 -+ * Resource action: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2 -+ * Resource action: messaging-1 monitor=20000 on controller-2 -+ * Resource action: galera-0 monitor=20000 on controller-2 -+ * Resource action: galera-2 monitor=20000 on controller-2 -+ * Resource action: rabbitmq start on messaging-1 -+ * Resource action: rabbitmq monitor=10000 on messaging-1 -+ * Pseudo action: rabbitmq-clone_running_0 -+ * Resource action: galera demote on galera-2 -+ * Pseudo action: galera-master_demoted_0 -+ * Pseudo action: galera-master_stop_0 -+ * Pseudo action: redis-master_post_notify_stopped_0 -+ * Pseudo action: ip-172.17.1.14_stop_0 -+ * Pseudo action: ip-172.17.1.17_stop_0 -+ * Pseudo action: ip-172.17.4.11_stop_0 -+ * Resource action: galera stop on galera-0 -+ * Resource action: redis notify on controller-0 -+ * Resource action: redis notify on controller-2 -+ * Pseudo action: redis-master_confirmed-post_notify_stopped_0 -+ * Resource action: ip-172.17.1.14 start on controller-2 -+ * Resource action: ip-172.17.1.17 start on controller-2 -+ * Resource action: ip-172.17.4.11 start on controller-2 -+ * Resource action: galera stop on galera-2 -+ * Pseudo action: galera-master_stopped_0 -+ * Pseudo action: galera-master_start_0 -+ * Pseudo action: redis_notified_0 -+ * Resource action: ip-172.17.1.14 monitor=10000 on controller-2 -+ * Resource action: ip-172.17.1.17 monitor=10000 on controller-2 -+ * Resource action: ip-172.17.4.11 monitor=10000 on controller-2 -+ * Pseudo action: all_stopped -+ * Resource action: galera start on galera-2 -+ * Resource action: galera start on galera-0 -+ * Pseudo action: galera-master_running_0 -+ * Pseudo action: galera-master_promote_0 -+ * Resource action: galera promote on galera-2 -+ * Resource action: galera monitor=10000 on galera-2 -+ * Resource action: galera promote on galera-0 -+ * Resource action: galera monitor=10000 on galera-0 -+ * Pseudo action: galera-master_promoted_0 -+Using the original execution date of: 2017-05-03 13:33:24Z -+ -+Revised cluster status: -+Online: [ controller-0 controller-2 ] -+OFFLINE: [ controller-1 ] -+RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ -+ messaging-0 (ocf::pacemaker:remote): Started controller-0 -+ messaging-1 (ocf::pacemaker:remote): Started controller-2 -+ messaging-2 (ocf::pacemaker:remote): Started controller-0 -+ galera-0 (ocf::pacemaker:remote): Started controller-2 -+ galera-1 (ocf::pacemaker:remote): Started controller-0 -+ galera-2 (ocf::pacemaker:remote): Started controller-2 -+ Clone Set: rabbitmq-clone [rabbitmq] -+ Started: [ messaging-0 messaging-1 messaging-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 ] -+ Master/Slave Set: galera-master [galera] -+ Masters: [ galera-0 galera-1 galera-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 messaging-0 messaging-1 messaging-2 ] -+ Master/Slave Set: redis-master [redis] -+ Masters: [ controller-0 ] -+ Slaves: [ controller-2 ] -+ Stopped: [ controller-1 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ ip-192.168.24.6 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-10.0.0.102 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.1.17 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.3.15 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.4.11 (ocf::heartbeat:IPaddr2): Started controller-2 -+ Clone Set: haproxy-clone [haproxy] -+ Started: [ controller-0 controller-2 ] -+ Stopped: [ controller-1 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-0 -+ stonith-fence_ipmilan-525400bbf613 (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-2 -+ -diff --git a/pengine/test10/remote-recovery.xml b/pengine/test10/remote-recovery.xml -new file mode 100644 -index 0000000..f921dfe ---- /dev/null -+++ b/pengine/test10/remote-recovery.xml -@@ -0,0 +1,739 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.8.3.1 - - -From b08ff7bea963472a35e2b0fbb0a91e2a387b90a5 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 19 May 2017 17:44:37 +1000 -Subject: [PATCH 03/13] Fix: PE: Prevent use-of-NULL when expanding containers - ---- - lib/pengine/utils.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index ff142f0..9e47f03 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -1690,6 +1690,10 @@ bool fix_remote_addr(resource_t * rsc) - "pacemaker" - }; - -+ if(rsc == NULL) { -+ return FALSE; -+ } -+ - name = "addr"; - value = g_hash_table_lookup(rsc->parameters, name); - if (safe_str_eq(value, "#uname") == FALSE) { --- -1.8.3.1 - - -From 2d6b90ff01f91ad284b2ea5988cd3ccdec21aac3 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 19 May 2017 10:17:37 -0500 -Subject: [PATCH 04/13] Low: pengine: improve detection of invalid constraints - -The previous test was overbroad. The new test specifically checks -whether the constraint is between a resource running on a guest node -and the resource creating that guest node. ---- - pengine/graph.c | 17 +++++------------ - 1 file changed, 5 insertions(+), 12 deletions(-) - -diff --git a/pengine/graph.c b/pengine/graph.c -index 4e8c6dc..72df371 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -1311,20 +1311,13 @@ check_dump_input(int last_action, action_t * action, action_wrapper_t * wrapper) - type &= ~pe_order_implies_then_printed; - type &= ~pe_order_optional; - -- if (wrapper->action->node -+ if (is_not_set(type, pe_order_preserve) - && action->rsc && action->rsc->fillers -- && is_not_set(type, pe_order_preserve) -+ && wrapper->action->rsc && wrapper->action->node - && wrapper->action->node->details->remote_rsc -- && uber_parent(action->rsc) != uber_parent(wrapper->action->rsc) -- ) { -- /* This prevents user-defined ordering constraints between -- * resources in remote nodes and the resources that -- * define/represent a remote node. -- * -- * There is no known valid reason to allow this sort of thing -- * but if one arises, we'd need to change the -- * action->rsc->fillers clause to be more specific, possibly -- * to check that it contained wrapper->action->rsc -+ && (wrapper->action->node->details->remote_rsc->container == action->rsc)) { -+ /* This prevents user-defined ordering constraints between resources -+ * running in a guest node and the resource that defines that node. - */ - crm_warn("Invalid ordering constraint between %s and %s", - wrapper->action->rsc->id, action->rsc->id); --- -1.8.3.1 - - -From c9dcc29b1e9b77c87c6f6a653969f3f7ecb81e91 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 19 May 2017 18:28:48 -0500 -Subject: [PATCH 05/13] Low: libpengine: don't double score when adding first - allowed node - -Not usually a problem in practice because first score added in a -symmetric cluster is 0 ---- - lib/pengine/utils.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 9e47f03..16687e0 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -1299,7 +1299,6 @@ resource_node_score(resource_t * rsc, node_t * node, int score, const char *tag) - match = pe_hash_table_lookup(rsc->allowed_nodes, node->details->id); - if (match == NULL) { - match = node_copy(node); -- match->weight = merge_weights(score, node->weight); - g_hash_table_insert(rsc->allowed_nodes, (gpointer) match->details->id, match); - } - match->weight = merge_weights(match->weight, score); --- -1.8.3.1 - - -From 74b95e26b815ab04609f05d02feb749a7dfed406 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 19 May 2017 18:38:27 -0500 -Subject: [PATCH 06/13] Test: pengine: update regression tests for score change - ---- - pengine/test10/remote-orphaned.scores | 2 +- - pengine/test10/whitebox-orphaned.scores | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/pengine/test10/remote-orphaned.scores b/pengine/test10/remote-orphaned.scores -index 53b4ada..c6f0957 100644 ---- a/pengine/test10/remote-orphaned.scores -+++ b/pengine/test10/remote-orphaned.scores -@@ -15,7 +15,7 @@ clone_color: ping-1:1 allocation score on 18node3: 1 - clone_color: ping-1:2 allocation score on 18node1: 0 - clone_color: ping-1:2 allocation score on 18node2: 0 - clone_color: ping-1:2 allocation score on 18node3: 0 --clone_color: ping-1:2 allocation score on remote1: 2 -+clone_color: ping-1:2 allocation score on remote1: 1 - clone_color: stateful-1:0 allocation score on 18node1: 11 - clone_color: stateful-1:0 allocation score on 18node2: -INFINITY - clone_color: stateful-1:0 allocation score on 18node3: 0 -diff --git a/pengine/test10/whitebox-orphaned.scores b/pengine/test10/whitebox-orphaned.scores -index 7f303b8..d626df2 100644 ---- a/pengine/test10/whitebox-orphaned.scores -+++ b/pengine/test10/whitebox-orphaned.scores -@@ -26,7 +26,7 @@ native_color: A allocation score on lxc2: 0 - native_color: B allocation score on 18node1: 0 - native_color: B allocation score on 18node2: 0 - native_color: B allocation score on 18node3: 0 --native_color: B allocation score on lxc1: 200 -+native_color: B allocation score on lxc1: 100 - native_color: B allocation score on lxc2: 0 - native_color: C allocation score on 18node1: 0 - native_color: C allocation score on 18node2: 0 --- -1.8.3.1 - - -From 048c3e28d2dead3180e6cedca05460728e271d82 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 19 May 2017 16:51:47 -0500 -Subject: [PATCH 07/13] Low: pengine: avoid double include - ---- - pengine/container.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/pengine/container.c b/pengine/container.c -index 49b288a..bfef976 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -22,7 +22,6 @@ - #include - #include - #include --#include - - #define VARIANT_CONTAINER 1 - #include --- -1.8.3.1 - - -From ce01a26b779442e030a3f1aa6b1ce7cf46c925d0 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 9 May 2017 17:36:29 -0500 -Subject: [PATCH 08/13] Fix: pengine: avoid use-of-NULL in bundle without - primitive - ---- - pengine/container.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/pengine/container.c b/pengine/container.c -index bfef976..b63dcb3 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -262,7 +262,9 @@ container_expand(resource_t * rsc, pe_working_set_t * data_set) - - - CRM_ASSERT(tuple); -- if(fix_remote_addr(tuple->remote) && tuple->docker->allocated_to) { -+ if (tuple->docker && tuple->remote && tuple->docker->allocated_to -+ && fix_remote_addr(tuple->remote)) { -+ - // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside - xmlNode *nvpair = get_xpath_object("//nvpair[@name='addr']", tuple->remote->xml, LOG_ERR); - --- -1.8.3.1 - - -From 25d6b6f0112c42e20d59305169b68472870a0b43 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 9 May 2017 17:48:51 -0500 -Subject: [PATCH 09/13] Low: pengine,libpengine: avoid potential use-of-NULL - -no risk in current code, but handles any future misuse ---- - lib/pengine/utils.c | 5 ++++- - pengine/allocate.c | 3 ++- - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 16687e0..3d4e60d 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -1699,7 +1699,7 @@ bool fix_remote_addr(resource_t * rsc) - return FALSE; - } - -- for (int lpc = 0; rsc && lpc < DIMOF(attr_list); lpc++) { -+ for (int lpc = 0; lpc < DIMOF(attr_list); lpc++) { - name = attr_list[lpc]; - value = crm_element_value(rsc->xml, attr_list[lpc]); - if (safe_str_eq(value, value_list[lpc]) == FALSE) { -@@ -1734,12 +1734,15 @@ rsc_action_digest_cmp(resource_t * rsc, xmlNode * xml_op, node_t * node, - const char *restart_list; - const char *op_version; - -+ CRM_ASSERT(node != NULL); -+ - data = g_hash_table_lookup(node->details->digest_cache, op_id); - if (data) { - return data; - } - - data = calloc(1, sizeof(op_digest_cache_t)); -+ CRM_ASSERT(data != NULL); - - digest_all = crm_element_value(xml_op, XML_LRM_ATTR_OP_DIGEST); - digest_restart = crm_element_value(xml_op, XML_LRM_ATTR_RESTART_DIGEST); -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 3819c24..6b0025b 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -276,7 +276,8 @@ check_action_definition(resource_t * rsc, node_t * active_node, xmlNode * xml_op - key = NULL; - } - -- crm_trace("Testing %s_%s_%d on %s", rsc->id, task, interval, active_node?active_node->details->uname:"N/A"); -+ crm_trace("Testing %s_%s_%d on %s", -+ rsc->id, task, interval, active_node->details->uname); - if (interval == 0 && safe_str_eq(task, RSC_STATUS)) { - /* Reload based on the start action not a probe */ - task = RSC_START; --- -1.8.3.1 - - -From 32477db962b9798a323c7da27cece111519bf534 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 12 May 2017 17:54:04 -0500 -Subject: [PATCH 10/13] Low: libpe_status: set #kind to "container" for bundle - nodes - ---- - lib/pengine/container.c | 29 +++++++++++++++++++++++------ - 1 file changed, 23 insertions(+), 6 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 043f129..f93a60f 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -384,14 +384,13 @@ create_remote_resource( - - create_nvp(xml_obj, XML_OP_ATTR_ALLOW_MIGRATE, "false"); - -- // Sets up node->details->remote_rsc->container == tuple->docker -+ /* This sets tuple->docker as tuple->remote's container, which is -+ * similar to what happens with guest nodes. This is how the PE knows -+ * that the bundle node is fenced by recovering docker, and that -+ * remote should be ordered relative to docker. -+ */ - create_nvp(xml_obj, XML_RSC_ATTR_CONTAINER, tuple->docker->id); - -- // TODO: Do this generically, eg with rsc->flags -- // create_nvp(xml_obj, XML_RSC_ATTR_INTERNAL_RSC, "true"); // Suppress printing -- -- // tuple->docker->fillers = g_list_append(tuple->docker->fillers, child); -- - /* Ensure a node has been created for the guest (it may have already - * been, if it has a permanent node attribute), and ensure its weight is - * -INFINITY so no other resources can run on it. -@@ -422,6 +421,24 @@ create_remote_resource( - } - - tuple->node->details->remote_rsc = tuple->remote; -+ -+ /* #kind is irrelevant to bundles since it is only used in location -+ * constraint rules, and those don't matter for resources inside -+ * bundles. But just for clarity, a bundle is closer to "container" -+ * (guest node) than the "remote" set by pe_create_node(). -+ */ -+ g_hash_table_insert(tuple->node->details->attrs, -+ strdup("#kind"), strdup("container")); -+ -+ /* One effect of this is that setup_container() will add -+ * tuple->remote to tuple->docker's fillers, which will make -+ * rsc_contains_remote_node() true for tuple->docker. -+ * -+ * tuple->child does NOT get added to tuple->docker's fillers. -+ * The only noticeable effect if it did would be for its fail count to -+ * be taken into account when checking tuple->docker's migration -+ * threshold. -+ */ - parent->children = g_list_append(parent->children, tuple->remote); - } - return TRUE; --- -1.8.3.1 - - -From bd7f2b64841514d08fb5bbd4b990857e4ccd8def Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 15 May 2017 16:11:45 -0500 -Subject: [PATCH 11/13] Log: pengine: re-phrase trace log for internal - constraints - -This improves comments and one trace message, and involves slight -refactoring that I initially planned to do more with, but decided against. ---- - pengine/native.c | 35 ++++++++++++++++++++++++++--------- - 1 file changed, 26 insertions(+), 9 deletions(-) - -diff --git a/pengine/native.c b/pengine/native.c -index f30bc8b..82b73bb 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -1447,16 +1447,24 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - if (rsc->container) { - resource_t *remote_rsc = NULL; - -- /* find out if the container is associated with remote node connection resource */ -+ /* A user can specify that a resource must start on a Pacemaker Remote -+ * node by explicitly configuring it with the container=NODENAME -+ * meta-attribute. This is of questionable merit, since location -+ * constraints can accomplish the same thing. But we support it, so here -+ * we check whether a resource (that is not itself a remote connection) -+ * has container set to a remote node or guest node resource. -+ */ - if (rsc->container->is_remote_node) { - remote_rsc = rsc->container; - } else if (rsc->is_remote_node == FALSE) { - remote_rsc = rsc_contains_remote_node(data_set, rsc->container); - } - -- /* if the container is a remote-node, force the resource within the container -- * instead of colocating the resource with the container. */ - if (remote_rsc) { -+ /* The container represents a Pacemaker Remote node, so force the -+ * resource on the Pacemaker Remote node instead of colocating the -+ * resource with the container resource. -+ */ - GHashTableIter iter; - node_t *node = NULL; - g_hash_table_iter_init(&iter, rsc->allowed_nodes); -@@ -1466,8 +1474,15 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - } - } - } else { -- int score = 10000; /* Highly preferred but not essential */ -- crm_trace("Generating order and colocation rules for rsc %s with container %s", rsc->id, rsc->container->id); -+ /* This resource is either a filler for a container that does NOT -+ * represent a Pacemaker Remote node, or a Pacemaker Remote -+ * connection resource for a guest node or bundle. -+ */ -+ int score; -+ -+ crm_trace("Order and colocate %s relative to its container %s", -+ rsc->id, rsc->container->id); -+ - custom_action_order(rsc->container, generate_op_key(rsc->container->id, RSC_START, 0), NULL, - rsc, generate_op_key(rsc->id, RSC_START, 0), NULL, - pe_order_implies_then | pe_order_runnable_left, data_set); -@@ -1476,11 +1491,13 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - rsc->container, generate_op_key(rsc->container->id, RSC_STOP, 0), NULL, - pe_order_implies_first, data_set); - -- if(is_not_set(rsc->flags, pe_rsc_allow_remote_remotes)) { -- score = INFINITY; /* Force them to run on the same host */ -+ if (is_set(rsc->flags, pe_rsc_allow_remote_remotes)) { -+ score = 10000; /* Highly preferred but not essential */ -+ } else { -+ score = INFINITY; /* Force them to run on the same host */ - } -- rsc_colocation_new("resource-with-container", NULL, score, rsc, rsc->container, NULL, -- NULL, data_set); -+ rsc_colocation_new("resource-with-container", NULL, score, rsc, -+ rsc->container, NULL, NULL, data_set); - } - } - --- -1.8.3.1 - - -From 56a7985a768cd42d0cfcb7b9fcea043652ed0aa0 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 15 May 2017 17:53:07 -0500 -Subject: [PATCH 12/13] Low: pengine: improve internal bundle constraints - -Ordering IP with docker requires pe_order_preserve. - -Explicit ordering of remote relative to docker is redundant since it's handled -by native internal constraints. - -Explicit colocation of remote with IP is both redundant (since both remote and -IP are colocated with docker) and harmful if mandatory (since it prohibits -running bundles on Pacemaker Remote nodes). ---- - pengine/container.c | 24 +++++++++--------------- - 1 file changed, 9 insertions(+), 15 deletions(-) - -diff --git a/pengine/container.c b/pengine/container.c -index b63dcb3..5bde89d 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -167,8 +167,10 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - tuple->ip->cmds->internal_constraints(tuple->ip, data_set); - - // Start ip then docker -- new_rsc_order(tuple->ip, RSC_START, tuple->docker, RSC_START, pe_order_runnable_left, data_set); -- new_rsc_order(tuple->docker, RSC_STOP, tuple->ip, RSC_STOP, pe_order_implies_first, data_set); -+ new_rsc_order(tuple->ip, RSC_START, tuple->docker, RSC_START, -+ pe_order_runnable_left|pe_order_preserve, data_set); -+ new_rsc_order(tuple->docker, RSC_STOP, tuple->ip, RSC_STOP, -+ pe_order_implies_first|pe_order_preserve, data_set); - - id = crm_strdup_printf("%s-ip-with-docker-%d", rsc->id, tuple->offset); - rsc_colocation_new(id, NULL, INFINITY, tuple->ip, tuple->docker, NULL, NULL, data_set); -@@ -176,20 +178,12 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - } - - if(tuple->remote) { -+ /* This handles ordering and colocating remote relative to docker -+ * (via "resource-with-container"). Since IP is also ordered and -+ * colocated relative to docker, we don't need to do anything -+ * explicit here with IP. -+ */ - tuple->remote->cmds->internal_constraints(tuple->remote, data_set); -- // Start docker then remote -- new_rsc_order( -- tuple->docker, RSC_START, tuple->remote, RSC_START, pe_order_runnable_left, data_set); -- new_rsc_order( -- tuple->remote, RSC_STOP, tuple->docker, RSC_STOP, pe_order_implies_first, data_set); -- -- if(tuple->ip) { -- id = crm_strdup_printf("%s-remote-with-ip-%d", rsc->id, tuple->offset); -- rsc_colocation_new(id, NULL, INFINITY, tuple->remote, tuple->ip, NULL, NULL, data_set); -- free(id); --// } else { -- // remote-with-docker is already handled in native_internal_constraints() by 'resource-with-container' -- } - } - - if(tuple->child) { --- -1.8.3.1 - - -From 6f0468b80ac6ec88644ce1517b3668bfd96a51e3 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 11 May 2017 17:59:10 -0500 -Subject: [PATCH 13/13] Fix: libpe_status: correctly flag remote connection - resources - -Previously, unpack_resources() would set is_remote_node (when appropriate) -after calling common_unpack(). However, this meant that other paths to -common_unpack() (such as for bundles) did not get this set correctly. - -Now, is_remote_node is set in common_unpack() so all paths are correct. -It's also the logical place to do it, since it really is part of unpacking, -and saves an extra call to xml_contains_remote_node(). ---- - lib/pengine/complex.c | 1 + - lib/pengine/unpack.c | 5 ----- - pengine/native.c | 11 ++++++----- - 3 files changed, 7 insertions(+), 10 deletions(-) - -diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c -index 6246b08..c99b5af 100644 ---- a/lib/pengine/complex.c -+++ b/lib/pengine/complex.c -@@ -542,6 +542,7 @@ common_unpack(xmlNode * xml_obj, resource_t ** rsc, - } - - if (xml_contains_remote_node((*rsc)->xml)) { -+ (*rsc)->is_remote_node = TRUE; - if (g_hash_table_lookup((*rsc)->meta, XML_RSC_ATTR_CONTAINER)) { - container_remote_node = 1; - } else { -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 6ec7daf..df9a133 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -789,10 +789,6 @@ unpack_resources(xmlNode * xml_resources, pe_working_set_t * data_set) - crm_trace("Beginning unpack... <%s id=%s... >", crm_element_name(xml_obj), ID(xml_obj)); - if (common_unpack(xml_obj, &new_rsc, NULL, data_set)) { - data_set->resources = g_list_append(data_set->resources, new_rsc); -- -- if (xml_contains_remote_node(xml_obj)) { -- new_rsc->is_remote_node = TRUE; -- } - print_resource(LOG_DEBUG_3, "Added ", new_rsc, FALSE); - - } else { -@@ -1673,7 +1669,6 @@ create_fake_resource(const char *rsc_id, xmlNode * rsc_entry, pe_working_set_t * - node_t *node; - - crm_debug("Detected orphaned remote node %s", rsc_id); -- rsc->is_remote_node = TRUE; - node = pe_find_node(data_set->nodes, rsc_id); - if (node == NULL) { - node = pe_create_node(rsc_id, rsc_id, "remote", NULL, data_set); -diff --git a/pengine/native.c b/pengine/native.c -index 82b73bb..2c4e2a1 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -1507,11 +1507,12 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - rsc_avoids_remote_nodes(rsc); - } - -- /* If this rsc is a remote connection resource associated -- * with a container ( which will most likely be a virtual guest ) -- * do not allow the container to live on any remote-nodes. -- * remote-nodes managing nested remote-nodes should not be allowed. */ -- if (rsc->is_remote_node && rsc->container) { -+ /* If this is a guest node's implicit remote connection, do not allow the -+ * guest resource to live on a Pacemaker Remote node, to avoid nesting -+ * remotes. However, allow bundles to run on remote nodes. -+ */ -+ if (rsc->is_remote_node && rsc->container -+ && is_not_set(rsc->flags, pe_rsc_allow_remote_remotes)) { - rsc_avoids_remote_nodes(rsc->container); - } - } --- -1.8.3.1 - diff --git a/SOURCES/061-bundle-memory-fix.patch b/SOURCES/061-bundle-memory-fix.patch deleted file mode 100644 index 1f78712..0000000 --- a/SOURCES/061-bundle-memory-fix.patch +++ /dev/null @@ -1,37 +0,0 @@ -From eee00ca63ec56182cb784ffd37d90d467140cde1 Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Tue, 23 May 2017 10:27:45 -0500 -Subject: [PATCH] Fix: PE: Prevent use-after-free when creating bundle - constraints - -Equivalent of upstream ff426526 by Andrew Beekhof for 7.4 context ---- - pengine/container.c | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/pengine/container.c b/pengine/container.c -index 5bde89d..7ec390e 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -155,7 +155,6 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - - get_container_variant_data(container_data, rsc); - for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -- char *id = NULL; - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - - CRM_ASSERT(tuple); -@@ -172,9 +171,7 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - new_rsc_order(tuple->docker, RSC_STOP, tuple->ip, RSC_STOP, - pe_order_implies_first|pe_order_preserve, data_set); - -- id = crm_strdup_printf("%s-ip-with-docker-%d", rsc->id, tuple->offset); -- rsc_colocation_new(id, NULL, INFINITY, tuple->ip, tuple->docker, NULL, NULL, data_set); -- free(id); -+ rsc_colocation_new("ip-with-docker", NULL, INFINITY, tuple->ip, tuple->docker, NULL, NULL, data_set); - } - - if(tuple->remote) { --- -1.8.3.1 - diff --git a/SOURCES/062-remote-recovery.patch b/SOURCES/062-remote-recovery.patch deleted file mode 100644 index eaca21b..0000000 --- a/SOURCES/062-remote-recovery.patch +++ /dev/null @@ -1,7928 +0,0 @@ -From bc9ba911936e7816e467b5ee1298da11fb83862b Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 24 May 2017 11:21:15 +1000 -Subject: [PATCH 1/6] Fix: PE: Correctly compare a point with NULL instead of - FALSE - ---- - lib/pengine/remote.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/pengine/remote.c b/lib/pengine/remote.c -index c5a3eec..4755d20 100644 ---- a/lib/pengine/remote.c -+++ b/lib/pengine/remote.c -@@ -43,7 +43,7 @@ is_rsc_baremetal_remote_node(resource_t *rsc, pe_working_set_t * data_set) - gboolean - is_baremetal_remote_node(node_t *node) - { -- if (is_remote_node(node) && (node->details->remote_rsc == FALSE || node->details->remote_rsc->container == FALSE)) { -+ if (is_remote_node(node) && (node->details->remote_rsc == NULL || node->details->remote_rsc->container == FALSE)) { - return TRUE; - } - return FALSE; --- -1.8.3.1 - - -From 3f72a028f9a12a6623a7b88733a6fe7ecc879230 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 24 May 2017 11:21:44 +1000 -Subject: [PATCH 2/6] PE: Assume resources on remote nodes do not need to be - restarted until absolutely necessary - ---- - pengine/allocate.c | 378 ++++++++++++++++++++++++++++++++++------------------- - 1 file changed, 245 insertions(+), 133 deletions(-) - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 6b0025b..90d25fc 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -1745,6 +1745,244 @@ rsc_order_first(resource_t * lh_rsc, order_constraint_t * order, pe_working_set_ - extern gboolean update_action(action_t * action); - extern void update_colo_start_chain(action_t * action); - -+enum remote_connection_state -+{ -+ remote_state_unknown = 0, -+ remote_state_alive = 1, -+ remote_state_resting = 2, -+ remote_state_dead= 3 -+}; -+ -+static int -+is_recurring_action(action_t *action) -+{ -+ const char *interval_s = g_hash_table_lookup(action->meta, XML_LRM_ATTR_INTERVAL); -+ int interval = crm_parse_int(interval_s, "0"); -+ if(interval > 0) { -+ return TRUE; -+ } -+ return FALSE; -+} -+ -+static void -+apply_container_ordering(action_t *action, pe_working_set_t *data_set) -+{ -+ /* VMs are also classified as containers for these purposes... in -+ * that they both involve a 'thing' running on a real or remote -+ * cluster node. -+ * -+ * This allows us to be smarter about the type and extent of -+ * recovery actions required in various scenarios -+ */ -+ resource_t *remote_rsc = NULL; -+ resource_t *container = NULL; -+ enum action_tasks task = text2task(action->task); -+ -+ if (action->rsc == NULL) { -+ return; -+ } -+ -+ CRM_ASSERT(action->node); -+ CRM_ASSERT(is_remote_node(action->node)); -+ CRM_ASSERT(action->node->details->remote_rsc); -+ -+ remote_rsc = action->node->details->remote_rsc; -+ CRM_ASSERT(remote_rsc); -+ -+ container = remote_rsc->container; -+ CRM_ASSERT(container); -+ -+ crm_trace("%s %s %s %s %d", action->uuid, action->task, remote_rsc->id, container->id, is_set(container->flags, pe_rsc_failed)); -+ switch (task) { -+ 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); -+ -+ /* 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); -+ break; -+ case stop_rsc: -+ if(is_set(container->flags, pe_rsc_failed)) { -+ /* When the container representing a guest node fails, -+ * the stop action for all the resources living in -+ * that container is implied by the container -+ * stopping. This is similar to how fencing operations -+ * work for cluster nodes. -+ */ -+ custom_action_order(container, generate_op_key(container->id, RSC_STOP, 0), NULL, -+ action->rsc, NULL, action, -+ pe_order_preserve | pe_order_implies_then | pe_order_runnable_left, data_set); -+ pe_set_action_bit(action, pe_action_pseudo); -+ } 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); -+ } -+ break; -+ case action_demote: -+ if(is_set(container->flags, pe_rsc_failed)) { -+ /* Just like a stop, the demote is implied by the -+ * container having failed/stopped -+ * -+ * If we really wanted to we would order the demote -+ * after the stop, IFF the containers current role was -+ * stopped (otherwise we re-introduce an ordering -+ * loop) -+ */ -+ pe_set_action_bit(action, pe_action_pseudo); -+ } 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); -+ } -+ break; -+ default: -+ /* Wait for the connection resource to be up */ -+ if (is_recurring_action(action)) { -+ /* In case we ever get the recovery logic wrong, force -+ * 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); -+ } 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); -+ } -+ break; -+ } -+} -+ -+static void -+apply_remote_ordering(action_t *action, pe_working_set_t *data_set) -+{ -+ resource_t *remote_rsc = NULL; -+ node_t *cluster_node = NULL; -+ enum action_tasks task = text2task(action->task); -+ enum remote_connection_state state = remote_state_unknown; -+ -+ if (action->rsc == NULL) { -+ return; -+ } -+ -+ CRM_ASSERT(action->node); -+ CRM_ASSERT(is_remote_node(action->node)); -+ CRM_ASSERT(action->node->details->remote_rsc); -+ -+ remote_rsc = action->node->details->remote_rsc; -+ CRM_ASSERT(remote_rsc); -+ -+ if(remote_rsc->running_on) { -+ cluster_node = remote_rsc->running_on->data; -+ } -+ -+ /* If the cluster node the remote connection resource resides on -+ * is unclean or went offline, we can't process any operations -+ * on that remote node until after it starts elsewhere. -+ */ -+ if(remote_rsc->next_role == RSC_ROLE_STOPPED || remote_rsc->allocated_to == NULL) { -+ /* There is no-where left to run the connection resource -+ * We must assume the target has failed -+ */ -+ state = remote_state_dead; -+ -+ } else if (cluster_node == NULL) { -+ /* Connection is recoverable but not currently running anywhere, see if we can recover it first */ -+ state = remote_state_unknown; -+ -+ } else if(cluster_node->details->unclean == TRUE -+ || cluster_node->details->online == FALSE) { -+ /* Connection is running on a dead node, see if we can recover it first */ -+ state = remote_state_resting; -+ -+ } else if (g_list_length(remote_rsc->running_on) > 1 -+ && remote_rsc->partial_migration_source -+ && remote_rsc->partial_migration_target) { -+ /* We're in the middle of migrating a connection resource, -+ * wait until after the resource migrates before performing -+ * any actions. -+ */ -+ state = remote_state_resting; -+ -+ } else { -+ state = remote_state_alive; -+ } -+ -+ crm_trace("%s %s %d", action->uuid, action->task, state); -+ switch (task) { -+ case start_rsc: -+ case action_promote: -+ if(state == remote_state_dead) { -+ /* Wait for the connection resource to be up and force recovery */ -+ custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, -+ action->rsc, NULL, action, -+ pe_order_preserve | pe_order_implies_then | pe_order_runnable_left, data_set); -+ } else { -+ /* Ensure the connection resource is 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); -+ } -+ 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_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); -+ } else { -+ 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); -+ } -+ break; -+ case action_demote: -+ -+ /* If the connection is being torn down, we don't want -+ * to build a constraint between a resource's demotion and -+ * the connection resource starting... because the connection -+ * resource can not start. The connection might already be up, -+ * but the "start" action would not be allowed, which in turn would -+ * block the demotion of any resources living in the node. -+ */ -+ -+ 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); -+ } /* Otherwise we can rely on the stop ordering */ -+ break; -+ default: -+ /* Wait for the connection resource to be up */ -+ if (is_recurring_action(action)) { -+ /* In case we ever get the recovery logic wrong, force -+ * 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); -+ } 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); -+ } -+ break; -+ } -+} -+ - static void - apply_remote_node_ordering(pe_working_set_t *data_set) - { -@@ -1753,10 +1991,9 @@ apply_remote_node_ordering(pe_working_set_t *data_set) - if (is_set(data_set->flags, pe_flag_have_remote_nodes) == FALSE) { - return; - } -+ - for (; gIter != NULL; gIter = gIter->next) { - action_t *action = (action_t *) gIter->data; -- resource_t *remote_rsc = NULL; -- resource_t *container = NULL; - - if (action->rsc == NULL) { - continue; -@@ -1781,7 +2018,7 @@ apply_remote_node_ordering(pe_working_set_t *data_set) - pe_order_optional, - data_set); - -- continue; -+ continue; - } - - /* If the action occurs on a Pacemaker Remote node, create -@@ -1792,138 +2029,13 @@ apply_remote_node_ordering(pe_working_set_t *data_set) - is_remote_node(action->node) == FALSE || - action->node->details->remote_rsc == NULL || - is_set(action->flags, pe_action_pseudo)) { -- continue; -- } -+ crm_trace("Nothing required for %s", action->uuid); - -- remote_rsc = action->node->details->remote_rsc; -- container = remote_rsc->container; -+ } else if(action->node->details->remote_rsc->container) { -+ apply_container_ordering(action, data_set); - -- if (safe_str_eq(action->task, "monitor") || -- safe_str_eq(action->task, "start") || -- safe_str_eq(action->task, "promote") || -- safe_str_eq(action->task, "notify") || -- safe_str_eq(action->task, CRM_OP_LRM_REFRESH) || -- safe_str_eq(action->task, CRM_OP_CLEAR_FAILCOUNT) || -- safe_str_eq(action->task, "delete")) { -- -- custom_action_order(remote_rsc, -- generate_op_key(remote_rsc->id, RSC_START, 0), -- NULL, -- action->rsc, -- NULL, -- action, -- pe_order_preserve | pe_order_implies_then | pe_order_runnable_left, -- data_set); -- -- } else if (safe_str_eq(action->task, "demote")) { -- -- /* If the connection is being torn down, we don't want -- * to build a constraint between a resource's demotion and -- * the connection resource starting... because the connection -- * resource can not start. The connection might already be up, -- * but the "start" action would not be allowed, which in turn would -- * block the demotion of any resources living in the node. -- * -- * In this case, only build the constraint between the demotion and -- * the connection's "stop" action. This allows the connection and -- * all the resources within the node to be torn down properly. -- */ -- if (remote_rsc->next_role == RSC_ROLE_STOPPED) { -- 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); -- } else if(container == NULL) { -- custom_action_order(remote_rsc, -- generate_op_key(remote_rsc->id, RSC_START, 0), -- NULL, -- action->rsc, -- NULL, -- action, -- pe_order_preserve | pe_order_implies_then | pe_order_runnable_left, -- data_set); -- } -- -- if(container && is_set(container->flags, pe_rsc_failed)) { -- /* Just like a stop, the demote is implied by the -- * container having failed/stopped -- * -- * If we really wanted to we would order the demote -- * after the stop, IFF the containers current role was -- * stopped (otherwise we re-introduce an ordering -- * loop) -- */ -- pe_set_action_bit(action, pe_action_pseudo); -- } -- -- } else if (safe_str_eq(action->task, "stop") && -- container && -- is_set(container->flags, pe_rsc_failed)) { -- -- /* When the container representing a guest node fails, the stop -- * action for all the resources living in that container is implied -- * by the container stopping. This is similar to how fencing -- * operations work for cluster nodes. -- */ -- pe_set_action_bit(action, pe_action_pseudo); -- custom_action_order(container, -- generate_op_key(container->id, RSC_STOP, 0), -- NULL, -- action->rsc, -- NULL, -- action, -- pe_order_preserve | pe_order_implies_then | pe_order_runnable_left, -- data_set); -- } else if (safe_str_eq(action->task, "stop")) { -- gboolean after_start = FALSE; -- -- /* Handle special case with remote node where stop actions need to be -- * ordered after the connection resource starts somewhere else. -- */ -- if (is_baremetal_remote_node(action->node)) { -- node_t *cluster_node = remote_rsc->running_on ? remote_rsc->running_on->data : NULL; -- -- /* If the cluster node the remote connection resource resides on -- * is unclean or went offline, we can't process any operations -- * on that remote node until after it starts elsewhere. -- */ -- if (cluster_node == NULL || -- cluster_node->details->unclean == TRUE || -- cluster_node->details->online == FALSE) { -- after_start = TRUE; -- } else if (g_list_length(remote_rsc->running_on) > 1 && -- remote_rsc->partial_migration_source && -- remote_rsc->partial_migration_target) { -- /* if we're caught in the middle of migrating a connection resource, -- * then we have to wait until after the resource migrates before performing -- * any actions. */ -- after_start = TRUE; -- } -- } -- -- if (after_start) { -- custom_action_order(remote_rsc, -- generate_op_key(remote_rsc->id, RSC_START, 0), -- NULL, -- action->rsc, -- NULL, -- action, -- pe_order_preserve | pe_order_implies_then | pe_order_runnable_left, -- data_set); -- } else { -- 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); -- } -+ } else { -+ apply_remote_ordering(action, data_set); - } - } - } --- -1.8.3.1 - - -From ca279000ed8733dd76a4f9c6306c939979139133 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 24 May 2017 11:22:05 +1000 -Subject: [PATCH 3/6] Test: PE: Assume resources on remote nodes do not need to - be restarted until absolutely necessary - ---- - pengine/test10/bug-rh-1097457.dot | 3 + - pengine/test10/bug-rh-1097457.exp | 9 + - pengine/test10/guest-node-host-dies.dot | 3 + - pengine/test10/guest-node-host-dies.exp | 9 + - pengine/test10/remote-recover.dot | 8 - - pengine/test10/remote-recover.exp | 44 --- - pengine/test10/remote-recover.summary | 6 +- - pengine/test10/remote-recovery.dot | 90 ----- - pengine/test10/remote-recovery.exp | 488 ++---------------------- - pengine/test10/remote-recovery.summary | 31 +- - pengine/test10/whitebox-fail1.dot | 2 + - pengine/test10/whitebox-fail1.exp | 6 + - pengine/test10/whitebox-fail2.dot | 2 + - pengine/test10/whitebox-fail2.exp | 6 + - pengine/test10/whitebox-fail3.dot | 3 + - pengine/test10/whitebox-fail3.exp | 9 + - pengine/test10/whitebox-imply-stop-on-fence.dot | 1 + - pengine/test10/whitebox-imply-stop-on-fence.exp | 3 + - pengine/test10/whitebox-move.dot | 2 + - pengine/test10/whitebox-move.exp | 6 + - pengine/test10/whitebox-ms-ordering-move.dot | 3 + - pengine/test10/whitebox-ms-ordering-move.exp | 9 + - pengine/test10/whitebox-ms-ordering.dot | 3 + - pengine/test10/whitebox-ms-ordering.exp | 9 + - pengine/test10/whitebox-nested-group.dot | 3 + - pengine/test10/whitebox-nested-group.exp | 9 + - pengine/test10/whitebox-start.dot | 2 + - pengine/test10/whitebox-start.exp | 6 + - 28 files changed, 151 insertions(+), 624 deletions(-) - -diff --git a/pengine/test10/bug-rh-1097457.dot b/pengine/test10/bug-rh-1097457.dot -index ece2834..e74c8fb 100644 ---- a/pengine/test10/bug-rh-1097457.dot -+++ b/pengine/test10/bug-rh-1097457.dot -@@ -43,6 +43,9 @@ digraph "g" { - "FSlun3_stop_0 lamaVM2" -> "all_stopped" [ style = bold] - "FSlun3_stop_0 lamaVM2" [ style=bold color="green" fontcolor="orange"] - "VM2_monitor_10000 lama3" [ style=bold color="green" fontcolor="black"] -+"VM2_start_0 lama3" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] -+"VM2_start_0 lama3" -> "FAKE4_start_0 lamaVM2" [ style = bold] -+"VM2_start_0 lama3" -> "FAKE6_start_0 lamaVM2" [ style = bold] - "VM2_start_0 lama3" -> "FSlun3_start_0 lama2" [ style = bold] - "VM2_start_0 lama3" -> "VM2_monitor_10000 lama3" [ style = bold] - "VM2_start_0 lama3" -> "lamaVM2_start_0 lama3" [ style = bold] -diff --git a/pengine/test10/bug-rh-1097457.exp b/pengine/test10/bug-rh-1097457.exp -index 16b6b77..bf62647 100644 ---- a/pengine/test10/bug-rh-1097457.exp -+++ b/pengine/test10/bug-rh-1097457.exp -@@ -173,6 +173,9 @@ - - - -+ -+ -+ - - - -@@ -229,6 +232,9 @@ - - - -+ -+ -+ - - - -@@ -285,6 +291,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/guest-node-host-dies.dot b/pengine/test10/guest-node-host-dies.dot -index 1fdec7b..04152d1 100644 ---- a/pengine/test10/guest-node-host-dies.dot -+++ b/pengine/test10/guest-node-host-dies.dot -@@ -7,12 +7,15 @@ digraph "g" { - "Fencing_stop_0 rhel7-4" [ style=bold color="green" fontcolor="black"] - "all_stopped" -> "Fencing_start_0 rhel7-4" [ 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] - "container1_start_0 rhel7-2" -> "lxc1_start_0 rhel7-2" [ style = bold] - "container1_start_0 rhel7-2" [ style=bold color="green" fontcolor="black"] - "container1_stop_0 rhel7-1" -> "all_stopped" [ style = bold] - "container1_stop_0 rhel7-1" -> "container1_start_0 rhel7-2" [ style = bold] - "container1_stop_0 rhel7-1" -> "stonith 'reboot' lxc1" [ style = bold] - "container1_stop_0 rhel7-1" [ style=bold color="green" fontcolor="orange"] -+"container2_start_0 rhel7-3" -> "lxc-ms_start_0 lxc2" [ style = bold] - "container2_start_0 rhel7-3" -> "lxc2_start_0 rhel7-3" [ style = bold] - "container2_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] - "container2_stop_0 rhel7-1" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/guest-node-host-dies.exp b/pengine/test10/guest-node-host-dies.exp -index 5f49eb1..73a0264 100644 ---- a/pengine/test10/guest-node-host-dies.exp -+++ b/pengine/test10/guest-node-host-dies.exp -@@ -149,6 +149,9 @@ - - - -+ -+ -+ - - - -@@ -174,6 +177,9 @@ - - - -+ -+ -+ - - - -@@ -245,6 +251,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/remote-recover.dot b/pengine/test10/remote-recover.dot -index 22e0cc7..ccaff14 100644 ---- a/pengine/test10/remote-recover.dot -+++ b/pengine/test10/remote-recover.dot -@@ -1,15 +1,7 @@ - digraph "g" { --"all_stopped" [ style=bold color="green" fontcolor="orange"] - "fake_monitor_10000 rhel7-alt4" [ style=bold color="green" fontcolor="black"] --"fake_start_0 rhel7-alt4" -> "fake_monitor_10000 rhel7-alt4" [ style = bold] --"fake_start_0 rhel7-alt4" [ style=bold color="green" fontcolor="black"] --"fake_stop_0 rhel7-alt4" -> "all_stopped" [ style = bold] --"fake_stop_0 rhel7-alt4" -> "fake_start_0 rhel7-alt4" [ style = bold] --"fake_stop_0 rhel7-alt4" [ style=bold color="green" fontcolor="black"] - "rhel7-alt4_monitor_60000 rhel7-alt1" [ style=bold color="green" fontcolor="black"] - "rhel7-alt4_start_0 rhel7-alt1" -> "fake_monitor_10000 rhel7-alt4" [ style = bold] --"rhel7-alt4_start_0 rhel7-alt1" -> "fake_start_0 rhel7-alt4" [ style = bold] --"rhel7-alt4_start_0 rhel7-alt1" -> "fake_stop_0 rhel7-alt4" [ style = bold] - "rhel7-alt4_start_0 rhel7-alt1" -> "rhel7-alt4_monitor_60000 rhel7-alt1" [ style = bold] - "rhel7-alt4_start_0 rhel7-alt1" [ style=bold color="green" fontcolor="black"] - "shooter_monitor_60000 rhel7-alt1" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/remote-recover.exp b/pengine/test10/remote-recover.exp -index 3936c51..918db8d 100644 ---- a/pengine/test10/remote-recover.exp -+++ b/pengine/test10/remote-recover.exp -@@ -54,50 +54,6 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -diff --git a/pengine/test10/remote-recover.summary b/pengine/test10/remote-recover.summary -index ad4710d..38a1ea4 100644 ---- a/pengine/test10/remote-recover.summary -+++ b/pengine/test10/remote-recover.summary -@@ -12,17 +12,13 @@ OFFLINE: [ rhel7-alt3 ] - Transition Summary: - * Start shooter (rhel7-alt1) - * Start rhel7-alt4 (rhel7-alt1) -- * Restart fake (Started rhel7-alt4) - - Executing cluster transition: - * Resource action: shooter start on rhel7-alt1 - * Resource action: rhel7-alt4 start on rhel7-alt1 -- * Resource action: fake stop on rhel7-alt4 -- * Pseudo action: all_stopped -+ * Resource action: fake monitor=10000 on rhel7-alt4 - * Resource action: shooter monitor=60000 on rhel7-alt1 - * Resource action: rhel7-alt4 monitor=60000 on rhel7-alt1 -- * Resource action: fake start on rhel7-alt4 -- * Resource action: fake monitor=10000 on rhel7-alt4 - - Revised cluster status: - Node rhel7-alt2 (2): standby -diff --git a/pengine/test10/remote-recovery.dot b/pengine/test10/remote-recovery.dot -index 31a82af..d6fdefe 100644 ---- a/pengine/test10/remote-recovery.dot -+++ b/pengine/test10/remote-recovery.dot -@@ -2,87 +2,20 @@ digraph "g" { - "all_stopped" [ style=bold color="green" fontcolor="orange"] - "galera-0_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"] - "galera-0_start_0 controller-2" -> "galera-0_monitor_20000 controller-2" [ style = bold] --"galera-0_start_0 controller-2" -> "galera_demote_0 galera-0" [ style = bold] - "galera-0_start_0 controller-2" -> "galera_monitor_10000 galera-0" [ style = bold] --"galera-0_start_0 controller-2" -> "galera_promote_0 galera-0" [ style = bold] --"galera-0_start_0 controller-2" -> "galera_start_0 galera-0" [ style = bold] --"galera-0_start_0 controller-2" -> "galera_stop_0 galera-0" [ style = bold] - "galera-0_start_0 controller-2" [ style=bold color="green" fontcolor="black"] - "galera-0_stop_0 controller-1" -> "all_stopped" [ style = bold] - "galera-0_stop_0 controller-1" -> "galera-0_start_0 controller-2" [ style = bold] - "galera-0_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] - "galera-2_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"] - "galera-2_start_0 controller-2" -> "galera-2_monitor_20000 controller-2" [ style = bold] --"galera-2_start_0 controller-2" -> "galera_demote_0 galera-2" [ style = bold] - "galera-2_start_0 controller-2" -> "galera_monitor_10000 galera-2" [ style = bold] --"galera-2_start_0 controller-2" -> "galera_promote_0 galera-2" [ style = bold] --"galera-2_start_0 controller-2" -> "galera_start_0 galera-2" [ style = bold] --"galera-2_start_0 controller-2" -> "galera_stop_0 galera-2" [ style = bold] - "galera-2_start_0 controller-2" [ style=bold color="green" fontcolor="black"] - "galera-2_stop_0 controller-1" -> "all_stopped" [ style = bold] - "galera-2_stop_0 controller-1" -> "galera-2_start_0 controller-2" [ style = bold] - "galera-2_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] --"galera-master_demote_0" -> "galera-master_demoted_0" [ style = bold] --"galera-master_demote_0" -> "galera_demote_0 galera-0" [ style = bold] --"galera-master_demote_0" -> "galera_demote_0 galera-2" [ style = bold] --"galera-master_demote_0" [ style=bold color="green" fontcolor="orange"] --"galera-master_demoted_0" -> "galera-master_promote_0" [ style = bold] --"galera-master_demoted_0" -> "galera-master_start_0" [ style = bold] --"galera-master_demoted_0" -> "galera-master_stop_0" [ style = bold] --"galera-master_demoted_0" [ style=bold color="green" fontcolor="orange"] --"galera-master_promote_0" -> "galera_promote_0 galera-0" [ style = bold] --"galera-master_promote_0" -> "galera_promote_0 galera-2" [ style = bold] --"galera-master_promote_0" [ style=bold color="green" fontcolor="orange"] --"galera-master_promoted_0" [ style=bold color="green" fontcolor="orange"] --"galera-master_running_0" -> "galera-master_promote_0" [ style = bold] --"galera-master_running_0" [ style=bold color="green" fontcolor="orange"] --"galera-master_start_0" -> "galera-master_running_0" [ style = bold] --"galera-master_start_0" -> "galera_start_0 galera-0" [ style = bold] --"galera-master_start_0" -> "galera_start_0 galera-2" [ style = bold] --"galera-master_start_0" [ style=bold color="green" fontcolor="orange"] --"galera-master_stop_0" -> "galera-master_stopped_0" [ style = bold] --"galera-master_stop_0" -> "galera_stop_0 galera-0" [ style = bold] --"galera-master_stop_0" -> "galera_stop_0 galera-2" [ style = bold] --"galera-master_stop_0" [ style=bold color="green" fontcolor="orange"] --"galera-master_stopped_0" -> "galera-master_promote_0" [ style = bold] --"galera-master_stopped_0" -> "galera-master_start_0" [ style = bold] --"galera-master_stopped_0" [ style=bold color="green" fontcolor="orange"] --"galera_demote_0 galera-0" -> "galera-master_demoted_0" [ style = bold] --"galera_demote_0 galera-0" -> "galera_demote_0 galera-2" [ style = bold] --"galera_demote_0 galera-0" -> "galera_promote_0 galera-0" [ style = bold] --"galera_demote_0 galera-0" -> "galera_stop_0 galera-0" [ style = bold] --"galera_demote_0 galera-0" [ style=bold color="green" fontcolor="black"] --"galera_demote_0 galera-2" -> "galera-master_demoted_0" [ style = bold] --"galera_demote_0 galera-2" -> "galera_promote_0 galera-2" [ style = bold] --"galera_demote_0 galera-2" -> "galera_stop_0 galera-2" [ style = bold] --"galera_demote_0 galera-2" [ style=bold color="green" fontcolor="black"] - "galera_monitor_10000 galera-0" [ style=bold color="green" fontcolor="black"] - "galera_monitor_10000 galera-2" [ style=bold color="green" fontcolor="black"] --"galera_promote_0 galera-0" -> "galera-master_promoted_0" [ style = bold] --"galera_promote_0 galera-0" -> "galera_monitor_10000 galera-0" [ style = bold] --"galera_promote_0 galera-0" [ style=bold color="green" fontcolor="black"] --"galera_promote_0 galera-2" -> "galera-master_promoted_0" [ style = bold] --"galera_promote_0 galera-2" -> "galera_monitor_10000 galera-2" [ style = bold] --"galera_promote_0 galera-2" -> "galera_promote_0 galera-0" [ style = bold] --"galera_promote_0 galera-2" [ style=bold color="green" fontcolor="black"] --"galera_start_0 galera-0" -> "galera-master_running_0" [ style = bold] --"galera_start_0 galera-0" -> "galera_monitor_10000 galera-0" [ style = bold] --"galera_start_0 galera-0" -> "galera_promote_0 galera-0" [ style = bold] --"galera_start_0 galera-0" [ style=bold color="green" fontcolor="black"] --"galera_start_0 galera-2" -> "galera-master_running_0" [ style = bold] --"galera_start_0 galera-2" -> "galera_monitor_10000 galera-2" [ style = bold] --"galera_start_0 galera-2" -> "galera_promote_0 galera-2" [ style = bold] --"galera_start_0 galera-2" -> "galera_start_0 galera-0" [ style = bold] --"galera_start_0 galera-2" [ style=bold color="green" fontcolor="black"] --"galera_stop_0 galera-0" -> "all_stopped" [ style = bold] --"galera_stop_0 galera-0" -> "galera-master_stopped_0" [ style = bold] --"galera_stop_0 galera-0" -> "galera_start_0 galera-0" [ style = bold] --"galera_stop_0 galera-0" -> "galera_stop_0 galera-2" [ style = bold] --"galera_stop_0 galera-0" [ style=bold color="green" fontcolor="black"] --"galera_stop_0 galera-2" -> "all_stopped" [ style = bold] --"galera_stop_0 galera-2" -> "galera-master_stopped_0" [ style = bold] --"galera_stop_0 galera-2" -> "galera_start_0 galera-2" [ style = bold] --"galera_stop_0 galera-2" [ style=bold color="green" fontcolor="black"] - "haproxy-clone_stop_0" -> "haproxy-clone_stopped_0" [ style = bold] - "haproxy-clone_stop_0" -> "haproxy_stop_0 controller-1" [ style = bold] - "haproxy-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -@@ -114,29 +47,11 @@ digraph "g" { - "messaging-1_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"] - "messaging-1_start_0 controller-2" -> "messaging-1_monitor_20000 controller-2" [ style = bold] - "messaging-1_start_0 controller-2" -> "rabbitmq_monitor_10000 messaging-1" [ style = bold] --"messaging-1_start_0 controller-2" -> "rabbitmq_start_0 messaging-1" [ style = bold] --"messaging-1_start_0 controller-2" -> "rabbitmq_stop_0 messaging-1" [ style = bold] - "messaging-1_start_0 controller-2" [ style=bold color="green" fontcolor="black"] - "messaging-1_stop_0 controller-1" -> "all_stopped" [ style = bold] - "messaging-1_stop_0 controller-1" -> "messaging-1_start_0 controller-2" [ style = bold] - "messaging-1_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] --"rabbitmq-clone_running_0" [ style=bold color="green" fontcolor="orange"] --"rabbitmq-clone_start_0" -> "rabbitmq-clone_running_0" [ style = bold] --"rabbitmq-clone_start_0" -> "rabbitmq_start_0 messaging-1" [ style = bold] --"rabbitmq-clone_start_0" [ style=bold color="green" fontcolor="orange"] --"rabbitmq-clone_stop_0" -> "rabbitmq-clone_stopped_0" [ style = bold] --"rabbitmq-clone_stop_0" -> "rabbitmq_stop_0 messaging-1" [ style = bold] --"rabbitmq-clone_stop_0" [ style=bold color="green" fontcolor="orange"] --"rabbitmq-clone_stopped_0" -> "rabbitmq-clone_start_0" [ style = bold] --"rabbitmq-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq_monitor_10000 messaging-1" [ style=bold color="green" fontcolor="black"] --"rabbitmq_start_0 messaging-1" -> "rabbitmq-clone_running_0" [ style = bold] --"rabbitmq_start_0 messaging-1" -> "rabbitmq_monitor_10000 messaging-1" [ style = bold] --"rabbitmq_start_0 messaging-1" [ style=bold color="green" fontcolor="black"] --"rabbitmq_stop_0 messaging-1" -> "all_stopped" [ style = bold] --"rabbitmq_stop_0 messaging-1" -> "rabbitmq-clone_stopped_0" [ style = bold] --"rabbitmq_stop_0 messaging-1" -> "rabbitmq_start_0 messaging-1" [ style = bold] --"rabbitmq_stop_0 messaging-1" [ style=bold color="green" fontcolor="black"] - "redis-master_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] - "redis-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] - "redis-master_confirmed-pre_notify_stop_0" -> "redis-master_post_notify_stopped_0" [ style = bold] -@@ -208,14 +123,9 @@ digraph "g" { - "stonith_complete" -> "all_stopped" [ style = bold] - "stonith_complete" -> "galera-0_start_0 controller-2" [ style = bold] - "stonith_complete" -> "galera-2_start_0 controller-2" [ style = bold] --"stonith_complete" -> "galera_promote_0 galera-0" [ style = bold] --"stonith_complete" -> "galera_promote_0 galera-2" [ style = bold] --"stonith_complete" -> "galera_start_0 galera-0" [ style = bold] --"stonith_complete" -> "galera_start_0 galera-2" [ style = bold] - "stonith_complete" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold] - "stonith_complete" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold] - "stonith_complete" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold] - "stonith_complete" -> "messaging-1_start_0 controller-2" [ style = bold] --"stonith_complete" -> "rabbitmq_start_0 messaging-1" [ style = bold] - "stonith_complete" [ style=bold color="green" fontcolor="orange"] - } -diff --git a/pengine/test10/remote-recovery.exp b/pengine/test10/remote-recovery.exp -index 70492f4..62860f0 100644 ---- a/pengine/test10/remote-recovery.exp -+++ b/pengine/test10/remote-recovery.exp -@@ -124,44 +124,6 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -@@ -171,150 +133,9 @@ - - - -- -- -- --
    -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -325,103 +146,9 @@ - - - -- -- -- -- -- -- --
    -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -432,137 +159,9 @@ - - - -- -- -- -- -- -- --
    -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -580,7 +179,7 @@ - -
    - -- -+ - - - -@@ -592,7 +191,7 @@ - -
    - -- -+ - - - -@@ -607,7 +206,7 @@ - -
    - -- -+ - - - -@@ -620,7 +219,7 @@ - -
    - -- -+ - - - -@@ -636,7 +235,7 @@ - -
    - -- -+ - - - -@@ -649,7 +248,7 @@ - -
    - -- -+ - - - -@@ -665,7 +264,7 @@ - -
    - -- -+ - - - -@@ -683,7 +282,7 @@ - -
    - -- -+ - - - -@@ -698,7 +297,7 @@ - -
    - -- -+ - - - -@@ -716,7 +315,7 @@ - -
    - -- -+ - - - -@@ -724,7 +323,7 @@ - - - -- -+ - - - -@@ -739,7 +338,7 @@ - -
    - -- -+ - - - -@@ -754,7 +353,7 @@ - -
    - -- -+ - - - -@@ -767,7 +366,7 @@ - -
    - -- -+ - - - -@@ -783,7 +382,7 @@ - -
    - -- -+ - - - -@@ -798,7 +397,7 @@ - -
    - -- -+ - - - -@@ -811,7 +410,7 @@ - -
    - -- -+ - - - -@@ -827,7 +426,7 @@ - -
    - -- -+ - - - -@@ -842,7 +441,7 @@ - -
    - -- -+ - - - -@@ -855,7 +454,7 @@ - -
    - -- -+ - - - -@@ -871,7 +470,7 @@ - -
    - -- -+ - - - -@@ -886,7 +485,7 @@ - -
    - -- -+ - - - -@@ -901,7 +500,7 @@ - -
    - -- -+ - - - -@@ -916,7 +515,7 @@ - -
    - -- -+ - - - -@@ -928,7 +527,7 @@ - -
    - -- -+ - - - -@@ -937,7 +536,7 @@ - - - -- -+ - - - -@@ -950,7 +549,7 @@ - -
    - -- -+ - - - -@@ -963,7 +562,7 @@ - -
    - -- -+ - - - -@@ -972,7 +571,7 @@ - - - -- -+ - - - -@@ -985,7 +584,7 @@ - -
    - -- -+ - - - -@@ -998,7 +597,7 @@ - -
    - -- -+ - - - -@@ -1011,7 +610,7 @@ - -
    - -- -+ - - - -@@ -1024,7 +623,7 @@ - -
    - -- -+ - - - -@@ -1032,7 +631,7 @@ - - - -- -+ - - - -@@ -1043,7 +642,7 @@ - - - -- -+ - - - -@@ -1055,7 +654,7 @@ - -
    - -- -+ - - - -@@ -1072,15 +671,6 @@ - - - -- -- -- -- -- -- -- -- -- - - - -diff --git a/pengine/test10/remote-recovery.summary b/pengine/test10/remote-recovery.summary -index 251febc..57b5e01 100644 ---- a/pengine/test10/remote-recovery.summary -+++ b/pengine/test10/remote-recovery.summary -@@ -41,9 +41,6 @@ Transition Summary: - * Move messaging-1 (Started controller-1 -> controller-2) - * Move galera-0 (Started controller-1 -> controller-2) - * Move galera-2 (Started controller-1 -> controller-2) -- * Restart rabbitmq:2 (Started messaging-1) -- * Restart galera:1 (Master galera-2) -- * Restart galera:2 (Master galera-0) - * Stop redis:0 (controller-1) - * Move ip-172.17.1.14 (Started controller-1 -> controller-2) - * Move ip-172.17.1.17 (Started controller-1 -> controller-2) -@@ -54,8 +51,6 @@ Transition Summary: - * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) - - Executing cluster transition: -- * Pseudo action: rabbitmq-clone_stop_0 -- * Pseudo action: galera-master_demote_0 - * Pseudo action: redis-master_pre_notify_stop_0 - * Resource action: stonith-fence_ipmilan-525400bbf613 stop on controller-0 - * Resource action: stonith-fence_ipmilan-525400bbf613 start on controller-0 -@@ -79,10 +74,9 @@ Executing cluster transition: - * Resource action: messaging-1 start on controller-2 - * Resource action: galera-0 start on controller-2 - * Resource action: galera-2 start on controller-2 -- * Resource action: rabbitmq stop on messaging-1 -- * Pseudo action: rabbitmq-clone_stopped_0 -- * Pseudo action: rabbitmq-clone_start_0 -- * Resource action: galera demote on galera-0 -+ * 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_stop_0 - * Pseudo action: redis-master_stopped_0 - * Pseudo action: haproxy_stop_0 -@@ -91,40 +85,21 @@ Executing cluster transition: - * Resource action: messaging-1 monitor=20000 on controller-2 - * Resource action: galera-0 monitor=20000 on controller-2 - * Resource action: galera-2 monitor=20000 on controller-2 -- * Resource action: rabbitmq start on messaging-1 -- * Resource action: rabbitmq monitor=10000 on messaging-1 -- * Pseudo action: rabbitmq-clone_running_0 -- * Resource action: galera demote on galera-2 -- * Pseudo action: galera-master_demoted_0 -- * Pseudo action: galera-master_stop_0 - * Pseudo action: redis-master_post_notify_stopped_0 - * Pseudo action: ip-172.17.1.14_stop_0 - * Pseudo action: ip-172.17.1.17_stop_0 - * Pseudo action: ip-172.17.4.11_stop_0 -- * Resource action: galera stop on galera-0 - * Resource action: redis notify on controller-0 - * Resource action: redis notify on controller-2 - * Pseudo action: redis-master_confirmed-post_notify_stopped_0 - * Resource action: ip-172.17.1.14 start on controller-2 - * Resource action: ip-172.17.1.17 start on controller-2 - * Resource action: ip-172.17.4.11 start on controller-2 -- * Resource action: galera stop on galera-2 -- * Pseudo action: galera-master_stopped_0 -- * Pseudo action: galera-master_start_0 - * Pseudo action: redis_notified_0 - * Resource action: ip-172.17.1.14 monitor=10000 on controller-2 - * Resource action: ip-172.17.1.17 monitor=10000 on controller-2 - * Resource action: ip-172.17.4.11 monitor=10000 on controller-2 - * Pseudo action: all_stopped -- * Resource action: galera start on galera-2 -- * Resource action: galera start on galera-0 -- * Pseudo action: galera-master_running_0 -- * Pseudo action: galera-master_promote_0 -- * Resource action: galera promote on galera-2 -- * Resource action: galera monitor=10000 on galera-2 -- * Resource action: galera promote on galera-0 -- * Resource action: galera monitor=10000 on galera-0 -- * Pseudo action: galera-master_promoted_0 - Using the original execution date of: 2017-05-03 13:33:24Z - - Revised cluster status: -diff --git a/pengine/test10/whitebox-fail1.dot b/pengine/test10/whitebox-fail1.dot -index c6380ea..0123a58 100644 ---- a/pengine/test10/whitebox-fail1.dot -+++ b/pengine/test10/whitebox-fail1.dot -@@ -23,6 +23,8 @@ digraph "g" { - "M_stop_0 lxc1" -> "all_stopped" [ style = bold] - "M_stop_0 lxc1" [ style=bold color="green" fontcolor="orange"] - "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] - "container1_start_0 18node2" -> "lxc1_start_0 18node2" [ style = bold] - "container1_start_0 18node2" [ style=bold color="green" fontcolor="black"] - "container1_stop_0 18node2" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/whitebox-fail1.exp b/pengine/test10/whitebox-fail1.exp -index 7ac3a19..5c4b26c 100644 ---- a/pengine/test10/whitebox-fail1.exp -+++ b/pengine/test10/whitebox-fail1.exp -@@ -53,6 +53,9 @@ - - - -+ -+ -+ - - - -@@ -160,6 +163,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-fail2.dot b/pengine/test10/whitebox-fail2.dot -index c6380ea..0123a58 100644 ---- a/pengine/test10/whitebox-fail2.dot -+++ b/pengine/test10/whitebox-fail2.dot -@@ -23,6 +23,8 @@ digraph "g" { - "M_stop_0 lxc1" -> "all_stopped" [ style = bold] - "M_stop_0 lxc1" [ style=bold color="green" fontcolor="orange"] - "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] - "container1_start_0 18node2" -> "lxc1_start_0 18node2" [ style = bold] - "container1_start_0 18node2" [ style=bold color="green" fontcolor="black"] - "container1_stop_0 18node2" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/whitebox-fail2.exp b/pengine/test10/whitebox-fail2.exp -index 7ac3a19..5c4b26c 100644 ---- a/pengine/test10/whitebox-fail2.exp -+++ b/pengine/test10/whitebox-fail2.exp -@@ -53,6 +53,9 @@ - - - -+ -+ -+ - - - -@@ -160,6 +163,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-fail3.dot b/pengine/test10/whitebox-fail3.dot -index b3c1535..9814f66 100644 ---- a/pengine/test10/whitebox-fail3.dot -+++ b/pengine/test10/whitebox-fail3.dot -@@ -31,5 +31,8 @@ digraph "g" { - "X:1_start_0 18builder" [ style=bold color="green" fontcolor="black"] - "all_stopped" [ style=bold color="green" fontcolor="orange"] - "vm_start_0 dvossel-laptop2" -> "18builder_start_0 dvossel-laptop2" [ style = bold] -+"vm_start_0 dvossel-laptop2" -> "FAKE_start_0 18builder" [ style = bold] -+"vm_start_0 dvossel-laptop2" -> "W:1_start_0 18builder" [ style = bold] -+"vm_start_0 dvossel-laptop2" -> "X:1_start_0 18builder" [ style = bold] - "vm_start_0 dvossel-laptop2" [ style=bold color="green" fontcolor="black"] - } -diff --git a/pengine/test10/whitebox-fail3.exp b/pengine/test10/whitebox-fail3.exp -index 8ddaba0..95fc289 100644 ---- a/pengine/test10/whitebox-fail3.exp -+++ b/pengine/test10/whitebox-fail3.exp -@@ -17,6 +17,9 @@ - - - -+ -+ -+ - - - -@@ -58,6 +61,9 @@ - - - -+ -+ -+ - - - -@@ -113,6 +119,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.dot b/pengine/test10/whitebox-imply-stop-on-fence.dot -index 0e17a16..5885d4b 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.dot -+++ b/pengine/test10/whitebox-imply-stop-on-fence.dot -@@ -2,6 +2,7 @@ - "R-lxc-01_kiff-01_monitor_10000 kiff-02" [ style=bold color="green" fontcolor="black"] - "R-lxc-01_kiff-01_start_0 kiff-02" -> "R-lxc-01_kiff-01_monitor_10000 kiff-02" [ style = bold] - "R-lxc-01_kiff-01_start_0 kiff-02" -> "lxc-01_kiff-01_start_0 kiff-02" [ style = bold] -+"R-lxc-01_kiff-01_start_0 kiff-02" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] - "R-lxc-01_kiff-01_start_0 kiff-02" [ style=bold color="green" fontcolor="black"] - "R-lxc-01_kiff-01_stop_0 kiff-01" -> "R-lxc-01_kiff-01_start_0 kiff-02" [ style = bold] - "R-lxc-01_kiff-01_stop_0 kiff-01" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.exp b/pengine/test10/whitebox-imply-stop-on-fence.exp -index d248d8d..e9390bf 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.exp -+++ b/pengine/test10/whitebox-imply-stop-on-fence.exp -@@ -293,6 +293,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-move.dot b/pengine/test10/whitebox-move.dot -index 7368b1e..f47c95b 100644 ---- a/pengine/test10/whitebox-move.dot -+++ b/pengine/test10/whitebox-move.dot -@@ -25,6 +25,8 @@ digraph "g" { - "M_stop_0 lxc1" -> "lxc1_stop_0 18node1" [ style = bold] - "M_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] - "all_stopped" [ style=bold color="green" fontcolor="orange"] -+"container1_start_0 18node2" -> "A_start_0 lxc1" [ style = bold] -+"container1_start_0 18node2" -> "M_start_0 lxc1" [ style = bold] - "container1_start_0 18node2" -> "lxc1_start_0 18node2" [ style = bold] - "container1_start_0 18node2" [ style=bold color="green" fontcolor="black"] - "container1_stop_0 18node1" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/whitebox-move.exp b/pengine/test10/whitebox-move.exp -index d72a767..ecea360 100644 ---- a/pengine/test10/whitebox-move.exp -+++ b/pengine/test10/whitebox-move.exp -@@ -34,6 +34,9 @@ - - - -+ -+ -+ - - - -@@ -132,6 +135,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-ms-ordering-move.dot b/pengine/test10/whitebox-ms-ordering-move.dot -index fe0b0e8..43c1d4f 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.dot -+++ b/pengine/test10/whitebox-ms-ordering-move.dot -@@ -1,5 +1,7 @@ - digraph "g" { - "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] - "container1_start_0 rhel7-2" -> "lxc1_start_0 rhel7-2" [ style = bold] - "container1_start_0 rhel7-2" [ style=bold color="green" fontcolor="black"] - "container1_stop_0 rhel7-1" -> "all_stopped" [ style = bold] -@@ -29,6 +31,7 @@ digraph "g" { - "lxc-ms_demote_0 lxc1" -> "lxc-ms-master_demoted_0" [ style = bold] - "lxc-ms_demote_0 lxc1" -> "lxc-ms_promote_0 lxc1" [ style = bold] - "lxc-ms_demote_0 lxc1" -> "lxc-ms_stop_0 lxc1" [ style = bold] -+"lxc-ms_demote_0 lxc1" -> "lxc1_stop_0 rhel7-1" [ style = bold] - "lxc-ms_demote_0 lxc1" [ style=bold color="green" fontcolor="black"] - "lxc-ms_promote_0 lxc1" -> "lxc-ms-master_promoted_0" [ style = bold] - "lxc-ms_promote_0 lxc1" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/whitebox-ms-ordering-move.exp b/pengine/test10/whitebox-ms-ordering-move.exp -index f8718de..3b5598f 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.exp -+++ b/pengine/test10/whitebox-ms-ordering-move.exp -@@ -34,6 +34,9 @@ - - - -+ -+ -+ - - - -@@ -85,6 +88,9 @@ - - - -+ -+ -+ - - - -@@ -270,6 +276,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-ms-ordering.dot b/pengine/test10/whitebox-ms-ordering.dot -index 1a942f4..84a0984 100644 ---- a/pengine/test10/whitebox-ms-ordering.dot -+++ b/pengine/test10/whitebox-ms-ordering.dot -@@ -6,6 +6,8 @@ - "container1_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] - "container1_monitor_0 18node3" -> "container1_start_0 18node1" [ style = bold] - "container1_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] -+"container1_start_0 18node1" -> "lxc-ms_promote_0 lxc1" [ style = bold] -+"container1_start_0 18node1" -> "lxc-ms_start_0 lxc1" [ style = bold] - "container1_start_0 18node1" -> "lxc1_start_0 18node1" [ style = bold] - "container1_start_0 18node1" [ style=bold color="green" fontcolor="black"] - "container2_monitor_0 18node1" -> "container2_start_0 18node1" [ style = bold] -@@ -14,6 +16,7 @@ - "container2_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] - "container2_monitor_0 18node3" -> "container2_start_0 18node1" [ style = bold] - "container2_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] -+"container2_start_0 18node1" -> "lxc-ms_start_0 lxc2" [ style = bold] - "container2_start_0 18node1" -> "lxc2_start_0 18node1" [ style = bold] - "container2_start_0 18node1" [ style=bold color="green" fontcolor="black"] - "lxc-ms-master_demote_0" -> "lxc-ms-master_demoted_0" [ style = bold] -diff --git a/pengine/test10/whitebox-ms-ordering.exp b/pengine/test10/whitebox-ms-ordering.exp -index de4f4d0..43cb49a 100644 ---- a/pengine/test10/whitebox-ms-ordering.exp -+++ b/pengine/test10/whitebox-ms-ordering.exp -@@ -106,6 +106,9 @@ - - - -+ -+ -+ - - - -@@ -131,6 +134,9 @@ - - - -+ -+ -+ - - - -@@ -238,6 +244,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-nested-group.dot b/pengine/test10/whitebox-nested-group.dot -index e149f9a..9e1abce 100644 ---- a/pengine/test10/whitebox-nested-group.dot -+++ b/pengine/test10/whitebox-nested-group.dot -@@ -17,6 +17,9 @@ - "container_monitor_10000 c7auto1" [ style=bold color="green" fontcolor="black"] - "container_start_0 c7auto1" -> "c7auto4_start_0 c7auto1" [ style = bold] - "container_start_0 c7auto1" -> "container_monitor_10000 c7auto1" [ style = bold] -+"container_start_0 c7auto1" -> "fake2_start_0 c7auto4" [ style = bold] -+"container_start_0 c7auto1" -> "fake5_start_0 c7auto4" [ style = bold] -+"container_start_0 c7auto1" -> "fake:2_start_0 c7auto4" [ style = bold] - "container_start_0 c7auto1" -> "fake_group_running_0" [ style = bold] - "container_start_0 c7auto1" [ style=bold color="green" fontcolor="black"] - "fake1_monitor_0 c7auto1" -> "fake1_start_0 c7auto3" [ style = bold] -diff --git a/pengine/test10/whitebox-nested-group.exp b/pengine/test10/whitebox-nested-group.exp -index e6b68f2..979a0f5 100644 ---- a/pengine/test10/whitebox-nested-group.exp -+++ b/pengine/test10/whitebox-nested-group.exp -@@ -92,6 +92,9 @@ - - - -+ -+ -+ - - - -@@ -275,6 +278,9 @@ - - - -+ -+ -+ - - - -@@ -404,6 +410,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-start.dot b/pengine/test10/whitebox-start.dot -index 659ea97..8b4dbcd 100644 ---- a/pengine/test10/whitebox-start.dot -+++ b/pengine/test10/whitebox-start.dot -@@ -20,6 +20,8 @@ digraph "g" { - "M_start_0 lxc1" -> "M_monitor_10000 lxc1" [ style = bold] - "M_start_0 lxc1" [ style=bold color="green" fontcolor="black"] - "all_stopped" [ style=bold color="green" fontcolor="orange"] -+"container1_start_0 18node1" -> "A_start_0 lxc1" [ style = bold] -+"container1_start_0 18node1" -> "M_start_0 lxc1" [ style = bold] - "container1_start_0 18node1" -> "lxc1_start_0 18node1" [ style = bold] - "container1_start_0 18node1" [ style=bold color="green" fontcolor="black"] - "lxc1_monitor_30000 18node1" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/whitebox-start.exp b/pengine/test10/whitebox-start.exp -index 3f28d9e..11438e9 100644 ---- a/pengine/test10/whitebox-start.exp -+++ b/pengine/test10/whitebox-start.exp -@@ -33,6 +33,9 @@ - - - -+ -+ -+ - - - -@@ -88,6 +91,9 @@ - - - -+ -+ -+ - - - --- -1.8.3.1 - - -From 990c99a639ec382582a1be8829ffecf52798622f Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 25 May 2017 14:30:06 +1000 -Subject: [PATCH 4/6] Fix: PE: Improved fencing logging - ---- - lib/pengine/unpack.c | 8 +++++--- - lib/pengine/utils.c | 5 +++-- - 2 files changed, 8 insertions(+), 5 deletions(-) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index df9a133..8caf522 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -100,15 +100,16 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - if (rsc && (!is_set(rsc->flags, pe_rsc_managed))) { - crm_notice("Not fencing node %s because connection is unmanaged, " - "otherwise would %s", node->details->uname, reason); -- } else { -+ } else if(node->details->remote_requires_reset == FALSE) { -+ node->details->remote_requires_reset = TRUE; - if (pe_can_fence(data_set, node)) { - crm_warn("Node %s will be fenced %s", node->details->uname, reason); - } else { - crm_warn("Node %s is unclean %s", node->details->uname, reason); - } -- node->details->remote_requires_reset = TRUE; - } - node->details->unclean = TRUE; -+ - } else if (node->details->unclean == FALSE) { - if (pe_can_fence(data_set, node)) { - crm_warn("Node %s will be fenced %s", node->details->uname, reason); -@@ -116,8 +117,9 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - crm_warn("Node %s is unclean %s", node->details->uname, reason); - } - node->details->unclean = TRUE; -+ - } else { -- crm_trace("Huh? %s %s", node->details->uname, reason); -+ crm_trace("Node %s would also be fenced '%s'", node->details->uname, reason); - } - } - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 3d4e60d..7acd90c 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -515,8 +515,9 @@ custom_action(resource_t * rsc, char *key, const char *task, - do_crm_log(warn_level, "Action %s on %s is unrunnable (offline)", - action->uuid, action->node->details->uname); - if (is_set(action->rsc->flags, pe_rsc_managed) -- && save_action && a_task == stop_rsc) { -- pe_fence_node(data_set, action->node, "because node is unclean"); -+ && save_action && a_task == stop_rsc -+ && action->node->details->unclean == FALSE) { -+ pe_fence_node(data_set, action->node, "because of unrunnable resource actions"); - } - - } else if (action->node->details->pending) { --- -1.8.3.1 - - -From 7f1cd383738dee507dd7120252e562de008b1f77 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 25 May 2017 14:40:11 +1000 -Subject: [PATCH 5/6] Fix: PE: Ensure remote nodes are fenced when the - connection cannot be recovered - -Also ensure it is fenced directly, not as a side-effect of scheduling an -action for the remote node that cannot run because the connection is -dead. - -Also re-use the standard pe_fence_node() and stage6() fencing calculation -logic instead of rolling code specific to remotes and containers. ---- - pengine/allocate.c | 36 +- - pengine/regression.sh | 2 + - pengine/test10/remote-recover-all.dot | 173 +++++ - pengine/test10/remote-recover-all.exp | 889 +++++++++++++++++++++++ - pengine/test10/remote-recover-all.scores | 848 +++++++++++++++++++++ - pengine/test10/remote-recover-all.summary | 152 ++++ - pengine/test10/remote-recover-all.xml | 745 +++++++++++++++++++ - pengine/test10/remote-recover-connection.dot | 131 ++++ - pengine/test10/remote-recover-connection.exp | 708 ++++++++++++++++++ - pengine/test10/remote-recover-connection.scores | 848 +++++++++++++++++++++ - pengine/test10/remote-recover-connection.summary | 139 ++++ - pengine/test10/remote-recover-connection.xml | 739 +++++++++++++++++++ - 12 files changed, 5400 insertions(+), 10 deletions(-) - create mode 100644 pengine/test10/remote-recover-all.dot - create mode 100644 pengine/test10/remote-recover-all.exp - create mode 100644 pengine/test10/remote-recover-all.scores - create mode 100644 pengine/test10/remote-recover-all.summary - create mode 100644 pengine/test10/remote-recover-all.xml - create mode 100644 pengine/test10/remote-recover-connection.dot - create mode 100644 pengine/test10/remote-recover-connection.exp - create mode 100644 pengine/test10/remote-recover-connection.scores - create mode 100644 pengine/test10/remote-recover-connection.summary - create mode 100644 pengine/test10/remote-recover-connection.xml - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 90d25fc..b431d31 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -38,6 +38,7 @@ void set_alloc_actions(pe_working_set_t * data_set); - void migrate_reload_madness(pe_working_set_t * data_set); - extern void ReloadRsc(resource_t * rsc, node_t *node, pe_working_set_t * data_set); - extern gboolean DeleteRsc(resource_t * rsc, node_t * node, gboolean optional, pe_working_set_t * data_set); -+static void apply_remote_node_ordering(pe_working_set_t *data_set); - - resource_alloc_functions_t resource_class_alloc_functions[] = { - { -@@ -1442,8 +1443,18 @@ stage6(pe_working_set_t * data_set) - GListPtr gIter; - GListPtr stonith_ops = NULL; - -- crm_trace("Processing fencing and shutdown cases"); -+ /* Remote ordering constraints need to happen prior to calculate -+ * fencing because it is one more place we will mark the node as -+ * dirty. -+ * -+ * A nice side-effect of doing it first is that we can remove a -+ * bunch of special logic from apply_*_ordering() because its -+ * already part of pe_fence_node() -+ */ -+ crm_trace("Creating remote ordering constraints"); -+ apply_remote_node_ordering(data_set); - -+ crm_trace("Processing fencing and shutdown cases"); - if (any_managed_resources(data_set) == FALSE) { - crm_notice("Delaying fencing operations until there are resources to manage"); - need_stonith = FALSE; -@@ -1792,6 +1803,10 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) - container = remote_rsc->container; - CRM_ASSERT(container); - -+ if(is_set(container->flags, pe_rsc_failed)) { -+ pe_fence_node(data_set, action->node, " because the container failed"); -+ } -+ - crm_trace("%s %s %s %s %d", action->uuid, action->task, remote_rsc->id, container->id, is_set(container->flags, pe_rsc_failed)); - switch (task) { - case start_rsc: -@@ -1814,10 +1829,6 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) - * stopping. This is similar to how fencing operations - * work for cluster nodes. - */ -- custom_action_order(container, generate_op_key(container->id, RSC_STOP, 0), NULL, -- action->rsc, NULL, action, -- pe_order_preserve | pe_order_implies_then | pe_order_runnable_left, data_set); -- pe_set_action_bit(action, pe_action_pseudo); - } else { - /* Otherwise, ensure the operation happens before the connection is brought down */ - custom_action_order(action->rsc, NULL, action, -@@ -1835,7 +1846,7 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) - * stopped (otherwise we re-introduce an ordering - * loop) - */ -- pe_set_action_bit(action, pe_action_pseudo); -+ - } else { - /* Otherwise, ensure the operation happens before the connection is brought down */ - custom_action_order(action->rsc, NULL, action, -@@ -1894,6 +1905,11 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - * We must assume the target has failed - */ - state = remote_state_dead; -+ if(is_set(remote_rsc->flags, pe_rsc_failed)) { -+ pe_fence_node(data_set, action->node, "because the connection is unrecoverable (failed)"); -+ } else if(cluster_node && cluster_node->details->unclean) { -+ pe_fence_node(data_set, action->node, "because the connection is unrecoverable (unclean host)"); -+ } - - } else if (cluster_node == NULL) { - /* Connection is recoverable but not currently running anywhere, see if we can recover it first */ -@@ -1917,7 +1933,7 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - state = remote_state_alive; - } - -- crm_trace("%s %s %d", action->uuid, action->task, state); -+ crm_trace("%s %s %d %d", action->uuid, action->task, state, is_set(remote_rsc->flags, pe_rsc_failed)); - switch (task) { - case start_rsc: - case action_promote: -@@ -2167,7 +2183,6 @@ stage7(pe_working_set_t * data_set) - { - GListPtr gIter = NULL; - -- apply_remote_node_ordering(data_set); - crm_trace("Applying ordering constraints"); - - /* Don't ask me why, but apparently they need to be processed in -@@ -2310,11 +2325,12 @@ stage8(pe_working_set_t * data_set) - */ - if (is_set(data_set->flags, pe_flag_have_quorum) - || data_set->no_quorum_policy == no_quorum_ignore) { -- crm_crit("Cannot %s node '%s' because of %s:%s%s", -+ crm_crit("Cannot %s node '%s' because of %s:%s%s (%s)", - action->node->details->unclean ? "fence" : "shut down", - action->node->details->uname, action->rsc->id, - is_not_set(action->rsc->flags, pe_rsc_managed) ? " unmanaged" : " blocked", -- is_set(action->rsc->flags, pe_rsc_failed) ? " failed" : ""); -+ is_set(action->rsc->flags, pe_rsc_failed) ? " failed" : "", -+ action->uuid); - } - } - -diff --git a/pengine/regression.sh b/pengine/regression.sh -index 62fc066..7b0ce76 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -838,6 +838,8 @@ do_test remote-start-fail "Make sure a start failure does not result in fe - do_test remote-unclean2 "Make monitor failure always results in fencing, even if no rsc are active on remote." - do_test remote-fence-before-reconnect "Fence before clearing recurring monitor failure" - do_test remote-recovery "Recover remote connections before attempting demotion" -+do_test remote-recover-connection "Optimistically recovery of only the connection" -+do_test remote-recover-all "Fencing when the connection has no home" - - echo "" - do_test resource-discovery "Exercises resource-discovery location constraint option." -diff --git a/pengine/test10/remote-recover-all.dot b/pengine/test10/remote-recover-all.dot -new file mode 100644 -index 0000000..2369adc ---- /dev/null -+++ b/pengine/test10/remote-recover-all.dot -@@ -0,0 +1,173 @@ -+digraph "g" { -+"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] -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"galera-0_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"galera-0_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"galera-2_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"galera-2_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"galera-master_demote_0" -> "galera-master_demoted_0" [ style = bold] -+"galera-master_demote_0" -> "galera_demote_0 galera-0" [ style = bold] -+"galera-master_demote_0" -> "galera_demote_0 galera-2" [ style = bold] -+"galera-master_demote_0" [ style=bold color="green" fontcolor="orange"] -+"galera-master_demoted_0" -> "galera-master_stop_0" [ style = bold] -+"galera-master_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"galera-master_stop_0" -> "galera-master_stopped_0" [ style = bold] -+"galera-master_stop_0" -> "galera_stop_0 galera-0" [ style = bold] -+"galera-master_stop_0" -> "galera_stop_0 galera-2" [ style = bold] -+"galera-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"galera-master_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"galera_demote_0 galera-0" -> "galera-master_demoted_0" [ style = bold] -+"galera_demote_0 galera-0" -> "galera_demote_0 galera-2" [ style = bold] -+"galera_demote_0 galera-0" -> "galera_stop_0 galera-0" [ style = bold] -+"galera_demote_0 galera-0" [ style=bold color="green" fontcolor="orange"] -+"galera_demote_0 galera-2" -> "galera-master_demoted_0" [ style = bold] -+"galera_demote_0 galera-2" -> "galera_stop_0 galera-2" [ style = bold] -+"galera_demote_0 galera-2" [ style=bold color="green" fontcolor="orange"] -+"galera_stop_0 galera-0" -> "all_stopped" [ style = bold] -+"galera_stop_0 galera-0" -> "galera-0_stop_0 controller-1" [ style = bold] -+"galera_stop_0 galera-0" -> "galera-master_stopped_0" [ style = bold] -+"galera_stop_0 galera-0" -> "galera_stop_0 galera-2" [ style = bold] -+"galera_stop_0 galera-0" [ style=bold color="green" fontcolor="orange"] -+"galera_stop_0 galera-2" -> "all_stopped" [ style = bold] -+"galera_stop_0 galera-2" -> "galera-2_stop_0 controller-1" [ style = bold] -+"galera_stop_0 galera-2" -> "galera-master_stopped_0" [ style = bold] -+"galera_stop_0 galera-2" [ style=bold color="green" fontcolor="orange"] -+"haproxy-clone_stop_0" -> "haproxy-clone_stopped_0" [ style = bold] -+"haproxy-clone_stop_0" -> "haproxy_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-clone_stopped_0" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"haproxy_stop_0 controller-1" -> "haproxy-clone_stopped_0" [ style = bold] -+"haproxy_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.1.14_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.14_start_0 controller-2" -> "ip-172.17.1.14_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.1.14_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.14_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.1.14_stop_0 controller-1" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold] -+"ip-172.17.1.14_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.1.17_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.17_start_0 controller-2" -> "ip-172.17.1.17_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.1.17_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.17_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.1.17_stop_0 controller-1" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold] -+"ip-172.17.1.17_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.4.11_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.4.11_start_0 controller-2" -> "ip-172.17.4.11_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.4.11_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.4.11_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.4.11_stop_0 controller-1" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold] -+"ip-172.17.4.11_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"messaging-1_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"messaging-1_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-clone_stop_0" -> "rabbitmq-clone_stopped_0" [ style = bold] -+"rabbitmq-clone_stop_0" -> "rabbitmq_stop_0 messaging-1" [ style = bold] -+"rabbitmq-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_confirmed-post_notify_stonith_0" -> "all_stopped" [ style = bold] -+"rabbitmq_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_post_notify_stonith_0 messaging-0" -> "rabbitmq_confirmed-post_notify_stonith_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0 messaging-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_post_notify_stonith_0 messaging-2" -> "rabbitmq_confirmed-post_notify_stonith_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0 messaging-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_post_notify_stonith_0" -> "rabbitmq_confirmed-post_notify_stonith_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 messaging-0" [ style = bold] -+"rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 messaging-2" [ style = bold] -+"rabbitmq_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_stop_0 messaging-1" -> "all_stopped" [ style = bold] -+"rabbitmq_stop_0 messaging-1" -> "messaging-1_stop_0 controller-1" [ style = bold] -+"rabbitmq_stop_0 messaging-1" -> "rabbitmq-clone_stopped_0" [ style = bold] -+"rabbitmq_stop_0 messaging-1" [ style=bold color="green" fontcolor="orange"] -+"redis-master_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -+"redis-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_confirmed-pre_notify_stop_0" -> "redis-master_post_notify_stopped_0" [ style = bold] -+"redis-master_confirmed-pre_notify_stop_0" -> "redis-master_stop_0" [ style = bold] -+"redis-master_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_post_notify_stopped_0" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 controller-0" [ style = bold] -+"redis-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 controller-2" [ style = bold] -+"redis-master_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_pre_notify_stop_0" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 controller-0" [ style = bold] -+"redis-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 controller-2" [ style = bold] -+"redis-master_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_stop_0" -> "redis-master_stopped_0" [ style = bold] -+"redis-master_stop_0" -> "redis_stop_0 controller-1" [ style = bold] -+"redis-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_stopped_0" -> "redis-master_post_notify_stopped_0" [ style = bold] -+"redis-master_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis_confirmed-post_notify_stonith_0" -> "all_stopped" [ style = bold] -+"redis_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"redis_post_notify_stonith_0 controller-0" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_stonith_0 controller-2" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-2" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_stonith_0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 controller-0" [ style = bold] -+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 controller-2" [ style = bold] -+"redis_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"redis_pre_notify_stop_0 controller-0" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"redis_pre_notify_stop_0 controller-2" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"redis_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"redis_stop_0 controller-1" -> "redis-master_stopped_0" [ style = bold] -+"redis_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"stonith 'reboot' controller-1" -> "galera-0_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "galera-2_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "haproxy-clone_stop_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "haproxy_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "messaging-1_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis-master_stop_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis_post_notify_stonith_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "stonith 'reboot' galera-0" [ style = bold] -+"stonith 'reboot' controller-1" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' galera-0" -> "galera-master_stop_0" [ style = bold] -+"stonith 'reboot' galera-0" -> "galera_demote_0 galera-0" [ style = bold] -+"stonith 'reboot' galera-0" -> "galera_stop_0 galera-0" [ style = bold] -+"stonith 'reboot' galera-0" -> "stonith 'reboot' galera-2" [ style = bold] -+"stonith 'reboot' galera-0" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' galera-2" -> "galera-master_stop_0" [ style = bold] -+"stonith 'reboot' galera-2" -> "galera_demote_0 galera-2" [ style = bold] -+"stonith 'reboot' galera-2" -> "galera_stop_0 galera-2" [ style = bold] -+"stonith 'reboot' galera-2" -> "stonith 'reboot' messaging-1" [ style = bold] -+"stonith 'reboot' galera-2" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' messaging-1" -> "rabbitmq-clone_stop_0" [ style = bold] -+"stonith 'reboot' messaging-1" -> "rabbitmq_post_notify_stonith_0" [ style = bold] -+"stonith 'reboot' messaging-1" -> "rabbitmq_stop_0 messaging-1" [ style = bold] -+"stonith 'reboot' messaging-1" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' messaging-1" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_monitor_60000 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" -> "stonith-fence_ipmilan-5254005bdbb5_monitor_60000 controller-2" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" -> "stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"stonith-fence_ipmilan-525400b4f6bd_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" -> "stonith-fence_ipmilan-525400b4f6bd_monitor_60000 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_start_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_monitor_60000 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith_complete" -> "all_stopped" [ style = bold] -+"stonith_complete" -> "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" [ style=bold color="green" fontcolor="orange"] -+} -diff --git a/pengine/test10/remote-recover-all.exp b/pengine/test10/remote-recover-all.exp -new file mode 100644 -index 0000000..2b0bd1e ---- /dev/null -+++ b/pengine/test10/remote-recover-all.exp -@@ -0,0 +1,889 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/remote-recover-all.scores b/pengine/test10/remote-recover-all.scores -new file mode 100644 -index 0000000..ef1f068 ---- /dev/null -+++ b/pengine/test10/remote-recover-all.scores -@@ -0,0 +1,848 @@ -+Allocation scores: -+Using the original execution date of: 2017-05-03 13:33:24Z -+clone_color: galera-master allocation score on controller-0: -INFINITY -+clone_color: galera-master allocation score on controller-1: -INFINITY -+clone_color: galera-master allocation score on controller-2: -INFINITY -+clone_color: galera-master allocation score on galera-0: 0 -+clone_color: galera-master allocation score on galera-1: 0 -+clone_color: galera-master allocation score on galera-2: 0 -+clone_color: galera-master allocation score on messaging-0: -INFINITY -+clone_color: galera-master allocation score on messaging-1: -INFINITY -+clone_color: galera-master allocation score on messaging-2: -INFINITY -+clone_color: galera:0 allocation score on controller-0: -INFINITY -+clone_color: galera:0 allocation score on controller-1: -INFINITY -+clone_color: galera:0 allocation score on controller-2: -INFINITY -+clone_color: galera:0 allocation score on galera-0: 0 -+clone_color: galera:0 allocation score on galera-1: INFINITY -+clone_color: galera:0 allocation score on galera-2: 0 -+clone_color: galera:0 allocation score on messaging-0: -INFINITY -+clone_color: galera:0 allocation score on messaging-1: -INFINITY -+clone_color: galera:0 allocation score on messaging-2: -INFINITY -+clone_color: galera:1 allocation score on controller-0: -INFINITY -+clone_color: galera:1 allocation score on controller-1: -INFINITY -+clone_color: galera:1 allocation score on controller-2: -INFINITY -+clone_color: galera:1 allocation score on galera-0: 0 -+clone_color: galera:1 allocation score on galera-1: 0 -+clone_color: galera:1 allocation score on galera-2: INFINITY -+clone_color: galera:1 allocation score on messaging-0: -INFINITY -+clone_color: galera:1 allocation score on messaging-1: -INFINITY -+clone_color: galera:1 allocation score on messaging-2: -INFINITY -+clone_color: galera:2 allocation score on controller-0: -INFINITY -+clone_color: galera:2 allocation score on controller-1: -INFINITY -+clone_color: galera:2 allocation score on controller-2: -INFINITY -+clone_color: galera:2 allocation score on galera-0: INFINITY -+clone_color: galera:2 allocation score on galera-1: 0 -+clone_color: galera:2 allocation score on galera-2: 0 -+clone_color: galera:2 allocation score on messaging-0: -INFINITY -+clone_color: galera:2 allocation score on messaging-1: -INFINITY -+clone_color: galera:2 allocation score on messaging-2: -INFINITY -+clone_color: galera:3 allocation score on controller-0: -INFINITY -+clone_color: galera:3 allocation score on controller-1: -INFINITY -+clone_color: galera:3 allocation score on controller-2: -INFINITY -+clone_color: galera:3 allocation score on galera-0: 0 -+clone_color: galera:3 allocation score on galera-1: 0 -+clone_color: galera:3 allocation score on galera-2: 0 -+clone_color: galera:3 allocation score on messaging-0: -INFINITY -+clone_color: galera:3 allocation score on messaging-1: -INFINITY -+clone_color: galera:3 allocation score on messaging-2: -INFINITY -+clone_color: galera:4 allocation score on controller-0: -INFINITY -+clone_color: galera:4 allocation score on controller-1: -INFINITY -+clone_color: galera:4 allocation score on controller-2: -INFINITY -+clone_color: galera:4 allocation score on galera-0: 0 -+clone_color: galera:4 allocation score on galera-1: 0 -+clone_color: galera:4 allocation score on galera-2: 0 -+clone_color: galera:4 allocation score on messaging-0: -INFINITY -+clone_color: galera:4 allocation score on messaging-1: -INFINITY -+clone_color: galera:4 allocation score on messaging-2: -INFINITY -+clone_color: galera:5 allocation score on controller-0: -INFINITY -+clone_color: galera:5 allocation score on controller-1: -INFINITY -+clone_color: galera:5 allocation score on controller-2: -INFINITY -+clone_color: galera:5 allocation score on galera-0: 0 -+clone_color: galera:5 allocation score on galera-1: 0 -+clone_color: galera:5 allocation score on galera-2: 0 -+clone_color: galera:5 allocation score on messaging-0: -INFINITY -+clone_color: galera:5 allocation score on messaging-1: -INFINITY -+clone_color: galera:5 allocation score on messaging-2: -INFINITY -+clone_color: galera:6 allocation score on controller-0: -INFINITY -+clone_color: galera:6 allocation score on controller-1: -INFINITY -+clone_color: galera:6 allocation score on controller-2: -INFINITY -+clone_color: galera:6 allocation score on galera-0: 0 -+clone_color: galera:6 allocation score on galera-1: 0 -+clone_color: galera:6 allocation score on galera-2: 0 -+clone_color: galera:6 allocation score on messaging-0: -INFINITY -+clone_color: galera:6 allocation score on messaging-1: -INFINITY -+clone_color: galera:6 allocation score on messaging-2: -INFINITY -+clone_color: galera:7 allocation score on controller-0: -INFINITY -+clone_color: galera:7 allocation score on controller-1: -INFINITY -+clone_color: galera:7 allocation score on controller-2: -INFINITY -+clone_color: galera:7 allocation score on galera-0: 0 -+clone_color: galera:7 allocation score on galera-1: 0 -+clone_color: galera:7 allocation score on galera-2: 0 -+clone_color: galera:7 allocation score on messaging-0: -INFINITY -+clone_color: galera:7 allocation score on messaging-1: -INFINITY -+clone_color: galera:7 allocation score on messaging-2: -INFINITY -+clone_color: galera:8 allocation score on controller-0: -INFINITY -+clone_color: galera:8 allocation score on controller-1: -INFINITY -+clone_color: galera:8 allocation score on controller-2: -INFINITY -+clone_color: galera:8 allocation score on galera-0: 0 -+clone_color: galera:8 allocation score on galera-1: 0 -+clone_color: galera:8 allocation score on galera-2: 0 -+clone_color: galera:8 allocation score on messaging-0: -INFINITY -+clone_color: galera:8 allocation score on messaging-1: -INFINITY -+clone_color: galera:8 allocation score on messaging-2: -INFINITY -+clone_color: haproxy-clone allocation score on controller-0: INFINITY -+clone_color: haproxy-clone allocation score on controller-1: 0 -+clone_color: haproxy-clone allocation score on controller-2: 0 -+clone_color: haproxy-clone allocation score on galera-0: -INFINITY -+clone_color: haproxy-clone allocation score on galera-1: -INFINITY -+clone_color: haproxy-clone allocation score on galera-2: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-0: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-1: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-2: -INFINITY -+clone_color: haproxy:0 allocation score on controller-0: 0 -+clone_color: haproxy:0 allocation score on controller-1: INFINITY -+clone_color: haproxy:0 allocation score on controller-2: 0 -+clone_color: haproxy:0 allocation score on galera-0: -INFINITY -+clone_color: haproxy:0 allocation score on galera-1: -INFINITY -+clone_color: haproxy:0 allocation score on galera-2: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:1 allocation score on controller-0: INFINITY -+clone_color: haproxy:1 allocation score on controller-1: 0 -+clone_color: haproxy:1 allocation score on controller-2: 0 -+clone_color: haproxy:1 allocation score on galera-0: -INFINITY -+clone_color: haproxy:1 allocation score on galera-1: -INFINITY -+clone_color: haproxy:1 allocation score on galera-2: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:2 allocation score on controller-0: 0 -+clone_color: haproxy:2 allocation score on controller-1: 0 -+clone_color: haproxy:2 allocation score on controller-2: INFINITY -+clone_color: haproxy:2 allocation score on galera-0: -INFINITY -+clone_color: haproxy:2 allocation score on galera-1: -INFINITY -+clone_color: haproxy:2 allocation score on galera-2: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:3 allocation score on controller-0: 0 -+clone_color: haproxy:3 allocation score on controller-1: 0 -+clone_color: haproxy:3 allocation score on controller-2: 0 -+clone_color: haproxy:3 allocation score on galera-0: -INFINITY -+clone_color: haproxy:3 allocation score on galera-1: -INFINITY -+clone_color: haproxy:3 allocation score on galera-2: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:4 allocation score on controller-0: 0 -+clone_color: haproxy:4 allocation score on controller-1: 0 -+clone_color: haproxy:4 allocation score on controller-2: 0 -+clone_color: haproxy:4 allocation score on galera-0: -INFINITY -+clone_color: haproxy:4 allocation score on galera-1: -INFINITY -+clone_color: haproxy:4 allocation score on galera-2: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:5 allocation score on controller-0: 0 -+clone_color: haproxy:5 allocation score on controller-1: 0 -+clone_color: haproxy:5 allocation score on controller-2: 0 -+clone_color: haproxy:5 allocation score on galera-0: -INFINITY -+clone_color: haproxy:5 allocation score on galera-1: -INFINITY -+clone_color: haproxy:5 allocation score on galera-2: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:6 allocation score on controller-0: 0 -+clone_color: haproxy:6 allocation score on controller-1: 0 -+clone_color: haproxy:6 allocation score on controller-2: 0 -+clone_color: haproxy:6 allocation score on galera-0: -INFINITY -+clone_color: haproxy:6 allocation score on galera-1: -INFINITY -+clone_color: haproxy:6 allocation score on galera-2: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:7 allocation score on controller-0: 0 -+clone_color: haproxy:7 allocation score on controller-1: 0 -+clone_color: haproxy:7 allocation score on controller-2: 0 -+clone_color: haproxy:7 allocation score on galera-0: -INFINITY -+clone_color: haproxy:7 allocation score on galera-1: -INFINITY -+clone_color: haproxy:7 allocation score on galera-2: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:8 allocation score on controller-0: 0 -+clone_color: haproxy:8 allocation score on controller-1: 0 -+clone_color: haproxy:8 allocation score on controller-2: 0 -+clone_color: haproxy:8 allocation score on galera-0: -INFINITY -+clone_color: haproxy:8 allocation score on galera-1: -INFINITY -+clone_color: haproxy:8 allocation score on galera-2: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-0: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-1: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-0: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-1: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on messaging-0: 0 -+clone_color: rabbitmq-clone allocation score on messaging-1: 0 -+clone_color: rabbitmq-clone allocation score on messaging-2: 0 -+clone_color: rabbitmq:0 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on messaging-0: 0 -+clone_color: rabbitmq:0 allocation score on messaging-1: 0 -+clone_color: rabbitmq:0 allocation score on messaging-2: INFINITY -+clone_color: rabbitmq:1 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on messaging-0: INFINITY -+clone_color: rabbitmq:1 allocation score on messaging-1: 0 -+clone_color: rabbitmq:1 allocation score on messaging-2: 0 -+clone_color: rabbitmq:2 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on messaging-0: 0 -+clone_color: rabbitmq:2 allocation score on messaging-1: INFINITY -+clone_color: rabbitmq:2 allocation score on messaging-2: 0 -+clone_color: rabbitmq:3 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:3 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:3 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:3 allocation score on messaging-0: 0 -+clone_color: rabbitmq:3 allocation score on messaging-1: 0 -+clone_color: rabbitmq:3 allocation score on messaging-2: 0 -+clone_color: rabbitmq:4 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:4 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:4 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:4 allocation score on messaging-0: 0 -+clone_color: rabbitmq:4 allocation score on messaging-1: 0 -+clone_color: rabbitmq:4 allocation score on messaging-2: 0 -+clone_color: rabbitmq:5 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:5 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:5 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:5 allocation score on messaging-0: 0 -+clone_color: rabbitmq:5 allocation score on messaging-1: 0 -+clone_color: rabbitmq:5 allocation score on messaging-2: 0 -+clone_color: rabbitmq:6 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:6 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:6 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:6 allocation score on messaging-0: 0 -+clone_color: rabbitmq:6 allocation score on messaging-1: 0 -+clone_color: rabbitmq:6 allocation score on messaging-2: 0 -+clone_color: rabbitmq:7 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:7 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:7 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:7 allocation score on messaging-0: 0 -+clone_color: rabbitmq:7 allocation score on messaging-1: 0 -+clone_color: rabbitmq:7 allocation score on messaging-2: 0 -+clone_color: rabbitmq:8 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:8 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:8 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:8 allocation score on messaging-0: 0 -+clone_color: rabbitmq:8 allocation score on messaging-1: 0 -+clone_color: rabbitmq:8 allocation score on messaging-2: 0 -+clone_color: redis-master allocation score on controller-0: 0 -+clone_color: redis-master allocation score on controller-1: 0 -+clone_color: redis-master allocation score on controller-2: 0 -+clone_color: redis-master allocation score on galera-0: -INFINITY -+clone_color: redis-master allocation score on galera-1: -INFINITY -+clone_color: redis-master allocation score on galera-2: -INFINITY -+clone_color: redis-master allocation score on messaging-0: -INFINITY -+clone_color: redis-master allocation score on messaging-1: -INFINITY -+clone_color: redis-master allocation score on messaging-2: -INFINITY -+clone_color: redis:0 allocation score on controller-0: 0 -+clone_color: redis:0 allocation score on controller-1: INFINITY -+clone_color: redis:0 allocation score on controller-2: 0 -+clone_color: redis:0 allocation score on galera-0: -INFINITY -+clone_color: redis:0 allocation score on galera-1: -INFINITY -+clone_color: redis:0 allocation score on galera-2: -INFINITY -+clone_color: redis:0 allocation score on messaging-0: -INFINITY -+clone_color: redis:0 allocation score on messaging-1: -INFINITY -+clone_color: redis:0 allocation score on messaging-2: -INFINITY -+clone_color: redis:1 allocation score on controller-0: INFINITY -+clone_color: redis:1 allocation score on controller-1: 0 -+clone_color: redis:1 allocation score on controller-2: 0 -+clone_color: redis:1 allocation score on galera-0: -INFINITY -+clone_color: redis:1 allocation score on galera-1: -INFINITY -+clone_color: redis:1 allocation score on galera-2: -INFINITY -+clone_color: redis:1 allocation score on messaging-0: -INFINITY -+clone_color: redis:1 allocation score on messaging-1: -INFINITY -+clone_color: redis:1 allocation score on messaging-2: -INFINITY -+clone_color: redis:2 allocation score on controller-0: 0 -+clone_color: redis:2 allocation score on controller-1: 0 -+clone_color: redis:2 allocation score on controller-2: INFINITY -+clone_color: redis:2 allocation score on galera-0: -INFINITY -+clone_color: redis:2 allocation score on galera-1: -INFINITY -+clone_color: redis:2 allocation score on galera-2: -INFINITY -+clone_color: redis:2 allocation score on messaging-0: -INFINITY -+clone_color: redis:2 allocation score on messaging-1: -INFINITY -+clone_color: redis:2 allocation score on messaging-2: -INFINITY -+clone_color: redis:3 allocation score on controller-0: 0 -+clone_color: redis:3 allocation score on controller-1: 0 -+clone_color: redis:3 allocation score on controller-2: 0 -+clone_color: redis:3 allocation score on galera-0: -INFINITY -+clone_color: redis:3 allocation score on galera-1: -INFINITY -+clone_color: redis:3 allocation score on galera-2: -INFINITY -+clone_color: redis:3 allocation score on messaging-0: -INFINITY -+clone_color: redis:3 allocation score on messaging-1: -INFINITY -+clone_color: redis:3 allocation score on messaging-2: -INFINITY -+clone_color: redis:4 allocation score on controller-0: 0 -+clone_color: redis:4 allocation score on controller-1: 0 -+clone_color: redis:4 allocation score on controller-2: 0 -+clone_color: redis:4 allocation score on galera-0: -INFINITY -+clone_color: redis:4 allocation score on galera-1: -INFINITY -+clone_color: redis:4 allocation score on galera-2: -INFINITY -+clone_color: redis:4 allocation score on messaging-0: -INFINITY -+clone_color: redis:4 allocation score on messaging-1: -INFINITY -+clone_color: redis:4 allocation score on messaging-2: -INFINITY -+clone_color: redis:5 allocation score on controller-0: 0 -+clone_color: redis:5 allocation score on controller-1: 0 -+clone_color: redis:5 allocation score on controller-2: 0 -+clone_color: redis:5 allocation score on galera-0: -INFINITY -+clone_color: redis:5 allocation score on galera-1: -INFINITY -+clone_color: redis:5 allocation score on galera-2: -INFINITY -+clone_color: redis:5 allocation score on messaging-0: -INFINITY -+clone_color: redis:5 allocation score on messaging-1: -INFINITY -+clone_color: redis:5 allocation score on messaging-2: -INFINITY -+clone_color: redis:6 allocation score on controller-0: 0 -+clone_color: redis:6 allocation score on controller-1: 0 -+clone_color: redis:6 allocation score on controller-2: 0 -+clone_color: redis:6 allocation score on galera-0: -INFINITY -+clone_color: redis:6 allocation score on galera-1: -INFINITY -+clone_color: redis:6 allocation score on galera-2: -INFINITY -+clone_color: redis:6 allocation score on messaging-0: -INFINITY -+clone_color: redis:6 allocation score on messaging-1: -INFINITY -+clone_color: redis:6 allocation score on messaging-2: -INFINITY -+clone_color: redis:7 allocation score on controller-0: 0 -+clone_color: redis:7 allocation score on controller-1: 0 -+clone_color: redis:7 allocation score on controller-2: 0 -+clone_color: redis:7 allocation score on galera-0: -INFINITY -+clone_color: redis:7 allocation score on galera-1: -INFINITY -+clone_color: redis:7 allocation score on galera-2: -INFINITY -+clone_color: redis:7 allocation score on messaging-0: -INFINITY -+clone_color: redis:7 allocation score on messaging-1: -INFINITY -+clone_color: redis:7 allocation score on messaging-2: -INFINITY -+clone_color: redis:8 allocation score on controller-0: 0 -+clone_color: redis:8 allocation score on controller-1: 0 -+clone_color: redis:8 allocation score on controller-2: 0 -+clone_color: redis:8 allocation score on galera-0: -INFINITY -+clone_color: redis:8 allocation score on galera-1: -INFINITY -+clone_color: redis:8 allocation score on galera-2: -INFINITY -+clone_color: redis:8 allocation score on messaging-0: -INFINITY -+clone_color: redis:8 allocation score on messaging-1: -INFINITY -+clone_color: redis:8 allocation score on messaging-2: -INFINITY -+galera:0 promotion score on galera-1: 100 -+galera:1 promotion score on none: 0 -+galera:2 promotion score on none: 0 -+galera:3 promotion score on none: 0 -+galera:4 promotion score on none: 0 -+galera:5 promotion score on none: 0 -+galera:6 promotion score on none: 0 -+galera:7 promotion score on none: 0 -+galera:8 promotion score on none: 0 -+native_color: galera-0 allocation score on controller-0: -INFINITY -+native_color: galera-0 allocation score on controller-1: INFINITY -+native_color: galera-0 allocation score on controller-2: -INFINITY -+native_color: galera-0 allocation score on galera-0: -INFINITY -+native_color: galera-0 allocation score on galera-1: -INFINITY -+native_color: galera-0 allocation score on galera-2: -INFINITY -+native_color: galera-0 allocation score on messaging-0: -INFINITY -+native_color: galera-0 allocation score on messaging-1: -INFINITY -+native_color: galera-0 allocation score on messaging-2: -INFINITY -+native_color: galera-1 allocation score on controller-0: INFINITY -+native_color: galera-1 allocation score on controller-1: 0 -+native_color: galera-1 allocation score on controller-2: 0 -+native_color: galera-1 allocation score on galera-0: -INFINITY -+native_color: galera-1 allocation score on galera-1: -INFINITY -+native_color: galera-1 allocation score on galera-2: -INFINITY -+native_color: galera-1 allocation score on messaging-0: -INFINITY -+native_color: galera-1 allocation score on messaging-1: -INFINITY -+native_color: galera-1 allocation score on messaging-2: -INFINITY -+native_color: galera-2 allocation score on controller-0: -INFINITY -+native_color: galera-2 allocation score on controller-1: INFINITY -+native_color: galera-2 allocation score on controller-2: -INFINITY -+native_color: galera-2 allocation score on galera-0: -INFINITY -+native_color: galera-2 allocation score on galera-1: -INFINITY -+native_color: galera-2 allocation score on galera-2: -INFINITY -+native_color: galera-2 allocation score on messaging-0: -INFINITY -+native_color: galera-2 allocation score on messaging-1: -INFINITY -+native_color: galera-2 allocation score on messaging-2: -INFINITY -+native_color: galera:0 allocation score on controller-0: -INFINITY -+native_color: galera:0 allocation score on controller-1: -INFINITY -+native_color: galera:0 allocation score on controller-2: -INFINITY -+native_color: galera:0 allocation score on galera-0: -INFINITY -+native_color: galera:0 allocation score on galera-1: INFINITY -+native_color: galera:0 allocation score on galera-2: -INFINITY -+native_color: galera:0 allocation score on messaging-0: -INFINITY -+native_color: galera:0 allocation score on messaging-1: -INFINITY -+native_color: galera:0 allocation score on messaging-2: -INFINITY -+native_color: galera:1 allocation score on controller-0: -INFINITY -+native_color: galera:1 allocation score on controller-1: -INFINITY -+native_color: galera:1 allocation score on controller-2: -INFINITY -+native_color: galera:1 allocation score on galera-0: -INFINITY -+native_color: galera:1 allocation score on galera-1: -INFINITY -+native_color: galera:1 allocation score on galera-2: -INFINITY -+native_color: galera:1 allocation score on messaging-0: -INFINITY -+native_color: galera:1 allocation score on messaging-1: -INFINITY -+native_color: galera:1 allocation score on messaging-2: -INFINITY -+native_color: galera:2 allocation score on controller-0: -INFINITY -+native_color: galera:2 allocation score on controller-1: -INFINITY -+native_color: galera:2 allocation score on controller-2: -INFINITY -+native_color: galera:2 allocation score on galera-0: -INFINITY -+native_color: galera:2 allocation score on galera-1: -INFINITY -+native_color: galera:2 allocation score on galera-2: -INFINITY -+native_color: galera:2 allocation score on messaging-0: -INFINITY -+native_color: galera:2 allocation score on messaging-1: -INFINITY -+native_color: galera:2 allocation score on messaging-2: -INFINITY -+native_color: galera:3 allocation score on controller-0: -INFINITY -+native_color: galera:3 allocation score on controller-1: -INFINITY -+native_color: galera:3 allocation score on controller-2: -INFINITY -+native_color: galera:3 allocation score on galera-0: -INFINITY -+native_color: galera:3 allocation score on galera-1: -INFINITY -+native_color: galera:3 allocation score on galera-2: -INFINITY -+native_color: galera:3 allocation score on messaging-0: -INFINITY -+native_color: galera:3 allocation score on messaging-1: -INFINITY -+native_color: galera:3 allocation score on messaging-2: -INFINITY -+native_color: galera:4 allocation score on controller-0: -INFINITY -+native_color: galera:4 allocation score on controller-1: -INFINITY -+native_color: galera:4 allocation score on controller-2: -INFINITY -+native_color: galera:4 allocation score on galera-0: -INFINITY -+native_color: galera:4 allocation score on galera-1: -INFINITY -+native_color: galera:4 allocation score on galera-2: -INFINITY -+native_color: galera:4 allocation score on messaging-0: -INFINITY -+native_color: galera:4 allocation score on messaging-1: -INFINITY -+native_color: galera:4 allocation score on messaging-2: -INFINITY -+native_color: galera:5 allocation score on controller-0: -INFINITY -+native_color: galera:5 allocation score on controller-1: -INFINITY -+native_color: galera:5 allocation score on controller-2: -INFINITY -+native_color: galera:5 allocation score on galera-0: -INFINITY -+native_color: galera:5 allocation score on galera-1: -INFINITY -+native_color: galera:5 allocation score on galera-2: -INFINITY -+native_color: galera:5 allocation score on messaging-0: -INFINITY -+native_color: galera:5 allocation score on messaging-1: -INFINITY -+native_color: galera:5 allocation score on messaging-2: -INFINITY -+native_color: galera:6 allocation score on controller-0: -INFINITY -+native_color: galera:6 allocation score on controller-1: -INFINITY -+native_color: galera:6 allocation score on controller-2: -INFINITY -+native_color: galera:6 allocation score on galera-0: -INFINITY -+native_color: galera:6 allocation score on galera-1: -INFINITY -+native_color: galera:6 allocation score on galera-2: -INFINITY -+native_color: galera:6 allocation score on messaging-0: -INFINITY -+native_color: galera:6 allocation score on messaging-1: -INFINITY -+native_color: galera:6 allocation score on messaging-2: -INFINITY -+native_color: galera:7 allocation score on controller-0: -INFINITY -+native_color: galera:7 allocation score on controller-1: -INFINITY -+native_color: galera:7 allocation score on controller-2: -INFINITY -+native_color: galera:7 allocation score on galera-0: -INFINITY -+native_color: galera:7 allocation score on galera-1: -INFINITY -+native_color: galera:7 allocation score on galera-2: -INFINITY -+native_color: galera:7 allocation score on messaging-0: -INFINITY -+native_color: galera:7 allocation score on messaging-1: -INFINITY -+native_color: galera:7 allocation score on messaging-2: -INFINITY -+native_color: galera:8 allocation score on controller-0: -INFINITY -+native_color: galera:8 allocation score on controller-1: -INFINITY -+native_color: galera:8 allocation score on controller-2: -INFINITY -+native_color: galera:8 allocation score on galera-0: -INFINITY -+native_color: galera:8 allocation score on galera-1: -INFINITY -+native_color: galera:8 allocation score on galera-2: -INFINITY -+native_color: galera:8 allocation score on messaging-0: -INFINITY -+native_color: galera:8 allocation score on messaging-1: -INFINITY -+native_color: galera:8 allocation score on messaging-2: -INFINITY -+native_color: haproxy:0 allocation score on controller-0: -INFINITY -+native_color: haproxy:0 allocation score on controller-1: -INFINITY -+native_color: haproxy:0 allocation score on controller-2: -INFINITY -+native_color: haproxy:0 allocation score on galera-0: -INFINITY -+native_color: haproxy:0 allocation score on galera-1: -INFINITY -+native_color: haproxy:0 allocation score on galera-2: -INFINITY -+native_color: haproxy:0 allocation score on messaging-0: -INFINITY -+native_color: haproxy:0 allocation score on messaging-1: -INFINITY -+native_color: haproxy:0 allocation score on messaging-2: -INFINITY -+native_color: haproxy:1 allocation score on controller-0: INFINITY -+native_color: haproxy:1 allocation score on controller-1: -INFINITY -+native_color: haproxy:1 allocation score on controller-2: 0 -+native_color: haproxy:1 allocation score on galera-0: -INFINITY -+native_color: haproxy:1 allocation score on galera-1: -INFINITY -+native_color: haproxy:1 allocation score on galera-2: -INFINITY -+native_color: haproxy:1 allocation score on messaging-0: -INFINITY -+native_color: haproxy:1 allocation score on messaging-1: -INFINITY -+native_color: haproxy:1 allocation score on messaging-2: -INFINITY -+native_color: haproxy:2 allocation score on controller-0: -INFINITY -+native_color: haproxy:2 allocation score on controller-1: -INFINITY -+native_color: haproxy:2 allocation score on controller-2: INFINITY -+native_color: haproxy:2 allocation score on galera-0: -INFINITY -+native_color: haproxy:2 allocation score on galera-1: -INFINITY -+native_color: haproxy:2 allocation score on galera-2: -INFINITY -+native_color: haproxy:2 allocation score on messaging-0: -INFINITY -+native_color: haproxy:2 allocation score on messaging-1: -INFINITY -+native_color: haproxy:2 allocation score on messaging-2: -INFINITY -+native_color: haproxy:3 allocation score on controller-0: -INFINITY -+native_color: haproxy:3 allocation score on controller-1: -INFINITY -+native_color: haproxy:3 allocation score on controller-2: -INFINITY -+native_color: haproxy:3 allocation score on galera-0: -INFINITY -+native_color: haproxy:3 allocation score on galera-1: -INFINITY -+native_color: haproxy:3 allocation score on galera-2: -INFINITY -+native_color: haproxy:3 allocation score on messaging-0: -INFINITY -+native_color: haproxy:3 allocation score on messaging-1: -INFINITY -+native_color: haproxy:3 allocation score on messaging-2: -INFINITY -+native_color: haproxy:4 allocation score on controller-0: -INFINITY -+native_color: haproxy:4 allocation score on controller-1: -INFINITY -+native_color: haproxy:4 allocation score on controller-2: -INFINITY -+native_color: haproxy:4 allocation score on galera-0: -INFINITY -+native_color: haproxy:4 allocation score on galera-1: -INFINITY -+native_color: haproxy:4 allocation score on galera-2: -INFINITY -+native_color: haproxy:4 allocation score on messaging-0: -INFINITY -+native_color: haproxy:4 allocation score on messaging-1: -INFINITY -+native_color: haproxy:4 allocation score on messaging-2: -INFINITY -+native_color: haproxy:5 allocation score on controller-0: -INFINITY -+native_color: haproxy:5 allocation score on controller-1: -INFINITY -+native_color: haproxy:5 allocation score on controller-2: -INFINITY -+native_color: haproxy:5 allocation score on galera-0: -INFINITY -+native_color: haproxy:5 allocation score on galera-1: -INFINITY -+native_color: haproxy:5 allocation score on galera-2: -INFINITY -+native_color: haproxy:5 allocation score on messaging-0: -INFINITY -+native_color: haproxy:5 allocation score on messaging-1: -INFINITY -+native_color: haproxy:5 allocation score on messaging-2: -INFINITY -+native_color: haproxy:6 allocation score on controller-0: -INFINITY -+native_color: haproxy:6 allocation score on controller-1: -INFINITY -+native_color: haproxy:6 allocation score on controller-2: -INFINITY -+native_color: haproxy:6 allocation score on galera-0: -INFINITY -+native_color: haproxy:6 allocation score on galera-1: -INFINITY -+native_color: haproxy:6 allocation score on galera-2: -INFINITY -+native_color: haproxy:6 allocation score on messaging-0: -INFINITY -+native_color: haproxy:6 allocation score on messaging-1: -INFINITY -+native_color: haproxy:6 allocation score on messaging-2: -INFINITY -+native_color: haproxy:7 allocation score on controller-0: -INFINITY -+native_color: haproxy:7 allocation score on controller-1: -INFINITY -+native_color: haproxy:7 allocation score on controller-2: -INFINITY -+native_color: haproxy:7 allocation score on galera-0: -INFINITY -+native_color: haproxy:7 allocation score on galera-1: -INFINITY -+native_color: haproxy:7 allocation score on galera-2: -INFINITY -+native_color: haproxy:7 allocation score on messaging-0: -INFINITY -+native_color: haproxy:7 allocation score on messaging-1: -INFINITY -+native_color: haproxy:7 allocation score on messaging-2: -INFINITY -+native_color: haproxy:8 allocation score on controller-0: -INFINITY -+native_color: haproxy:8 allocation score on controller-1: -INFINITY -+native_color: haproxy:8 allocation score on controller-2: -INFINITY -+native_color: haproxy:8 allocation score on galera-0: -INFINITY -+native_color: haproxy:8 allocation score on galera-1: -INFINITY -+native_color: haproxy:8 allocation score on galera-2: -INFINITY -+native_color: haproxy:8 allocation score on messaging-0: -INFINITY -+native_color: haproxy:8 allocation score on messaging-1: -INFINITY -+native_color: haproxy:8 allocation score on messaging-2: -INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-0: INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-2: 0 -+native_color: ip-10.0.0.102 allocation score on galera-0: -INFINITY -+native_color: ip-10.0.0.102 allocation score on galera-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on galera-2: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-0: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-0: 0 -+native_color: ip-172.17.1.14 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-2: 0 -+native_color: ip-172.17.1.14 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.1.17 allocation score on controller-0: 0 -+native_color: ip-172.17.1.17 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on controller-2: 0 -+native_color: ip-172.17.1.17 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.1.17 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-0: INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-2: 0 -+native_color: ip-172.17.3.15 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.3.15 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on controller-0: 0 -+native_color: ip-172.17.4.11 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on controller-2: 0 -+native_color: ip-172.17.4.11 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-2: -INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-0: INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-2: 0 -+native_color: ip-192.168.24.6 allocation score on galera-0: -INFINITY -+native_color: ip-192.168.24.6 allocation score on galera-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on galera-2: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-0: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-2: -INFINITY -+native_color: messaging-0 allocation score on controller-0: INFINITY -+native_color: messaging-0 allocation score on controller-1: 0 -+native_color: messaging-0 allocation score on controller-2: 0 -+native_color: messaging-0 allocation score on galera-0: -INFINITY -+native_color: messaging-0 allocation score on galera-1: -INFINITY -+native_color: messaging-0 allocation score on galera-2: -INFINITY -+native_color: messaging-0 allocation score on messaging-0: -INFINITY -+native_color: messaging-0 allocation score on messaging-1: -INFINITY -+native_color: messaging-0 allocation score on messaging-2: -INFINITY -+native_color: messaging-1 allocation score on controller-0: -INFINITY -+native_color: messaging-1 allocation score on controller-1: INFINITY -+native_color: messaging-1 allocation score on controller-2: -INFINITY -+native_color: messaging-1 allocation score on galera-0: -INFINITY -+native_color: messaging-1 allocation score on galera-1: -INFINITY -+native_color: messaging-1 allocation score on galera-2: -INFINITY -+native_color: messaging-1 allocation score on messaging-0: -INFINITY -+native_color: messaging-1 allocation score on messaging-1: -INFINITY -+native_color: messaging-1 allocation score on messaging-2: -INFINITY -+native_color: messaging-2 allocation score on controller-0: INFINITY -+native_color: messaging-2 allocation score on controller-1: 0 -+native_color: messaging-2 allocation score on controller-2: 0 -+native_color: messaging-2 allocation score on galera-0: -INFINITY -+native_color: messaging-2 allocation score on galera-1: -INFINITY -+native_color: messaging-2 allocation score on galera-2: -INFINITY -+native_color: messaging-2 allocation score on messaging-0: -INFINITY -+native_color: messaging-2 allocation score on messaging-1: -INFINITY -+native_color: messaging-2 allocation score on messaging-2: -INFINITY -+native_color: openstack-cinder-volume allocation score on controller-0: INFINITY -+native_color: openstack-cinder-volume allocation score on controller-1: 0 -+native_color: openstack-cinder-volume allocation score on controller-2: 0 -+native_color: openstack-cinder-volume allocation score on galera-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on galera-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on galera-2: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:0 allocation score on messaging-0: 0 -+native_color: rabbitmq:0 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:0 allocation score on messaging-2: INFINITY -+native_color: rabbitmq:1 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:1 allocation score on messaging-0: INFINITY -+native_color: rabbitmq:1 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:1 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-2: -INFINITY -+native_color: redis:0 allocation score on controller-0: -INFINITY -+native_color: redis:0 allocation score on controller-1: -INFINITY -+native_color: redis:0 allocation score on controller-2: -INFINITY -+native_color: redis:0 allocation score on galera-0: -INFINITY -+native_color: redis:0 allocation score on galera-1: -INFINITY -+native_color: redis:0 allocation score on galera-2: -INFINITY -+native_color: redis:0 allocation score on messaging-0: -INFINITY -+native_color: redis:0 allocation score on messaging-1: -INFINITY -+native_color: redis:0 allocation score on messaging-2: -INFINITY -+native_color: redis:1 allocation score on controller-0: INFINITY -+native_color: redis:1 allocation score on controller-1: -INFINITY -+native_color: redis:1 allocation score on controller-2: 0 -+native_color: redis:1 allocation score on galera-0: -INFINITY -+native_color: redis:1 allocation score on galera-1: -INFINITY -+native_color: redis:1 allocation score on galera-2: -INFINITY -+native_color: redis:1 allocation score on messaging-0: -INFINITY -+native_color: redis:1 allocation score on messaging-1: -INFINITY -+native_color: redis:1 allocation score on messaging-2: -INFINITY -+native_color: redis:2 allocation score on controller-0: -INFINITY -+native_color: redis:2 allocation score on controller-1: -INFINITY -+native_color: redis:2 allocation score on controller-2: INFINITY -+native_color: redis:2 allocation score on galera-0: -INFINITY -+native_color: redis:2 allocation score on galera-1: -INFINITY -+native_color: redis:2 allocation score on galera-2: -INFINITY -+native_color: redis:2 allocation score on messaging-0: -INFINITY -+native_color: redis:2 allocation score on messaging-1: -INFINITY -+native_color: redis:2 allocation score on messaging-2: -INFINITY -+native_color: redis:3 allocation score on controller-0: -INFINITY -+native_color: redis:3 allocation score on controller-1: -INFINITY -+native_color: redis:3 allocation score on controller-2: -INFINITY -+native_color: redis:3 allocation score on galera-0: -INFINITY -+native_color: redis:3 allocation score on galera-1: -INFINITY -+native_color: redis:3 allocation score on galera-2: -INFINITY -+native_color: redis:3 allocation score on messaging-0: -INFINITY -+native_color: redis:3 allocation score on messaging-1: -INFINITY -+native_color: redis:3 allocation score on messaging-2: -INFINITY -+native_color: redis:4 allocation score on controller-0: -INFINITY -+native_color: redis:4 allocation score on controller-1: -INFINITY -+native_color: redis:4 allocation score on controller-2: -INFINITY -+native_color: redis:4 allocation score on galera-0: -INFINITY -+native_color: redis:4 allocation score on galera-1: -INFINITY -+native_color: redis:4 allocation score on galera-2: -INFINITY -+native_color: redis:4 allocation score on messaging-0: -INFINITY -+native_color: redis:4 allocation score on messaging-1: -INFINITY -+native_color: redis:4 allocation score on messaging-2: -INFINITY -+native_color: redis:5 allocation score on controller-0: -INFINITY -+native_color: redis:5 allocation score on controller-1: -INFINITY -+native_color: redis:5 allocation score on controller-2: -INFINITY -+native_color: redis:5 allocation score on galera-0: -INFINITY -+native_color: redis:5 allocation score on galera-1: -INFINITY -+native_color: redis:5 allocation score on galera-2: -INFINITY -+native_color: redis:5 allocation score on messaging-0: -INFINITY -+native_color: redis:5 allocation score on messaging-1: -INFINITY -+native_color: redis:5 allocation score on messaging-2: -INFINITY -+native_color: redis:6 allocation score on controller-0: -INFINITY -+native_color: redis:6 allocation score on controller-1: -INFINITY -+native_color: redis:6 allocation score on controller-2: -INFINITY -+native_color: redis:6 allocation score on galera-0: -INFINITY -+native_color: redis:6 allocation score on galera-1: -INFINITY -+native_color: redis:6 allocation score on galera-2: -INFINITY -+native_color: redis:6 allocation score on messaging-0: -INFINITY -+native_color: redis:6 allocation score on messaging-1: -INFINITY -+native_color: redis:6 allocation score on messaging-2: -INFINITY -+native_color: redis:7 allocation score on controller-0: -INFINITY -+native_color: redis:7 allocation score on controller-1: -INFINITY -+native_color: redis:7 allocation score on controller-2: -INFINITY -+native_color: redis:7 allocation score on galera-0: -INFINITY -+native_color: redis:7 allocation score on galera-1: -INFINITY -+native_color: redis:7 allocation score on galera-2: -INFINITY -+native_color: redis:7 allocation score on messaging-0: -INFINITY -+native_color: redis:7 allocation score on messaging-1: -INFINITY -+native_color: redis:7 allocation score on messaging-2: -INFINITY -+native_color: redis:8 allocation score on controller-0: -INFINITY -+native_color: redis:8 allocation score on controller-1: -INFINITY -+native_color: redis:8 allocation score on controller-2: -INFINITY -+native_color: redis:8 allocation score on galera-0: -INFINITY -+native_color: redis:8 allocation score on galera-1: -INFINITY -+native_color: redis:8 allocation score on galera-2: -INFINITY -+native_color: redis:8 allocation score on messaging-0: -INFINITY -+native_color: redis:8 allocation score on messaging-1: -INFINITY -+native_color: redis:8 allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-1: INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-0: INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-0: INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-1: 0 -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-2: -INFINITY -+redis:0 promotion score on none: 0 -+redis:1 promotion score on controller-0: 1 -+redis:2 promotion score on controller-2: 1 -+redis:3 promotion score on none: 0 -+redis:4 promotion score on none: 0 -+redis:5 promotion score on none: 0 -+redis:6 promotion score on none: 0 -+redis:7 promotion score on none: 0 -+redis:8 promotion score on none: 0 -diff --git a/pengine/test10/remote-recover-all.summary b/pengine/test10/remote-recover-all.summary -new file mode 100644 -index 0000000..387c7f3 ---- /dev/null -+++ b/pengine/test10/remote-recover-all.summary -@@ -0,0 +1,152 @@ -+Using the original execution date of: 2017-05-03 13:33:24Z -+ -+Current cluster status: -+Node controller-1 (2): UNCLEAN (offline) -+Online: [ controller-0 controller-2 ] -+RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ -+ messaging-0 (ocf::pacemaker:remote): Started controller-0 -+ messaging-1 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ messaging-2 (ocf::pacemaker:remote): Started controller-0 -+ galera-0 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ galera-1 (ocf::pacemaker:remote): Started controller-0 -+ galera-2 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ Clone Set: rabbitmq-clone [rabbitmq] -+ Started: [ messaging-0 messaging-1 messaging-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 ] -+ Master/Slave Set: galera-master [galera] -+ Masters: [ galera-0 galera-1 galera-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 messaging-0 messaging-1 messaging-2 ] -+ Master/Slave Set: redis-master [redis] -+ redis (ocf::heartbeat:redis): Slave controller-1 (UNCLEAN) -+ Masters: [ controller-0 ] -+ Slaves: [ controller-2 ] -+ Stopped: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ ip-192.168.24.6 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-10.0.0.102 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ ip-172.17.1.17 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ ip-172.17.3.15 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.4.11 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ Clone Set: haproxy-clone [haproxy] -+ haproxy (systemd:haproxy): Started controller-1 (UNCLEAN) -+ Started: [ controller-0 controller-2 ] -+ Stopped: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-0 -+ stonith-fence_ipmilan-525400bbf613 (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) -+ -+Transition Summary: -+ * Stop messaging-1 (controller-1) -+ * Stop galera-0 (controller-1) -+ * Stop galera-2 (controller-1) -+ * Stop rabbitmq:2 (messaging-1) -+ * Demote galera:1 (Master -> Stopped galera-2) -+ * Demote galera:2 (Master -> Stopped galera-0) -+ * Stop redis:0 (controller-1) -+ * Move ip-172.17.1.14 (Started controller-1 -> controller-2) -+ * Move ip-172.17.1.17 (Started controller-1 -> controller-2) -+ * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -+ * Stop haproxy:0 (controller-1) -+ * Restart stonith-fence_ipmilan-525400bbf613 (Started controller-0) -+ * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) -+ * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -+ -+Executing cluster transition: -+ * Pseudo action: 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: redis_post_notify_stop_0 -+ * Resource action: redis notify on controller-0 -+ * Resource action: redis notify on controller-2 -+ * Pseudo action: redis-master_confirmed-pre_notify_stop_0 -+ * Pseudo action: redis-master_stop_0 -+ * Pseudo action: haproxy-clone_stop_0 -+ * Fencing galera-0 (reboot) -+ * Pseudo action: galera_demote_0 -+ * Pseudo action: redis_stop_0 -+ * Pseudo action: redis-master_stopped_0 -+ * Pseudo action: haproxy_stop_0 -+ * Pseudo action: haproxy-clone_stopped_0 -+ * Fencing galera-2 (reboot) -+ * Pseudo action: galera_demote_0 -+ * Pseudo action: galera-master_demoted_0 -+ * Pseudo action: galera-master_stop_0 -+ * Pseudo action: redis-master_post_notify_stopped_0 -+ * Pseudo action: ip-172.17.1.14_stop_0 -+ * Pseudo action: ip-172.17.1.17_stop_0 -+ * Pseudo action: ip-172.17.4.11_stop_0 -+ * Fencing messaging-1 (reboot) -+ * Pseudo action: stonith_complete -+ * Pseudo action: rabbitmq_post_notify_stop_0 -+ * Pseudo action: rabbitmq-clone_stop_0 -+ * Pseudo action: galera_stop_0 -+ * Resource action: redis notify on controller-0 -+ * Resource action: redis notify on controller-2 -+ * Pseudo action: redis-master_confirmed-post_notify_stopped_0 -+ * Resource action: ip-172.17.1.14 start on controller-2 -+ * Resource action: ip-172.17.1.17 start on controller-2 -+ * Resource action: ip-172.17.4.11 start on controller-2 -+ * Pseudo action: galera-0_stop_0 -+ * Resource action: rabbitmq notify on messaging-2 -+ * Resource action: rabbitmq notify on messaging-0 -+ * Pseudo action: rabbitmq_notified_0 -+ * Pseudo action: rabbitmq_stop_0 -+ * Pseudo action: rabbitmq-clone_stopped_0 -+ * Pseudo action: galera_stop_0 -+ * Pseudo action: galera-master_stopped_0 -+ * Pseudo action: redis_notified_0 -+ * Resource action: ip-172.17.1.14 monitor=10000 on controller-2 -+ * Resource action: ip-172.17.1.17 monitor=10000 on controller-2 -+ * Resource action: ip-172.17.4.11 monitor=10000 on controller-2 -+ * Pseudo action: messaging-1_stop_0 -+ * Pseudo action: galera-2_stop_0 -+ * Pseudo action: all_stopped -+ * 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: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2 -+Using the original execution date of: 2017-05-03 13:33:24Z -+ -+Revised cluster status: -+Online: [ controller-0 controller-2 ] -+OFFLINE: [ controller-1 ] -+RemoteOnline: [ galera-1 messaging-0 messaging-2 ] -+RemoteOFFLINE: [ galera-0 galera-2 messaging-1 ] -+ -+ messaging-0 (ocf::pacemaker:remote): Started controller-0 -+ messaging-1 (ocf::pacemaker:remote): Stopped -+ messaging-2 (ocf::pacemaker:remote): Started controller-0 -+ galera-0 (ocf::pacemaker:remote): Stopped -+ galera-1 (ocf::pacemaker:remote): Started controller-0 -+ galera-2 (ocf::pacemaker:remote): Stopped -+ Clone Set: rabbitmq-clone [rabbitmq] -+ Started: [ messaging-0 messaging-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 messaging-1 ] -+ Master/Slave Set: galera-master [galera] -+ Masters: [ galera-1 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-2 messaging-0 messaging-1 messaging-2 ] -+ Master/Slave Set: redis-master [redis] -+ Masters: [ controller-0 ] -+ Slaves: [ controller-2 ] -+ Stopped: [ controller-1 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ ip-192.168.24.6 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-10.0.0.102 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.1.17 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.3.15 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.4.11 (ocf::heartbeat:IPaddr2): Started controller-2 -+ Clone Set: haproxy-clone [haproxy] -+ Started: [ controller-0 controller-2 ] -+ Stopped: [ controller-1 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-0 -+ stonith-fence_ipmilan-525400bbf613 (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-2 -+ -diff --git a/pengine/test10/remote-recover-all.xml b/pengine/test10/remote-recover-all.xml -new file mode 100644 -index 0000000..24fa469 ---- /dev/null -+++ b/pengine/test10/remote-recover-all.xml -@@ -0,0 +1,745 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/remote-recover-connection.dot b/pengine/test10/remote-recover-connection.dot -new file mode 100644 -index 0000000..d6fdefe ---- /dev/null -+++ b/pengine/test10/remote-recover-connection.dot -@@ -0,0 +1,131 @@ -+digraph "g" { -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"galera-0_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-0_start_0 controller-2" -> "galera-0_monitor_20000 controller-2" [ style = bold] -+"galera-0_start_0 controller-2" -> "galera_monitor_10000 galera-0" [ style = bold] -+"galera-0_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-0_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"galera-0_stop_0 controller-1" -> "galera-0_start_0 controller-2" [ style = bold] -+"galera-0_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"galera-2_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-2_start_0 controller-2" -> "galera-2_monitor_20000 controller-2" [ style = bold] -+"galera-2_start_0 controller-2" -> "galera_monitor_10000 galera-2" [ style = bold] -+"galera-2_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-2_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"galera-2_stop_0 controller-1" -> "galera-2_start_0 controller-2" [ style = bold] -+"galera-2_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"galera_monitor_10000 galera-0" [ style=bold color="green" fontcolor="black"] -+"galera_monitor_10000 galera-2" [ style=bold color="green" fontcolor="black"] -+"haproxy-clone_stop_0" -> "haproxy-clone_stopped_0" [ style = bold] -+"haproxy-clone_stop_0" -> "haproxy_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-clone_stopped_0" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"haproxy_stop_0 controller-1" -> "haproxy-clone_stopped_0" [ style = bold] -+"haproxy_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.1.14_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.14_start_0 controller-2" -> "ip-172.17.1.14_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.1.14_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.14_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.1.14_stop_0 controller-1" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold] -+"ip-172.17.1.14_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.1.17_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.17_start_0 controller-2" -> "ip-172.17.1.17_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.1.17_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.17_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.1.17_stop_0 controller-1" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold] -+"ip-172.17.1.17_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.4.11_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.4.11_start_0 controller-2" -> "ip-172.17.4.11_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.4.11_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.4.11_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.4.11_stop_0 controller-1" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold] -+"ip-172.17.4.11_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"messaging-1_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"] -+"messaging-1_start_0 controller-2" -> "messaging-1_monitor_20000 controller-2" [ style = bold] -+"messaging-1_start_0 controller-2" -> "rabbitmq_monitor_10000 messaging-1" [ style = bold] -+"messaging-1_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"messaging-1_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"messaging-1_stop_0 controller-1" -> "messaging-1_start_0 controller-2" [ style = bold] -+"messaging-1_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_monitor_10000 messaging-1" [ style=bold color="green" fontcolor="black"] -+"redis-master_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -+"redis-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_confirmed-pre_notify_stop_0" -> "redis-master_post_notify_stopped_0" [ style = bold] -+"redis-master_confirmed-pre_notify_stop_0" -> "redis-master_stop_0" [ style = bold] -+"redis-master_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_post_notify_stopped_0" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 controller-0" [ style = bold] -+"redis-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 controller-2" [ style = bold] -+"redis-master_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_pre_notify_stop_0" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 controller-0" [ style = bold] -+"redis-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 controller-2" [ style = bold] -+"redis-master_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_stop_0" -> "redis-master_stopped_0" [ style = bold] -+"redis-master_stop_0" -> "redis_stop_0 controller-1" [ style = bold] -+"redis-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_stopped_0" -> "redis-master_post_notify_stopped_0" [ style = bold] -+"redis-master_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis_confirmed-post_notify_stonith_0" -> "all_stopped" [ style = bold] -+"redis_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"redis_post_notify_stonith_0 controller-0" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_stonith_0 controller-2" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-2" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_stonith_0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 controller-0" [ style = bold] -+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 controller-2" [ style = bold] -+"redis_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"redis_pre_notify_stop_0 controller-0" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"redis_pre_notify_stop_0 controller-2" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"redis_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"redis_stop_0 controller-1" -> "redis-master_stopped_0" [ style = bold] -+"redis_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"stonith 'reboot' controller-1" -> "galera-0_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "galera-2_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "haproxy-clone_stop_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "haproxy_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "messaging-1_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis-master_stop_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis_post_notify_stonith_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' controller-1" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_monitor_60000 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" -> "stonith-fence_ipmilan-5254005bdbb5_monitor_60000 controller-2" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" -> "stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"stonith-fence_ipmilan-525400b4f6bd_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" -> "stonith-fence_ipmilan-525400b4f6bd_monitor_60000 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_start_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_monitor_60000 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith_complete" -> "all_stopped" [ style = bold] -+"stonith_complete" -> "galera-0_start_0 controller-2" [ style = bold] -+"stonith_complete" -> "galera-2_start_0 controller-2" [ style = bold] -+"stonith_complete" -> "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 -new file mode 100644 -index 0000000..62860f0 ---- /dev/null -+++ b/pengine/test10/remote-recover-connection.exp -@@ -0,0 +1,708 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/remote-recover-connection.scores b/pengine/test10/remote-recover-connection.scores -new file mode 100644 -index 0000000..56a18eb ---- /dev/null -+++ b/pengine/test10/remote-recover-connection.scores -@@ -0,0 +1,848 @@ -+Allocation scores: -+Using the original execution date of: 2017-05-03 13:33:24Z -+clone_color: galera-master allocation score on controller-0: -INFINITY -+clone_color: galera-master allocation score on controller-1: -INFINITY -+clone_color: galera-master allocation score on controller-2: -INFINITY -+clone_color: galera-master allocation score on galera-0: 0 -+clone_color: galera-master allocation score on galera-1: 0 -+clone_color: galera-master allocation score on galera-2: 0 -+clone_color: galera-master allocation score on messaging-0: -INFINITY -+clone_color: galera-master allocation score on messaging-1: -INFINITY -+clone_color: galera-master allocation score on messaging-2: -INFINITY -+clone_color: galera:0 allocation score on controller-0: -INFINITY -+clone_color: galera:0 allocation score on controller-1: -INFINITY -+clone_color: galera:0 allocation score on controller-2: -INFINITY -+clone_color: galera:0 allocation score on galera-0: 0 -+clone_color: galera:0 allocation score on galera-1: INFINITY -+clone_color: galera:0 allocation score on galera-2: 0 -+clone_color: galera:0 allocation score on messaging-0: -INFINITY -+clone_color: galera:0 allocation score on messaging-1: -INFINITY -+clone_color: galera:0 allocation score on messaging-2: -INFINITY -+clone_color: galera:1 allocation score on controller-0: -INFINITY -+clone_color: galera:1 allocation score on controller-1: -INFINITY -+clone_color: galera:1 allocation score on controller-2: -INFINITY -+clone_color: galera:1 allocation score on galera-0: 0 -+clone_color: galera:1 allocation score on galera-1: 0 -+clone_color: galera:1 allocation score on galera-2: INFINITY -+clone_color: galera:1 allocation score on messaging-0: -INFINITY -+clone_color: galera:1 allocation score on messaging-1: -INFINITY -+clone_color: galera:1 allocation score on messaging-2: -INFINITY -+clone_color: galera:2 allocation score on controller-0: -INFINITY -+clone_color: galera:2 allocation score on controller-1: -INFINITY -+clone_color: galera:2 allocation score on controller-2: -INFINITY -+clone_color: galera:2 allocation score on galera-0: INFINITY -+clone_color: galera:2 allocation score on galera-1: 0 -+clone_color: galera:2 allocation score on galera-2: 0 -+clone_color: galera:2 allocation score on messaging-0: -INFINITY -+clone_color: galera:2 allocation score on messaging-1: -INFINITY -+clone_color: galera:2 allocation score on messaging-2: -INFINITY -+clone_color: galera:3 allocation score on controller-0: -INFINITY -+clone_color: galera:3 allocation score on controller-1: -INFINITY -+clone_color: galera:3 allocation score on controller-2: -INFINITY -+clone_color: galera:3 allocation score on galera-0: 0 -+clone_color: galera:3 allocation score on galera-1: 0 -+clone_color: galera:3 allocation score on galera-2: 0 -+clone_color: galera:3 allocation score on messaging-0: -INFINITY -+clone_color: galera:3 allocation score on messaging-1: -INFINITY -+clone_color: galera:3 allocation score on messaging-2: -INFINITY -+clone_color: galera:4 allocation score on controller-0: -INFINITY -+clone_color: galera:4 allocation score on controller-1: -INFINITY -+clone_color: galera:4 allocation score on controller-2: -INFINITY -+clone_color: galera:4 allocation score on galera-0: 0 -+clone_color: galera:4 allocation score on galera-1: 0 -+clone_color: galera:4 allocation score on galera-2: 0 -+clone_color: galera:4 allocation score on messaging-0: -INFINITY -+clone_color: galera:4 allocation score on messaging-1: -INFINITY -+clone_color: galera:4 allocation score on messaging-2: -INFINITY -+clone_color: galera:5 allocation score on controller-0: -INFINITY -+clone_color: galera:5 allocation score on controller-1: -INFINITY -+clone_color: galera:5 allocation score on controller-2: -INFINITY -+clone_color: galera:5 allocation score on galera-0: 0 -+clone_color: galera:5 allocation score on galera-1: 0 -+clone_color: galera:5 allocation score on galera-2: 0 -+clone_color: galera:5 allocation score on messaging-0: -INFINITY -+clone_color: galera:5 allocation score on messaging-1: -INFINITY -+clone_color: galera:5 allocation score on messaging-2: -INFINITY -+clone_color: galera:6 allocation score on controller-0: -INFINITY -+clone_color: galera:6 allocation score on controller-1: -INFINITY -+clone_color: galera:6 allocation score on controller-2: -INFINITY -+clone_color: galera:6 allocation score on galera-0: 0 -+clone_color: galera:6 allocation score on galera-1: 0 -+clone_color: galera:6 allocation score on galera-2: 0 -+clone_color: galera:6 allocation score on messaging-0: -INFINITY -+clone_color: galera:6 allocation score on messaging-1: -INFINITY -+clone_color: galera:6 allocation score on messaging-2: -INFINITY -+clone_color: galera:7 allocation score on controller-0: -INFINITY -+clone_color: galera:7 allocation score on controller-1: -INFINITY -+clone_color: galera:7 allocation score on controller-2: -INFINITY -+clone_color: galera:7 allocation score on galera-0: 0 -+clone_color: galera:7 allocation score on galera-1: 0 -+clone_color: galera:7 allocation score on galera-2: 0 -+clone_color: galera:7 allocation score on messaging-0: -INFINITY -+clone_color: galera:7 allocation score on messaging-1: -INFINITY -+clone_color: galera:7 allocation score on messaging-2: -INFINITY -+clone_color: galera:8 allocation score on controller-0: -INFINITY -+clone_color: galera:8 allocation score on controller-1: -INFINITY -+clone_color: galera:8 allocation score on controller-2: -INFINITY -+clone_color: galera:8 allocation score on galera-0: 0 -+clone_color: galera:8 allocation score on galera-1: 0 -+clone_color: galera:8 allocation score on galera-2: 0 -+clone_color: galera:8 allocation score on messaging-0: -INFINITY -+clone_color: galera:8 allocation score on messaging-1: -INFINITY -+clone_color: galera:8 allocation score on messaging-2: -INFINITY -+clone_color: haproxy-clone allocation score on controller-0: INFINITY -+clone_color: haproxy-clone allocation score on controller-1: 0 -+clone_color: haproxy-clone allocation score on controller-2: 0 -+clone_color: haproxy-clone allocation score on galera-0: -INFINITY -+clone_color: haproxy-clone allocation score on galera-1: -INFINITY -+clone_color: haproxy-clone allocation score on galera-2: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-0: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-1: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-2: -INFINITY -+clone_color: haproxy:0 allocation score on controller-0: 0 -+clone_color: haproxy:0 allocation score on controller-1: INFINITY -+clone_color: haproxy:0 allocation score on controller-2: 0 -+clone_color: haproxy:0 allocation score on galera-0: -INFINITY -+clone_color: haproxy:0 allocation score on galera-1: -INFINITY -+clone_color: haproxy:0 allocation score on galera-2: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:1 allocation score on controller-0: INFINITY -+clone_color: haproxy:1 allocation score on controller-1: 0 -+clone_color: haproxy:1 allocation score on controller-2: 0 -+clone_color: haproxy:1 allocation score on galera-0: -INFINITY -+clone_color: haproxy:1 allocation score on galera-1: -INFINITY -+clone_color: haproxy:1 allocation score on galera-2: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:2 allocation score on controller-0: 0 -+clone_color: haproxy:2 allocation score on controller-1: 0 -+clone_color: haproxy:2 allocation score on controller-2: INFINITY -+clone_color: haproxy:2 allocation score on galera-0: -INFINITY -+clone_color: haproxy:2 allocation score on galera-1: -INFINITY -+clone_color: haproxy:2 allocation score on galera-2: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:3 allocation score on controller-0: 0 -+clone_color: haproxy:3 allocation score on controller-1: 0 -+clone_color: haproxy:3 allocation score on controller-2: 0 -+clone_color: haproxy:3 allocation score on galera-0: -INFINITY -+clone_color: haproxy:3 allocation score on galera-1: -INFINITY -+clone_color: haproxy:3 allocation score on galera-2: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:4 allocation score on controller-0: 0 -+clone_color: haproxy:4 allocation score on controller-1: 0 -+clone_color: haproxy:4 allocation score on controller-2: 0 -+clone_color: haproxy:4 allocation score on galera-0: -INFINITY -+clone_color: haproxy:4 allocation score on galera-1: -INFINITY -+clone_color: haproxy:4 allocation score on galera-2: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:5 allocation score on controller-0: 0 -+clone_color: haproxy:5 allocation score on controller-1: 0 -+clone_color: haproxy:5 allocation score on controller-2: 0 -+clone_color: haproxy:5 allocation score on galera-0: -INFINITY -+clone_color: haproxy:5 allocation score on galera-1: -INFINITY -+clone_color: haproxy:5 allocation score on galera-2: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:6 allocation score on controller-0: 0 -+clone_color: haproxy:6 allocation score on controller-1: 0 -+clone_color: haproxy:6 allocation score on controller-2: 0 -+clone_color: haproxy:6 allocation score on galera-0: -INFINITY -+clone_color: haproxy:6 allocation score on galera-1: -INFINITY -+clone_color: haproxy:6 allocation score on galera-2: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:7 allocation score on controller-0: 0 -+clone_color: haproxy:7 allocation score on controller-1: 0 -+clone_color: haproxy:7 allocation score on controller-2: 0 -+clone_color: haproxy:7 allocation score on galera-0: -INFINITY -+clone_color: haproxy:7 allocation score on galera-1: -INFINITY -+clone_color: haproxy:7 allocation score on galera-2: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:8 allocation score on controller-0: 0 -+clone_color: haproxy:8 allocation score on controller-1: 0 -+clone_color: haproxy:8 allocation score on controller-2: 0 -+clone_color: haproxy:8 allocation score on galera-0: -INFINITY -+clone_color: haproxy:8 allocation score on galera-1: -INFINITY -+clone_color: haproxy:8 allocation score on galera-2: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-0: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-1: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-0: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-1: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on messaging-0: 0 -+clone_color: rabbitmq-clone allocation score on messaging-1: 0 -+clone_color: rabbitmq-clone allocation score on messaging-2: 0 -+clone_color: rabbitmq:0 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on messaging-0: 0 -+clone_color: rabbitmq:0 allocation score on messaging-1: 0 -+clone_color: rabbitmq:0 allocation score on messaging-2: INFINITY -+clone_color: rabbitmq:1 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on messaging-0: INFINITY -+clone_color: rabbitmq:1 allocation score on messaging-1: 0 -+clone_color: rabbitmq:1 allocation score on messaging-2: 0 -+clone_color: rabbitmq:2 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on messaging-0: 0 -+clone_color: rabbitmq:2 allocation score on messaging-1: INFINITY -+clone_color: rabbitmq:2 allocation score on messaging-2: 0 -+clone_color: rabbitmq:3 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:3 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:3 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:3 allocation score on messaging-0: 0 -+clone_color: rabbitmq:3 allocation score on messaging-1: 0 -+clone_color: rabbitmq:3 allocation score on messaging-2: 0 -+clone_color: rabbitmq:4 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:4 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:4 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:4 allocation score on messaging-0: 0 -+clone_color: rabbitmq:4 allocation score on messaging-1: 0 -+clone_color: rabbitmq:4 allocation score on messaging-2: 0 -+clone_color: rabbitmq:5 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:5 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:5 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:5 allocation score on messaging-0: 0 -+clone_color: rabbitmq:5 allocation score on messaging-1: 0 -+clone_color: rabbitmq:5 allocation score on messaging-2: 0 -+clone_color: rabbitmq:6 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:6 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:6 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:6 allocation score on messaging-0: 0 -+clone_color: rabbitmq:6 allocation score on messaging-1: 0 -+clone_color: rabbitmq:6 allocation score on messaging-2: 0 -+clone_color: rabbitmq:7 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:7 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:7 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:7 allocation score on messaging-0: 0 -+clone_color: rabbitmq:7 allocation score on messaging-1: 0 -+clone_color: rabbitmq:7 allocation score on messaging-2: 0 -+clone_color: rabbitmq:8 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:8 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:8 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:8 allocation score on messaging-0: 0 -+clone_color: rabbitmq:8 allocation score on messaging-1: 0 -+clone_color: rabbitmq:8 allocation score on messaging-2: 0 -+clone_color: redis-master allocation score on controller-0: 0 -+clone_color: redis-master allocation score on controller-1: 0 -+clone_color: redis-master allocation score on controller-2: 0 -+clone_color: redis-master allocation score on galera-0: -INFINITY -+clone_color: redis-master allocation score on galera-1: -INFINITY -+clone_color: redis-master allocation score on galera-2: -INFINITY -+clone_color: redis-master allocation score on messaging-0: -INFINITY -+clone_color: redis-master allocation score on messaging-1: -INFINITY -+clone_color: redis-master allocation score on messaging-2: -INFINITY -+clone_color: redis:0 allocation score on controller-0: 0 -+clone_color: redis:0 allocation score on controller-1: INFINITY -+clone_color: redis:0 allocation score on controller-2: 0 -+clone_color: redis:0 allocation score on galera-0: -INFINITY -+clone_color: redis:0 allocation score on galera-1: -INFINITY -+clone_color: redis:0 allocation score on galera-2: -INFINITY -+clone_color: redis:0 allocation score on messaging-0: -INFINITY -+clone_color: redis:0 allocation score on messaging-1: -INFINITY -+clone_color: redis:0 allocation score on messaging-2: -INFINITY -+clone_color: redis:1 allocation score on controller-0: INFINITY -+clone_color: redis:1 allocation score on controller-1: 0 -+clone_color: redis:1 allocation score on controller-2: 0 -+clone_color: redis:1 allocation score on galera-0: -INFINITY -+clone_color: redis:1 allocation score on galera-1: -INFINITY -+clone_color: redis:1 allocation score on galera-2: -INFINITY -+clone_color: redis:1 allocation score on messaging-0: -INFINITY -+clone_color: redis:1 allocation score on messaging-1: -INFINITY -+clone_color: redis:1 allocation score on messaging-2: -INFINITY -+clone_color: redis:2 allocation score on controller-0: 0 -+clone_color: redis:2 allocation score on controller-1: 0 -+clone_color: redis:2 allocation score on controller-2: INFINITY -+clone_color: redis:2 allocation score on galera-0: -INFINITY -+clone_color: redis:2 allocation score on galera-1: -INFINITY -+clone_color: redis:2 allocation score on galera-2: -INFINITY -+clone_color: redis:2 allocation score on messaging-0: -INFINITY -+clone_color: redis:2 allocation score on messaging-1: -INFINITY -+clone_color: redis:2 allocation score on messaging-2: -INFINITY -+clone_color: redis:3 allocation score on controller-0: 0 -+clone_color: redis:3 allocation score on controller-1: 0 -+clone_color: redis:3 allocation score on controller-2: 0 -+clone_color: redis:3 allocation score on galera-0: -INFINITY -+clone_color: redis:3 allocation score on galera-1: -INFINITY -+clone_color: redis:3 allocation score on galera-2: -INFINITY -+clone_color: redis:3 allocation score on messaging-0: -INFINITY -+clone_color: redis:3 allocation score on messaging-1: -INFINITY -+clone_color: redis:3 allocation score on messaging-2: -INFINITY -+clone_color: redis:4 allocation score on controller-0: 0 -+clone_color: redis:4 allocation score on controller-1: 0 -+clone_color: redis:4 allocation score on controller-2: 0 -+clone_color: redis:4 allocation score on galera-0: -INFINITY -+clone_color: redis:4 allocation score on galera-1: -INFINITY -+clone_color: redis:4 allocation score on galera-2: -INFINITY -+clone_color: redis:4 allocation score on messaging-0: -INFINITY -+clone_color: redis:4 allocation score on messaging-1: -INFINITY -+clone_color: redis:4 allocation score on messaging-2: -INFINITY -+clone_color: redis:5 allocation score on controller-0: 0 -+clone_color: redis:5 allocation score on controller-1: 0 -+clone_color: redis:5 allocation score on controller-2: 0 -+clone_color: redis:5 allocation score on galera-0: -INFINITY -+clone_color: redis:5 allocation score on galera-1: -INFINITY -+clone_color: redis:5 allocation score on galera-2: -INFINITY -+clone_color: redis:5 allocation score on messaging-0: -INFINITY -+clone_color: redis:5 allocation score on messaging-1: -INFINITY -+clone_color: redis:5 allocation score on messaging-2: -INFINITY -+clone_color: redis:6 allocation score on controller-0: 0 -+clone_color: redis:6 allocation score on controller-1: 0 -+clone_color: redis:6 allocation score on controller-2: 0 -+clone_color: redis:6 allocation score on galera-0: -INFINITY -+clone_color: redis:6 allocation score on galera-1: -INFINITY -+clone_color: redis:6 allocation score on galera-2: -INFINITY -+clone_color: redis:6 allocation score on messaging-0: -INFINITY -+clone_color: redis:6 allocation score on messaging-1: -INFINITY -+clone_color: redis:6 allocation score on messaging-2: -INFINITY -+clone_color: redis:7 allocation score on controller-0: 0 -+clone_color: redis:7 allocation score on controller-1: 0 -+clone_color: redis:7 allocation score on controller-2: 0 -+clone_color: redis:7 allocation score on galera-0: -INFINITY -+clone_color: redis:7 allocation score on galera-1: -INFINITY -+clone_color: redis:7 allocation score on galera-2: -INFINITY -+clone_color: redis:7 allocation score on messaging-0: -INFINITY -+clone_color: redis:7 allocation score on messaging-1: -INFINITY -+clone_color: redis:7 allocation score on messaging-2: -INFINITY -+clone_color: redis:8 allocation score on controller-0: 0 -+clone_color: redis:8 allocation score on controller-1: 0 -+clone_color: redis:8 allocation score on controller-2: 0 -+clone_color: redis:8 allocation score on galera-0: -INFINITY -+clone_color: redis:8 allocation score on galera-1: -INFINITY -+clone_color: redis:8 allocation score on galera-2: -INFINITY -+clone_color: redis:8 allocation score on messaging-0: -INFINITY -+clone_color: redis:8 allocation score on messaging-1: -INFINITY -+clone_color: redis:8 allocation score on messaging-2: -INFINITY -+galera:0 promotion score on galera-1: 100 -+galera:1 promotion score on galera-2: 100 -+galera:2 promotion score on galera-0: 100 -+galera:3 promotion score on none: 0 -+galera:4 promotion score on none: 0 -+galera:5 promotion score on none: 0 -+galera:6 promotion score on none: 0 -+galera:7 promotion score on none: 0 -+galera:8 promotion score on none: 0 -+native_color: galera-0 allocation score on controller-0: 0 -+native_color: galera-0 allocation score on controller-1: INFINITY -+native_color: galera-0 allocation score on controller-2: 0 -+native_color: galera-0 allocation score on galera-0: -INFINITY -+native_color: galera-0 allocation score on galera-1: -INFINITY -+native_color: galera-0 allocation score on galera-2: -INFINITY -+native_color: galera-0 allocation score on messaging-0: -INFINITY -+native_color: galera-0 allocation score on messaging-1: -INFINITY -+native_color: galera-0 allocation score on messaging-2: -INFINITY -+native_color: galera-1 allocation score on controller-0: INFINITY -+native_color: galera-1 allocation score on controller-1: 0 -+native_color: galera-1 allocation score on controller-2: 0 -+native_color: galera-1 allocation score on galera-0: -INFINITY -+native_color: galera-1 allocation score on galera-1: -INFINITY -+native_color: galera-1 allocation score on galera-2: -INFINITY -+native_color: galera-1 allocation score on messaging-0: -INFINITY -+native_color: galera-1 allocation score on messaging-1: -INFINITY -+native_color: galera-1 allocation score on messaging-2: -INFINITY -+native_color: galera-2 allocation score on controller-0: 0 -+native_color: galera-2 allocation score on controller-1: INFINITY -+native_color: galera-2 allocation score on controller-2: 0 -+native_color: galera-2 allocation score on galera-0: -INFINITY -+native_color: galera-2 allocation score on galera-1: -INFINITY -+native_color: galera-2 allocation score on galera-2: -INFINITY -+native_color: galera-2 allocation score on messaging-0: -INFINITY -+native_color: galera-2 allocation score on messaging-1: -INFINITY -+native_color: galera-2 allocation score on messaging-2: -INFINITY -+native_color: galera:0 allocation score on controller-0: -INFINITY -+native_color: galera:0 allocation score on controller-1: -INFINITY -+native_color: galera:0 allocation score on controller-2: -INFINITY -+native_color: galera:0 allocation score on galera-0: 0 -+native_color: galera:0 allocation score on galera-1: INFINITY -+native_color: galera:0 allocation score on galera-2: 0 -+native_color: galera:0 allocation score on messaging-0: -INFINITY -+native_color: galera:0 allocation score on messaging-1: -INFINITY -+native_color: galera:0 allocation score on messaging-2: -INFINITY -+native_color: galera:1 allocation score on controller-0: -INFINITY -+native_color: galera:1 allocation score on controller-1: -INFINITY -+native_color: galera:1 allocation score on controller-2: -INFINITY -+native_color: galera:1 allocation score on galera-0: 0 -+native_color: galera:1 allocation score on galera-1: -INFINITY -+native_color: galera:1 allocation score on galera-2: INFINITY -+native_color: galera:1 allocation score on messaging-0: -INFINITY -+native_color: galera:1 allocation score on messaging-1: -INFINITY -+native_color: galera:1 allocation score on messaging-2: -INFINITY -+native_color: galera:2 allocation score on controller-0: -INFINITY -+native_color: galera:2 allocation score on controller-1: -INFINITY -+native_color: galera:2 allocation score on controller-2: -INFINITY -+native_color: galera:2 allocation score on galera-0: INFINITY -+native_color: galera:2 allocation score on galera-1: -INFINITY -+native_color: galera:2 allocation score on galera-2: -INFINITY -+native_color: galera:2 allocation score on messaging-0: -INFINITY -+native_color: galera:2 allocation score on messaging-1: -INFINITY -+native_color: galera:2 allocation score on messaging-2: -INFINITY -+native_color: galera:3 allocation score on controller-0: -INFINITY -+native_color: galera:3 allocation score on controller-1: -INFINITY -+native_color: galera:3 allocation score on controller-2: -INFINITY -+native_color: galera:3 allocation score on galera-0: -INFINITY -+native_color: galera:3 allocation score on galera-1: -INFINITY -+native_color: galera:3 allocation score on galera-2: -INFINITY -+native_color: galera:3 allocation score on messaging-0: -INFINITY -+native_color: galera:3 allocation score on messaging-1: -INFINITY -+native_color: galera:3 allocation score on messaging-2: -INFINITY -+native_color: galera:4 allocation score on controller-0: -INFINITY -+native_color: galera:4 allocation score on controller-1: -INFINITY -+native_color: galera:4 allocation score on controller-2: -INFINITY -+native_color: galera:4 allocation score on galera-0: -INFINITY -+native_color: galera:4 allocation score on galera-1: -INFINITY -+native_color: galera:4 allocation score on galera-2: -INFINITY -+native_color: galera:4 allocation score on messaging-0: -INFINITY -+native_color: galera:4 allocation score on messaging-1: -INFINITY -+native_color: galera:4 allocation score on messaging-2: -INFINITY -+native_color: galera:5 allocation score on controller-0: -INFINITY -+native_color: galera:5 allocation score on controller-1: -INFINITY -+native_color: galera:5 allocation score on controller-2: -INFINITY -+native_color: galera:5 allocation score on galera-0: -INFINITY -+native_color: galera:5 allocation score on galera-1: -INFINITY -+native_color: galera:5 allocation score on galera-2: -INFINITY -+native_color: galera:5 allocation score on messaging-0: -INFINITY -+native_color: galera:5 allocation score on messaging-1: -INFINITY -+native_color: galera:5 allocation score on messaging-2: -INFINITY -+native_color: galera:6 allocation score on controller-0: -INFINITY -+native_color: galera:6 allocation score on controller-1: -INFINITY -+native_color: galera:6 allocation score on controller-2: -INFINITY -+native_color: galera:6 allocation score on galera-0: -INFINITY -+native_color: galera:6 allocation score on galera-1: -INFINITY -+native_color: galera:6 allocation score on galera-2: -INFINITY -+native_color: galera:6 allocation score on messaging-0: -INFINITY -+native_color: galera:6 allocation score on messaging-1: -INFINITY -+native_color: galera:6 allocation score on messaging-2: -INFINITY -+native_color: galera:7 allocation score on controller-0: -INFINITY -+native_color: galera:7 allocation score on controller-1: -INFINITY -+native_color: galera:7 allocation score on controller-2: -INFINITY -+native_color: galera:7 allocation score on galera-0: -INFINITY -+native_color: galera:7 allocation score on galera-1: -INFINITY -+native_color: galera:7 allocation score on galera-2: -INFINITY -+native_color: galera:7 allocation score on messaging-0: -INFINITY -+native_color: galera:7 allocation score on messaging-1: -INFINITY -+native_color: galera:7 allocation score on messaging-2: -INFINITY -+native_color: galera:8 allocation score on controller-0: -INFINITY -+native_color: galera:8 allocation score on controller-1: -INFINITY -+native_color: galera:8 allocation score on controller-2: -INFINITY -+native_color: galera:8 allocation score on galera-0: -INFINITY -+native_color: galera:8 allocation score on galera-1: -INFINITY -+native_color: galera:8 allocation score on galera-2: -INFINITY -+native_color: galera:8 allocation score on messaging-0: -INFINITY -+native_color: galera:8 allocation score on messaging-1: -INFINITY -+native_color: galera:8 allocation score on messaging-2: -INFINITY -+native_color: haproxy:0 allocation score on controller-0: -INFINITY -+native_color: haproxy:0 allocation score on controller-1: -INFINITY -+native_color: haproxy:0 allocation score on controller-2: -INFINITY -+native_color: haproxy:0 allocation score on galera-0: -INFINITY -+native_color: haproxy:0 allocation score on galera-1: -INFINITY -+native_color: haproxy:0 allocation score on galera-2: -INFINITY -+native_color: haproxy:0 allocation score on messaging-0: -INFINITY -+native_color: haproxy:0 allocation score on messaging-1: -INFINITY -+native_color: haproxy:0 allocation score on messaging-2: -INFINITY -+native_color: haproxy:1 allocation score on controller-0: INFINITY -+native_color: haproxy:1 allocation score on controller-1: -INFINITY -+native_color: haproxy:1 allocation score on controller-2: 0 -+native_color: haproxy:1 allocation score on galera-0: -INFINITY -+native_color: haproxy:1 allocation score on galera-1: -INFINITY -+native_color: haproxy:1 allocation score on galera-2: -INFINITY -+native_color: haproxy:1 allocation score on messaging-0: -INFINITY -+native_color: haproxy:1 allocation score on messaging-1: -INFINITY -+native_color: haproxy:1 allocation score on messaging-2: -INFINITY -+native_color: haproxy:2 allocation score on controller-0: -INFINITY -+native_color: haproxy:2 allocation score on controller-1: -INFINITY -+native_color: haproxy:2 allocation score on controller-2: INFINITY -+native_color: haproxy:2 allocation score on galera-0: -INFINITY -+native_color: haproxy:2 allocation score on galera-1: -INFINITY -+native_color: haproxy:2 allocation score on galera-2: -INFINITY -+native_color: haproxy:2 allocation score on messaging-0: -INFINITY -+native_color: haproxy:2 allocation score on messaging-1: -INFINITY -+native_color: haproxy:2 allocation score on messaging-2: -INFINITY -+native_color: haproxy:3 allocation score on controller-0: -INFINITY -+native_color: haproxy:3 allocation score on controller-1: -INFINITY -+native_color: haproxy:3 allocation score on controller-2: -INFINITY -+native_color: haproxy:3 allocation score on galera-0: -INFINITY -+native_color: haproxy:3 allocation score on galera-1: -INFINITY -+native_color: haproxy:3 allocation score on galera-2: -INFINITY -+native_color: haproxy:3 allocation score on messaging-0: -INFINITY -+native_color: haproxy:3 allocation score on messaging-1: -INFINITY -+native_color: haproxy:3 allocation score on messaging-2: -INFINITY -+native_color: haproxy:4 allocation score on controller-0: -INFINITY -+native_color: haproxy:4 allocation score on controller-1: -INFINITY -+native_color: haproxy:4 allocation score on controller-2: -INFINITY -+native_color: haproxy:4 allocation score on galera-0: -INFINITY -+native_color: haproxy:4 allocation score on galera-1: -INFINITY -+native_color: haproxy:4 allocation score on galera-2: -INFINITY -+native_color: haproxy:4 allocation score on messaging-0: -INFINITY -+native_color: haproxy:4 allocation score on messaging-1: -INFINITY -+native_color: haproxy:4 allocation score on messaging-2: -INFINITY -+native_color: haproxy:5 allocation score on controller-0: -INFINITY -+native_color: haproxy:5 allocation score on controller-1: -INFINITY -+native_color: haproxy:5 allocation score on controller-2: -INFINITY -+native_color: haproxy:5 allocation score on galera-0: -INFINITY -+native_color: haproxy:5 allocation score on galera-1: -INFINITY -+native_color: haproxy:5 allocation score on galera-2: -INFINITY -+native_color: haproxy:5 allocation score on messaging-0: -INFINITY -+native_color: haproxy:5 allocation score on messaging-1: -INFINITY -+native_color: haproxy:5 allocation score on messaging-2: -INFINITY -+native_color: haproxy:6 allocation score on controller-0: -INFINITY -+native_color: haproxy:6 allocation score on controller-1: -INFINITY -+native_color: haproxy:6 allocation score on controller-2: -INFINITY -+native_color: haproxy:6 allocation score on galera-0: -INFINITY -+native_color: haproxy:6 allocation score on galera-1: -INFINITY -+native_color: haproxy:6 allocation score on galera-2: -INFINITY -+native_color: haproxy:6 allocation score on messaging-0: -INFINITY -+native_color: haproxy:6 allocation score on messaging-1: -INFINITY -+native_color: haproxy:6 allocation score on messaging-2: -INFINITY -+native_color: haproxy:7 allocation score on controller-0: -INFINITY -+native_color: haproxy:7 allocation score on controller-1: -INFINITY -+native_color: haproxy:7 allocation score on controller-2: -INFINITY -+native_color: haproxy:7 allocation score on galera-0: -INFINITY -+native_color: haproxy:7 allocation score on galera-1: -INFINITY -+native_color: haproxy:7 allocation score on galera-2: -INFINITY -+native_color: haproxy:7 allocation score on messaging-0: -INFINITY -+native_color: haproxy:7 allocation score on messaging-1: -INFINITY -+native_color: haproxy:7 allocation score on messaging-2: -INFINITY -+native_color: haproxy:8 allocation score on controller-0: -INFINITY -+native_color: haproxy:8 allocation score on controller-1: -INFINITY -+native_color: haproxy:8 allocation score on controller-2: -INFINITY -+native_color: haproxy:8 allocation score on galera-0: -INFINITY -+native_color: haproxy:8 allocation score on galera-1: -INFINITY -+native_color: haproxy:8 allocation score on galera-2: -INFINITY -+native_color: haproxy:8 allocation score on messaging-0: -INFINITY -+native_color: haproxy:8 allocation score on messaging-1: -INFINITY -+native_color: haproxy:8 allocation score on messaging-2: -INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-0: INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-2: 0 -+native_color: ip-10.0.0.102 allocation score on galera-0: -INFINITY -+native_color: ip-10.0.0.102 allocation score on galera-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on galera-2: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-0: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-0: 0 -+native_color: ip-172.17.1.14 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-2: 0 -+native_color: ip-172.17.1.14 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.1.17 allocation score on controller-0: 0 -+native_color: ip-172.17.1.17 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on controller-2: 0 -+native_color: ip-172.17.1.17 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.1.17 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-0: INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-2: 0 -+native_color: ip-172.17.3.15 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.3.15 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on controller-0: 0 -+native_color: ip-172.17.4.11 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on controller-2: 0 -+native_color: ip-172.17.4.11 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-2: -INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-0: INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-2: 0 -+native_color: ip-192.168.24.6 allocation score on galera-0: -INFINITY -+native_color: ip-192.168.24.6 allocation score on galera-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on galera-2: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-0: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-2: -INFINITY -+native_color: messaging-0 allocation score on controller-0: INFINITY -+native_color: messaging-0 allocation score on controller-1: 0 -+native_color: messaging-0 allocation score on controller-2: 0 -+native_color: messaging-0 allocation score on galera-0: -INFINITY -+native_color: messaging-0 allocation score on galera-1: -INFINITY -+native_color: messaging-0 allocation score on galera-2: -INFINITY -+native_color: messaging-0 allocation score on messaging-0: -INFINITY -+native_color: messaging-0 allocation score on messaging-1: -INFINITY -+native_color: messaging-0 allocation score on messaging-2: -INFINITY -+native_color: messaging-1 allocation score on controller-0: 0 -+native_color: messaging-1 allocation score on controller-1: INFINITY -+native_color: messaging-1 allocation score on controller-2: 0 -+native_color: messaging-1 allocation score on galera-0: -INFINITY -+native_color: messaging-1 allocation score on galera-1: -INFINITY -+native_color: messaging-1 allocation score on galera-2: -INFINITY -+native_color: messaging-1 allocation score on messaging-0: -INFINITY -+native_color: messaging-1 allocation score on messaging-1: -INFINITY -+native_color: messaging-1 allocation score on messaging-2: -INFINITY -+native_color: messaging-2 allocation score on controller-0: INFINITY -+native_color: messaging-2 allocation score on controller-1: 0 -+native_color: messaging-2 allocation score on controller-2: 0 -+native_color: messaging-2 allocation score on galera-0: -INFINITY -+native_color: messaging-2 allocation score on galera-1: -INFINITY -+native_color: messaging-2 allocation score on galera-2: -INFINITY -+native_color: messaging-2 allocation score on messaging-0: -INFINITY -+native_color: messaging-2 allocation score on messaging-1: -INFINITY -+native_color: messaging-2 allocation score on messaging-2: -INFINITY -+native_color: openstack-cinder-volume allocation score on controller-0: INFINITY -+native_color: openstack-cinder-volume allocation score on controller-1: 0 -+native_color: openstack-cinder-volume allocation score on controller-2: 0 -+native_color: openstack-cinder-volume allocation score on galera-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on galera-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on galera-2: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:0 allocation score on messaging-0: 0 -+native_color: rabbitmq:0 allocation score on messaging-1: 0 -+native_color: rabbitmq:0 allocation score on messaging-2: INFINITY -+native_color: rabbitmq:1 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:1 allocation score on messaging-0: INFINITY -+native_color: rabbitmq:1 allocation score on messaging-1: 0 -+native_color: rabbitmq:1 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-1: INFINITY -+native_color: rabbitmq:2 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-2: -INFINITY -+native_color: redis:0 allocation score on controller-0: -INFINITY -+native_color: redis:0 allocation score on controller-1: -INFINITY -+native_color: redis:0 allocation score on controller-2: -INFINITY -+native_color: redis:0 allocation score on galera-0: -INFINITY -+native_color: redis:0 allocation score on galera-1: -INFINITY -+native_color: redis:0 allocation score on galera-2: -INFINITY -+native_color: redis:0 allocation score on messaging-0: -INFINITY -+native_color: redis:0 allocation score on messaging-1: -INFINITY -+native_color: redis:0 allocation score on messaging-2: -INFINITY -+native_color: redis:1 allocation score on controller-0: INFINITY -+native_color: redis:1 allocation score on controller-1: -INFINITY -+native_color: redis:1 allocation score on controller-2: 0 -+native_color: redis:1 allocation score on galera-0: -INFINITY -+native_color: redis:1 allocation score on galera-1: -INFINITY -+native_color: redis:1 allocation score on galera-2: -INFINITY -+native_color: redis:1 allocation score on messaging-0: -INFINITY -+native_color: redis:1 allocation score on messaging-1: -INFINITY -+native_color: redis:1 allocation score on messaging-2: -INFINITY -+native_color: redis:2 allocation score on controller-0: -INFINITY -+native_color: redis:2 allocation score on controller-1: -INFINITY -+native_color: redis:2 allocation score on controller-2: INFINITY -+native_color: redis:2 allocation score on galera-0: -INFINITY -+native_color: redis:2 allocation score on galera-1: -INFINITY -+native_color: redis:2 allocation score on galera-2: -INFINITY -+native_color: redis:2 allocation score on messaging-0: -INFINITY -+native_color: redis:2 allocation score on messaging-1: -INFINITY -+native_color: redis:2 allocation score on messaging-2: -INFINITY -+native_color: redis:3 allocation score on controller-0: -INFINITY -+native_color: redis:3 allocation score on controller-1: -INFINITY -+native_color: redis:3 allocation score on controller-2: -INFINITY -+native_color: redis:3 allocation score on galera-0: -INFINITY -+native_color: redis:3 allocation score on galera-1: -INFINITY -+native_color: redis:3 allocation score on galera-2: -INFINITY -+native_color: redis:3 allocation score on messaging-0: -INFINITY -+native_color: redis:3 allocation score on messaging-1: -INFINITY -+native_color: redis:3 allocation score on messaging-2: -INFINITY -+native_color: redis:4 allocation score on controller-0: -INFINITY -+native_color: redis:4 allocation score on controller-1: -INFINITY -+native_color: redis:4 allocation score on controller-2: -INFINITY -+native_color: redis:4 allocation score on galera-0: -INFINITY -+native_color: redis:4 allocation score on galera-1: -INFINITY -+native_color: redis:4 allocation score on galera-2: -INFINITY -+native_color: redis:4 allocation score on messaging-0: -INFINITY -+native_color: redis:4 allocation score on messaging-1: -INFINITY -+native_color: redis:4 allocation score on messaging-2: -INFINITY -+native_color: redis:5 allocation score on controller-0: -INFINITY -+native_color: redis:5 allocation score on controller-1: -INFINITY -+native_color: redis:5 allocation score on controller-2: -INFINITY -+native_color: redis:5 allocation score on galera-0: -INFINITY -+native_color: redis:5 allocation score on galera-1: -INFINITY -+native_color: redis:5 allocation score on galera-2: -INFINITY -+native_color: redis:5 allocation score on messaging-0: -INFINITY -+native_color: redis:5 allocation score on messaging-1: -INFINITY -+native_color: redis:5 allocation score on messaging-2: -INFINITY -+native_color: redis:6 allocation score on controller-0: -INFINITY -+native_color: redis:6 allocation score on controller-1: -INFINITY -+native_color: redis:6 allocation score on controller-2: -INFINITY -+native_color: redis:6 allocation score on galera-0: -INFINITY -+native_color: redis:6 allocation score on galera-1: -INFINITY -+native_color: redis:6 allocation score on galera-2: -INFINITY -+native_color: redis:6 allocation score on messaging-0: -INFINITY -+native_color: redis:6 allocation score on messaging-1: -INFINITY -+native_color: redis:6 allocation score on messaging-2: -INFINITY -+native_color: redis:7 allocation score on controller-0: -INFINITY -+native_color: redis:7 allocation score on controller-1: -INFINITY -+native_color: redis:7 allocation score on controller-2: -INFINITY -+native_color: redis:7 allocation score on galera-0: -INFINITY -+native_color: redis:7 allocation score on galera-1: -INFINITY -+native_color: redis:7 allocation score on galera-2: -INFINITY -+native_color: redis:7 allocation score on messaging-0: -INFINITY -+native_color: redis:7 allocation score on messaging-1: -INFINITY -+native_color: redis:7 allocation score on messaging-2: -INFINITY -+native_color: redis:8 allocation score on controller-0: -INFINITY -+native_color: redis:8 allocation score on controller-1: -INFINITY -+native_color: redis:8 allocation score on controller-2: -INFINITY -+native_color: redis:8 allocation score on galera-0: -INFINITY -+native_color: redis:8 allocation score on galera-1: -INFINITY -+native_color: redis:8 allocation score on galera-2: -INFINITY -+native_color: redis:8 allocation score on messaging-0: -INFINITY -+native_color: redis:8 allocation score on messaging-1: -INFINITY -+native_color: redis:8 allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-1: INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-0: INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-0: INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-1: 0 -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-2: -INFINITY -+redis:0 promotion score on none: 0 -+redis:1 promotion score on controller-0: 1 -+redis:2 promotion score on controller-2: 1 -+redis:3 promotion score on none: 0 -+redis:4 promotion score on none: 0 -+redis:5 promotion score on none: 0 -+redis:6 promotion score on none: 0 -+redis:7 promotion score on none: 0 -+redis:8 promotion score on none: 0 -diff --git a/pengine/test10/remote-recover-connection.summary b/pengine/test10/remote-recover-connection.summary -new file mode 100644 -index 0000000..57b5e01 ---- /dev/null -+++ b/pengine/test10/remote-recover-connection.summary -@@ -0,0 +1,139 @@ -+Using the original execution date of: 2017-05-03 13:33:24Z -+ -+Current cluster status: -+Node controller-1 (2): UNCLEAN (offline) -+Online: [ controller-0 controller-2 ] -+RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ -+ messaging-0 (ocf::pacemaker:remote): Started controller-0 -+ messaging-1 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ messaging-2 (ocf::pacemaker:remote): Started controller-0 -+ galera-0 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ galera-1 (ocf::pacemaker:remote): Started controller-0 -+ galera-2 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ Clone Set: rabbitmq-clone [rabbitmq] -+ Started: [ messaging-0 messaging-1 messaging-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 ] -+ Master/Slave Set: galera-master [galera] -+ Masters: [ galera-0 galera-1 galera-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 messaging-0 messaging-1 messaging-2 ] -+ Master/Slave Set: redis-master [redis] -+ redis (ocf::heartbeat:redis): Slave controller-1 (UNCLEAN) -+ Masters: [ controller-0 ] -+ Slaves: [ controller-2 ] -+ Stopped: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ ip-192.168.24.6 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-10.0.0.102 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ ip-172.17.1.17 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ ip-172.17.3.15 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.4.11 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ Clone Set: haproxy-clone [haproxy] -+ haproxy (systemd:haproxy): Started controller-1 (UNCLEAN) -+ Started: [ controller-0 controller-2 ] -+ Stopped: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-0 -+ stonith-fence_ipmilan-525400bbf613 (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) -+ -+Transition Summary: -+ * Move messaging-1 (Started controller-1 -> controller-2) -+ * Move galera-0 (Started controller-1 -> controller-2) -+ * Move galera-2 (Started controller-1 -> controller-2) -+ * Stop redis:0 (controller-1) -+ * Move ip-172.17.1.14 (Started controller-1 -> controller-2) -+ * Move ip-172.17.1.17 (Started controller-1 -> controller-2) -+ * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -+ * Stop haproxy:0 (controller-1) -+ * Restart stonith-fence_ipmilan-525400bbf613 (Started controller-0) -+ * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) -+ * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -+ -+Executing cluster transition: -+ * Pseudo action: redis-master_pre_notify_stop_0 -+ * Resource action: stonith-fence_ipmilan-525400bbf613 stop on controller-0 -+ * Resource action: stonith-fence_ipmilan-525400bbf613 start on controller-0 -+ * Resource action: stonith-fence_ipmilan-525400bbf613 monitor=60000 on controller-0 -+ * Resource action: stonith-fence_ipmilan-525400b4f6bd stop on controller-0 -+ * Resource action: stonith-fence_ipmilan-525400b4f6bd start on controller-0 -+ * Resource action: stonith-fence_ipmilan-525400b4f6bd monitor=60000 on controller-0 -+ * Pseudo action: stonith-fence_ipmilan-5254005bdbb5_stop_0 -+ * Fencing controller-1 (reboot) -+ * Pseudo action: stonith_complete -+ * Pseudo action: messaging-1_stop_0 -+ * Pseudo action: galera-0_stop_0 -+ * Pseudo action: galera-2_stop_0 -+ * Pseudo action: redis_post_notify_stop_0 -+ * Resource action: redis notify on controller-0 -+ * Resource action: redis notify on controller-2 -+ * Pseudo action: redis-master_confirmed-pre_notify_stop_0 -+ * Pseudo action: redis-master_stop_0 -+ * Pseudo action: haproxy-clone_stop_0 -+ * Resource action: stonith-fence_ipmilan-5254005bdbb5 start on controller-2 -+ * Resource action: messaging-1 start on controller-2 -+ * Resource action: galera-0 start on controller-2 -+ * Resource action: galera-2 start on controller-2 -+ * Resource action: rabbitmq monitor=10000 on messaging-1 -+ * Resource action: galera monitor=10000 on galera-2 -+ * 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: 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 -+ * Pseudo action: ip-172.17.4.11_stop_0 -+ * Resource action: redis notify on controller-0 -+ * Resource action: redis notify on controller-2 -+ * Pseudo action: redis-master_confirmed-post_notify_stopped_0 -+ * Resource action: ip-172.17.1.14 start on controller-2 -+ * Resource action: ip-172.17.1.17 start on controller-2 -+ * Resource action: ip-172.17.4.11 start on controller-2 -+ * Pseudo action: redis_notified_0 -+ * Resource action: ip-172.17.1.14 monitor=10000 on controller-2 -+ * Resource action: ip-172.17.1.17 monitor=10000 on controller-2 -+ * Resource action: ip-172.17.4.11 monitor=10000 on controller-2 -+ * Pseudo action: all_stopped -+Using the original execution date of: 2017-05-03 13:33:24Z -+ -+Revised cluster status: -+Online: [ controller-0 controller-2 ] -+OFFLINE: [ controller-1 ] -+RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ -+ messaging-0 (ocf::pacemaker:remote): Started controller-0 -+ messaging-1 (ocf::pacemaker:remote): Started controller-2 -+ messaging-2 (ocf::pacemaker:remote): Started controller-0 -+ galera-0 (ocf::pacemaker:remote): Started controller-2 -+ galera-1 (ocf::pacemaker:remote): Started controller-0 -+ galera-2 (ocf::pacemaker:remote): Started controller-2 -+ Clone Set: rabbitmq-clone [rabbitmq] -+ Started: [ messaging-0 messaging-1 messaging-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 ] -+ Master/Slave Set: galera-master [galera] -+ Masters: [ galera-0 galera-1 galera-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 messaging-0 messaging-1 messaging-2 ] -+ Master/Slave Set: redis-master [redis] -+ Masters: [ controller-0 ] -+ Slaves: [ controller-2 ] -+ Stopped: [ controller-1 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ ip-192.168.24.6 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-10.0.0.102 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.1.17 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.3.15 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.4.11 (ocf::heartbeat:IPaddr2): Started controller-2 -+ Clone Set: haproxy-clone [haproxy] -+ Started: [ controller-0 controller-2 ] -+ Stopped: [ controller-1 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-0 -+ stonith-fence_ipmilan-525400bbf613 (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-2 -+ -diff --git a/pengine/test10/remote-recover-connection.xml b/pengine/test10/remote-recover-connection.xml -new file mode 100644 -index 0000000..f921dfe ---- /dev/null -+++ b/pengine/test10/remote-recover-connection.xml -@@ -0,0 +1,739 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.8.3.1 - - -From 1d735f077f7d2e6dfd7338c5e558564385535a77 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 25 May 2017 17:27:17 +1000 -Subject: [PATCH 6/6] Test: PE: Update regression tests for remote ordering - ---- - pengine/test10/remote-fence-before-reconnect.dot | 1 + - pengine/test10/remote-fence-before-reconnect.exp | 6 +++++- - pengine/test10/remote-fence-before-reconnect.summary | 4 ++-- - pengine/test10/remote-fence-unclean.dot | 1 + - pengine/test10/remote-fence-unclean.exp | 6 +++++- - pengine/test10/remote-fence-unclean.summary | 8 ++++---- - pengine/test10/remote-recover-fail.dot | 2 ++ - pengine/test10/remote-recover-fail.exp | 9 ++++++++- - pengine/test10/remote-recover-fail.summary | 8 ++++---- - 9 files changed, 32 insertions(+), 13 deletions(-) - -diff --git a/pengine/test10/remote-fence-before-reconnect.dot b/pengine/test10/remote-fence-before-reconnect.dot -index 2022b4c..ef2b047 100644 ---- a/pengine/test10/remote-fence-before-reconnect.dot -+++ b/pengine/test10/remote-fence-before-reconnect.dot -@@ -6,6 +6,7 @@ - "fake2_start_0 c7auto1" -> "fake2_monitor_10000 c7auto1" [ style = bold] - "fake2_start_0 c7auto1" [ style=bold color="green" fontcolor="black"] - "fake2_stop_0 c7auto4" -> "all_stopped" [ style = bold] -+"fake2_stop_0 c7auto4" -> "c7auto4_stop_0 c7auto1" [ style = bold] - "fake2_stop_0 c7auto4" -> "fake2_start_0 c7auto1" [ style = bold] - "fake2_stop_0 c7auto4" [ style=bold color="green" fontcolor="orange"] - "stonith 'reboot' c7auto4" -> "fake2_stop_0 c7auto4" [ style = bold] -diff --git a/pengine/test10/remote-fence-before-reconnect.exp b/pengine/test10/remote-fence-before-reconnect.exp -index 2c9ee6c..54c9106 100644 ---- a/pengine/test10/remote-fence-before-reconnect.exp -+++ b/pengine/test10/remote-fence-before-reconnect.exp -@@ -9,7 +9,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/remote-fence-before-reconnect.summary b/pengine/test10/remote-fence-before-reconnect.summary -index 5cd8dd9..88ca48c 100644 ---- a/pengine/test10/remote-fence-before-reconnect.summary -+++ b/pengine/test10/remote-fence-before-reconnect.summary -@@ -16,12 +16,12 @@ Transition Summary: - * Move fake2 (Started c7auto4 -> c7auto1) - - Executing cluster transition: -- * Resource action: c7auto4 stop on c7auto1 - * Fencing c7auto4 (reboot) - * Pseudo action: stonith_complete - * Pseudo action: fake2_stop_0 -- * Pseudo action: all_stopped -+ * Resource action: c7auto4 stop on c7auto1 - * Resource action: fake2 start on c7auto1 -+ * Pseudo action: all_stopped - * Resource action: fake2 monitor=10000 on c7auto1 - - Revised cluster status: -diff --git a/pengine/test10/remote-fence-unclean.dot b/pengine/test10/remote-fence-unclean.dot -index e956a91..b2829a7 100644 ---- a/pengine/test10/remote-fence-unclean.dot -+++ b/pengine/test10/remote-fence-unclean.dot -@@ -4,6 +4,7 @@ - "FAKE2_start_0 18builder" [ style=bold color="green" fontcolor="black"] - "FAKE2_stop_0 remote1" -> "FAKE2_start_0 18builder" [ style = bold] - "FAKE2_stop_0 remote1" -> "all_stopped" [ style = bold] -+"FAKE2_stop_0 remote1" -> "remote1_stop_0 18node1" [ style = bold] - "FAKE2_stop_0 remote1" [ style=bold color="green" fontcolor="orange"] - "FAKE3_monitor_60000 18node1" [ style=bold color="green" fontcolor="black"] - "FAKE3_start_0 18node1" -> "FAKE3_monitor_60000 18node1" [ style = bold] -diff --git a/pengine/test10/remote-fence-unclean.exp b/pengine/test10/remote-fence-unclean.exp -index 125366e..d2c3617 100644 ---- a/pengine/test10/remote-fence-unclean.exp -+++ b/pengine/test10/remote-fence-unclean.exp -@@ -25,7 +25,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/remote-fence-unclean.summary b/pengine/test10/remote-fence-unclean.summary -index 60e70a5..cd246e4 100644 ---- a/pengine/test10/remote-fence-unclean.summary -+++ b/pengine/test10/remote-fence-unclean.summary -@@ -17,20 +17,20 @@ Transition Summary: - * Move FAKE4 (Started 18node1 -> 18node2) - - Executing cluster transition: -- * Resource action: remote1 stop on 18node1 - * Resource action: FAKE3 stop on 18builder - * Resource action: FAKE4 stop on 18node1 - * Fencing remote1 (reboot) - * Pseudo action: stonith_complete -- * Resource action: remote1 start on 18node1 -- * Resource action: remote1 monitor=60000 on 18node1 - * Pseudo action: FAKE2_stop_0 - * Resource action: FAKE3 start on 18node1 - * Resource action: FAKE4 start on 18node2 -- * Pseudo action: all_stopped -+ * Resource action: remote1 stop on 18node1 - * Resource action: FAKE2 start on 18builder - * Resource action: FAKE3 monitor=60000 on 18node1 - * Resource action: FAKE4 monitor=60000 on 18node2 -+ * Pseudo action: all_stopped -+ * Resource action: remote1 start on 18node1 -+ * Resource action: remote1 monitor=60000 on 18node1 - * Resource action: FAKE2 monitor=60000 on 18builder - - Revised cluster status: -diff --git a/pengine/test10/remote-recover-fail.dot b/pengine/test10/remote-recover-fail.dot -index a920089..7b6edaa 100644 ---- a/pengine/test10/remote-recover-fail.dot -+++ b/pengine/test10/remote-recover-fail.dot -@@ -7,6 +7,7 @@ - "FAKE2_start_0 rhel7-auto3" [ style=bold color="green" fontcolor="black"] - "FAKE2_stop_0 rhel7-auto4" -> "FAKE2_start_0 rhel7-auto3" [ style = bold] - "FAKE2_stop_0 rhel7-auto4" -> "all_stopped" [ style = bold] -+"FAKE2_stop_0 rhel7-auto4" -> "rhel7-auto4_stop_0 rhel7-auto2" [ style = bold] - "FAKE2_stop_0 rhel7-auto4" [ style=bold color="green" fontcolor="orange"] - "FAKE3_monitor_10000 rhel7-auto2" [ style=bold color="green" fontcolor="black"] - "FAKE4_monitor_10000 rhel7-auto3" [ style=bold color="green" fontcolor="black"] -@@ -15,6 +16,7 @@ - "FAKE6_start_0 rhel7-auto2" [ style=bold color="green" fontcolor="black"] - "FAKE6_stop_0 rhel7-auto4" -> "FAKE6_start_0 rhel7-auto2" [ style = bold] - "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" [ style=bold color="green" fontcolor="orange"] - "rhel7-auto4_monitor_60000 rhel7-auto2" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/remote-recover-fail.exp b/pengine/test10/remote-recover-fail.exp -index 1daa510..be45b88 100644 ---- a/pengine/test10/remote-recover-fail.exp -+++ b/pengine/test10/remote-recover-fail.exp -@@ -38,7 +38,14 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/remote-recover-fail.summary b/pengine/test10/remote-recover-fail.summary -index 8584745..5953e34 100644 ---- a/pengine/test10/remote-recover-fail.summary -+++ b/pengine/test10/remote-recover-fail.summary -@@ -20,22 +20,22 @@ Transition Summary: - * Move FAKE6 (Started rhel7-auto4 -> rhel7-auto2) - - Executing cluster transition: -- * Resource action: rhel7-auto4 stop on rhel7-auto2 - * Resource action: FAKE3 monitor=10000 on rhel7-auto2 - * Resource action: FAKE4 monitor=10000 on rhel7-auto3 - * Fencing rhel7-auto4 (reboot) - * Pseudo action: stonith_complete -- * Resource action: rhel7-auto4 start on rhel7-auto2 - * Resource action: FAKE1 start on rhel7-auto2 - * Pseudo action: FAKE2_stop_0 - * Pseudo action: FAKE6_stop_0 -- * Pseudo action: all_stopped -- * Resource action: rhel7-auto4 monitor=60000 on rhel7-auto2 -+ * Resource action: rhel7-auto4 stop on rhel7-auto2 - * Resource action: FAKE1 monitor=10000 on rhel7-auto2 - * Resource action: FAKE2 start on rhel7-auto3 - * Resource action: FAKE6 start on rhel7-auto2 -+ * Pseudo action: all_stopped -+ * Resource action: rhel7-auto4 start on rhel7-auto2 - * Resource action: FAKE2 monitor=10000 on rhel7-auto3 - * Resource action: FAKE6 monitor=10000 on rhel7-auto2 -+ * Resource action: rhel7-auto4 monitor=60000 on rhel7-auto2 - - Revised cluster status: - Online: [ rhel7-auto2 rhel7-auto3 ] --- -1.8.3.1 - diff --git a/SOURCES/063-empty-remotes.patch b/SOURCES/063-empty-remotes.patch deleted file mode 100644 index 917a378..0000000 --- a/SOURCES/063-empty-remotes.patch +++ /dev/null @@ -1,7190 +0,0 @@ -From 25b4ef781c81ff7a362c86eb73f6371b8457a94d Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 29 May 2017 14:27:19 +1000 -Subject: [PATCH] PE: Fence unrecoverable remote nodes with no resources - -The exception is remote nodes known not to be running any services. -To ensure this, we probe remote nodes before we allow the connection to -be stopped and added a test case to ensure this does not result in graph -loops. ---- - pengine/allocate.c | 71 +- - pengine/regression.sh | 3 + - pengine/test10/remote-probe-disable.dot | 13 + - pengine/test10/remote-probe-disable.exp | 75 ++ - pengine/test10/remote-probe-disable.scores | 25 + - pengine/test10/remote-probe-disable.summary | 35 + - pengine/test10/remote-probe-disable.xml | 169 ++++ - pengine/test10/remote-recover-all.dot | 25 +- - pengine/test10/remote-recover-all.exp | 481 ++++++------ - pengine/test10/remote-recover-all.scores | 10 +- - pengine/test10/remote-recover-all.summary | 51 +- - pengine/test10/remote-recover-all.xml | 2 - - pengine/test10/remote-recover-no-resources.dot | 143 ++++ - pengine/test10/remote-recover-no-resources.exp | 755 ++++++++++++++++++ - pengine/test10/remote-recover-no-resources.scores | 848 +++++++++++++++++++++ - pengine/test10/remote-recover-no-resources.summary | 143 ++++ - pengine/test10/remote-recover-no-resources.xml | 741 ++++++++++++++++++ - pengine/test10/remote-recover-unknown.dot | 146 ++++ - pengine/test10/remote-recover-unknown.exp | 770 +++++++++++++++++++ - pengine/test10/remote-recover-unknown.scores | 848 +++++++++++++++++++++ - pengine/test10/remote-recover-unknown.summary | 144 ++++ - pengine/test10/remote-recover-unknown.xml | 734 ++++++++++++++++++ - 22 files changed, 5910 insertions(+), 322 deletions(-) - create mode 100644 pengine/test10/remote-probe-disable.dot - create mode 100644 pengine/test10/remote-probe-disable.exp - create mode 100644 pengine/test10/remote-probe-disable.scores - create mode 100644 pengine/test10/remote-probe-disable.summary - create mode 100644 pengine/test10/remote-probe-disable.xml - create mode 100644 pengine/test10/remote-recover-no-resources.dot - create mode 100644 pengine/test10/remote-recover-no-resources.exp - create mode 100644 pengine/test10/remote-recover-no-resources.scores - create mode 100644 pengine/test10/remote-recover-no-resources.summary - create mode 100644 pengine/test10/remote-recover-no-resources.xml - create mode 100644 pengine/test10/remote-recover-unknown.dot - create mode 100644 pengine/test10/remote-recover-unknown.exp - create mode 100644 pengine/test10/remote-recover-unknown.scores - create mode 100644 pengine/test10/remote-recover-unknown.summary - create mode 100644 pengine/test10/remote-recover-unknown.xml - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index b431d31..795ed56 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -899,13 +899,6 @@ probe_resources(pe_working_set_t * data_set) - } else if (node->details->unclean) { - continue; - -- } else if (is_remote_node(node) && node->details->shutdown) { -- /* Don't probe a Pacemaker Remote node we're shutting down. -- * It causes constraint conflicts to try to run any action -- * other than "stop" on resources living within such a node when -- * it is shutting down. */ -- continue; -- - } else if (is_container_remote_node(node)) { - /* TODO enable guest node probes once ordered probing is implemented */ - continue; -@@ -1761,7 +1754,8 @@ enum remote_connection_state - remote_state_unknown = 0, - remote_state_alive = 1, - remote_state_resting = 2, -- remote_state_dead= 3 -+ remote_state_failed = 3, -+ remote_state_stopped = 4 - }; - - static int -@@ -1902,13 +1896,20 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - */ - if(remote_rsc->next_role == RSC_ROLE_STOPPED || remote_rsc->allocated_to == NULL) { - /* There is no-where left to run the connection resource -- * We must assume the target has failed -+ * and the resource is in a failed state (either directly -+ * or because it is located on a failed node). -+ * -+ * If there are any resources known to be active on it (stop), -+ * or if there are resources in an unknown state (probe), we -+ * must assume the worst and fence it. - */ -- state = remote_state_dead; -- if(is_set(remote_rsc->flags, pe_rsc_failed)) { -- pe_fence_node(data_set, action->node, "because the connection is unrecoverable (failed)"); -+ -+ if(is_set(action->node->details->remote_rsc->flags, pe_rsc_failed)) { -+ state = remote_state_failed; - } else if(cluster_node && cluster_node->details->unclean) { -- pe_fence_node(data_set, action->node, "because the connection is unrecoverable (unclean host)"); -+ state = remote_state_failed; -+ } else { -+ state = remote_state_stopped; - } - - } else if (cluster_node == NULL) { -@@ -1933,11 +1934,11 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - state = remote_state_alive; - } - -- crm_trace("%s %s %d %d", action->uuid, action->task, state, is_set(remote_rsc->flags, pe_rsc_failed)); -+ crm_trace("%s %s %s %d %d", action->uuid, action->task, action->node->details->uname, state, is_set(remote_rsc->flags, pe_rsc_failed)); - switch (task) { - case start_rsc: - case action_promote: -- if(state == remote_state_dead) { -+ if(state == remote_state_failed) { - /* Wait for the connection resource to be up and force recovery */ - custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, - action->rsc, NULL, action, -@@ -1958,7 +1959,17 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - 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); -+ - } 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, "because 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); -@@ -1990,10 +2001,34 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - 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); -+ - } 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); -+ if(task == monitor_rsc && state == remote_state_failed) { -+ /* We would only be here if we do not know the -+ * state of the resource on the remote node. -+ * Since we have no way to find out, it is -+ * necessary to fence the node. -+ */ -+ pe_fence_node(data_set, action->node, "because resources are in an unknown state and the connection is unrecoverable"); -+ } -+ -+ if(cluster_node && state == remote_state_stopped) { -+ /* The connection is currently up, but is going -+ * down permanently. -+ * -+ * Make sure we check services are actually -+ * 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); -+ -+ } 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); -+ } - } - break; - } -diff --git a/pengine/regression.sh b/pengine/regression.sh -index 7b0ce76..df449e0 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -827,6 +827,7 @@ do_test remote-fence-unclean "Fence unclean baremetal remote-node" - do_test remote-fence-unclean2 "Fence baremetal remote-node after cluster node fails and connection can not be recovered" - do_test remote-move "Move remote-node connection resource" - do_test remote-disable "Disable a baremetal remote-node" -+do_test remote-probe-disable "Probe then stop a baremetal remote-node" - do_test remote-orphaned "Properly shutdown orphaned connection resource" - do_test remote-orphaned2 "verify we can handle orphaned remote connections with active resources on the remote" - do_test remote-recover "Recover connection resource after cluster-node fails." -@@ -840,6 +841,8 @@ do_test remote-fence-before-reconnect "Fence before clearing recurring monitor f - do_test remote-recovery "Recover remote connections before attempting demotion" - do_test remote-recover-connection "Optimistically recovery of only the connection" - do_test remote-recover-all "Fencing when the connection has no home" -+do_test remote-recover-no-resources "Fencing when the connection has no home and no active resources" -+do_test remote-recover-unknown "Fencing when the connection has no home and the remote has no operation history" - - echo "" - do_test resource-discovery "Exercises resource-discovery location constraint option." -diff --git a/pengine/test10/remote-probe-disable.dot b/pengine/test10/remote-probe-disable.dot -new file mode 100644 -index 0000000..e2f06ed ---- /dev/null -+++ b/pengine/test10/remote-probe-disable.dot -@@ -0,0 +1,13 @@ -+digraph "g" { -+"FAKE1_monitor_0 remote1" -> "remote1_stop_0 18builder" [ style = bold] -+"FAKE1_monitor_0 remote1" [ style=bold color="green" fontcolor="black"] -+"FAKE2_monitor_0 remote1" -> "remote1_stop_0 18builder" [ style = bold] -+"FAKE2_monitor_0 remote1" [ style=bold color="green" fontcolor="black"] -+"FAKE3_monitor_0 remote1" -> "remote1_stop_0 18builder" [ style = bold] -+"FAKE3_monitor_0 remote1" [ style=bold color="green" fontcolor="black"] -+"FAKE4_monitor_0 remote1" -> "remote1_stop_0 18builder" [ style = bold] -+"FAKE4_monitor_0 remote1" [ style=bold color="green" fontcolor="black"] -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"remote1_stop_0 18builder" -> "all_stopped" [ style = bold] -+"remote1_stop_0 18builder" [ style=bold color="green" fontcolor="black"] -+} -diff --git a/pengine/test10/remote-probe-disable.exp b/pengine/test10/remote-probe-disable.exp -new file mode 100644 -index 0000000..a911392 ---- /dev/null -+++ b/pengine/test10/remote-probe-disable.exp -@@ -0,0 +1,75 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/remote-probe-disable.scores b/pengine/test10/remote-probe-disable.scores -new file mode 100644 -index 0000000..d66861f ---- /dev/null -+++ b/pengine/test10/remote-probe-disable.scores -@@ -0,0 +1,25 @@ -+Allocation scores: -+native_color: FAKE1 allocation score on 18builder: 0 -+native_color: FAKE1 allocation score on 18node1: 0 -+native_color: FAKE1 allocation score on 18node2: 0 -+native_color: FAKE1 allocation score on remote1: 0 -+native_color: FAKE2 allocation score on 18builder: -INFINITY -+native_color: FAKE2 allocation score on 18node1: -INFINITY -+native_color: FAKE2 allocation score on 18node2: -INFINITY -+native_color: FAKE2 allocation score on remote1: 0 -+native_color: FAKE3 allocation score on 18builder: 0 -+native_color: FAKE3 allocation score on 18node1: 0 -+native_color: FAKE3 allocation score on 18node2: 0 -+native_color: FAKE3 allocation score on remote1: 0 -+native_color: FAKE4 allocation score on 18builder: 0 -+native_color: FAKE4 allocation score on 18node1: 0 -+native_color: FAKE4 allocation score on 18node2: 0 -+native_color: FAKE4 allocation score on remote1: 0 -+native_color: remote1 allocation score on 18builder: -INFINITY -+native_color: remote1 allocation score on 18node1: -INFINITY -+native_color: remote1 allocation score on 18node2: -INFINITY -+native_color: remote1 allocation score on remote1: -INFINITY -+native_color: shooter allocation score on 18builder: 0 -+native_color: shooter allocation score on 18node1: 0 -+native_color: shooter allocation score on 18node2: 0 -+native_color: shooter allocation score on remote1: -INFINITY -diff --git a/pengine/test10/remote-probe-disable.summary b/pengine/test10/remote-probe-disable.summary -new file mode 100644 -index 0000000..1824da6 ---- /dev/null -+++ b/pengine/test10/remote-probe-disable.summary -@@ -0,0 +1,35 @@ -+2 of 6 resources DISABLED and 0 BLOCKED from being started due to failures -+ -+Current cluster status: -+Online: [ 18builder 18node1 18node2 ] -+RemoteOnline: [ remote1 ] -+ -+ shooter (stonith:fence_xvm): Started 18node1 -+ remote1 (ocf::pacemaker:remote): Started 18builder (disabled) -+ FAKE1 (ocf::heartbeat:Dummy): Started 18node2 -+ FAKE2 (ocf::heartbeat:Dummy): Stopped -+ FAKE3 (ocf::heartbeat:Dummy): Started 18builder -+ FAKE4 (ocf::heartbeat:Dummy): Started 18node1 -+ -+Transition Summary: -+ * Stop remote1 (18builder) -+ -+Executing cluster transition: -+ * Resource action: FAKE1 monitor on remote1 -+ * Resource action: FAKE2 monitor on remote1 -+ * Resource action: FAKE3 monitor on remote1 -+ * Resource action: FAKE4 monitor on remote1 -+ * Resource action: remote1 stop on 18builder -+ * Pseudo action: all_stopped -+ -+Revised cluster status: -+Online: [ 18builder 18node1 18node2 ] -+RemoteOFFLINE: [ remote1 ] -+ -+ shooter (stonith:fence_xvm): Started 18node1 -+ remote1 (ocf::pacemaker:remote): Stopped (disabled) -+ FAKE1 (ocf::heartbeat:Dummy): Started 18node2 -+ FAKE2 (ocf::heartbeat:Dummy): Stopped -+ FAKE3 (ocf::heartbeat:Dummy): Started 18builder -+ FAKE4 (ocf::heartbeat:Dummy): Started 18node1 -+ -diff --git a/pengine/test10/remote-probe-disable.xml b/pengine/test10/remote-probe-disable.xml -new file mode 100644 -index 0000000..87c64a8 ---- /dev/null -+++ b/pengine/test10/remote-probe-disable.xml -@@ -0,0 +1,169 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/remote-recover-all.dot b/pengine/test10/remote-recover-all.dot -index 2369adc..ad421e6 100644 ---- a/pengine/test10/remote-recover-all.dot -+++ b/pengine/test10/remote-recover-all.dot -@@ -3,33 +3,28 @@ digraph "g" { - "all_stopped" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold] - "all_stopped" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] - "all_stopped" [ style=bold color="green" fontcolor="orange"] -+"galera-0_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-0_start_0 controller-2" -> "galera-0_monitor_20000 controller-2" [ style = bold] -+"galera-0_start_0 controller-2" -> "galera_monitor_10000 galera-0" [ style = bold] -+"galera-0_start_0 controller-2" [ style=bold color="green" fontcolor="black"] - "galera-0_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"galera-0_stop_0 controller-1" -> "galera-0_start_0 controller-2" [ style = bold] - "galera-0_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] - "galera-2_stop_0 controller-1" -> "all_stopped" [ style = bold] - "galera-2_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] - "galera-master_demote_0" -> "galera-master_demoted_0" [ style = bold] --"galera-master_demote_0" -> "galera_demote_0 galera-0" [ style = bold] - "galera-master_demote_0" -> "galera_demote_0 galera-2" [ style = bold] - "galera-master_demote_0" [ style=bold color="green" fontcolor="orange"] - "galera-master_demoted_0" -> "galera-master_stop_0" [ style = bold] - "galera-master_demoted_0" [ style=bold color="green" fontcolor="orange"] - "galera-master_stop_0" -> "galera-master_stopped_0" [ style = bold] --"galera-master_stop_0" -> "galera_stop_0 galera-0" [ style = bold] - "galera-master_stop_0" -> "galera_stop_0 galera-2" [ style = bold] - "galera-master_stop_0" [ style=bold color="green" fontcolor="orange"] - "galera-master_stopped_0" [ style=bold color="green" fontcolor="orange"] --"galera_demote_0 galera-0" -> "galera-master_demoted_0" [ style = bold] --"galera_demote_0 galera-0" -> "galera_demote_0 galera-2" [ style = bold] --"galera_demote_0 galera-0" -> "galera_stop_0 galera-0" [ style = bold] --"galera_demote_0 galera-0" [ style=bold color="green" fontcolor="orange"] - "galera_demote_0 galera-2" -> "galera-master_demoted_0" [ style = bold] - "galera_demote_0 galera-2" -> "galera_stop_0 galera-2" [ style = bold] - "galera_demote_0 galera-2" [ style=bold color="green" fontcolor="orange"] --"galera_stop_0 galera-0" -> "all_stopped" [ style = bold] --"galera_stop_0 galera-0" -> "galera-0_stop_0 controller-1" [ style = bold] --"galera_stop_0 galera-0" -> "galera-master_stopped_0" [ style = bold] --"galera_stop_0 galera-0" -> "galera_stop_0 galera-2" [ style = bold] --"galera_stop_0 galera-0" [ style=bold color="green" fontcolor="orange"] -+"galera_monitor_10000 galera-0" [ style=bold color="green" fontcolor="black"] - "galera_stop_0 galera-2" -> "all_stopped" [ style = bold] - "galera_stop_0 galera-2" -> "galera-2_stop_0 controller-1" [ style = bold] - "galera_stop_0 galera-2" -> "galera-master_stopped_0" [ style = bold] -@@ -130,13 +125,8 @@ digraph "g" { - "stonith 'reboot' controller-1" -> "redis-master_stop_0" [ style = bold] - "stonith 'reboot' controller-1" -> "redis_post_notify_stonith_0" [ style = bold] - "stonith 'reboot' controller-1" -> "redis_stop_0 controller-1" [ style = bold] --"stonith 'reboot' controller-1" -> "stonith 'reboot' galera-0" [ style = bold] -+"stonith 'reboot' controller-1" -> "stonith 'reboot' galera-2" [ style = bold] - "stonith 'reboot' controller-1" [ style=bold color="green" fontcolor="black"] --"stonith 'reboot' galera-0" -> "galera-master_stop_0" [ style = bold] --"stonith 'reboot' galera-0" -> "galera_demote_0 galera-0" [ style = bold] --"stonith 'reboot' galera-0" -> "galera_stop_0 galera-0" [ style = bold] --"stonith 'reboot' galera-0" -> "stonith 'reboot' galera-2" [ style = bold] --"stonith 'reboot' galera-0" [ style=bold color="green" fontcolor="black"] - "stonith 'reboot' galera-2" -> "galera-master_stop_0" [ style = bold] - "stonith 'reboot' galera-2" -> "galera_demote_0 galera-2" [ style = bold] - "stonith 'reboot' galera-2" -> "galera_stop_0 galera-2" [ style = bold] -@@ -166,6 +156,7 @@ 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 2b0bd1e..6c1164c 100644 ---- a/pengine/test10/remote-recover-all.exp -+++ b/pengine/test10/remote-recover-all.exp -@@ -7,420 +7,411 @@ - - - -- -+ - - -- -+ - - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -- -- -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -- -- -- -+ - - - -- -+ - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -- -- -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -- -- -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -- -- -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -- -- -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ - - -- -+ - - - -- -+ - - - -- -+ - - - - -- -+ - - - -- -+ - -- -+ - -- -+ - - - - -- -+ - - -- -+ - - - -- -+ - - - -- -+ - - - - -- -+ - - - -- -+ - -- -+ - -- -+ - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -@@ -430,228 +421,228 @@ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -@@ -663,11 +654,11 @@ - - - -- -+ - -
    - -- -+ - - - -@@ -680,16 +671,16 @@ - -
    - -- -+ - -- -+ - - - - - - -- -+ - - - -@@ -701,11 +692,11 @@ - - - -- -+ - -
    - -- -+ - - - -@@ -718,22 +709,22 @@ - -
    - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -743,21 +734,21 @@ - - - -- -+ - -
    - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - -@@ -766,13 +757,13 @@ - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -781,28 +772,13 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -@@ -813,13 +789,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -837,52 +813,49 @@ - - - -- -- -- -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - -
    - -diff --git a/pengine/test10/remote-recover-all.scores b/pengine/test10/remote-recover-all.scores -index ef1f068..43cac62 100644 ---- a/pengine/test10/remote-recover-all.scores -+++ b/pengine/test10/remote-recover-all.scores -@@ -362,16 +362,16 @@ clone_color: redis:8 allocation score on messaging-1: -INFINITY - clone_color: redis:8 allocation score on messaging-2: -INFINITY - galera:0 promotion score on galera-1: 100 - galera:1 promotion score on none: 0 --galera:2 promotion score on none: 0 -+galera:2 promotion score on galera-0: 100 - galera:3 promotion score on none: 0 - galera:4 promotion score on none: 0 - galera:5 promotion score on none: 0 - galera:6 promotion score on none: 0 - galera:7 promotion score on none: 0 - galera:8 promotion score on none: 0 --native_color: galera-0 allocation score on controller-0: -INFINITY -+native_color: galera-0 allocation score on controller-0: 0 - native_color: galera-0 allocation score on controller-1: INFINITY --native_color: galera-0 allocation score on controller-2: -INFINITY -+native_color: galera-0 allocation score on controller-2: 0 - native_color: galera-0 allocation score on galera-0: -INFINITY - native_color: galera-0 allocation score on galera-1: -INFINITY - native_color: galera-0 allocation score on galera-2: -INFINITY -@@ -399,7 +399,7 @@ native_color: galera-2 allocation score on messaging-2: -INFINITY - native_color: galera:0 allocation score on controller-0: -INFINITY - native_color: galera:0 allocation score on controller-1: -INFINITY - native_color: galera:0 allocation score on controller-2: -INFINITY --native_color: galera:0 allocation score on galera-0: -INFINITY -+native_color: galera:0 allocation score on galera-0: 0 - native_color: galera:0 allocation score on galera-1: INFINITY - native_color: galera:0 allocation score on galera-2: -INFINITY - native_color: galera:0 allocation score on messaging-0: -INFINITY -@@ -417,7 +417,7 @@ native_color: galera:1 allocation score on messaging-2: -INFINITY - native_color: galera:2 allocation score on controller-0: -INFINITY - native_color: galera:2 allocation score on controller-1: -INFINITY - native_color: galera:2 allocation score on controller-2: -INFINITY --native_color: galera:2 allocation score on galera-0: -INFINITY -+native_color: galera:2 allocation score on galera-0: INFINITY - native_color: galera:2 allocation score on galera-1: -INFINITY - native_color: galera:2 allocation score on galera-2: -INFINITY - native_color: galera:2 allocation score on messaging-0: -INFINITY -diff --git a/pengine/test10/remote-recover-all.summary b/pengine/test10/remote-recover-all.summary -index 387c7f3..881f449 100644 ---- a/pengine/test10/remote-recover-all.summary -+++ b/pengine/test10/remote-recover-all.summary -@@ -39,11 +39,10 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - - Transition Summary: - * Stop messaging-1 (controller-1) -- * Stop galera-0 (controller-1) -+ * Move galera-0 (Started controller-1 -> controller-2) - * Stop galera-2 (controller-1) - * Stop rabbitmq:2 (messaging-1) - * Demote galera:1 (Master -> Stopped galera-2) -- * Demote galera:2 (Master -> Stopped galera-0) - * Stop redis:0 (controller-1) - * Move ip-172.17.1.14 (Started controller-1 -> controller-2) - * Move ip-172.17.1.17 (Started controller-1 -> controller-2) -@@ -60,51 +59,51 @@ Executing cluster transition: - * 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 - * Pseudo action: redis-master_confirmed-pre_notify_stop_0 - * Pseudo action: redis-master_stop_0 - * Pseudo action: haproxy-clone_stop_0 -- * Fencing galera-0 (reboot) -+ * Fencing galera-2 (reboot) - * Pseudo action: galera_demote_0 -+ * Pseudo action: galera-master_demoted_0 -+ * Pseudo action: galera-master_stop_0 - * Pseudo action: redis_stop_0 - * Pseudo action: redis-master_stopped_0 - * Pseudo action: haproxy_stop_0 - * Pseudo action: haproxy-clone_stopped_0 -- * Fencing galera-2 (reboot) -- * Pseudo action: galera_demote_0 -- * Pseudo action: galera-master_demoted_0 -- * Pseudo action: galera-master_stop_0 -- * Pseudo action: redis-master_post_notify_stopped_0 -- * Pseudo action: ip-172.17.1.14_stop_0 -- * Pseudo action: ip-172.17.1.17_stop_0 -- * Pseudo action: ip-172.17.4.11_stop_0 - * 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 -+ * Pseudo action: rabbitmq_notified_0 -+ * Pseudo action: rabbitmq_stop_0 -+ * Pseudo action: rabbitmq-clone_stopped_0 - * Resource action: redis notify on controller-0 - * Resource action: redis notify on controller-2 - * Pseudo action: redis-master_confirmed-post_notify_stopped_0 - * Resource action: ip-172.17.1.14 start on controller-2 - * Resource action: ip-172.17.1.17 start on controller-2 - * Resource action: ip-172.17.4.11 start on controller-2 -- * Pseudo action: galera-0_stop_0 -- * Resource action: rabbitmq notify on messaging-2 -- * Resource action: rabbitmq notify on messaging-0 -- * Pseudo action: rabbitmq_notified_0 -- * Pseudo action: rabbitmq_stop_0 -- * Pseudo action: rabbitmq-clone_stopped_0 -- * Pseudo action: galera_stop_0 -- * Pseudo action: galera-master_stopped_0 -+ * Pseudo action: messaging-1_stop_0 - * Pseudo action: redis_notified_0 - * Resource action: ip-172.17.1.14 monitor=10000 on controller-2 - * Resource action: ip-172.17.1.17 monitor=10000 on controller-2 - * Resource action: ip-172.17.4.11 monitor=10000 on controller-2 -- * Pseudo action: messaging-1_stop_0 -- * Pseudo action: galera-2_stop_0 - * Pseudo action: all_stopped - * Resource action: stonith-fence_ipmilan-525400bbf613 start on controller-0 - * Resource action: stonith-fence_ipmilan-525400bbf613 monitor=60000 on controller-0 -@@ -117,21 +116,21 @@ Using the original execution date of: 2017-05-03 13:33:24Z - Revised cluster status: - Online: [ controller-0 controller-2 ] - OFFLINE: [ controller-1 ] --RemoteOnline: [ galera-1 messaging-0 messaging-2 ] --RemoteOFFLINE: [ galera-0 galera-2 messaging-1 ] -+RemoteOnline: [ galera-0 galera-1 messaging-0 messaging-2 ] -+RemoteOFFLINE: [ galera-2 messaging-1 ] - - messaging-0 (ocf::pacemaker:remote): Started controller-0 - messaging-1 (ocf::pacemaker:remote): Stopped - messaging-2 (ocf::pacemaker:remote): Started controller-0 -- galera-0 (ocf::pacemaker:remote): Stopped -+ galera-0 (ocf::pacemaker:remote): Started controller-2 - galera-1 (ocf::pacemaker:remote): Started controller-0 - galera-2 (ocf::pacemaker:remote): Stopped - Clone Set: rabbitmq-clone [rabbitmq] - Started: [ messaging-0 messaging-2 ] - Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 messaging-1 ] - Master/Slave Set: galera-master [galera] -- Masters: [ galera-1 ] -- Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-2 messaging-0 messaging-1 messaging-2 ] -+ Masters: [ galera-0 galera-1 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-2 messaging-0 messaging-1 messaging-2 ] - Master/Slave Set: redis-master [redis] - Masters: [ controller-0 ] - Slaves: [ controller-2 ] -diff --git a/pengine/test10/remote-recover-all.xml b/pengine/test10/remote-recover-all.xml -index 24fa469..30d2451 100644 ---- a/pengine/test10/remote-recover-all.xml -+++ b/pengine/test10/remote-recover-all.xml -@@ -409,8 +409,6 @@ - - - -- -- - - - -diff --git a/pengine/test10/remote-recover-no-resources.dot b/pengine/test10/remote-recover-no-resources.dot -new file mode 100644 -index 0000000..1e16221 ---- /dev/null -+++ b/pengine/test10/remote-recover-no-resources.dot -@@ -0,0 +1,143 @@ -+digraph "g" { -+"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] -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"galera-0_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-0_start_0 controller-2" -> "galera-0_monitor_20000 controller-2" [ style = bold] -+"galera-0_start_0 controller-2" -> "galera_monitor_10000 galera-0" [ style = bold] -+"galera-0_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-0_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"galera-0_stop_0 controller-1" -> "galera-0_start_0 controller-2" [ style = bold] -+"galera-0_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"galera-2_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"galera-2_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"galera_monitor_10000 galera-0" [ style=bold color="green" fontcolor="black"] -+"haproxy-clone_stop_0" -> "haproxy-clone_stopped_0" [ style = bold] -+"haproxy-clone_stop_0" -> "haproxy_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-clone_stopped_0" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"haproxy_stop_0 controller-1" -> "haproxy-clone_stopped_0" [ style = bold] -+"haproxy_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.1.14_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.14_start_0 controller-2" -> "ip-172.17.1.14_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.1.14_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.14_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.1.14_stop_0 controller-1" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold] -+"ip-172.17.1.14_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.1.17_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.17_start_0 controller-2" -> "ip-172.17.1.17_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.1.17_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.17_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.1.17_stop_0 controller-1" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold] -+"ip-172.17.1.17_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.4.11_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.4.11_start_0 controller-2" -> "ip-172.17.4.11_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.4.11_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.4.11_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.4.11_stop_0 controller-1" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold] -+"ip-172.17.4.11_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"messaging-1_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"messaging-1_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-clone_stop_0" -> "rabbitmq-clone_stopped_0" [ style = bold] -+"rabbitmq-clone_stop_0" -> "rabbitmq_stop_0 messaging-1" [ style = bold] -+"rabbitmq-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_confirmed-post_notify_stonith_0" -> "all_stopped" [ style = bold] -+"rabbitmq_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_post_notify_stonith_0 messaging-0" -> "rabbitmq_confirmed-post_notify_stonith_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0 messaging-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_post_notify_stonith_0 messaging-2" -> "rabbitmq_confirmed-post_notify_stonith_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0 messaging-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_post_notify_stonith_0" -> "rabbitmq_confirmed-post_notify_stonith_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 messaging-0" [ style = bold] -+"rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 messaging-2" [ style = bold] -+"rabbitmq_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_stop_0 messaging-1" -> "all_stopped" [ style = bold] -+"rabbitmq_stop_0 messaging-1" -> "messaging-1_stop_0 controller-1" [ style = bold] -+"rabbitmq_stop_0 messaging-1" -> "rabbitmq-clone_stopped_0" [ style = bold] -+"rabbitmq_stop_0 messaging-1" [ style=bold color="green" fontcolor="orange"] -+"redis-master_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -+"redis-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_confirmed-pre_notify_stop_0" -> "redis-master_post_notify_stopped_0" [ style = bold] -+"redis-master_confirmed-pre_notify_stop_0" -> "redis-master_stop_0" [ style = bold] -+"redis-master_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_post_notify_stopped_0" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 controller-0" [ style = bold] -+"redis-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 controller-2" [ style = bold] -+"redis-master_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_pre_notify_stop_0" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 controller-0" [ style = bold] -+"redis-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 controller-2" [ style = bold] -+"redis-master_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_stop_0" -> "redis-master_stopped_0" [ style = bold] -+"redis-master_stop_0" -> "redis_stop_0 controller-1" [ style = bold] -+"redis-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_stopped_0" -> "redis-master_post_notify_stopped_0" [ style = bold] -+"redis-master_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis_confirmed-post_notify_stonith_0" -> "all_stopped" [ style = bold] -+"redis_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"redis_post_notify_stonith_0 controller-0" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_stonith_0 controller-2" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-2" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_stonith_0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 controller-0" [ style = bold] -+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 controller-2" [ style = bold] -+"redis_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"redis_pre_notify_stop_0 controller-0" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"redis_pre_notify_stop_0 controller-2" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"redis_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"redis_stop_0 controller-1" -> "redis-master_stopped_0" [ style = bold] -+"redis_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"stonith 'reboot' controller-1" -> "galera-0_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "galera-2_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "haproxy-clone_stop_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "haproxy_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "messaging-1_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis-master_stop_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis_post_notify_stonith_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "stonith 'reboot' messaging-1" [ style = bold] -+"stonith 'reboot' controller-1" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' messaging-1" -> "rabbitmq-clone_stop_0" [ style = bold] -+"stonith 'reboot' messaging-1" -> "rabbitmq_post_notify_stonith_0" [ style = bold] -+"stonith 'reboot' messaging-1" -> "rabbitmq_stop_0 messaging-1" [ style = bold] -+"stonith 'reboot' messaging-1" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' messaging-1" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_monitor_60000 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" -> "stonith-fence_ipmilan-5254005bdbb5_monitor_60000 controller-2" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" -> "stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"stonith-fence_ipmilan-525400b4f6bd_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" -> "stonith-fence_ipmilan-525400b4f6bd_monitor_60000 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_start_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_monitor_60000 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith_complete" -> "all_stopped" [ style = bold] -+"stonith_complete" -> "galera-0_start_0 controller-2" [ style = bold] -+"stonith_complete" -> "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" [ style=bold color="green" fontcolor="orange"] -+} -diff --git a/pengine/test10/remote-recover-no-resources.exp b/pengine/test10/remote-recover-no-resources.exp -new file mode 100644 -index 0000000..ba9b17b ---- /dev/null -+++ b/pengine/test10/remote-recover-no-resources.exp -@@ -0,0 +1,755 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/remote-recover-no-resources.scores b/pengine/test10/remote-recover-no-resources.scores -new file mode 100644 -index 0000000..e918fc6 ---- /dev/null -+++ b/pengine/test10/remote-recover-no-resources.scores -@@ -0,0 +1,848 @@ -+Allocation scores: -+Using the original execution date of: 2017-05-03 13:33:24Z -+clone_color: galera-master allocation score on controller-0: -INFINITY -+clone_color: galera-master allocation score on controller-1: -INFINITY -+clone_color: galera-master allocation score on controller-2: -INFINITY -+clone_color: galera-master allocation score on galera-0: 0 -+clone_color: galera-master allocation score on galera-1: 0 -+clone_color: galera-master allocation score on galera-2: 0 -+clone_color: galera-master allocation score on messaging-0: -INFINITY -+clone_color: galera-master allocation score on messaging-1: -INFINITY -+clone_color: galera-master allocation score on messaging-2: -INFINITY -+clone_color: galera:0 allocation score on controller-0: -INFINITY -+clone_color: galera:0 allocation score on controller-1: -INFINITY -+clone_color: galera:0 allocation score on controller-2: -INFINITY -+clone_color: galera:0 allocation score on galera-0: 0 -+clone_color: galera:0 allocation score on galera-1: INFINITY -+clone_color: galera:0 allocation score on galera-2: 0 -+clone_color: galera:0 allocation score on messaging-0: -INFINITY -+clone_color: galera:0 allocation score on messaging-1: -INFINITY -+clone_color: galera:0 allocation score on messaging-2: -INFINITY -+clone_color: galera:1 allocation score on controller-0: -INFINITY -+clone_color: galera:1 allocation score on controller-1: -INFINITY -+clone_color: galera:1 allocation score on controller-2: -INFINITY -+clone_color: galera:1 allocation score on galera-0: INFINITY -+clone_color: galera:1 allocation score on galera-1: 0 -+clone_color: galera:1 allocation score on galera-2: 0 -+clone_color: galera:1 allocation score on messaging-0: -INFINITY -+clone_color: galera:1 allocation score on messaging-1: -INFINITY -+clone_color: galera:1 allocation score on messaging-2: -INFINITY -+clone_color: galera:2 allocation score on controller-0: -INFINITY -+clone_color: galera:2 allocation score on controller-1: -INFINITY -+clone_color: galera:2 allocation score on controller-2: -INFINITY -+clone_color: galera:2 allocation score on galera-0: 0 -+clone_color: galera:2 allocation score on galera-1: 0 -+clone_color: galera:2 allocation score on galera-2: 0 -+clone_color: galera:2 allocation score on messaging-0: -INFINITY -+clone_color: galera:2 allocation score on messaging-1: -INFINITY -+clone_color: galera:2 allocation score on messaging-2: -INFINITY -+clone_color: galera:3 allocation score on controller-0: -INFINITY -+clone_color: galera:3 allocation score on controller-1: -INFINITY -+clone_color: galera:3 allocation score on controller-2: -INFINITY -+clone_color: galera:3 allocation score on galera-0: 0 -+clone_color: galera:3 allocation score on galera-1: 0 -+clone_color: galera:3 allocation score on galera-2: 0 -+clone_color: galera:3 allocation score on messaging-0: -INFINITY -+clone_color: galera:3 allocation score on messaging-1: -INFINITY -+clone_color: galera:3 allocation score on messaging-2: -INFINITY -+clone_color: galera:4 allocation score on controller-0: -INFINITY -+clone_color: galera:4 allocation score on controller-1: -INFINITY -+clone_color: galera:4 allocation score on controller-2: -INFINITY -+clone_color: galera:4 allocation score on galera-0: 0 -+clone_color: galera:4 allocation score on galera-1: 0 -+clone_color: galera:4 allocation score on galera-2: 0 -+clone_color: galera:4 allocation score on messaging-0: -INFINITY -+clone_color: galera:4 allocation score on messaging-1: -INFINITY -+clone_color: galera:4 allocation score on messaging-2: -INFINITY -+clone_color: galera:5 allocation score on controller-0: -INFINITY -+clone_color: galera:5 allocation score on controller-1: -INFINITY -+clone_color: galera:5 allocation score on controller-2: -INFINITY -+clone_color: galera:5 allocation score on galera-0: 0 -+clone_color: galera:5 allocation score on galera-1: 0 -+clone_color: galera:5 allocation score on galera-2: 0 -+clone_color: galera:5 allocation score on messaging-0: -INFINITY -+clone_color: galera:5 allocation score on messaging-1: -INFINITY -+clone_color: galera:5 allocation score on messaging-2: -INFINITY -+clone_color: galera:6 allocation score on controller-0: -INFINITY -+clone_color: galera:6 allocation score on controller-1: -INFINITY -+clone_color: galera:6 allocation score on controller-2: -INFINITY -+clone_color: galera:6 allocation score on galera-0: 0 -+clone_color: galera:6 allocation score on galera-1: 0 -+clone_color: galera:6 allocation score on galera-2: 0 -+clone_color: galera:6 allocation score on messaging-0: -INFINITY -+clone_color: galera:6 allocation score on messaging-1: -INFINITY -+clone_color: galera:6 allocation score on messaging-2: -INFINITY -+clone_color: galera:7 allocation score on controller-0: -INFINITY -+clone_color: galera:7 allocation score on controller-1: -INFINITY -+clone_color: galera:7 allocation score on controller-2: -INFINITY -+clone_color: galera:7 allocation score on galera-0: 0 -+clone_color: galera:7 allocation score on galera-1: 0 -+clone_color: galera:7 allocation score on galera-2: 0 -+clone_color: galera:7 allocation score on messaging-0: -INFINITY -+clone_color: galera:7 allocation score on messaging-1: -INFINITY -+clone_color: galera:7 allocation score on messaging-2: -INFINITY -+clone_color: galera:8 allocation score on controller-0: -INFINITY -+clone_color: galera:8 allocation score on controller-1: -INFINITY -+clone_color: galera:8 allocation score on controller-2: -INFINITY -+clone_color: galera:8 allocation score on galera-0: 0 -+clone_color: galera:8 allocation score on galera-1: 0 -+clone_color: galera:8 allocation score on galera-2: 0 -+clone_color: galera:8 allocation score on messaging-0: -INFINITY -+clone_color: galera:8 allocation score on messaging-1: -INFINITY -+clone_color: galera:8 allocation score on messaging-2: -INFINITY -+clone_color: haproxy-clone allocation score on controller-0: INFINITY -+clone_color: haproxy-clone allocation score on controller-1: 0 -+clone_color: haproxy-clone allocation score on controller-2: 0 -+clone_color: haproxy-clone allocation score on galera-0: -INFINITY -+clone_color: haproxy-clone allocation score on galera-1: -INFINITY -+clone_color: haproxy-clone allocation score on galera-2: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-0: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-1: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-2: -INFINITY -+clone_color: haproxy:0 allocation score on controller-0: 0 -+clone_color: haproxy:0 allocation score on controller-1: INFINITY -+clone_color: haproxy:0 allocation score on controller-2: 0 -+clone_color: haproxy:0 allocation score on galera-0: -INFINITY -+clone_color: haproxy:0 allocation score on galera-1: -INFINITY -+clone_color: haproxy:0 allocation score on galera-2: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:1 allocation score on controller-0: INFINITY -+clone_color: haproxy:1 allocation score on controller-1: 0 -+clone_color: haproxy:1 allocation score on controller-2: 0 -+clone_color: haproxy:1 allocation score on galera-0: -INFINITY -+clone_color: haproxy:1 allocation score on galera-1: -INFINITY -+clone_color: haproxy:1 allocation score on galera-2: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:2 allocation score on controller-0: 0 -+clone_color: haproxy:2 allocation score on controller-1: 0 -+clone_color: haproxy:2 allocation score on controller-2: INFINITY -+clone_color: haproxy:2 allocation score on galera-0: -INFINITY -+clone_color: haproxy:2 allocation score on galera-1: -INFINITY -+clone_color: haproxy:2 allocation score on galera-2: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:3 allocation score on controller-0: 0 -+clone_color: haproxy:3 allocation score on controller-1: 0 -+clone_color: haproxy:3 allocation score on controller-2: 0 -+clone_color: haproxy:3 allocation score on galera-0: -INFINITY -+clone_color: haproxy:3 allocation score on galera-1: -INFINITY -+clone_color: haproxy:3 allocation score on galera-2: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:4 allocation score on controller-0: 0 -+clone_color: haproxy:4 allocation score on controller-1: 0 -+clone_color: haproxy:4 allocation score on controller-2: 0 -+clone_color: haproxy:4 allocation score on galera-0: -INFINITY -+clone_color: haproxy:4 allocation score on galera-1: -INFINITY -+clone_color: haproxy:4 allocation score on galera-2: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:5 allocation score on controller-0: 0 -+clone_color: haproxy:5 allocation score on controller-1: 0 -+clone_color: haproxy:5 allocation score on controller-2: 0 -+clone_color: haproxy:5 allocation score on galera-0: -INFINITY -+clone_color: haproxy:5 allocation score on galera-1: -INFINITY -+clone_color: haproxy:5 allocation score on galera-2: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:6 allocation score on controller-0: 0 -+clone_color: haproxy:6 allocation score on controller-1: 0 -+clone_color: haproxy:6 allocation score on controller-2: 0 -+clone_color: haproxy:6 allocation score on galera-0: -INFINITY -+clone_color: haproxy:6 allocation score on galera-1: -INFINITY -+clone_color: haproxy:6 allocation score on galera-2: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:7 allocation score on controller-0: 0 -+clone_color: haproxy:7 allocation score on controller-1: 0 -+clone_color: haproxy:7 allocation score on controller-2: 0 -+clone_color: haproxy:7 allocation score on galera-0: -INFINITY -+clone_color: haproxy:7 allocation score on galera-1: -INFINITY -+clone_color: haproxy:7 allocation score on galera-2: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:8 allocation score on controller-0: 0 -+clone_color: haproxy:8 allocation score on controller-1: 0 -+clone_color: haproxy:8 allocation score on controller-2: 0 -+clone_color: haproxy:8 allocation score on galera-0: -INFINITY -+clone_color: haproxy:8 allocation score on galera-1: -INFINITY -+clone_color: haproxy:8 allocation score on galera-2: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-0: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-1: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-0: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-1: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on messaging-0: 0 -+clone_color: rabbitmq-clone allocation score on messaging-1: 0 -+clone_color: rabbitmq-clone allocation score on messaging-2: 0 -+clone_color: rabbitmq:0 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on messaging-0: 0 -+clone_color: rabbitmq:0 allocation score on messaging-1: 0 -+clone_color: rabbitmq:0 allocation score on messaging-2: INFINITY -+clone_color: rabbitmq:1 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on messaging-0: INFINITY -+clone_color: rabbitmq:1 allocation score on messaging-1: 0 -+clone_color: rabbitmq:1 allocation score on messaging-2: 0 -+clone_color: rabbitmq:2 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on messaging-0: 0 -+clone_color: rabbitmq:2 allocation score on messaging-1: INFINITY -+clone_color: rabbitmq:2 allocation score on messaging-2: 0 -+clone_color: rabbitmq:3 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:3 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:3 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:3 allocation score on messaging-0: 0 -+clone_color: rabbitmq:3 allocation score on messaging-1: 0 -+clone_color: rabbitmq:3 allocation score on messaging-2: 0 -+clone_color: rabbitmq:4 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:4 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:4 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:4 allocation score on messaging-0: 0 -+clone_color: rabbitmq:4 allocation score on messaging-1: 0 -+clone_color: rabbitmq:4 allocation score on messaging-2: 0 -+clone_color: rabbitmq:5 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:5 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:5 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:5 allocation score on messaging-0: 0 -+clone_color: rabbitmq:5 allocation score on messaging-1: 0 -+clone_color: rabbitmq:5 allocation score on messaging-2: 0 -+clone_color: rabbitmq:6 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:6 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:6 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:6 allocation score on messaging-0: 0 -+clone_color: rabbitmq:6 allocation score on messaging-1: 0 -+clone_color: rabbitmq:6 allocation score on messaging-2: 0 -+clone_color: rabbitmq:7 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:7 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:7 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:7 allocation score on messaging-0: 0 -+clone_color: rabbitmq:7 allocation score on messaging-1: 0 -+clone_color: rabbitmq:7 allocation score on messaging-2: 0 -+clone_color: rabbitmq:8 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:8 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:8 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:8 allocation score on messaging-0: 0 -+clone_color: rabbitmq:8 allocation score on messaging-1: 0 -+clone_color: rabbitmq:8 allocation score on messaging-2: 0 -+clone_color: redis-master allocation score on controller-0: 0 -+clone_color: redis-master allocation score on controller-1: 0 -+clone_color: redis-master allocation score on controller-2: 0 -+clone_color: redis-master allocation score on galera-0: -INFINITY -+clone_color: redis-master allocation score on galera-1: -INFINITY -+clone_color: redis-master allocation score on galera-2: -INFINITY -+clone_color: redis-master allocation score on messaging-0: -INFINITY -+clone_color: redis-master allocation score on messaging-1: -INFINITY -+clone_color: redis-master allocation score on messaging-2: -INFINITY -+clone_color: redis:0 allocation score on controller-0: 0 -+clone_color: redis:0 allocation score on controller-1: INFINITY -+clone_color: redis:0 allocation score on controller-2: 0 -+clone_color: redis:0 allocation score on galera-0: -INFINITY -+clone_color: redis:0 allocation score on galera-1: -INFINITY -+clone_color: redis:0 allocation score on galera-2: -INFINITY -+clone_color: redis:0 allocation score on messaging-0: -INFINITY -+clone_color: redis:0 allocation score on messaging-1: -INFINITY -+clone_color: redis:0 allocation score on messaging-2: -INFINITY -+clone_color: redis:1 allocation score on controller-0: INFINITY -+clone_color: redis:1 allocation score on controller-1: 0 -+clone_color: redis:1 allocation score on controller-2: 0 -+clone_color: redis:1 allocation score on galera-0: -INFINITY -+clone_color: redis:1 allocation score on galera-1: -INFINITY -+clone_color: redis:1 allocation score on galera-2: -INFINITY -+clone_color: redis:1 allocation score on messaging-0: -INFINITY -+clone_color: redis:1 allocation score on messaging-1: -INFINITY -+clone_color: redis:1 allocation score on messaging-2: -INFINITY -+clone_color: redis:2 allocation score on controller-0: 0 -+clone_color: redis:2 allocation score on controller-1: 0 -+clone_color: redis:2 allocation score on controller-2: INFINITY -+clone_color: redis:2 allocation score on galera-0: -INFINITY -+clone_color: redis:2 allocation score on galera-1: -INFINITY -+clone_color: redis:2 allocation score on galera-2: -INFINITY -+clone_color: redis:2 allocation score on messaging-0: -INFINITY -+clone_color: redis:2 allocation score on messaging-1: -INFINITY -+clone_color: redis:2 allocation score on messaging-2: -INFINITY -+clone_color: redis:3 allocation score on controller-0: 0 -+clone_color: redis:3 allocation score on controller-1: 0 -+clone_color: redis:3 allocation score on controller-2: 0 -+clone_color: redis:3 allocation score on galera-0: -INFINITY -+clone_color: redis:3 allocation score on galera-1: -INFINITY -+clone_color: redis:3 allocation score on galera-2: -INFINITY -+clone_color: redis:3 allocation score on messaging-0: -INFINITY -+clone_color: redis:3 allocation score on messaging-1: -INFINITY -+clone_color: redis:3 allocation score on messaging-2: -INFINITY -+clone_color: redis:4 allocation score on controller-0: 0 -+clone_color: redis:4 allocation score on controller-1: 0 -+clone_color: redis:4 allocation score on controller-2: 0 -+clone_color: redis:4 allocation score on galera-0: -INFINITY -+clone_color: redis:4 allocation score on galera-1: -INFINITY -+clone_color: redis:4 allocation score on galera-2: -INFINITY -+clone_color: redis:4 allocation score on messaging-0: -INFINITY -+clone_color: redis:4 allocation score on messaging-1: -INFINITY -+clone_color: redis:4 allocation score on messaging-2: -INFINITY -+clone_color: redis:5 allocation score on controller-0: 0 -+clone_color: redis:5 allocation score on controller-1: 0 -+clone_color: redis:5 allocation score on controller-2: 0 -+clone_color: redis:5 allocation score on galera-0: -INFINITY -+clone_color: redis:5 allocation score on galera-1: -INFINITY -+clone_color: redis:5 allocation score on galera-2: -INFINITY -+clone_color: redis:5 allocation score on messaging-0: -INFINITY -+clone_color: redis:5 allocation score on messaging-1: -INFINITY -+clone_color: redis:5 allocation score on messaging-2: -INFINITY -+clone_color: redis:6 allocation score on controller-0: 0 -+clone_color: redis:6 allocation score on controller-1: 0 -+clone_color: redis:6 allocation score on controller-2: 0 -+clone_color: redis:6 allocation score on galera-0: -INFINITY -+clone_color: redis:6 allocation score on galera-1: -INFINITY -+clone_color: redis:6 allocation score on galera-2: -INFINITY -+clone_color: redis:6 allocation score on messaging-0: -INFINITY -+clone_color: redis:6 allocation score on messaging-1: -INFINITY -+clone_color: redis:6 allocation score on messaging-2: -INFINITY -+clone_color: redis:7 allocation score on controller-0: 0 -+clone_color: redis:7 allocation score on controller-1: 0 -+clone_color: redis:7 allocation score on controller-2: 0 -+clone_color: redis:7 allocation score on galera-0: -INFINITY -+clone_color: redis:7 allocation score on galera-1: -INFINITY -+clone_color: redis:7 allocation score on galera-2: -INFINITY -+clone_color: redis:7 allocation score on messaging-0: -INFINITY -+clone_color: redis:7 allocation score on messaging-1: -INFINITY -+clone_color: redis:7 allocation score on messaging-2: -INFINITY -+clone_color: redis:8 allocation score on controller-0: 0 -+clone_color: redis:8 allocation score on controller-1: 0 -+clone_color: redis:8 allocation score on controller-2: 0 -+clone_color: redis:8 allocation score on galera-0: -INFINITY -+clone_color: redis:8 allocation score on galera-1: -INFINITY -+clone_color: redis:8 allocation score on galera-2: -INFINITY -+clone_color: redis:8 allocation score on messaging-0: -INFINITY -+clone_color: redis:8 allocation score on messaging-1: -INFINITY -+clone_color: redis:8 allocation score on messaging-2: -INFINITY -+galera:0 promotion score on galera-1: 100 -+galera:1 promotion score on galera-0: 100 -+galera:2 promotion score on none: 0 -+galera:3 promotion score on none: 0 -+galera:4 promotion score on none: 0 -+galera:5 promotion score on none: 0 -+galera:6 promotion score on none: 0 -+galera:7 promotion score on none: 0 -+galera:8 promotion score on none: 0 -+native_color: galera-0 allocation score on controller-0: 0 -+native_color: galera-0 allocation score on controller-1: INFINITY -+native_color: galera-0 allocation score on controller-2: 0 -+native_color: galera-0 allocation score on galera-0: -INFINITY -+native_color: galera-0 allocation score on galera-1: -INFINITY -+native_color: galera-0 allocation score on galera-2: -INFINITY -+native_color: galera-0 allocation score on messaging-0: -INFINITY -+native_color: galera-0 allocation score on messaging-1: -INFINITY -+native_color: galera-0 allocation score on messaging-2: -INFINITY -+native_color: galera-1 allocation score on controller-0: INFINITY -+native_color: galera-1 allocation score on controller-1: 0 -+native_color: galera-1 allocation score on controller-2: 0 -+native_color: galera-1 allocation score on galera-0: -INFINITY -+native_color: galera-1 allocation score on galera-1: -INFINITY -+native_color: galera-1 allocation score on galera-2: -INFINITY -+native_color: galera-1 allocation score on messaging-0: -INFINITY -+native_color: galera-1 allocation score on messaging-1: -INFINITY -+native_color: galera-1 allocation score on messaging-2: -INFINITY -+native_color: galera-2 allocation score on controller-0: -INFINITY -+native_color: galera-2 allocation score on controller-1: INFINITY -+native_color: galera-2 allocation score on controller-2: -INFINITY -+native_color: galera-2 allocation score on galera-0: -INFINITY -+native_color: galera-2 allocation score on galera-1: -INFINITY -+native_color: galera-2 allocation score on galera-2: -INFINITY -+native_color: galera-2 allocation score on messaging-0: -INFINITY -+native_color: galera-2 allocation score on messaging-1: -INFINITY -+native_color: galera-2 allocation score on messaging-2: -INFINITY -+native_color: galera:0 allocation score on controller-0: -INFINITY -+native_color: galera:0 allocation score on controller-1: -INFINITY -+native_color: galera:0 allocation score on controller-2: -INFINITY -+native_color: galera:0 allocation score on galera-0: 0 -+native_color: galera:0 allocation score on galera-1: INFINITY -+native_color: galera:0 allocation score on galera-2: -INFINITY -+native_color: galera:0 allocation score on messaging-0: -INFINITY -+native_color: galera:0 allocation score on messaging-1: -INFINITY -+native_color: galera:0 allocation score on messaging-2: -INFINITY -+native_color: galera:1 allocation score on controller-0: -INFINITY -+native_color: galera:1 allocation score on controller-1: -INFINITY -+native_color: galera:1 allocation score on controller-2: -INFINITY -+native_color: galera:1 allocation score on galera-0: INFINITY -+native_color: galera:1 allocation score on galera-1: -INFINITY -+native_color: galera:1 allocation score on galera-2: -INFINITY -+native_color: galera:1 allocation score on messaging-0: -INFINITY -+native_color: galera:1 allocation score on messaging-1: -INFINITY -+native_color: galera:1 allocation score on messaging-2: -INFINITY -+native_color: galera:2 allocation score on controller-0: -INFINITY -+native_color: galera:2 allocation score on controller-1: -INFINITY -+native_color: galera:2 allocation score on controller-2: -INFINITY -+native_color: galera:2 allocation score on galera-0: -INFINITY -+native_color: galera:2 allocation score on galera-1: -INFINITY -+native_color: galera:2 allocation score on galera-2: -INFINITY -+native_color: galera:2 allocation score on messaging-0: -INFINITY -+native_color: galera:2 allocation score on messaging-1: -INFINITY -+native_color: galera:2 allocation score on messaging-2: -INFINITY -+native_color: galera:3 allocation score on controller-0: -INFINITY -+native_color: galera:3 allocation score on controller-1: -INFINITY -+native_color: galera:3 allocation score on controller-2: -INFINITY -+native_color: galera:3 allocation score on galera-0: -INFINITY -+native_color: galera:3 allocation score on galera-1: -INFINITY -+native_color: galera:3 allocation score on galera-2: -INFINITY -+native_color: galera:3 allocation score on messaging-0: -INFINITY -+native_color: galera:3 allocation score on messaging-1: -INFINITY -+native_color: galera:3 allocation score on messaging-2: -INFINITY -+native_color: galera:4 allocation score on controller-0: -INFINITY -+native_color: galera:4 allocation score on controller-1: -INFINITY -+native_color: galera:4 allocation score on controller-2: -INFINITY -+native_color: galera:4 allocation score on galera-0: -INFINITY -+native_color: galera:4 allocation score on galera-1: -INFINITY -+native_color: galera:4 allocation score on galera-2: -INFINITY -+native_color: galera:4 allocation score on messaging-0: -INFINITY -+native_color: galera:4 allocation score on messaging-1: -INFINITY -+native_color: galera:4 allocation score on messaging-2: -INFINITY -+native_color: galera:5 allocation score on controller-0: -INFINITY -+native_color: galera:5 allocation score on controller-1: -INFINITY -+native_color: galera:5 allocation score on controller-2: -INFINITY -+native_color: galera:5 allocation score on galera-0: -INFINITY -+native_color: galera:5 allocation score on galera-1: -INFINITY -+native_color: galera:5 allocation score on galera-2: -INFINITY -+native_color: galera:5 allocation score on messaging-0: -INFINITY -+native_color: galera:5 allocation score on messaging-1: -INFINITY -+native_color: galera:5 allocation score on messaging-2: -INFINITY -+native_color: galera:6 allocation score on controller-0: -INFINITY -+native_color: galera:6 allocation score on controller-1: -INFINITY -+native_color: galera:6 allocation score on controller-2: -INFINITY -+native_color: galera:6 allocation score on galera-0: -INFINITY -+native_color: galera:6 allocation score on galera-1: -INFINITY -+native_color: galera:6 allocation score on galera-2: -INFINITY -+native_color: galera:6 allocation score on messaging-0: -INFINITY -+native_color: galera:6 allocation score on messaging-1: -INFINITY -+native_color: galera:6 allocation score on messaging-2: -INFINITY -+native_color: galera:7 allocation score on controller-0: -INFINITY -+native_color: galera:7 allocation score on controller-1: -INFINITY -+native_color: galera:7 allocation score on controller-2: -INFINITY -+native_color: galera:7 allocation score on galera-0: -INFINITY -+native_color: galera:7 allocation score on galera-1: -INFINITY -+native_color: galera:7 allocation score on galera-2: -INFINITY -+native_color: galera:7 allocation score on messaging-0: -INFINITY -+native_color: galera:7 allocation score on messaging-1: -INFINITY -+native_color: galera:7 allocation score on messaging-2: -INFINITY -+native_color: galera:8 allocation score on controller-0: -INFINITY -+native_color: galera:8 allocation score on controller-1: -INFINITY -+native_color: galera:8 allocation score on controller-2: -INFINITY -+native_color: galera:8 allocation score on galera-0: -INFINITY -+native_color: galera:8 allocation score on galera-1: -INFINITY -+native_color: galera:8 allocation score on galera-2: -INFINITY -+native_color: galera:8 allocation score on messaging-0: -INFINITY -+native_color: galera:8 allocation score on messaging-1: -INFINITY -+native_color: galera:8 allocation score on messaging-2: -INFINITY -+native_color: haproxy:0 allocation score on controller-0: -INFINITY -+native_color: haproxy:0 allocation score on controller-1: -INFINITY -+native_color: haproxy:0 allocation score on controller-2: -INFINITY -+native_color: haproxy:0 allocation score on galera-0: -INFINITY -+native_color: haproxy:0 allocation score on galera-1: -INFINITY -+native_color: haproxy:0 allocation score on galera-2: -INFINITY -+native_color: haproxy:0 allocation score on messaging-0: -INFINITY -+native_color: haproxy:0 allocation score on messaging-1: -INFINITY -+native_color: haproxy:0 allocation score on messaging-2: -INFINITY -+native_color: haproxy:1 allocation score on controller-0: INFINITY -+native_color: haproxy:1 allocation score on controller-1: -INFINITY -+native_color: haproxy:1 allocation score on controller-2: 0 -+native_color: haproxy:1 allocation score on galera-0: -INFINITY -+native_color: haproxy:1 allocation score on galera-1: -INFINITY -+native_color: haproxy:1 allocation score on galera-2: -INFINITY -+native_color: haproxy:1 allocation score on messaging-0: -INFINITY -+native_color: haproxy:1 allocation score on messaging-1: -INFINITY -+native_color: haproxy:1 allocation score on messaging-2: -INFINITY -+native_color: haproxy:2 allocation score on controller-0: -INFINITY -+native_color: haproxy:2 allocation score on controller-1: -INFINITY -+native_color: haproxy:2 allocation score on controller-2: INFINITY -+native_color: haproxy:2 allocation score on galera-0: -INFINITY -+native_color: haproxy:2 allocation score on galera-1: -INFINITY -+native_color: haproxy:2 allocation score on galera-2: -INFINITY -+native_color: haproxy:2 allocation score on messaging-0: -INFINITY -+native_color: haproxy:2 allocation score on messaging-1: -INFINITY -+native_color: haproxy:2 allocation score on messaging-2: -INFINITY -+native_color: haproxy:3 allocation score on controller-0: -INFINITY -+native_color: haproxy:3 allocation score on controller-1: -INFINITY -+native_color: haproxy:3 allocation score on controller-2: -INFINITY -+native_color: haproxy:3 allocation score on galera-0: -INFINITY -+native_color: haproxy:3 allocation score on galera-1: -INFINITY -+native_color: haproxy:3 allocation score on galera-2: -INFINITY -+native_color: haproxy:3 allocation score on messaging-0: -INFINITY -+native_color: haproxy:3 allocation score on messaging-1: -INFINITY -+native_color: haproxy:3 allocation score on messaging-2: -INFINITY -+native_color: haproxy:4 allocation score on controller-0: -INFINITY -+native_color: haproxy:4 allocation score on controller-1: -INFINITY -+native_color: haproxy:4 allocation score on controller-2: -INFINITY -+native_color: haproxy:4 allocation score on galera-0: -INFINITY -+native_color: haproxy:4 allocation score on galera-1: -INFINITY -+native_color: haproxy:4 allocation score on galera-2: -INFINITY -+native_color: haproxy:4 allocation score on messaging-0: -INFINITY -+native_color: haproxy:4 allocation score on messaging-1: -INFINITY -+native_color: haproxy:4 allocation score on messaging-2: -INFINITY -+native_color: haproxy:5 allocation score on controller-0: -INFINITY -+native_color: haproxy:5 allocation score on controller-1: -INFINITY -+native_color: haproxy:5 allocation score on controller-2: -INFINITY -+native_color: haproxy:5 allocation score on galera-0: -INFINITY -+native_color: haproxy:5 allocation score on galera-1: -INFINITY -+native_color: haproxy:5 allocation score on galera-2: -INFINITY -+native_color: haproxy:5 allocation score on messaging-0: -INFINITY -+native_color: haproxy:5 allocation score on messaging-1: -INFINITY -+native_color: haproxy:5 allocation score on messaging-2: -INFINITY -+native_color: haproxy:6 allocation score on controller-0: -INFINITY -+native_color: haproxy:6 allocation score on controller-1: -INFINITY -+native_color: haproxy:6 allocation score on controller-2: -INFINITY -+native_color: haproxy:6 allocation score on galera-0: -INFINITY -+native_color: haproxy:6 allocation score on galera-1: -INFINITY -+native_color: haproxy:6 allocation score on galera-2: -INFINITY -+native_color: haproxy:6 allocation score on messaging-0: -INFINITY -+native_color: haproxy:6 allocation score on messaging-1: -INFINITY -+native_color: haproxy:6 allocation score on messaging-2: -INFINITY -+native_color: haproxy:7 allocation score on controller-0: -INFINITY -+native_color: haproxy:7 allocation score on controller-1: -INFINITY -+native_color: haproxy:7 allocation score on controller-2: -INFINITY -+native_color: haproxy:7 allocation score on galera-0: -INFINITY -+native_color: haproxy:7 allocation score on galera-1: -INFINITY -+native_color: haproxy:7 allocation score on galera-2: -INFINITY -+native_color: haproxy:7 allocation score on messaging-0: -INFINITY -+native_color: haproxy:7 allocation score on messaging-1: -INFINITY -+native_color: haproxy:7 allocation score on messaging-2: -INFINITY -+native_color: haproxy:8 allocation score on controller-0: -INFINITY -+native_color: haproxy:8 allocation score on controller-1: -INFINITY -+native_color: haproxy:8 allocation score on controller-2: -INFINITY -+native_color: haproxy:8 allocation score on galera-0: -INFINITY -+native_color: haproxy:8 allocation score on galera-1: -INFINITY -+native_color: haproxy:8 allocation score on galera-2: -INFINITY -+native_color: haproxy:8 allocation score on messaging-0: -INFINITY -+native_color: haproxy:8 allocation score on messaging-1: -INFINITY -+native_color: haproxy:8 allocation score on messaging-2: -INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-0: INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-2: 0 -+native_color: ip-10.0.0.102 allocation score on galera-0: -INFINITY -+native_color: ip-10.0.0.102 allocation score on galera-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on galera-2: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-0: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-0: 0 -+native_color: ip-172.17.1.14 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-2: 0 -+native_color: ip-172.17.1.14 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.1.17 allocation score on controller-0: 0 -+native_color: ip-172.17.1.17 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on controller-2: 0 -+native_color: ip-172.17.1.17 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.1.17 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-0: INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-2: 0 -+native_color: ip-172.17.3.15 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.3.15 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on controller-0: 0 -+native_color: ip-172.17.4.11 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on controller-2: 0 -+native_color: ip-172.17.4.11 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-2: -INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-0: INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-2: 0 -+native_color: ip-192.168.24.6 allocation score on galera-0: -INFINITY -+native_color: ip-192.168.24.6 allocation score on galera-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on galera-2: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-0: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-2: -INFINITY -+native_color: messaging-0 allocation score on controller-0: INFINITY -+native_color: messaging-0 allocation score on controller-1: 0 -+native_color: messaging-0 allocation score on controller-2: 0 -+native_color: messaging-0 allocation score on galera-0: -INFINITY -+native_color: messaging-0 allocation score on galera-1: -INFINITY -+native_color: messaging-0 allocation score on galera-2: -INFINITY -+native_color: messaging-0 allocation score on messaging-0: -INFINITY -+native_color: messaging-0 allocation score on messaging-1: -INFINITY -+native_color: messaging-0 allocation score on messaging-2: -INFINITY -+native_color: messaging-1 allocation score on controller-0: -INFINITY -+native_color: messaging-1 allocation score on controller-1: INFINITY -+native_color: messaging-1 allocation score on controller-2: -INFINITY -+native_color: messaging-1 allocation score on galera-0: -INFINITY -+native_color: messaging-1 allocation score on galera-1: -INFINITY -+native_color: messaging-1 allocation score on galera-2: -INFINITY -+native_color: messaging-1 allocation score on messaging-0: -INFINITY -+native_color: messaging-1 allocation score on messaging-1: -INFINITY -+native_color: messaging-1 allocation score on messaging-2: -INFINITY -+native_color: messaging-2 allocation score on controller-0: INFINITY -+native_color: messaging-2 allocation score on controller-1: 0 -+native_color: messaging-2 allocation score on controller-2: 0 -+native_color: messaging-2 allocation score on galera-0: -INFINITY -+native_color: messaging-2 allocation score on galera-1: -INFINITY -+native_color: messaging-2 allocation score on galera-2: -INFINITY -+native_color: messaging-2 allocation score on messaging-0: -INFINITY -+native_color: messaging-2 allocation score on messaging-1: -INFINITY -+native_color: messaging-2 allocation score on messaging-2: -INFINITY -+native_color: openstack-cinder-volume allocation score on controller-0: INFINITY -+native_color: openstack-cinder-volume allocation score on controller-1: 0 -+native_color: openstack-cinder-volume allocation score on controller-2: 0 -+native_color: openstack-cinder-volume allocation score on galera-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on galera-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on galera-2: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:0 allocation score on messaging-0: 0 -+native_color: rabbitmq:0 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:0 allocation score on messaging-2: INFINITY -+native_color: rabbitmq:1 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:1 allocation score on messaging-0: INFINITY -+native_color: rabbitmq:1 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:1 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-2: -INFINITY -+native_color: redis:0 allocation score on controller-0: -INFINITY -+native_color: redis:0 allocation score on controller-1: -INFINITY -+native_color: redis:0 allocation score on controller-2: -INFINITY -+native_color: redis:0 allocation score on galera-0: -INFINITY -+native_color: redis:0 allocation score on galera-1: -INFINITY -+native_color: redis:0 allocation score on galera-2: -INFINITY -+native_color: redis:0 allocation score on messaging-0: -INFINITY -+native_color: redis:0 allocation score on messaging-1: -INFINITY -+native_color: redis:0 allocation score on messaging-2: -INFINITY -+native_color: redis:1 allocation score on controller-0: INFINITY -+native_color: redis:1 allocation score on controller-1: -INFINITY -+native_color: redis:1 allocation score on controller-2: 0 -+native_color: redis:1 allocation score on galera-0: -INFINITY -+native_color: redis:1 allocation score on galera-1: -INFINITY -+native_color: redis:1 allocation score on galera-2: -INFINITY -+native_color: redis:1 allocation score on messaging-0: -INFINITY -+native_color: redis:1 allocation score on messaging-1: -INFINITY -+native_color: redis:1 allocation score on messaging-2: -INFINITY -+native_color: redis:2 allocation score on controller-0: -INFINITY -+native_color: redis:2 allocation score on controller-1: -INFINITY -+native_color: redis:2 allocation score on controller-2: INFINITY -+native_color: redis:2 allocation score on galera-0: -INFINITY -+native_color: redis:2 allocation score on galera-1: -INFINITY -+native_color: redis:2 allocation score on galera-2: -INFINITY -+native_color: redis:2 allocation score on messaging-0: -INFINITY -+native_color: redis:2 allocation score on messaging-1: -INFINITY -+native_color: redis:2 allocation score on messaging-2: -INFINITY -+native_color: redis:3 allocation score on controller-0: -INFINITY -+native_color: redis:3 allocation score on controller-1: -INFINITY -+native_color: redis:3 allocation score on controller-2: -INFINITY -+native_color: redis:3 allocation score on galera-0: -INFINITY -+native_color: redis:3 allocation score on galera-1: -INFINITY -+native_color: redis:3 allocation score on galera-2: -INFINITY -+native_color: redis:3 allocation score on messaging-0: -INFINITY -+native_color: redis:3 allocation score on messaging-1: -INFINITY -+native_color: redis:3 allocation score on messaging-2: -INFINITY -+native_color: redis:4 allocation score on controller-0: -INFINITY -+native_color: redis:4 allocation score on controller-1: -INFINITY -+native_color: redis:4 allocation score on controller-2: -INFINITY -+native_color: redis:4 allocation score on galera-0: -INFINITY -+native_color: redis:4 allocation score on galera-1: -INFINITY -+native_color: redis:4 allocation score on galera-2: -INFINITY -+native_color: redis:4 allocation score on messaging-0: -INFINITY -+native_color: redis:4 allocation score on messaging-1: -INFINITY -+native_color: redis:4 allocation score on messaging-2: -INFINITY -+native_color: redis:5 allocation score on controller-0: -INFINITY -+native_color: redis:5 allocation score on controller-1: -INFINITY -+native_color: redis:5 allocation score on controller-2: -INFINITY -+native_color: redis:5 allocation score on galera-0: -INFINITY -+native_color: redis:5 allocation score on galera-1: -INFINITY -+native_color: redis:5 allocation score on galera-2: -INFINITY -+native_color: redis:5 allocation score on messaging-0: -INFINITY -+native_color: redis:5 allocation score on messaging-1: -INFINITY -+native_color: redis:5 allocation score on messaging-2: -INFINITY -+native_color: redis:6 allocation score on controller-0: -INFINITY -+native_color: redis:6 allocation score on controller-1: -INFINITY -+native_color: redis:6 allocation score on controller-2: -INFINITY -+native_color: redis:6 allocation score on galera-0: -INFINITY -+native_color: redis:6 allocation score on galera-1: -INFINITY -+native_color: redis:6 allocation score on galera-2: -INFINITY -+native_color: redis:6 allocation score on messaging-0: -INFINITY -+native_color: redis:6 allocation score on messaging-1: -INFINITY -+native_color: redis:6 allocation score on messaging-2: -INFINITY -+native_color: redis:7 allocation score on controller-0: -INFINITY -+native_color: redis:7 allocation score on controller-1: -INFINITY -+native_color: redis:7 allocation score on controller-2: -INFINITY -+native_color: redis:7 allocation score on galera-0: -INFINITY -+native_color: redis:7 allocation score on galera-1: -INFINITY -+native_color: redis:7 allocation score on galera-2: -INFINITY -+native_color: redis:7 allocation score on messaging-0: -INFINITY -+native_color: redis:7 allocation score on messaging-1: -INFINITY -+native_color: redis:7 allocation score on messaging-2: -INFINITY -+native_color: redis:8 allocation score on controller-0: -INFINITY -+native_color: redis:8 allocation score on controller-1: -INFINITY -+native_color: redis:8 allocation score on controller-2: -INFINITY -+native_color: redis:8 allocation score on galera-0: -INFINITY -+native_color: redis:8 allocation score on galera-1: -INFINITY -+native_color: redis:8 allocation score on galera-2: -INFINITY -+native_color: redis:8 allocation score on messaging-0: -INFINITY -+native_color: redis:8 allocation score on messaging-1: -INFINITY -+native_color: redis:8 allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-1: INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-0: INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-0: INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-1: 0 -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-2: -INFINITY -+redis:0 promotion score on none: 0 -+redis:1 promotion score on controller-0: 1 -+redis:2 promotion score on controller-2: 1 -+redis:3 promotion score on none: 0 -+redis:4 promotion score on none: 0 -+redis:5 promotion score on none: 0 -+redis:6 promotion score on none: 0 -+redis:7 promotion score on none: 0 -+redis:8 promotion score on none: 0 -diff --git a/pengine/test10/remote-recover-no-resources.summary b/pengine/test10/remote-recover-no-resources.summary -new file mode 100644 -index 0000000..8bfeb43 ---- /dev/null -+++ b/pengine/test10/remote-recover-no-resources.summary -@@ -0,0 +1,143 @@ -+Using the original execution date of: 2017-05-03 13:33:24Z -+ -+Current cluster status: -+Node controller-1 (2): UNCLEAN (offline) -+Online: [ controller-0 controller-2 ] -+RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ -+ messaging-0 (ocf::pacemaker:remote): Started controller-0 -+ messaging-1 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ messaging-2 (ocf::pacemaker:remote): Started controller-0 -+ galera-0 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ galera-1 (ocf::pacemaker:remote): Started controller-0 -+ galera-2 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ Clone Set: rabbitmq-clone [rabbitmq] -+ Started: [ messaging-0 messaging-1 messaging-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 ] -+ Master/Slave Set: galera-master [galera] -+ Masters: [ galera-0 galera-1 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-2 messaging-0 messaging-1 messaging-2 ] -+ Master/Slave Set: redis-master [redis] -+ redis (ocf::heartbeat:redis): Slave controller-1 (UNCLEAN) -+ Masters: [ controller-0 ] -+ Slaves: [ controller-2 ] -+ Stopped: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ ip-192.168.24.6 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-10.0.0.102 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ ip-172.17.1.17 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ ip-172.17.3.15 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.4.11 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ Clone Set: haproxy-clone [haproxy] -+ haproxy (systemd:haproxy): Started controller-1 (UNCLEAN) -+ Started: [ controller-0 controller-2 ] -+ Stopped: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-0 -+ stonith-fence_ipmilan-525400bbf613 (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) -+ -+Transition Summary: -+ * Stop messaging-1 (controller-1) -+ * Move galera-0 (Started controller-1 -> controller-2) -+ * Stop galera-2 (controller-1) -+ * Stop rabbitmq:2 (messaging-1) -+ * Stop redis:0 (controller-1) -+ * Move ip-172.17.1.14 (Started controller-1 -> controller-2) -+ * Move ip-172.17.1.17 (Started controller-1 -> controller-2) -+ * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -+ * Stop haproxy:0 (controller-1) -+ * Restart stonith-fence_ipmilan-525400bbf613 (Started controller-0) -+ * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) -+ * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -+ -+Executing cluster transition: -+ * Pseudo action: 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 -+ * Resource action: redis notify on controller-2 -+ * Pseudo action: redis-master_confirmed-pre_notify_stop_0 -+ * Pseudo action: redis-master_stop_0 -+ * Pseudo action: haproxy-clone_stop_0 -+ * 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 -+ * Pseudo action: rabbitmq_stop_0 -+ * Pseudo action: rabbitmq-clone_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 -+ * Pseudo action: messaging-1_stop_0 -+ * Resource action: redis notify on controller-0 -+ * Resource action: redis notify on controller-2 -+ * Pseudo action: redis-master_confirmed-post_notify_stopped_0 -+ * Resource action: ip-172.17.1.14 start on controller-2 -+ * Resource action: ip-172.17.1.17 start on controller-2 -+ * Resource action: ip-172.17.4.11 start on controller-2 -+ * Pseudo action: redis_notified_0 -+ * Resource action: ip-172.17.1.14 monitor=10000 on controller-2 -+ * Resource action: ip-172.17.1.17 monitor=10000 on controller-2 -+ * Resource action: ip-172.17.4.11 monitor=10000 on controller-2 -+ * Pseudo action: all_stopped -+ * Resource action: 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: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2 -+Using the original execution date of: 2017-05-03 13:33:24Z -+ -+Revised cluster status: -+Online: [ controller-0 controller-2 ] -+OFFLINE: [ controller-1 ] -+RemoteOnline: [ galera-0 galera-1 messaging-0 messaging-2 ] -+RemoteOFFLINE: [ galera-2 messaging-1 ] -+ -+ messaging-0 (ocf::pacemaker:remote): Started controller-0 -+ messaging-1 (ocf::pacemaker:remote): Stopped -+ messaging-2 (ocf::pacemaker:remote): Started controller-0 -+ galera-0 (ocf::pacemaker:remote): Started controller-2 -+ galera-1 (ocf::pacemaker:remote): Started controller-0 -+ galera-2 (ocf::pacemaker:remote): Stopped -+ Clone Set: rabbitmq-clone [rabbitmq] -+ Started: [ messaging-0 messaging-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 messaging-1 ] -+ Master/Slave Set: galera-master [galera] -+ Masters: [ galera-0 galera-1 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-2 messaging-0 messaging-1 messaging-2 ] -+ Master/Slave Set: redis-master [redis] -+ Masters: [ controller-0 ] -+ Slaves: [ controller-2 ] -+ Stopped: [ controller-1 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ ip-192.168.24.6 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-10.0.0.102 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.1.17 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.3.15 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.4.11 (ocf::heartbeat:IPaddr2): Started controller-2 -+ Clone Set: haproxy-clone [haproxy] -+ Started: [ controller-0 controller-2 ] -+ Stopped: [ controller-1 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-0 -+ stonith-fence_ipmilan-525400bbf613 (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-2 -+ -diff --git a/pengine/test10/remote-recover-no-resources.xml b/pengine/test10/remote-recover-no-resources.xml -new file mode 100644 -index 0000000..d2fa0df ---- /dev/null -+++ b/pengine/test10/remote-recover-no-resources.xml -@@ -0,0 +1,741 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/remote-recover-unknown.dot b/pengine/test10/remote-recover-unknown.dot -new file mode 100644 -index 0000000..a8b4e18 ---- /dev/null -+++ b/pengine/test10/remote-recover-unknown.dot -@@ -0,0 +1,146 @@ -+digraph "g" { -+"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] -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"galera-0_monitor_20000 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-0_start_0 controller-2" -> "galera-0_monitor_20000 controller-2" [ style = bold] -+"galera-0_start_0 controller-2" -> "galera_monitor_10000 galera-0" [ style = bold] -+"galera-0_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-0_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"galera-0_stop_0 controller-1" -> "galera-0_start_0 controller-2" [ style = bold] -+"galera-0_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"galera-2_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"galera-2_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"galera_monitor_0 galera-2" [ style=dashed color="red" fontcolor="black"] -+"galera_monitor_10000 galera-0" [ style=bold color="green" fontcolor="black"] -+"haproxy-clone_stop_0" -> "haproxy-clone_stopped_0" [ style = bold] -+"haproxy-clone_stop_0" -> "haproxy_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-clone_stopped_0" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold] -+"haproxy-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"haproxy_stop_0 controller-1" -> "haproxy-clone_stopped_0" [ style = bold] -+"haproxy_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.1.14_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.14_start_0 controller-2" -> "ip-172.17.1.14_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.1.14_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.14_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.1.14_stop_0 controller-1" -> "ip-172.17.1.14_start_0 controller-2" [ style = bold] -+"ip-172.17.1.14_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.1.17_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.17_start_0 controller-2" -> "ip-172.17.1.17_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.1.17_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.1.17_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.1.17_stop_0 controller-1" -> "ip-172.17.1.17_start_0 controller-2" [ style = bold] -+"ip-172.17.1.17_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.4.11_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.4.11_start_0 controller-2" -> "ip-172.17.4.11_monitor_10000 controller-2" [ style = bold] -+"ip-172.17.4.11_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.4.11_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"ip-172.17.4.11_stop_0 controller-1" -> "ip-172.17.4.11_start_0 controller-2" [ style = bold] -+"ip-172.17.4.11_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"messaging-1_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"messaging-1_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-clone_stop_0" -> "rabbitmq-clone_stopped_0" [ style = bold] -+"rabbitmq-clone_stop_0" -> "rabbitmq_stop_0 messaging-1" [ style = bold] -+"rabbitmq-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_confirmed-post_notify_stonith_0" -> "all_stopped" [ style = bold] -+"rabbitmq_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_post_notify_stonith_0 messaging-0" -> "rabbitmq_confirmed-post_notify_stonith_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0 messaging-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_post_notify_stonith_0 messaging-2" -> "rabbitmq_confirmed-post_notify_stonith_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0 messaging-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_post_notify_stonith_0" -> "rabbitmq_confirmed-post_notify_stonith_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 messaging-0" [ style = bold] -+"rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 messaging-2" [ style = bold] -+"rabbitmq_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_stop_0 messaging-1" -> "all_stopped" [ style = bold] -+"rabbitmq_stop_0 messaging-1" -> "messaging-1_stop_0 controller-1" [ style = bold] -+"rabbitmq_stop_0 messaging-1" -> "rabbitmq-clone_stopped_0" [ style = bold] -+"rabbitmq_stop_0 messaging-1" [ style=bold color="green" fontcolor="orange"] -+"redis-master_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -+"redis-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_confirmed-pre_notify_stop_0" -> "redis-master_post_notify_stopped_0" [ style = bold] -+"redis-master_confirmed-pre_notify_stop_0" -> "redis-master_stop_0" [ style = bold] -+"redis-master_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_post_notify_stopped_0" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 controller-0" [ style = bold] -+"redis-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 controller-2" [ style = bold] -+"redis-master_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_pre_notify_stop_0" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 controller-0" [ style = bold] -+"redis-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 controller-2" [ style = bold] -+"redis-master_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_stop_0" -> "redis-master_stopped_0" [ style = bold] -+"redis-master_stop_0" -> "redis_stop_0 controller-1" [ style = bold] -+"redis-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-master_stopped_0" -> "redis-master_post_notify_stopped_0" [ style = bold] -+"redis-master_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis_confirmed-post_notify_stonith_0" -> "all_stopped" [ style = bold] -+"redis_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"redis_post_notify_stonith_0 controller-0" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_stonith_0 controller-2" -> "redis-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-2" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_stonith_0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 controller-0" [ style = bold] -+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 controller-2" [ style = bold] -+"redis_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"redis_pre_notify_stop_0 controller-0" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"redis_pre_notify_stop_0 controller-2" -> "redis-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"redis_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"redis_stop_0 controller-1" -> "redis-master_stopped_0" [ style = bold] -+"redis_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"stonith 'reboot' controller-1" -> "galera-0_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "galera-2_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "haproxy-clone_stop_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "haproxy_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.1.14_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.1.17_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "ip-172.17.4.11_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "messaging-1_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis-master_stop_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis_post_notify_stonith_0" [ style = bold] -+"stonith 'reboot' controller-1" -> "redis_stop_0 controller-1" [ style = bold] -+"stonith 'reboot' controller-1" -> "stonith 'reboot' galera-2" [ style = bold] -+"stonith 'reboot' controller-1" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' galera-2" -> "stonith 'reboot' messaging-1" [ style = bold] -+"stonith 'reboot' galera-2" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' messaging-1" -> "rabbitmq-clone_stop_0" [ style = bold] -+"stonith 'reboot' messaging-1" -> "rabbitmq_post_notify_stonith_0" [ style = bold] -+"stonith 'reboot' messaging-1" -> "rabbitmq_stop_0 messaging-1" [ style = bold] -+"stonith 'reboot' messaging-1" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' messaging-1" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_monitor_60000 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" -> "stonith-fence_ipmilan-5254005bdbb5_monitor_60000 controller-2" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" -> "stonith-fence_ipmilan-5254005bdbb5_start_0 controller-2" [ style = bold] -+"stonith-fence_ipmilan-5254005bdbb5_stop_0 controller-1" [ style=bold color="green" fontcolor="orange"] -+"stonith-fence_ipmilan-525400b4f6bd_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" -> "stonith-fence_ipmilan-525400b4f6bd_monitor_60000 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" -> "stonith-fence_ipmilan-525400b4f6bd_start_0 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400b4f6bd_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_start_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_monitor_60000 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" -> "stonith-fence_ipmilan-525400bbf613_start_0 controller-0" [ style = bold] -+"stonith-fence_ipmilan-525400bbf613_stop_0 controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith_complete" -> "all_stopped" [ style = bold] -+"stonith_complete" -> "galera-0_start_0 controller-2" [ style = bold] -+"stonith_complete" -> "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" [ style=bold color="green" fontcolor="orange"] -+} -diff --git a/pengine/test10/remote-recover-unknown.exp b/pengine/test10/remote-recover-unknown.exp -new file mode 100644 -index 0000000..d63cf81 ---- /dev/null -+++ b/pengine/test10/remote-recover-unknown.exp -@@ -0,0 +1,770 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/remote-recover-unknown.scores b/pengine/test10/remote-recover-unknown.scores -new file mode 100644 -index 0000000..e918fc6 ---- /dev/null -+++ b/pengine/test10/remote-recover-unknown.scores -@@ -0,0 +1,848 @@ -+Allocation scores: -+Using the original execution date of: 2017-05-03 13:33:24Z -+clone_color: galera-master allocation score on controller-0: -INFINITY -+clone_color: galera-master allocation score on controller-1: -INFINITY -+clone_color: galera-master allocation score on controller-2: -INFINITY -+clone_color: galera-master allocation score on galera-0: 0 -+clone_color: galera-master allocation score on galera-1: 0 -+clone_color: galera-master allocation score on galera-2: 0 -+clone_color: galera-master allocation score on messaging-0: -INFINITY -+clone_color: galera-master allocation score on messaging-1: -INFINITY -+clone_color: galera-master allocation score on messaging-2: -INFINITY -+clone_color: galera:0 allocation score on controller-0: -INFINITY -+clone_color: galera:0 allocation score on controller-1: -INFINITY -+clone_color: galera:0 allocation score on controller-2: -INFINITY -+clone_color: galera:0 allocation score on galera-0: 0 -+clone_color: galera:0 allocation score on galera-1: INFINITY -+clone_color: galera:0 allocation score on galera-2: 0 -+clone_color: galera:0 allocation score on messaging-0: -INFINITY -+clone_color: galera:0 allocation score on messaging-1: -INFINITY -+clone_color: galera:0 allocation score on messaging-2: -INFINITY -+clone_color: galera:1 allocation score on controller-0: -INFINITY -+clone_color: galera:1 allocation score on controller-1: -INFINITY -+clone_color: galera:1 allocation score on controller-2: -INFINITY -+clone_color: galera:1 allocation score on galera-0: INFINITY -+clone_color: galera:1 allocation score on galera-1: 0 -+clone_color: galera:1 allocation score on galera-2: 0 -+clone_color: galera:1 allocation score on messaging-0: -INFINITY -+clone_color: galera:1 allocation score on messaging-1: -INFINITY -+clone_color: galera:1 allocation score on messaging-2: -INFINITY -+clone_color: galera:2 allocation score on controller-0: -INFINITY -+clone_color: galera:2 allocation score on controller-1: -INFINITY -+clone_color: galera:2 allocation score on controller-2: -INFINITY -+clone_color: galera:2 allocation score on galera-0: 0 -+clone_color: galera:2 allocation score on galera-1: 0 -+clone_color: galera:2 allocation score on galera-2: 0 -+clone_color: galera:2 allocation score on messaging-0: -INFINITY -+clone_color: galera:2 allocation score on messaging-1: -INFINITY -+clone_color: galera:2 allocation score on messaging-2: -INFINITY -+clone_color: galera:3 allocation score on controller-0: -INFINITY -+clone_color: galera:3 allocation score on controller-1: -INFINITY -+clone_color: galera:3 allocation score on controller-2: -INFINITY -+clone_color: galera:3 allocation score on galera-0: 0 -+clone_color: galera:3 allocation score on galera-1: 0 -+clone_color: galera:3 allocation score on galera-2: 0 -+clone_color: galera:3 allocation score on messaging-0: -INFINITY -+clone_color: galera:3 allocation score on messaging-1: -INFINITY -+clone_color: galera:3 allocation score on messaging-2: -INFINITY -+clone_color: galera:4 allocation score on controller-0: -INFINITY -+clone_color: galera:4 allocation score on controller-1: -INFINITY -+clone_color: galera:4 allocation score on controller-2: -INFINITY -+clone_color: galera:4 allocation score on galera-0: 0 -+clone_color: galera:4 allocation score on galera-1: 0 -+clone_color: galera:4 allocation score on galera-2: 0 -+clone_color: galera:4 allocation score on messaging-0: -INFINITY -+clone_color: galera:4 allocation score on messaging-1: -INFINITY -+clone_color: galera:4 allocation score on messaging-2: -INFINITY -+clone_color: galera:5 allocation score on controller-0: -INFINITY -+clone_color: galera:5 allocation score on controller-1: -INFINITY -+clone_color: galera:5 allocation score on controller-2: -INFINITY -+clone_color: galera:5 allocation score on galera-0: 0 -+clone_color: galera:5 allocation score on galera-1: 0 -+clone_color: galera:5 allocation score on galera-2: 0 -+clone_color: galera:5 allocation score on messaging-0: -INFINITY -+clone_color: galera:5 allocation score on messaging-1: -INFINITY -+clone_color: galera:5 allocation score on messaging-2: -INFINITY -+clone_color: galera:6 allocation score on controller-0: -INFINITY -+clone_color: galera:6 allocation score on controller-1: -INFINITY -+clone_color: galera:6 allocation score on controller-2: -INFINITY -+clone_color: galera:6 allocation score on galera-0: 0 -+clone_color: galera:6 allocation score on galera-1: 0 -+clone_color: galera:6 allocation score on galera-2: 0 -+clone_color: galera:6 allocation score on messaging-0: -INFINITY -+clone_color: galera:6 allocation score on messaging-1: -INFINITY -+clone_color: galera:6 allocation score on messaging-2: -INFINITY -+clone_color: galera:7 allocation score on controller-0: -INFINITY -+clone_color: galera:7 allocation score on controller-1: -INFINITY -+clone_color: galera:7 allocation score on controller-2: -INFINITY -+clone_color: galera:7 allocation score on galera-0: 0 -+clone_color: galera:7 allocation score on galera-1: 0 -+clone_color: galera:7 allocation score on galera-2: 0 -+clone_color: galera:7 allocation score on messaging-0: -INFINITY -+clone_color: galera:7 allocation score on messaging-1: -INFINITY -+clone_color: galera:7 allocation score on messaging-2: -INFINITY -+clone_color: galera:8 allocation score on controller-0: -INFINITY -+clone_color: galera:8 allocation score on controller-1: -INFINITY -+clone_color: galera:8 allocation score on controller-2: -INFINITY -+clone_color: galera:8 allocation score on galera-0: 0 -+clone_color: galera:8 allocation score on galera-1: 0 -+clone_color: galera:8 allocation score on galera-2: 0 -+clone_color: galera:8 allocation score on messaging-0: -INFINITY -+clone_color: galera:8 allocation score on messaging-1: -INFINITY -+clone_color: galera:8 allocation score on messaging-2: -INFINITY -+clone_color: haproxy-clone allocation score on controller-0: INFINITY -+clone_color: haproxy-clone allocation score on controller-1: 0 -+clone_color: haproxy-clone allocation score on controller-2: 0 -+clone_color: haproxy-clone allocation score on galera-0: -INFINITY -+clone_color: haproxy-clone allocation score on galera-1: -INFINITY -+clone_color: haproxy-clone allocation score on galera-2: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-0: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-1: -INFINITY -+clone_color: haproxy-clone allocation score on messaging-2: -INFINITY -+clone_color: haproxy:0 allocation score on controller-0: 0 -+clone_color: haproxy:0 allocation score on controller-1: INFINITY -+clone_color: haproxy:0 allocation score on controller-2: 0 -+clone_color: haproxy:0 allocation score on galera-0: -INFINITY -+clone_color: haproxy:0 allocation score on galera-1: -INFINITY -+clone_color: haproxy:0 allocation score on galera-2: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:0 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:1 allocation score on controller-0: INFINITY -+clone_color: haproxy:1 allocation score on controller-1: 0 -+clone_color: haproxy:1 allocation score on controller-2: 0 -+clone_color: haproxy:1 allocation score on galera-0: -INFINITY -+clone_color: haproxy:1 allocation score on galera-1: -INFINITY -+clone_color: haproxy:1 allocation score on galera-2: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:1 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:2 allocation score on controller-0: 0 -+clone_color: haproxy:2 allocation score on controller-1: 0 -+clone_color: haproxy:2 allocation score on controller-2: INFINITY -+clone_color: haproxy:2 allocation score on galera-0: -INFINITY -+clone_color: haproxy:2 allocation score on galera-1: -INFINITY -+clone_color: haproxy:2 allocation score on galera-2: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:2 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:3 allocation score on controller-0: 0 -+clone_color: haproxy:3 allocation score on controller-1: 0 -+clone_color: haproxy:3 allocation score on controller-2: 0 -+clone_color: haproxy:3 allocation score on galera-0: -INFINITY -+clone_color: haproxy:3 allocation score on galera-1: -INFINITY -+clone_color: haproxy:3 allocation score on galera-2: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:3 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:4 allocation score on controller-0: 0 -+clone_color: haproxy:4 allocation score on controller-1: 0 -+clone_color: haproxy:4 allocation score on controller-2: 0 -+clone_color: haproxy:4 allocation score on galera-0: -INFINITY -+clone_color: haproxy:4 allocation score on galera-1: -INFINITY -+clone_color: haproxy:4 allocation score on galera-2: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:4 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:5 allocation score on controller-0: 0 -+clone_color: haproxy:5 allocation score on controller-1: 0 -+clone_color: haproxy:5 allocation score on controller-2: 0 -+clone_color: haproxy:5 allocation score on galera-0: -INFINITY -+clone_color: haproxy:5 allocation score on galera-1: -INFINITY -+clone_color: haproxy:5 allocation score on galera-2: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:5 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:6 allocation score on controller-0: 0 -+clone_color: haproxy:6 allocation score on controller-1: 0 -+clone_color: haproxy:6 allocation score on controller-2: 0 -+clone_color: haproxy:6 allocation score on galera-0: -INFINITY -+clone_color: haproxy:6 allocation score on galera-1: -INFINITY -+clone_color: haproxy:6 allocation score on galera-2: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:6 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:7 allocation score on controller-0: 0 -+clone_color: haproxy:7 allocation score on controller-1: 0 -+clone_color: haproxy:7 allocation score on controller-2: 0 -+clone_color: haproxy:7 allocation score on galera-0: -INFINITY -+clone_color: haproxy:7 allocation score on galera-1: -INFINITY -+clone_color: haproxy:7 allocation score on galera-2: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:7 allocation score on messaging-2: -INFINITY -+clone_color: haproxy:8 allocation score on controller-0: 0 -+clone_color: haproxy:8 allocation score on controller-1: 0 -+clone_color: haproxy:8 allocation score on controller-2: 0 -+clone_color: haproxy:8 allocation score on galera-0: -INFINITY -+clone_color: haproxy:8 allocation score on galera-1: -INFINITY -+clone_color: haproxy:8 allocation score on galera-2: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-0: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-1: -INFINITY -+clone_color: haproxy:8 allocation score on messaging-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-0: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-1: -INFINITY -+clone_color: rabbitmq-clone allocation score on controller-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-0: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-1: -INFINITY -+clone_color: rabbitmq-clone allocation score on galera-2: -INFINITY -+clone_color: rabbitmq-clone allocation score on messaging-0: 0 -+clone_color: rabbitmq-clone allocation score on messaging-1: 0 -+clone_color: rabbitmq-clone allocation score on messaging-2: 0 -+clone_color: rabbitmq:0 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on messaging-0: 0 -+clone_color: rabbitmq:0 allocation score on messaging-1: 0 -+clone_color: rabbitmq:0 allocation score on messaging-2: INFINITY -+clone_color: rabbitmq:1 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on messaging-0: INFINITY -+clone_color: rabbitmq:1 allocation score on messaging-1: 0 -+clone_color: rabbitmq:1 allocation score on messaging-2: 0 -+clone_color: rabbitmq:2 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on messaging-0: 0 -+clone_color: rabbitmq:2 allocation score on messaging-1: INFINITY -+clone_color: rabbitmq:2 allocation score on messaging-2: 0 -+clone_color: rabbitmq:3 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:3 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:3 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:3 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:3 allocation score on messaging-0: 0 -+clone_color: rabbitmq:3 allocation score on messaging-1: 0 -+clone_color: rabbitmq:3 allocation score on messaging-2: 0 -+clone_color: rabbitmq:4 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:4 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:4 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:4 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:4 allocation score on messaging-0: 0 -+clone_color: rabbitmq:4 allocation score on messaging-1: 0 -+clone_color: rabbitmq:4 allocation score on messaging-2: 0 -+clone_color: rabbitmq:5 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:5 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:5 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:5 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:5 allocation score on messaging-0: 0 -+clone_color: rabbitmq:5 allocation score on messaging-1: 0 -+clone_color: rabbitmq:5 allocation score on messaging-2: 0 -+clone_color: rabbitmq:6 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:6 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:6 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:6 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:6 allocation score on messaging-0: 0 -+clone_color: rabbitmq:6 allocation score on messaging-1: 0 -+clone_color: rabbitmq:6 allocation score on messaging-2: 0 -+clone_color: rabbitmq:7 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:7 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:7 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:7 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:7 allocation score on messaging-0: 0 -+clone_color: rabbitmq:7 allocation score on messaging-1: 0 -+clone_color: rabbitmq:7 allocation score on messaging-2: 0 -+clone_color: rabbitmq:8 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:8 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:8 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-0: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-1: -INFINITY -+clone_color: rabbitmq:8 allocation score on galera-2: -INFINITY -+clone_color: rabbitmq:8 allocation score on messaging-0: 0 -+clone_color: rabbitmq:8 allocation score on messaging-1: 0 -+clone_color: rabbitmq:8 allocation score on messaging-2: 0 -+clone_color: redis-master allocation score on controller-0: 0 -+clone_color: redis-master allocation score on controller-1: 0 -+clone_color: redis-master allocation score on controller-2: 0 -+clone_color: redis-master allocation score on galera-0: -INFINITY -+clone_color: redis-master allocation score on galera-1: -INFINITY -+clone_color: redis-master allocation score on galera-2: -INFINITY -+clone_color: redis-master allocation score on messaging-0: -INFINITY -+clone_color: redis-master allocation score on messaging-1: -INFINITY -+clone_color: redis-master allocation score on messaging-2: -INFINITY -+clone_color: redis:0 allocation score on controller-0: 0 -+clone_color: redis:0 allocation score on controller-1: INFINITY -+clone_color: redis:0 allocation score on controller-2: 0 -+clone_color: redis:0 allocation score on galera-0: -INFINITY -+clone_color: redis:0 allocation score on galera-1: -INFINITY -+clone_color: redis:0 allocation score on galera-2: -INFINITY -+clone_color: redis:0 allocation score on messaging-0: -INFINITY -+clone_color: redis:0 allocation score on messaging-1: -INFINITY -+clone_color: redis:0 allocation score on messaging-2: -INFINITY -+clone_color: redis:1 allocation score on controller-0: INFINITY -+clone_color: redis:1 allocation score on controller-1: 0 -+clone_color: redis:1 allocation score on controller-2: 0 -+clone_color: redis:1 allocation score on galera-0: -INFINITY -+clone_color: redis:1 allocation score on galera-1: -INFINITY -+clone_color: redis:1 allocation score on galera-2: -INFINITY -+clone_color: redis:1 allocation score on messaging-0: -INFINITY -+clone_color: redis:1 allocation score on messaging-1: -INFINITY -+clone_color: redis:1 allocation score on messaging-2: -INFINITY -+clone_color: redis:2 allocation score on controller-0: 0 -+clone_color: redis:2 allocation score on controller-1: 0 -+clone_color: redis:2 allocation score on controller-2: INFINITY -+clone_color: redis:2 allocation score on galera-0: -INFINITY -+clone_color: redis:2 allocation score on galera-1: -INFINITY -+clone_color: redis:2 allocation score on galera-2: -INFINITY -+clone_color: redis:2 allocation score on messaging-0: -INFINITY -+clone_color: redis:2 allocation score on messaging-1: -INFINITY -+clone_color: redis:2 allocation score on messaging-2: -INFINITY -+clone_color: redis:3 allocation score on controller-0: 0 -+clone_color: redis:3 allocation score on controller-1: 0 -+clone_color: redis:3 allocation score on controller-2: 0 -+clone_color: redis:3 allocation score on galera-0: -INFINITY -+clone_color: redis:3 allocation score on galera-1: -INFINITY -+clone_color: redis:3 allocation score on galera-2: -INFINITY -+clone_color: redis:3 allocation score on messaging-0: -INFINITY -+clone_color: redis:3 allocation score on messaging-1: -INFINITY -+clone_color: redis:3 allocation score on messaging-2: -INFINITY -+clone_color: redis:4 allocation score on controller-0: 0 -+clone_color: redis:4 allocation score on controller-1: 0 -+clone_color: redis:4 allocation score on controller-2: 0 -+clone_color: redis:4 allocation score on galera-0: -INFINITY -+clone_color: redis:4 allocation score on galera-1: -INFINITY -+clone_color: redis:4 allocation score on galera-2: -INFINITY -+clone_color: redis:4 allocation score on messaging-0: -INFINITY -+clone_color: redis:4 allocation score on messaging-1: -INFINITY -+clone_color: redis:4 allocation score on messaging-2: -INFINITY -+clone_color: redis:5 allocation score on controller-0: 0 -+clone_color: redis:5 allocation score on controller-1: 0 -+clone_color: redis:5 allocation score on controller-2: 0 -+clone_color: redis:5 allocation score on galera-0: -INFINITY -+clone_color: redis:5 allocation score on galera-1: -INFINITY -+clone_color: redis:5 allocation score on galera-2: -INFINITY -+clone_color: redis:5 allocation score on messaging-0: -INFINITY -+clone_color: redis:5 allocation score on messaging-1: -INFINITY -+clone_color: redis:5 allocation score on messaging-2: -INFINITY -+clone_color: redis:6 allocation score on controller-0: 0 -+clone_color: redis:6 allocation score on controller-1: 0 -+clone_color: redis:6 allocation score on controller-2: 0 -+clone_color: redis:6 allocation score on galera-0: -INFINITY -+clone_color: redis:6 allocation score on galera-1: -INFINITY -+clone_color: redis:6 allocation score on galera-2: -INFINITY -+clone_color: redis:6 allocation score on messaging-0: -INFINITY -+clone_color: redis:6 allocation score on messaging-1: -INFINITY -+clone_color: redis:6 allocation score on messaging-2: -INFINITY -+clone_color: redis:7 allocation score on controller-0: 0 -+clone_color: redis:7 allocation score on controller-1: 0 -+clone_color: redis:7 allocation score on controller-2: 0 -+clone_color: redis:7 allocation score on galera-0: -INFINITY -+clone_color: redis:7 allocation score on galera-1: -INFINITY -+clone_color: redis:7 allocation score on galera-2: -INFINITY -+clone_color: redis:7 allocation score on messaging-0: -INFINITY -+clone_color: redis:7 allocation score on messaging-1: -INFINITY -+clone_color: redis:7 allocation score on messaging-2: -INFINITY -+clone_color: redis:8 allocation score on controller-0: 0 -+clone_color: redis:8 allocation score on controller-1: 0 -+clone_color: redis:8 allocation score on controller-2: 0 -+clone_color: redis:8 allocation score on galera-0: -INFINITY -+clone_color: redis:8 allocation score on galera-1: -INFINITY -+clone_color: redis:8 allocation score on galera-2: -INFINITY -+clone_color: redis:8 allocation score on messaging-0: -INFINITY -+clone_color: redis:8 allocation score on messaging-1: -INFINITY -+clone_color: redis:8 allocation score on messaging-2: -INFINITY -+galera:0 promotion score on galera-1: 100 -+galera:1 promotion score on galera-0: 100 -+galera:2 promotion score on none: 0 -+galera:3 promotion score on none: 0 -+galera:4 promotion score on none: 0 -+galera:5 promotion score on none: 0 -+galera:6 promotion score on none: 0 -+galera:7 promotion score on none: 0 -+galera:8 promotion score on none: 0 -+native_color: galera-0 allocation score on controller-0: 0 -+native_color: galera-0 allocation score on controller-1: INFINITY -+native_color: galera-0 allocation score on controller-2: 0 -+native_color: galera-0 allocation score on galera-0: -INFINITY -+native_color: galera-0 allocation score on galera-1: -INFINITY -+native_color: galera-0 allocation score on galera-2: -INFINITY -+native_color: galera-0 allocation score on messaging-0: -INFINITY -+native_color: galera-0 allocation score on messaging-1: -INFINITY -+native_color: galera-0 allocation score on messaging-2: -INFINITY -+native_color: galera-1 allocation score on controller-0: INFINITY -+native_color: galera-1 allocation score on controller-1: 0 -+native_color: galera-1 allocation score on controller-2: 0 -+native_color: galera-1 allocation score on galera-0: -INFINITY -+native_color: galera-1 allocation score on galera-1: -INFINITY -+native_color: galera-1 allocation score on galera-2: -INFINITY -+native_color: galera-1 allocation score on messaging-0: -INFINITY -+native_color: galera-1 allocation score on messaging-1: -INFINITY -+native_color: galera-1 allocation score on messaging-2: -INFINITY -+native_color: galera-2 allocation score on controller-0: -INFINITY -+native_color: galera-2 allocation score on controller-1: INFINITY -+native_color: galera-2 allocation score on controller-2: -INFINITY -+native_color: galera-2 allocation score on galera-0: -INFINITY -+native_color: galera-2 allocation score on galera-1: -INFINITY -+native_color: galera-2 allocation score on galera-2: -INFINITY -+native_color: galera-2 allocation score on messaging-0: -INFINITY -+native_color: galera-2 allocation score on messaging-1: -INFINITY -+native_color: galera-2 allocation score on messaging-2: -INFINITY -+native_color: galera:0 allocation score on controller-0: -INFINITY -+native_color: galera:0 allocation score on controller-1: -INFINITY -+native_color: galera:0 allocation score on controller-2: -INFINITY -+native_color: galera:0 allocation score on galera-0: 0 -+native_color: galera:0 allocation score on galera-1: INFINITY -+native_color: galera:0 allocation score on galera-2: -INFINITY -+native_color: galera:0 allocation score on messaging-0: -INFINITY -+native_color: galera:0 allocation score on messaging-1: -INFINITY -+native_color: galera:0 allocation score on messaging-2: -INFINITY -+native_color: galera:1 allocation score on controller-0: -INFINITY -+native_color: galera:1 allocation score on controller-1: -INFINITY -+native_color: galera:1 allocation score on controller-2: -INFINITY -+native_color: galera:1 allocation score on galera-0: INFINITY -+native_color: galera:1 allocation score on galera-1: -INFINITY -+native_color: galera:1 allocation score on galera-2: -INFINITY -+native_color: galera:1 allocation score on messaging-0: -INFINITY -+native_color: galera:1 allocation score on messaging-1: -INFINITY -+native_color: galera:1 allocation score on messaging-2: -INFINITY -+native_color: galera:2 allocation score on controller-0: -INFINITY -+native_color: galera:2 allocation score on controller-1: -INFINITY -+native_color: galera:2 allocation score on controller-2: -INFINITY -+native_color: galera:2 allocation score on galera-0: -INFINITY -+native_color: galera:2 allocation score on galera-1: -INFINITY -+native_color: galera:2 allocation score on galera-2: -INFINITY -+native_color: galera:2 allocation score on messaging-0: -INFINITY -+native_color: galera:2 allocation score on messaging-1: -INFINITY -+native_color: galera:2 allocation score on messaging-2: -INFINITY -+native_color: galera:3 allocation score on controller-0: -INFINITY -+native_color: galera:3 allocation score on controller-1: -INFINITY -+native_color: galera:3 allocation score on controller-2: -INFINITY -+native_color: galera:3 allocation score on galera-0: -INFINITY -+native_color: galera:3 allocation score on galera-1: -INFINITY -+native_color: galera:3 allocation score on galera-2: -INFINITY -+native_color: galera:3 allocation score on messaging-0: -INFINITY -+native_color: galera:3 allocation score on messaging-1: -INFINITY -+native_color: galera:3 allocation score on messaging-2: -INFINITY -+native_color: galera:4 allocation score on controller-0: -INFINITY -+native_color: galera:4 allocation score on controller-1: -INFINITY -+native_color: galera:4 allocation score on controller-2: -INFINITY -+native_color: galera:4 allocation score on galera-0: -INFINITY -+native_color: galera:4 allocation score on galera-1: -INFINITY -+native_color: galera:4 allocation score on galera-2: -INFINITY -+native_color: galera:4 allocation score on messaging-0: -INFINITY -+native_color: galera:4 allocation score on messaging-1: -INFINITY -+native_color: galera:4 allocation score on messaging-2: -INFINITY -+native_color: galera:5 allocation score on controller-0: -INFINITY -+native_color: galera:5 allocation score on controller-1: -INFINITY -+native_color: galera:5 allocation score on controller-2: -INFINITY -+native_color: galera:5 allocation score on galera-0: -INFINITY -+native_color: galera:5 allocation score on galera-1: -INFINITY -+native_color: galera:5 allocation score on galera-2: -INFINITY -+native_color: galera:5 allocation score on messaging-0: -INFINITY -+native_color: galera:5 allocation score on messaging-1: -INFINITY -+native_color: galera:5 allocation score on messaging-2: -INFINITY -+native_color: galera:6 allocation score on controller-0: -INFINITY -+native_color: galera:6 allocation score on controller-1: -INFINITY -+native_color: galera:6 allocation score on controller-2: -INFINITY -+native_color: galera:6 allocation score on galera-0: -INFINITY -+native_color: galera:6 allocation score on galera-1: -INFINITY -+native_color: galera:6 allocation score on galera-2: -INFINITY -+native_color: galera:6 allocation score on messaging-0: -INFINITY -+native_color: galera:6 allocation score on messaging-1: -INFINITY -+native_color: galera:6 allocation score on messaging-2: -INFINITY -+native_color: galera:7 allocation score on controller-0: -INFINITY -+native_color: galera:7 allocation score on controller-1: -INFINITY -+native_color: galera:7 allocation score on controller-2: -INFINITY -+native_color: galera:7 allocation score on galera-0: -INFINITY -+native_color: galera:7 allocation score on galera-1: -INFINITY -+native_color: galera:7 allocation score on galera-2: -INFINITY -+native_color: galera:7 allocation score on messaging-0: -INFINITY -+native_color: galera:7 allocation score on messaging-1: -INFINITY -+native_color: galera:7 allocation score on messaging-2: -INFINITY -+native_color: galera:8 allocation score on controller-0: -INFINITY -+native_color: galera:8 allocation score on controller-1: -INFINITY -+native_color: galera:8 allocation score on controller-2: -INFINITY -+native_color: galera:8 allocation score on galera-0: -INFINITY -+native_color: galera:8 allocation score on galera-1: -INFINITY -+native_color: galera:8 allocation score on galera-2: -INFINITY -+native_color: galera:8 allocation score on messaging-0: -INFINITY -+native_color: galera:8 allocation score on messaging-1: -INFINITY -+native_color: galera:8 allocation score on messaging-2: -INFINITY -+native_color: haproxy:0 allocation score on controller-0: -INFINITY -+native_color: haproxy:0 allocation score on controller-1: -INFINITY -+native_color: haproxy:0 allocation score on controller-2: -INFINITY -+native_color: haproxy:0 allocation score on galera-0: -INFINITY -+native_color: haproxy:0 allocation score on galera-1: -INFINITY -+native_color: haproxy:0 allocation score on galera-2: -INFINITY -+native_color: haproxy:0 allocation score on messaging-0: -INFINITY -+native_color: haproxy:0 allocation score on messaging-1: -INFINITY -+native_color: haproxy:0 allocation score on messaging-2: -INFINITY -+native_color: haproxy:1 allocation score on controller-0: INFINITY -+native_color: haproxy:1 allocation score on controller-1: -INFINITY -+native_color: haproxy:1 allocation score on controller-2: 0 -+native_color: haproxy:1 allocation score on galera-0: -INFINITY -+native_color: haproxy:1 allocation score on galera-1: -INFINITY -+native_color: haproxy:1 allocation score on galera-2: -INFINITY -+native_color: haproxy:1 allocation score on messaging-0: -INFINITY -+native_color: haproxy:1 allocation score on messaging-1: -INFINITY -+native_color: haproxy:1 allocation score on messaging-2: -INFINITY -+native_color: haproxy:2 allocation score on controller-0: -INFINITY -+native_color: haproxy:2 allocation score on controller-1: -INFINITY -+native_color: haproxy:2 allocation score on controller-2: INFINITY -+native_color: haproxy:2 allocation score on galera-0: -INFINITY -+native_color: haproxy:2 allocation score on galera-1: -INFINITY -+native_color: haproxy:2 allocation score on galera-2: -INFINITY -+native_color: haproxy:2 allocation score on messaging-0: -INFINITY -+native_color: haproxy:2 allocation score on messaging-1: -INFINITY -+native_color: haproxy:2 allocation score on messaging-2: -INFINITY -+native_color: haproxy:3 allocation score on controller-0: -INFINITY -+native_color: haproxy:3 allocation score on controller-1: -INFINITY -+native_color: haproxy:3 allocation score on controller-2: -INFINITY -+native_color: haproxy:3 allocation score on galera-0: -INFINITY -+native_color: haproxy:3 allocation score on galera-1: -INFINITY -+native_color: haproxy:3 allocation score on galera-2: -INFINITY -+native_color: haproxy:3 allocation score on messaging-0: -INFINITY -+native_color: haproxy:3 allocation score on messaging-1: -INFINITY -+native_color: haproxy:3 allocation score on messaging-2: -INFINITY -+native_color: haproxy:4 allocation score on controller-0: -INFINITY -+native_color: haproxy:4 allocation score on controller-1: -INFINITY -+native_color: haproxy:4 allocation score on controller-2: -INFINITY -+native_color: haproxy:4 allocation score on galera-0: -INFINITY -+native_color: haproxy:4 allocation score on galera-1: -INFINITY -+native_color: haproxy:4 allocation score on galera-2: -INFINITY -+native_color: haproxy:4 allocation score on messaging-0: -INFINITY -+native_color: haproxy:4 allocation score on messaging-1: -INFINITY -+native_color: haproxy:4 allocation score on messaging-2: -INFINITY -+native_color: haproxy:5 allocation score on controller-0: -INFINITY -+native_color: haproxy:5 allocation score on controller-1: -INFINITY -+native_color: haproxy:5 allocation score on controller-2: -INFINITY -+native_color: haproxy:5 allocation score on galera-0: -INFINITY -+native_color: haproxy:5 allocation score on galera-1: -INFINITY -+native_color: haproxy:5 allocation score on galera-2: -INFINITY -+native_color: haproxy:5 allocation score on messaging-0: -INFINITY -+native_color: haproxy:5 allocation score on messaging-1: -INFINITY -+native_color: haproxy:5 allocation score on messaging-2: -INFINITY -+native_color: haproxy:6 allocation score on controller-0: -INFINITY -+native_color: haproxy:6 allocation score on controller-1: -INFINITY -+native_color: haproxy:6 allocation score on controller-2: -INFINITY -+native_color: haproxy:6 allocation score on galera-0: -INFINITY -+native_color: haproxy:6 allocation score on galera-1: -INFINITY -+native_color: haproxy:6 allocation score on galera-2: -INFINITY -+native_color: haproxy:6 allocation score on messaging-0: -INFINITY -+native_color: haproxy:6 allocation score on messaging-1: -INFINITY -+native_color: haproxy:6 allocation score on messaging-2: -INFINITY -+native_color: haproxy:7 allocation score on controller-0: -INFINITY -+native_color: haproxy:7 allocation score on controller-1: -INFINITY -+native_color: haproxy:7 allocation score on controller-2: -INFINITY -+native_color: haproxy:7 allocation score on galera-0: -INFINITY -+native_color: haproxy:7 allocation score on galera-1: -INFINITY -+native_color: haproxy:7 allocation score on galera-2: -INFINITY -+native_color: haproxy:7 allocation score on messaging-0: -INFINITY -+native_color: haproxy:7 allocation score on messaging-1: -INFINITY -+native_color: haproxy:7 allocation score on messaging-2: -INFINITY -+native_color: haproxy:8 allocation score on controller-0: -INFINITY -+native_color: haproxy:8 allocation score on controller-1: -INFINITY -+native_color: haproxy:8 allocation score on controller-2: -INFINITY -+native_color: haproxy:8 allocation score on galera-0: -INFINITY -+native_color: haproxy:8 allocation score on galera-1: -INFINITY -+native_color: haproxy:8 allocation score on galera-2: -INFINITY -+native_color: haproxy:8 allocation score on messaging-0: -INFINITY -+native_color: haproxy:8 allocation score on messaging-1: -INFINITY -+native_color: haproxy:8 allocation score on messaging-2: -INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-0: INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on controller-2: 0 -+native_color: ip-10.0.0.102 allocation score on galera-0: -INFINITY -+native_color: ip-10.0.0.102 allocation score on galera-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on galera-2: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-0: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-1: -INFINITY -+native_color: ip-10.0.0.102 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-0: 0 -+native_color: ip-172.17.1.14 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-2: 0 -+native_color: ip-172.17.1.14 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.1.17 allocation score on controller-0: 0 -+native_color: ip-172.17.1.17 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on controller-2: 0 -+native_color: ip-172.17.1.17 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.1.17 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-0: INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on controller-2: 0 -+native_color: ip-172.17.3.15 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.3.15 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.3.15 allocation score on messaging-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on controller-0: 0 -+native_color: ip-172.17.4.11 allocation score on controller-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on controller-2: 0 -+native_color: ip-172.17.4.11 allocation score on galera-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on galera-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on galera-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on messaging-2: -INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-0: INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on controller-2: 0 -+native_color: ip-192.168.24.6 allocation score on galera-0: -INFINITY -+native_color: ip-192.168.24.6 allocation score on galera-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on galera-2: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-0: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-1: -INFINITY -+native_color: ip-192.168.24.6 allocation score on messaging-2: -INFINITY -+native_color: messaging-0 allocation score on controller-0: INFINITY -+native_color: messaging-0 allocation score on controller-1: 0 -+native_color: messaging-0 allocation score on controller-2: 0 -+native_color: messaging-0 allocation score on galera-0: -INFINITY -+native_color: messaging-0 allocation score on galera-1: -INFINITY -+native_color: messaging-0 allocation score on galera-2: -INFINITY -+native_color: messaging-0 allocation score on messaging-0: -INFINITY -+native_color: messaging-0 allocation score on messaging-1: -INFINITY -+native_color: messaging-0 allocation score on messaging-2: -INFINITY -+native_color: messaging-1 allocation score on controller-0: -INFINITY -+native_color: messaging-1 allocation score on controller-1: INFINITY -+native_color: messaging-1 allocation score on controller-2: -INFINITY -+native_color: messaging-1 allocation score on galera-0: -INFINITY -+native_color: messaging-1 allocation score on galera-1: -INFINITY -+native_color: messaging-1 allocation score on galera-2: -INFINITY -+native_color: messaging-1 allocation score on messaging-0: -INFINITY -+native_color: messaging-1 allocation score on messaging-1: -INFINITY -+native_color: messaging-1 allocation score on messaging-2: -INFINITY -+native_color: messaging-2 allocation score on controller-0: INFINITY -+native_color: messaging-2 allocation score on controller-1: 0 -+native_color: messaging-2 allocation score on controller-2: 0 -+native_color: messaging-2 allocation score on galera-0: -INFINITY -+native_color: messaging-2 allocation score on galera-1: -INFINITY -+native_color: messaging-2 allocation score on galera-2: -INFINITY -+native_color: messaging-2 allocation score on messaging-0: -INFINITY -+native_color: messaging-2 allocation score on messaging-1: -INFINITY -+native_color: messaging-2 allocation score on messaging-2: -INFINITY -+native_color: openstack-cinder-volume allocation score on controller-0: INFINITY -+native_color: openstack-cinder-volume allocation score on controller-1: 0 -+native_color: openstack-cinder-volume allocation score on controller-2: 0 -+native_color: openstack-cinder-volume allocation score on galera-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on galera-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on galera-2: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:0 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:0 allocation score on messaging-0: 0 -+native_color: rabbitmq:0 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:0 allocation score on messaging-2: INFINITY -+native_color: rabbitmq:1 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:1 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:1 allocation score on messaging-0: INFINITY -+native_color: rabbitmq:1 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:1 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:2 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:2 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:3 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:3 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:3 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:4 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:4 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:4 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:5 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:5 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:5 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:6 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:6 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:6 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:7 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:7 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:7 allocation score on messaging-2: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:8 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-0: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-1: -INFINITY -+native_color: rabbitmq:8 allocation score on galera-2: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-0: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-1: -INFINITY -+native_color: rabbitmq:8 allocation score on messaging-2: -INFINITY -+native_color: redis:0 allocation score on controller-0: -INFINITY -+native_color: redis:0 allocation score on controller-1: -INFINITY -+native_color: redis:0 allocation score on controller-2: -INFINITY -+native_color: redis:0 allocation score on galera-0: -INFINITY -+native_color: redis:0 allocation score on galera-1: -INFINITY -+native_color: redis:0 allocation score on galera-2: -INFINITY -+native_color: redis:0 allocation score on messaging-0: -INFINITY -+native_color: redis:0 allocation score on messaging-1: -INFINITY -+native_color: redis:0 allocation score on messaging-2: -INFINITY -+native_color: redis:1 allocation score on controller-0: INFINITY -+native_color: redis:1 allocation score on controller-1: -INFINITY -+native_color: redis:1 allocation score on controller-2: 0 -+native_color: redis:1 allocation score on galera-0: -INFINITY -+native_color: redis:1 allocation score on galera-1: -INFINITY -+native_color: redis:1 allocation score on galera-2: -INFINITY -+native_color: redis:1 allocation score on messaging-0: -INFINITY -+native_color: redis:1 allocation score on messaging-1: -INFINITY -+native_color: redis:1 allocation score on messaging-2: -INFINITY -+native_color: redis:2 allocation score on controller-0: -INFINITY -+native_color: redis:2 allocation score on controller-1: -INFINITY -+native_color: redis:2 allocation score on controller-2: INFINITY -+native_color: redis:2 allocation score on galera-0: -INFINITY -+native_color: redis:2 allocation score on galera-1: -INFINITY -+native_color: redis:2 allocation score on galera-2: -INFINITY -+native_color: redis:2 allocation score on messaging-0: -INFINITY -+native_color: redis:2 allocation score on messaging-1: -INFINITY -+native_color: redis:2 allocation score on messaging-2: -INFINITY -+native_color: redis:3 allocation score on controller-0: -INFINITY -+native_color: redis:3 allocation score on controller-1: -INFINITY -+native_color: redis:3 allocation score on controller-2: -INFINITY -+native_color: redis:3 allocation score on galera-0: -INFINITY -+native_color: redis:3 allocation score on galera-1: -INFINITY -+native_color: redis:3 allocation score on galera-2: -INFINITY -+native_color: redis:3 allocation score on messaging-0: -INFINITY -+native_color: redis:3 allocation score on messaging-1: -INFINITY -+native_color: redis:3 allocation score on messaging-2: -INFINITY -+native_color: redis:4 allocation score on controller-0: -INFINITY -+native_color: redis:4 allocation score on controller-1: -INFINITY -+native_color: redis:4 allocation score on controller-2: -INFINITY -+native_color: redis:4 allocation score on galera-0: -INFINITY -+native_color: redis:4 allocation score on galera-1: -INFINITY -+native_color: redis:4 allocation score on galera-2: -INFINITY -+native_color: redis:4 allocation score on messaging-0: -INFINITY -+native_color: redis:4 allocation score on messaging-1: -INFINITY -+native_color: redis:4 allocation score on messaging-2: -INFINITY -+native_color: redis:5 allocation score on controller-0: -INFINITY -+native_color: redis:5 allocation score on controller-1: -INFINITY -+native_color: redis:5 allocation score on controller-2: -INFINITY -+native_color: redis:5 allocation score on galera-0: -INFINITY -+native_color: redis:5 allocation score on galera-1: -INFINITY -+native_color: redis:5 allocation score on galera-2: -INFINITY -+native_color: redis:5 allocation score on messaging-0: -INFINITY -+native_color: redis:5 allocation score on messaging-1: -INFINITY -+native_color: redis:5 allocation score on messaging-2: -INFINITY -+native_color: redis:6 allocation score on controller-0: -INFINITY -+native_color: redis:6 allocation score on controller-1: -INFINITY -+native_color: redis:6 allocation score on controller-2: -INFINITY -+native_color: redis:6 allocation score on galera-0: -INFINITY -+native_color: redis:6 allocation score on galera-1: -INFINITY -+native_color: redis:6 allocation score on galera-2: -INFINITY -+native_color: redis:6 allocation score on messaging-0: -INFINITY -+native_color: redis:6 allocation score on messaging-1: -INFINITY -+native_color: redis:6 allocation score on messaging-2: -INFINITY -+native_color: redis:7 allocation score on controller-0: -INFINITY -+native_color: redis:7 allocation score on controller-1: -INFINITY -+native_color: redis:7 allocation score on controller-2: -INFINITY -+native_color: redis:7 allocation score on galera-0: -INFINITY -+native_color: redis:7 allocation score on galera-1: -INFINITY -+native_color: redis:7 allocation score on galera-2: -INFINITY -+native_color: redis:7 allocation score on messaging-0: -INFINITY -+native_color: redis:7 allocation score on messaging-1: -INFINITY -+native_color: redis:7 allocation score on messaging-2: -INFINITY -+native_color: redis:8 allocation score on controller-0: -INFINITY -+native_color: redis:8 allocation score on controller-1: -INFINITY -+native_color: redis:8 allocation score on controller-2: -INFINITY -+native_color: redis:8 allocation score on galera-0: -INFINITY -+native_color: redis:8 allocation score on galera-1: -INFINITY -+native_color: redis:8 allocation score on galera-2: -INFINITY -+native_color: redis:8 allocation score on messaging-0: -INFINITY -+native_color: redis:8 allocation score on messaging-1: -INFINITY -+native_color: redis:8 allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-1: INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254005bdbb5 allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-0: INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b4f6bd allocation score on messaging-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-0: INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-1: 0 -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on controller-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on galera-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400bbf613 allocation score on messaging-2: -INFINITY -+redis:0 promotion score on none: 0 -+redis:1 promotion score on controller-0: 1 -+redis:2 promotion score on controller-2: 1 -+redis:3 promotion score on none: 0 -+redis:4 promotion score on none: 0 -+redis:5 promotion score on none: 0 -+redis:6 promotion score on none: 0 -+redis:7 promotion score on none: 0 -+redis:8 promotion score on none: 0 -diff --git a/pengine/test10/remote-recover-unknown.summary b/pengine/test10/remote-recover-unknown.summary -new file mode 100644 -index 0000000..7562f12 ---- /dev/null -+++ b/pengine/test10/remote-recover-unknown.summary -@@ -0,0 +1,144 @@ -+Using the original execution date of: 2017-05-03 13:33:24Z -+ -+Current cluster status: -+Node controller-1 (2): UNCLEAN (offline) -+Online: [ controller-0 controller-2 ] -+RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ -+ messaging-0 (ocf::pacemaker:remote): Started controller-0 -+ messaging-1 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ messaging-2 (ocf::pacemaker:remote): Started controller-0 -+ galera-0 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ galera-1 (ocf::pacemaker:remote): Started controller-0 -+ galera-2 (ocf::pacemaker:remote): Started controller-1 (UNCLEAN) -+ Clone Set: rabbitmq-clone [rabbitmq] -+ Started: [ messaging-0 messaging-1 messaging-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 ] -+ Master/Slave Set: galera-master [galera] -+ Masters: [ galera-0 galera-1 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-2 messaging-0 messaging-1 messaging-2 ] -+ Master/Slave Set: redis-master [redis] -+ redis (ocf::heartbeat:redis): Slave controller-1 (UNCLEAN) -+ Masters: [ controller-0 ] -+ Slaves: [ controller-2 ] -+ Stopped: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ ip-192.168.24.6 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-10.0.0.102 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ ip-172.17.1.17 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ ip-172.17.3.15 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.4.11 (ocf::heartbeat:IPaddr2): Started controller-1 (UNCLEAN) -+ Clone Set: haproxy-clone [haproxy] -+ haproxy (systemd:haproxy): Started controller-1 (UNCLEAN) -+ Started: [ controller-0 controller-2 ] -+ Stopped: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-0 -+ stonith-fence_ipmilan-525400bbf613 (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) -+ -+Transition Summary: -+ * Stop messaging-1 (controller-1) -+ * Move galera-0 (Started controller-1 -> controller-2) -+ * Stop galera-2 (controller-1) -+ * Stop rabbitmq:2 (messaging-1) -+ * Stop redis:0 (controller-1) -+ * Move ip-172.17.1.14 (Started controller-1 -> controller-2) -+ * Move ip-172.17.1.17 (Started controller-1 -> controller-2) -+ * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -+ * Stop haproxy:0 (controller-1) -+ * Restart stonith-fence_ipmilan-525400bbf613 (Started controller-0) -+ * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) -+ * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -+ -+Executing cluster transition: -+ * Pseudo action: 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 -+ * Resource action: redis notify on controller-2 -+ * Pseudo action: redis-master_confirmed-pre_notify_stop_0 -+ * Pseudo action: redis-master_stop_0 -+ * Pseudo action: haproxy-clone_stop_0 -+ * Fencing galera-2 (reboot) -+ * Pseudo action: redis_stop_0 -+ * Pseudo action: redis-master_stopped_0 -+ * Pseudo action: haproxy_stop_0 -+ * 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 -+ * Resource action: galera monitor=10000 on galera-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 -+ * Resource action: rabbitmq notify on messaging-2 -+ * Resource action: rabbitmq notify on messaging-0 -+ * Pseudo action: rabbitmq_notified_0 -+ * Pseudo action: rabbitmq_stop_0 -+ * Pseudo action: rabbitmq-clone_stopped_0 -+ * Resource action: redis notify on controller-0 -+ * Resource action: redis notify on controller-2 -+ * Pseudo action: redis-master_confirmed-post_notify_stopped_0 -+ * Resource action: ip-172.17.1.14 start on controller-2 -+ * Resource action: ip-172.17.1.17 start on controller-2 -+ * Resource action: ip-172.17.4.11 start on controller-2 -+ * Pseudo action: messaging-1_stop_0 -+ * Pseudo action: redis_notified_0 -+ * Resource action: ip-172.17.1.14 monitor=10000 on controller-2 -+ * Resource action: ip-172.17.1.17 monitor=10000 on controller-2 -+ * Resource action: ip-172.17.4.11 monitor=10000 on controller-2 -+ * Pseudo action: all_stopped -+ * Resource action: 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: stonith-fence_ipmilan-5254005bdbb5 monitor=60000 on controller-2 -+Using the original execution date of: 2017-05-03 13:33:24Z -+ -+Revised cluster status: -+Online: [ controller-0 controller-2 ] -+OFFLINE: [ controller-1 ] -+RemoteOnline: [ galera-0 galera-1 messaging-0 messaging-2 ] -+RemoteOFFLINE: [ galera-2 messaging-1 ] -+ -+ messaging-0 (ocf::pacemaker:remote): Started controller-0 -+ messaging-1 (ocf::pacemaker:remote): Stopped -+ messaging-2 (ocf::pacemaker:remote): Started controller-0 -+ galera-0 (ocf::pacemaker:remote): Started controller-2 -+ galera-1 (ocf::pacemaker:remote): Started controller-0 -+ galera-2 (ocf::pacemaker:remote): Stopped -+ Clone Set: rabbitmq-clone [rabbitmq] -+ Started: [ messaging-0 messaging-2 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-0 galera-1 galera-2 messaging-1 ] -+ Master/Slave Set: galera-master [galera] -+ Masters: [ galera-0 galera-1 ] -+ Stopped: [ controller-0 controller-1 controller-2 galera-2 messaging-0 messaging-1 messaging-2 ] -+ Master/Slave Set: redis-master [redis] -+ Masters: [ controller-0 ] -+ Slaves: [ controller-2 ] -+ Stopped: [ controller-1 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ ip-192.168.24.6 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-10.0.0.102 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.1.17 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.3.15 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.4.11 (ocf::heartbeat:IPaddr2): Started controller-2 -+ Clone Set: haproxy-clone [haproxy] -+ Started: [ controller-0 controller-2 ] -+ Stopped: [ controller-1 galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] -+ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-0 -+ stonith-fence_ipmilan-525400bbf613 (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-2 -+ -diff --git a/pengine/test10/remote-recover-unknown.xml b/pengine/test10/remote-recover-unknown.xml -new file mode 100644 -index 0000000..3992b03 ---- /dev/null -+++ b/pengine/test10/remote-recover-unknown.xml -@@ -0,0 +1,734 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.8.3.1 - diff --git a/SOURCES/064-bundle-meta.patch b/SOURCES/064-bundle-meta.patch deleted file mode 100644 index 64fef38..0000000 --- a/SOURCES/064-bundle-meta.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 9ddb7907e2c3f803331700a667c7ec91b4d5db74 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 26 May 2017 16:06:00 -0500 -Subject: [PATCH 1/2] Fix: libpe_status: set parent for bundle components - -This allows the bundle components to inherit meta-attributes -set on the bundle resource. ---- - lib/pengine/container.c | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index f93a60f..836b482 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -177,7 +177,7 @@ create_ip_resource( - - // TODO: Other ops? Timeouts and intervals from underlying resource? - -- if (common_unpack(xml_ip, &tuple->ip, NULL, data_set) == false) { -+ if (common_unpack(xml_ip, &tuple->ip, parent, data_set) == false) { - return FALSE; - } - -@@ -328,11 +328,10 @@ create_docker_resource( - - // TODO: Other ops? Timeouts and intervals from underlying resource? - -- if (common_unpack(xml_docker, &tuple->docker, NULL, data_set) == FALSE) { -+ if (common_unpack(xml_docker, &tuple->docker, parent, data_set) == FALSE) { - return FALSE; - } - parent->children = g_list_append(parent->children, tuple->docker); -- tuple->docker->parent = parent; - return TRUE; - } - -@@ -408,7 +407,7 @@ create_remote_resource( - nodeid = NULL; - id = NULL; - -- if (common_unpack(xml_remote, &tuple->remote, NULL, data_set) == FALSE) { -+ if (common_unpack(xml_remote, &tuple->remote, parent, data_set) == FALSE) { - return FALSE; - } - --- -1.8.3.1 - - -From 7033ac1e65e9e3e70d8f365c71e71069f446c3d9 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 26 May 2017 17:22:48 -0500 -Subject: [PATCH 2/2] Low: libpe_status: propagate multiple-active=block for - bundles - -Comparable to groups, if one of a bundle's components is found multiply active -and the bundle has multiple-active=block, block everything in the bundle. ---- - lib/pengine/native.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/lib/pengine/native.c b/lib/pengine/native.c -index da9e344..f785b90 100644 ---- a/lib/pengine/native.c -+++ b/lib/pengine/native.c -@@ -91,10 +91,11 @@ native_add_running(resource_t * rsc, node_t * node, pe_working_set_t * data_set) - clear_bit(rsc->flags, pe_rsc_managed); - set_bit(rsc->flags, pe_rsc_block); - -- /* If the group that the resource belongs to is configured with multiple-active=block, */ -- /* block the whole group. */ -+ /* If the resource belongs to a group or bundle configured with -+ * multiple-active=block, block the entire entity. -+ */ - if (rsc->parent -- && rsc->parent->variant == pe_group -+ && (rsc->parent->variant == pe_group || rsc->parent->variant == pe_container) - && rsc->parent->recovery_type == recovery_block) { - GListPtr gIter = rsc->parent->children; - --- -1.8.3.1 - diff --git a/SOURCES/065-coverity-cleanup.patch b/SOURCES/065-coverity-cleanup.patch deleted file mode 100644 index bcefebc..0000000 --- a/SOURCES/065-coverity-cleanup.patch +++ /dev/null @@ -1,26 +0,0 @@ -From d3c67afdb612491325accbd23f1c86d29afcf1ff Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 8 Jun 2017 17:50:42 -0500 -Subject: [PATCH] Low: libpe_status: get rid of redundant test - -unimportant, but makes static analysis happy ---- - lib/pengine/utils.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 44fbb51..5bd905d 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -2032,7 +2032,7 @@ rsc_action_digest_cmp(resource_t * rsc, xmlNode * xml_op, node_t * node, - get_rsc_attributes(local_rsc_params, rsc, node, data_set); - data->params_all = create_xml_node(NULL, XML_TAG_PARAMS); - -- if(fix_remote_addr(rsc) && node) { -+ if (fix_remote_addr(rsc)) { - // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside - crm_xml_add(data->params_all, "addr", node->details->uname); - crm_trace("Fixing addr for %s on %s", rsc->id, node->details->uname); --- -1.8.3.1 - diff --git a/SOURCES/066-forward-compat.patch b/SOURCES/066-forward-compat.patch deleted file mode 100644 index 0268bc5..0000000 --- a/SOURCES/066-forward-compat.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 0abcd469f5ee43bc908922e6994d80107d6ac462 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 9 Jun 2017 11:11:12 -0500 -Subject: [PATCH] Refactor: libcrmcommon: rename queue backlog structure member - -will be more consistent with future changes ---- - include/crm/common/ipcs.h | 2 +- - lib/common/ipc.c | 8 ++++---- - 2 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/include/crm/common/ipcs.h b/include/crm/common/ipcs.h -index 06cade9..52338e3 100644 ---- a/include/crm/common/ipcs.h -+++ b/include/crm/common/ipcs.h -@@ -93,7 +93,7 @@ struct crm_client_s { - - struct crm_remote_s *remote; /* TCP/TLS */ - -- unsigned int backlog_len; /* IPC queue length after last flush */ -+ unsigned int queue_backlog; /* IPC queue length after last flush */ - }; - - extern GHashTable *client_connections; -diff --git a/lib/common/ipc.c b/lib/common/ipc.c -index efe6480..50980ec 100644 ---- a/lib/common/ipc.c -+++ b/lib/common/ipc.c -@@ -558,25 +558,25 @@ crm_ipcs_flush_events(crm_client_t * c) - */ - - if (queue_len > PCMK_IPC_MAX_QUEUE) { -- if ((c->backlog_len <= 1) || (queue_len < c->backlog_len)) { -+ if ((c->queue_backlog <= 1) || (queue_len < c->queue_backlog)) { - /* Don't evict for a new or shrinking backlog */ - crm_warn("Client with process ID %u has a backlog of %u messages " - CRM_XS " %p", c->pid, queue_len, c->ipcs); - } else { - crm_err("Evicting client with process ID %u due to backlog of %u messages " - CRM_XS " %p", c->pid, queue_len, c->ipcs); -- c->backlog_len = 0; -+ c->queue_backlog = 0; - qb_ipcs_disconnect(c->ipcs); - return rc; - } - } - -- c->backlog_len = queue_len; -+ c->queue_backlog = queue_len; - delay_next_flush(c, queue_len); - - } else { - /* Event queue is empty, there is no backlog */ -- c->backlog_len = 0; -+ c->queue_backlog = 0; - } - - return rc; --- -1.8.3.1 - diff --git a/SOURCES/067-bundle-constraints.patch b/SOURCES/067-bundle-constraints.patch deleted file mode 100644 index aed65b5..0000000 --- a/SOURCES/067-bundle-constraints.patch +++ /dev/null @@ -1,764 +0,0 @@ -From f9ad81dfee9780a783ea769e22af89045ef673c1 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 2 Jun 2017 12:02:28 +1000 -Subject: [PATCH 1/8] PE: Bundles: Implement colocation of primitives and - groups with bundles - ---- - pengine/container.c | 42 +++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 41 insertions(+), 1 deletion(-) - -diff --git a/pengine/container.c b/pengine/container.c -index 7ec390e..3dc1b35 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -115,6 +115,7 @@ container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - } - - clear_bit(rsc->flags, pe_rsc_allocating); -+ clear_bit(rsc->flags, pe_rsc_provisional); - return NULL; - } - -@@ -205,7 +206,46 @@ container_rsc_colocation_lh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_coloca - void - container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * constraint) - { -- pe_err("Container %s cannot be colocated with anything", rsc_rh->id); -+ GListPtr allocated_rhs = NULL; -+ container_variant_data_t *container_data = NULL; -+ -+ CRM_CHECK(constraint != NULL, return); -+ CRM_CHECK(rsc_lh != NULL, pe_err("rsc_lh was NULL for %s", constraint->id); return); -+ CRM_CHECK(rsc_rh != NULL, pe_err("rsc_rh was NULL for %s", constraint->id); return); -+ -+ if (is_set(rsc_rh->flags, pe_rsc_provisional)) { -+ pe_rsc_trace(rsc_rh, "%s is still provisional", rsc_rh->id); -+ return; -+ -+ } else if(rsc_lh->variant > pe_group) { -+ pe_err("Only basic resources and groups can be colocated with %s", rsc_rh->id); -+ return; -+ } -+ -+ get_container_variant_data(container_data, constraint->rsc_rh); -+ pe_rsc_trace(rsc_rh, "Processing constraint %s: %s -> %s %d", -+ constraint->id, rsc_lh->id, rsc_rh->id, constraint->score); -+ -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ -+ if (constraint->score < INFINITY) { -+ tuple->docker->cmds->rsc_colocation_rh(rsc_lh, tuple->docker, constraint); -+ -+ } else { -+ node_t *chosen = tuple->docker->fns->location(tuple->docker, NULL, FALSE); -+ -+ if (chosen != NULL && is_set_recursive(tuple->docker, pe_rsc_block, TRUE) == FALSE) { -+ pe_rsc_trace(rsc_rh, "Allowing %s: %s %d", constraint->id, chosen->details->uname, chosen->weight); -+ allocated_rhs = g_list_prepend(allocated_rhs, chosen); -+ } -+ } -+ } -+ -+ if (constraint->score >= INFINITY) { -+ node_list_exclude(rsc_lh->allowed_nodes, allocated_rhs, FALSE); -+ } -+ g_list_free(allocated_rhs); - } - - enum pe_action_flags --- -1.8.3.1 - - -From 12abb14f516cf53f526b0bbdade1fda9ad612091 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 2 Jun 2017 12:40:34 +1000 -Subject: [PATCH 2/8] PE: Bundles: Allow clones to be colocated with bundles - ---- - pengine/clone.c | 61 +++++++++++++++++++--------------- - pengine/container.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++------- - pengine/utils.h | 2 ++ - 3 files changed, 120 insertions(+), 38 deletions(-) - -diff --git a/pengine/clone.c b/pengine/clone.c -index 2b332b1..f8c7503 100644 ---- a/pengine/clone.c -+++ b/pengine/clone.c -@@ -925,23 +925,22 @@ clone_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - } - } - --static bool -+bool - assign_node(resource_t * rsc, node_t * node, gboolean force) - { - bool changed = FALSE; - - if (rsc->children) { - -- GListPtr gIter = rsc->children; -- -- for (; gIter != NULL; gIter = gIter->next) { -+ for (GListPtr gIter = rsc->children; gIter != NULL; gIter = gIter->next) { - resource_t *child_rsc = (resource_t *) gIter->data; - -- changed |= native_assign_node(child_rsc, NULL, node, force); -+ changed |= assign_node(child_rsc, node, force); - } - - return changed; - } -+ - if (rsc->allocated_to != NULL) { - changed = true; - } -@@ -954,7 +953,6 @@ static resource_t * - find_compatible_child_by_node(resource_t * local_child, node_t * local_node, resource_t * rsc, - enum rsc_role_e filter, gboolean current) - { -- node_t *node = NULL; - GListPtr gIter = NULL; - - if (local_node == NULL) { -@@ -968,29 +966,11 @@ find_compatible_child_by_node(resource_t * local_child, node_t * local_node, res - gIter = rsc->children; - for (; gIter != NULL; gIter = gIter->next) { - resource_t *child_rsc = (resource_t *) gIter->data; -- enum rsc_role_e next_role = child_rsc->fns->state(child_rsc, current); - -- if (is_set_recursive(child_rsc, pe_rsc_block, TRUE) == FALSE) { -- /* We only want instances that haven't failed */ -- node = child_rsc->fns->location(child_rsc, NULL, current); -- } -- -- if (filter != RSC_ROLE_UNKNOWN && next_role != filter) { -- crm_trace("Filtered %s", child_rsc->id); -- continue; -- } -- -- if (node && local_node && node->details == local_node->details) { -+ if(is_child_compatible(child_rsc, local_node, filter, current)) { - crm_trace("Pairing %s with %s on %s", -- local_child->id, child_rsc->id, node->details->uname); -+ local_child->id, child_rsc->id, local_node->details->uname); - return child_rsc; -- -- } else if (node) { -- crm_trace("%s - %s vs %s", child_rsc->id, node->details->uname, -- local_node->details->uname); -- -- } else { -- crm_trace("%s - not allocated %d", child_rsc->id, current); - } - } - -@@ -998,6 +978,35 @@ find_compatible_child_by_node(resource_t * local_child, node_t * local_node, res - return NULL; - } - -+gboolean -+is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e filter, gboolean current) -+{ -+ node_t *node = NULL; -+ enum rsc_role_e next_role = child_rsc->fns->state(child_rsc, current); -+ -+ if (is_set_recursive(child_rsc, pe_rsc_block, TRUE) == FALSE) { -+ /* We only want instances that haven't failed */ -+ node = child_rsc->fns->location(child_rsc, NULL, current); -+ } -+ -+ if (filter != RSC_ROLE_UNKNOWN && next_role != filter) { -+ crm_trace("Filtered %s", child_rsc->id); -+ return FALSE; -+ } -+ -+ if (node && local_node && node->details == local_node->details) { -+ return TRUE; -+ -+ } else if (node) { -+ crm_trace("%s - %s vs %s", child_rsc->id, node->details->uname, -+ local_node->details->uname); -+ -+ } else { -+ crm_trace("%s - not allocated %d", child_rsc->id, current); -+ } -+ return FALSE; -+} -+ - resource_t * - find_compatible_child(resource_t * local_child, resource_t * rsc, enum rsc_role_e filter, - gboolean current) -diff --git a/pengine/container.c b/pengine/container.c -index 3dc1b35..67b0052 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -197,34 +197,105 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - } - } - -+ -+static resource_t * -+find_compatible_tuple_by_node(resource_t * rsc_lh, node_t * candidate, resource_t * rsc, -+ enum rsc_role_e filter, gboolean current) -+{ -+ container_variant_data_t *container_data = NULL; -+ -+ CRM_CHECK(candidate != NULL, return NULL); -+ get_container_variant_data(container_data, rsc); -+ -+ crm_trace("Looking for compatible child from %s for %s on %s", -+ rsc_lh->id, rsc->id, candidate->details->uname); -+ -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ -+ if(is_child_compatible(tuple->docker, candidate, filter, current)) { -+ crm_trace("Pairing %s with %s on %s", -+ rsc_lh->id, tuple->docker->id, candidate->details->uname); -+ return tuple->docker; -+ } -+ } -+ -+ crm_trace("Can't pair %s with %s", rsc_lh->id, rsc->id); -+ return NULL; -+} -+ -+static resource_t * -+find_compatible_tuple(resource_t *rsc_lh, resource_t * rsc, enum rsc_role_e filter, -+ gboolean current) -+{ -+ GListPtr scratch = NULL; -+ resource_t *pair = NULL; -+ node_t *active_node_lh = NULL; -+ -+ active_node_lh = rsc_lh->fns->location(rsc_lh, NULL, current); -+ if (active_node_lh) { -+ return find_compatible_tuple_by_node(rsc_lh, active_node_lh, rsc, filter, current); -+ } -+ -+ scratch = g_hash_table_get_values(rsc_lh->allowed_nodes); -+ scratch = g_list_sort_with_data(scratch, sort_node_weight, NULL); -+ -+ for (GListPtr gIter = scratch; gIter != NULL; gIter = gIter->next) { -+ node_t *node = (node_t *) gIter->data; -+ -+ pair = find_compatible_tuple_by_node(rsc_lh, node, rsc, filter, current); -+ if (pair) { -+ goto done; -+ } -+ } -+ -+ pe_rsc_debug(rsc, "Can't pair %s with %s", rsc_lh->id, rsc->id); -+ done: -+ g_list_free(scratch); -+ return pair; -+} -+ - void --container_rsc_colocation_lh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * constraint) -+container_rsc_colocation_lh(resource_t * rsc, resource_t * rsc_rh, rsc_colocation_t * constraint) - { -- pe_err("Container %s cannot be colocated with anything", rsc_lh->id); -+ pe_err("Container %s cannot be colocated with anything", rsc->id); - } - - void --container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * constraint) -+container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc, rsc_colocation_t * constraint) - { - GListPtr allocated_rhs = NULL; - container_variant_data_t *container_data = NULL; - - CRM_CHECK(constraint != NULL, return); - CRM_CHECK(rsc_lh != NULL, pe_err("rsc_lh was NULL for %s", constraint->id); return); -- CRM_CHECK(rsc_rh != NULL, pe_err("rsc_rh was NULL for %s", constraint->id); return); -+ CRM_CHECK(rsc != NULL, pe_err("rsc was NULL for %s", constraint->id); return); - -- if (is_set(rsc_rh->flags, pe_rsc_provisional)) { -- pe_rsc_trace(rsc_rh, "%s is still provisional", rsc_rh->id); -+ if (is_set(rsc->flags, pe_rsc_provisional)) { -+ pe_rsc_trace(rsc, "%s is still provisional", rsc->id); - return; - -- } else if(rsc_lh->variant > pe_group) { -- pe_err("Only basic resources and groups can be colocated with %s", rsc_rh->id); -+ } else if(constraint->rsc_lh->variant > pe_group) { -+ resource_t *rh_child = find_compatible_tuple(rsc_lh, rsc, RSC_ROLE_UNKNOWN, FALSE); -+ -+ if (rh_child) { -+ pe_rsc_debug(rsc, "Pairing %s with %s", rsc_lh->id, rh_child->id); -+ rsc_lh->cmds->rsc_colocation_lh(rsc_lh, rh_child, constraint); -+ -+ } else if (constraint->score >= INFINITY) { -+ crm_notice("Cannot pair %s with instance of %s", rsc_lh->id, rsc->id); -+ assign_node(rsc_lh, NULL, TRUE); -+ -+ } else { -+ pe_rsc_debug(rsc, "Cannot pair %s with instance of %s", rsc_lh->id, rsc->id); -+ } -+ - return; - } - -- get_container_variant_data(container_data, constraint->rsc_rh); -- pe_rsc_trace(rsc_rh, "Processing constraint %s: %s -> %s %d", -- constraint->id, rsc_lh->id, rsc_rh->id, constraint->score); -+ get_container_variant_data(container_data, rsc); -+ pe_rsc_trace(rsc, "Processing constraint %s: %s -> %s %d", -+ constraint->id, rsc_lh->id, rsc->id, constraint->score); - - for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; -@@ -236,7 +307,7 @@ container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_coloca - node_t *chosen = tuple->docker->fns->location(tuple->docker, NULL, FALSE); - - if (chosen != NULL && is_set_recursive(tuple->docker, pe_rsc_block, TRUE) == FALSE) { -- pe_rsc_trace(rsc_rh, "Allowing %s: %s %d", constraint->id, chosen->details->uname, chosen->weight); -+ pe_rsc_trace(rsc, "Allowing %s: %s %d", constraint->id, chosen->details->uname, chosen->weight); - allocated_rhs = g_list_prepend(allocated_rhs, chosen); - } - } -diff --git a/pengine/utils.h b/pengine/utils.h -index fc503be..79fd33d 100644 ---- a/pengine/utils.h -+++ b/pengine/utils.h -@@ -52,6 +52,8 @@ extern void log_action(unsigned int log_level, const char *pre_text, - extern gboolean can_run_any(GHashTable * nodes); - extern resource_t *find_compatible_child(resource_t * local_child, resource_t * rsc, - enum rsc_role_e filter, gboolean current); -+gboolean is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e filter, gboolean current); -+bool assign_node(resource_t * rsc, node_t * node, gboolean force); - - - enum filter_colocation_res { --- -1.8.3.1 - - -From 2cc26c662dbbee5a7288c83c71fe172a1d3d4ee1 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 2 Jun 2017 12:52:24 +1000 -Subject: [PATCH 3/8] Refactor: PE: Simplify the bundle and clone colocation_lh - functions - ---- - pengine/clone.c | 15 +-------------- - pengine/container.c | 6 +++++- - 2 files changed, 6 insertions(+), 15 deletions(-) - -diff --git a/pengine/clone.c b/pengine/clone.c -index f8c7503..51338d6 100644 ---- a/pengine/clone.c -+++ b/pengine/clone.c -@@ -1047,20 +1047,7 @@ clone_rsc_colocation_lh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation - * - * Instead we add the colocation constraints to the child and call from there - */ -- -- GListPtr gIter = rsc_lh->children; -- -- CRM_CHECK(FALSE, crm_err("This functionality is not thought to be used. Please report a bug.")); -- CRM_CHECK(rsc_lh, return); -- CRM_CHECK(rsc_rh, return); -- -- for (; gIter != NULL; gIter = gIter->next) { -- resource_t *child_rsc = (resource_t *) gIter->data; -- -- child_rsc->cmds->rsc_colocation_lh(child_rsc, rsc_rh, constraint); -- } -- -- return; -+ CRM_ASSERT(FALSE); - } - - void -diff --git a/pengine/container.c b/pengine/container.c -index 67b0052..008b2ec 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -258,7 +258,11 @@ find_compatible_tuple(resource_t *rsc_lh, resource_t * rsc, enum rsc_role_e filt - void - container_rsc_colocation_lh(resource_t * rsc, resource_t * rsc_rh, rsc_colocation_t * constraint) - { -- pe_err("Container %s cannot be colocated with anything", rsc->id); -+ /* -- Never called -- -+ * -+ * Instead we add the colocation constraints to the child and call from there -+ */ -+ CRM_ASSERT(FALSE); - } - - void --- -1.8.3.1 - - -From 77a80de9cda4b48ef16f29b42abe5c6d6e7fe179 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 8 Jun 2017 21:04:09 +1000 -Subject: [PATCH 4/8] Fix: PE: Bundle location constraints should only apply to - the IP and docker resources - ---- - pengine/container.c | 14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) - -diff --git a/pengine/container.c b/pengine/container.c -index 008b2ec..58f6fca 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -342,16 +342,22 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum - void - container_rsc_location(resource_t * rsc, rsc_to_node_t * constraint) - { -- GListPtr gIter = rsc->children; -+ container_variant_data_t *container_data = NULL; -+ get_container_variant_data(container_data, rsc); - - pe_rsc_trace(rsc, "Processing location constraint %s for %s", constraint->id, rsc->id); - - native_rsc_location(rsc, constraint); - -- for (; gIter != NULL; gIter = gIter->next) { -- resource_t *child_rsc = (resource_t *) gIter->data; -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; - -- child_rsc->cmds->rsc_location(child_rsc, constraint); -+ if (tuple->docker) { -+ tuple->docker->cmds->rsc_location(tuple->docker, constraint); -+ } -+ if(tuple->ip) { -+ tuple->ip->cmds->rsc_location(tuple->ip, constraint); -+ } - } - } - --- -1.8.3.1 - - -From 499d2d4d300b45984e2165e75a9bbdb33f8e752d Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 14 Jun 2017 12:24:12 +1000 -Subject: [PATCH 5/8] Fix: PE: Do not re-add a node's default score for each - location constraint - ---- - pengine/test10/base-score.scores | 2 +- - pengine/utils.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/pengine/test10/base-score.scores b/pengine/test10/base-score.scores -index 1c47a9b..7955241 100644 ---- a/pengine/test10/base-score.scores -+++ b/pengine/test10/base-score.scores -@@ -1,5 +1,5 @@ - Allocation scores: --native_color: Dummy allocation score on puma1: 210 -+native_color: Dummy allocation score on puma1: 110 - native_color: Dummy allocation score on puma2: 0 - native_color: Dummy allocation score on puma3: -2000 - native_color: Dummy allocation score on puma4: 0 -diff --git a/pengine/utils.c b/pengine/utils.c -index 755f1c8..a587e58 100644 ---- a/pengine/utils.c -+++ b/pengine/utils.c -@@ -96,7 +96,7 @@ rsc2node_new(const char *id, resource_t * rsc, - if (foo_node != NULL) { - node_t *copy = node_copy(foo_node); - -- copy->weight = merge_weights(node_weight, foo_node->weight); -+ copy->weight = node_weight; - new_con->node_list_rh = g_list_prepend(NULL, copy); - } - --- -1.8.3.1 - - -From 61c6a8acd9c093af333cabe5381c9b7500880c5f Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 15 Jun 2017 10:40:39 +1000 -Subject: [PATCH 6/8] Fix: PE: Correctly implement - pe_order_implies_first_printed - ---- - pengine/graph.c | 44 ++++++++++++++++++++++---------------------- - 1 file changed, 22 insertions(+), 22 deletions(-) - -diff --git a/pengine/graph.c b/pengine/graph.c -index e3bde09..2a0b4b9 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -174,7 +174,8 @@ 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 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) - { - enum pe_graph_flags changed = pe_graph_none; -@@ -186,10 +187,10 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - processed = TRUE; - if (then->rsc) { - changed |= -- then->rsc->cmds->update_actions(first, then, node, flags & pe_action_optional, -+ then->rsc->cmds->update_actions(first, then, node, first_flags & pe_action_optional, - pe_action_optional, pe_order_implies_then); - -- } else if (is_set(flags, pe_action_optional) == FALSE) { -+ } else if (is_set(first_flags, pe_action_optional) == FALSE) { - if (update_action_flags(then, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__)) { - changed |= pe_graph_updated_then; - } -@@ -206,7 +207,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - - processed = TRUE; - changed |= -- then->rsc->cmds->update_actions(first, then, node, flags, restart, pe_order_restart); -+ then->rsc->cmds->update_actions(first, then, node, first_flags, restart, pe_order_restart); - if (changed) { - pe_rsc_trace(then->rsc, "restart: %s then %s: changed", first->uuid, then->uuid); - } else { -@@ -218,10 +219,10 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - processed = TRUE; - if (first->rsc) { - changed |= -- first->rsc->cmds->update_actions(first, then, node, flags, -+ first->rsc->cmds->update_actions(first, then, node, first_flags, - pe_action_optional, pe_order_implies_first); - -- } else if (is_set(flags, pe_action_optional) == FALSE) { -+ } else if (is_set(first_flags, pe_action_optional) == FALSE) { - pe_rsc_trace(first->rsc, "first unrunnable: %s then %s", first->uuid, then->uuid); - if (update_action_flags(first, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__)) { - changed |= pe_graph_updated_first; -@@ -239,7 +240,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - processed = TRUE; - if (then->rsc) { - changed |= -- then->rsc->cmds->update_actions(first, then, node, flags & pe_action_optional, -+ then->rsc->cmds->update_actions(first, then, node, first_flags & pe_action_optional, - pe_action_optional, pe_order_implies_first_master); - } - -@@ -257,10 +258,10 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - processed = TRUE; - if (then->rsc) { - changed |= -- then->rsc->cmds->update_actions(first, then, node, flags, -+ then->rsc->cmds->update_actions(first, then, node, first_flags, - pe_action_runnable, pe_order_one_or_more); - -- } else if (is_set(flags, pe_action_runnable)) { -+ } else if (is_set(first_flags, pe_action_runnable)) { - /* alright. a "first" action is considered runnable, incremente - * the 'runnable_before' counter */ - then->runnable_before++; -@@ -285,13 +286,13 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - processed = TRUE; - if (then->rsc) { - changed |= -- then->rsc->cmds->update_actions(first, then, node, flags, -+ then->rsc->cmds->update_actions(first, then, node, first_flags, - pe_action_runnable, pe_order_runnable_left); - -- } else if (is_set(flags, pe_action_runnable) == FALSE) { -+ } else if (is_set(first_flags, pe_action_runnable) == FALSE) { - pe_rsc_trace(then->rsc, "then unrunnable: %s then %s", first->uuid, then->uuid); - if (update_action_flags(then, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__)) { -- changed |= pe_graph_updated_then; -+ changed |= pe_graph_updated_then; - } - } - if (changed) { -@@ -305,7 +306,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - processed = TRUE; - if (then->rsc) { - changed |= -- then->rsc->cmds->update_actions(first, then, node, flags, -+ then->rsc->cmds->update_actions(first, then, node, first_flags, - pe_action_optional, pe_order_implies_first_migratable); - } - if (changed) { -@@ -319,7 +320,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - processed = TRUE; - if (then->rsc) { - changed |= -- then->rsc->cmds->update_actions(first, then, node, flags, -+ then->rsc->cmds->update_actions(first, then, node, first_flags, - pe_action_optional, pe_order_pseudo_left); - } - if (changed) { -@@ -333,7 +334,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - processed = TRUE; - if (then->rsc) { - changed |= -- then->rsc->cmds->update_actions(first, then, node, flags, -+ then->rsc->cmds->update_actions(first, then, node, first_flags, - pe_action_runnable, pe_order_optional); - } - if (changed) { -@@ -347,7 +348,7 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - processed = TRUE; - if (then->rsc) { - changed |= -- then->rsc->cmds->update_actions(first, then, node, flags, -+ then->rsc->cmds->update_actions(first, then, node, first_flags, - pe_action_runnable, pe_order_asymmetrical); - } - -@@ -360,13 +361,13 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac - } - - if ((first->flags & pe_action_runnable) && (type & pe_order_implies_then_printed) -- && (flags & pe_action_optional) == 0) { -+ && (first_flags & pe_action_optional) == 0) { - processed = TRUE; - crm_trace("%s implies %s printed", first->uuid, then->uuid); - update_action_flags(then, pe_action_print_always, __FUNCTION__, __LINE__); /* don't care about changed */ - } - -- if ((type & pe_order_implies_first_printed) && (flags & pe_action_optional) == 0) { -+ if (is_set(type, pe_order_implies_first_printed) && is_set(then_flags, pe_action_optional) == FALSE) { - processed = TRUE; - crm_trace("%s implies %s printed", then->uuid, first->uuid); - update_action_flags(first, pe_action_print_always, __FUNCTION__, __LINE__); /* don't care about changed */ -@@ -510,7 +511,6 @@ update_action(action_t * then) - crm_trace("Then: Found node %s for %s", then_node->details->uname, then->uuid); - } - } -- - /* Disable constraint if it only applies when on same node, but isn't */ - if (is_set(other->type, pe_order_same_node) && first_node && then_node - && (first_node->details != then_node->details)) { -@@ -524,8 +524,7 @@ update_action(action_t * then) - - clear_bit(changed, pe_graph_updated_first); - -- if (first->rsc != then->rsc -- && first->rsc != NULL && then->rsc != NULL && first->rsc != then->rsc->parent) { -+ if (first->rsc != then->rsc && is_parent(then->rsc, first->rsc) == FALSE) { - first = rsc_expand_action(first); - } - if (first != other->action) { -@@ -584,7 +583,8 @@ update_action(action_t * then) - node = first->node; - } - clear_bit(first_flags, pe_action_pseudo); -- changed |= graph_update_action(first, then, node, first_flags, otype); -+ -+ changed |= graph_update_action(first, then, node, first_flags, then_flags, otype); - - /* 'first' was for a complex resource (clone, group, etc), - * create a new dependency if necessary --- -1.8.3.1 - - -From 44f2c05dcdcf6dd5a1bff5e441ddd845a3063b6b Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 15 Jun 2017 10:43:47 +1000 -Subject: [PATCH 7/8] Fix: PE: Clones within bundles may also have - notifications enabled - ---- - pengine/graph.c | 31 +++++++++++++++++++------------ - 1 file changed, 19 insertions(+), 12 deletions(-) - -diff --git a/pengine/graph.c b/pengine/graph.c -index 2a0b4b9..0d80e79 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -146,25 +146,32 @@ convert_non_atomic_uuid(char *old_uuid, resource_t * rsc, gboolean allow_notify, - static action_t * - rsc_expand_action(action_t * action) - { -+ gboolean notify = FALSE; - action_t *result = action; -+ resource_t *rsc = action->rsc; - -- if (action->rsc && action->rsc->variant >= pe_group) { -+ if (rsc == NULL) { -+ return action; -+ } -+ -+ if(pe_rsc_is_clone(rsc) || rsc->parent == NULL) { -+ /* Only outermost resources have notification actions. -+ * The exception is those in bundles. -+ */ -+ notify = is_set(rsc->flags, pe_rsc_notify); -+ } -+ -+ if (rsc->variant >= pe_group) { - /* Expand 'start' -> 'started' */ - char *uuid = NULL; -- gboolean notify = FALSE; -- -- if (action->rsc->parent == NULL) { -- /* Only outermost resources have notification actions */ -- notify = is_set(action->rsc->flags, pe_rsc_notify); -- } - -- uuid = convert_non_atomic_uuid(action->uuid, action->rsc, notify, FALSE); -+ uuid = convert_non_atomic_uuid(action->uuid, rsc, notify, FALSE); - if (uuid) { -- pe_rsc_trace(action->rsc, "Converting %s to %s %d", action->uuid, uuid, -- is_set(action->rsc->flags, pe_rsc_notify)); -- result = find_first_action(action->rsc->actions, uuid, NULL, NULL); -+ pe_rsc_trace(rsc, "Converting %s to %s %d", action->uuid, uuid, -+ is_set(rsc->flags, pe_rsc_notify)); -+ result = find_first_action(rsc->actions, uuid, NULL, NULL); - if (result == NULL) { -- crm_err("Couldn't expand %s", action->uuid); -+ crm_err("Couldn't expand %s to %s in %s", action->uuid, uuid, rsc->id); - result = action; - } - free(uuid); --- -1.8.3.1 - - -From f822f38b15e99005f4ace270b6450443d53f6043 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 19 Jun 2017 10:47:24 -0500 -Subject: [PATCH 8/8] Low: pengine: make checks a little safer - ---- - pengine/graph.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/pengine/graph.c b/pengine/graph.c -index 0d80e79..c93745b 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -154,7 +154,8 @@ rsc_expand_action(action_t * action) - return action; - } - -- if(pe_rsc_is_clone(rsc) || rsc->parent == NULL) { -+ if ((rsc->parent == NULL) -+ || (pe_rsc_is_clone(rsc) && (rsc->parent->variant == pe_container))) { - /* Only outermost resources have notification actions. - * The exception is those in bundles. - */ -@@ -531,7 +532,9 @@ update_action(action_t * then) - - clear_bit(changed, pe_graph_updated_first); - -- if (first->rsc != then->rsc && is_parent(then->rsc, first->rsc) == FALSE) { -+ if (first->rsc && then->rsc && (first->rsc != then->rsc) -+ && (is_parent(then->rsc, first->rsc) == FALSE)) { -+ - first = rsc_expand_action(first); - } - if (first != other->action) { --- -1.8.3.1 - diff --git a/SOURCES/068-bundle-weight-fix.patch b/SOURCES/068-bundle-weight-fix.patch deleted file mode 100644 index 0db280b..0000000 --- a/SOURCES/068-bundle-weight-fix.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 07fc025fb0998ed7f3b0bbfb10a6740e420cae31 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 20 Jun 2017 15:47:38 -0500 -Subject: [PATCH 1/2] Fix: libpe_status: disallow resources on bundle nodes - ---- - lib/pengine/container.c | 21 +++++++++++++++++++++ - 1 file changed, 21 insertions(+) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 836b482..c37f421 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -342,6 +342,7 @@ create_remote_resource( - { - if (tuple->child && valid_network(data)) { - GHashTableIter gIter; -+ GListPtr rsc_iter = NULL; - node_t *node = NULL; - xmlNode *xml_obj = NULL; - xmlNode *xml_remote = NULL; -@@ -402,6 +403,26 @@ create_remote_resource( - node->weight = -INFINITY; - } - -+ /* unpack_remote_nodes() ensures that each remote node and guest node -+ * has a node_t entry. Ideally, it would do the same for bundle nodes. -+ * Unfortunately, a bundle has to be mostly unpacked before it's obvious -+ * what nodes will be needed, so we do it just above. -+ * -+ * Worse, that means that the node may have been utilized while -+ * unpacking other resources, without our weight correction. The most -+ * likely place for this to happen is when common_unpack() calls -+ * resource_location() to set a default score in symmetric clusters. -+ * This adds a node *copy* to each resource's allowed nodes, and these -+ * copies will have the wrong weight. -+ * -+ * As a hacky workaround, clear those copies here. -+ */ -+ for (rsc_iter = data_set->resources; rsc_iter; rsc_iter = rsc_iter->next) { -+ resource_t *rsc = (resource_t *) rsc_iter->data; -+ -+ g_hash_table_remove(rsc->allowed_nodes, nodeid); -+ } -+ - tuple->node = node_copy(node); - tuple->node->weight = 500; - nodeid = NULL; --- -1.8.3.1 - - -From ac906cbf1b46c0037fed634158874679824ce635 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 20 Jun 2017 20:23:12 -0500 -Subject: [PATCH 2/2] Fix: libpe_status: avoid memory leaks when creating - bundle remote resource - ---- - lib/pengine/container.c | 31 +++++++++++++++++++------------ - 1 file changed, 19 insertions(+), 12 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index c37f421..e916446 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -346,22 +346,28 @@ create_remote_resource( - node_t *node = NULL; - xmlNode *xml_obj = NULL; - xmlNode *xml_remote = NULL; -- char *nodeid = crm_strdup_printf("%s-%d", data->prefix, tuple->offset); -- char *id = NULL; -+ char *id = crm_strdup_printf("%s-%d", data->prefix, tuple->offset); -+ const char *uname = NULL; - -- if (remote_id_conflict(nodeid, data_set)) { -+ if (remote_id_conflict(id, data_set)) { -+ free(id); - // The biggest hammer we have - id = crm_strdup_printf("pcmk-internal-%s-remote-%d", tuple->child->id, tuple->offset); - CRM_ASSERT(remote_id_conflict(id, data_set) == FALSE); -- } else { -- id = strdup(nodeid); - } - - xml_remote = create_resource(id, "pacemaker", "remote"); -+ -+ /* Abandon our created ID, and pull the copy from the XML, because we -+ * need something that will get freed during data set cleanup to use as -+ * the node ID and uname. -+ */ - free(id); -+ id = NULL; -+ uname = ID(xml_remote); - - xml_obj = create_xml_node(xml_remote, "operations"); -- create_op(xml_obj, ID(xml_remote), "monitor", "60s"); -+ create_op(xml_obj, uname, "monitor", "60s"); - - xml_obj = create_xml_node(xml_remote, XML_TAG_ATTR_SETS); - crm_xml_set_id(xml_obj, "%s-attributes-%d", data->prefix, tuple->offset); -@@ -376,7 +382,10 @@ create_remote_resource( - if(data->control_port) { - create_nvp(xml_obj, "port", data->control_port); - } else { -- create_nvp(xml_obj, "port", crm_itoa(DEFAULT_REMOTE_PORT)); -+ char *port_s = crm_itoa(DEFAULT_REMOTE_PORT); -+ -+ create_nvp(xml_obj, "port", port_s); -+ free(port_s); - } - - xml_obj = create_xml_node(xml_remote, XML_TAG_META_SETS); -@@ -395,9 +404,9 @@ create_remote_resource( - * been, if it has a permanent node attribute), and ensure its weight is - * -INFINITY so no other resources can run on it. - */ -- node = pe_find_node(data_set->nodes, nodeid); -+ node = pe_find_node(data_set->nodes, uname); - if (node == NULL) { -- node = pe_create_node(strdup(nodeid), nodeid, "remote", "-INFINITY", -+ node = pe_create_node(uname, uname, "remote", "-INFINITY", - data_set); - } else { - node->weight = -INFINITY; -@@ -420,13 +429,11 @@ create_remote_resource( - for (rsc_iter = data_set->resources; rsc_iter; rsc_iter = rsc_iter->next) { - resource_t *rsc = (resource_t *) rsc_iter->data; - -- g_hash_table_remove(rsc->allowed_nodes, nodeid); -+ g_hash_table_remove(rsc->allowed_nodes, uname); - } - - tuple->node = node_copy(node); - tuple->node->weight = 500; -- nodeid = NULL; -- id = NULL; - - if (common_unpack(xml_remote, &tuple->remote, parent, data_set) == FALSE) { - return FALSE; --- -1.8.3.1 - diff --git a/SOURCES/069-ipc-refactor.patch b/SOURCES/069-ipc-refactor.patch deleted file mode 100644 index 22e8fda..0000000 --- a/SOURCES/069-ipc-refactor.patch +++ /dev/null @@ -1,126 +0,0 @@ -From 769c210a4e9494757456c2896fdf67e2eb4b76c1 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 9 Jun 2017 10:49:07 -0500 -Subject: [PATCH] Refactor: libcrmcommon,cib,lrmd: functionize allocating IPC - client object - -reduces duplication ---- - cib/remote.c | 6 +----- - include/crm/common/ipcs.h | 1 + - lib/common/ipc.c | 25 +++++++++++++++++++------ - lrmd/tls_backend.c | 5 +---- - 4 files changed, 22 insertions(+), 15 deletions(-) - -diff --git a/cib/remote.c b/cib/remote.c -index 9011552..0160c7e 100644 ---- a/cib/remote.c -+++ b/cib/remote.c -@@ -325,13 +325,9 @@ cib_remote_listen(gpointer data) - num_clients++; - - crm_client_init(); -- new_client = calloc(1, sizeof(crm_client_t)); -+ new_client = crm_client_alloc(NULL); - new_client->remote = calloc(1, sizeof(crm_remote_t)); - -- new_client->id = crm_generate_uuid(); -- -- g_hash_table_insert(client_connections, new_client->id /* Should work */ , new_client); -- - if (ssock == remote_tls_fd) { - #ifdef HAVE_GNUTLS_GNUTLS_H - new_client->kind = CRM_CLIENT_TLS; -diff --git a/include/crm/common/ipcs.h b/include/crm/common/ipcs.h -index ba1ccef..06cade9 100644 ---- a/include/crm/common/ipcs.h -+++ b/include/crm/common/ipcs.h -@@ -105,6 +105,7 @@ crm_client_t *crm_client_get(qb_ipcs_connection_t * c); - crm_client_t *crm_client_get_by_id(const char *id); - const char *crm_client_name(crm_client_t * c); - -+crm_client_t *crm_client_alloc(void *key); - crm_client_t *crm_client_new(qb_ipcs_connection_t * c, uid_t uid, gid_t gid); - void crm_client_destroy(crm_client_t * c); - void crm_client_disconnect_all(qb_ipcs_service_t *s); -diff --git a/lib/common/ipc.c b/lib/common/ipc.c -index d32e373..efe6480 100644 ---- a/lib/common/ipc.c -+++ b/lib/common/ipc.c -@@ -293,6 +293,24 @@ crm_client_disconnect_all(qb_ipcs_service_t *service) - } - } - -+/*! -+ * \brief Allocate a new crm_client_t object and generate its ID -+ * -+ * \param[in] key What to use as connections hash table key (NULL to use ID) -+ * -+ * \return Pointer to new crm_client_t (asserts on failure) -+ */ -+crm_client_t * -+crm_client_alloc(void *key) -+{ -+ crm_client_t *client = calloc(1, sizeof(crm_client_t)); -+ -+ CRM_ASSERT(client != NULL); -+ client->id = crm_generate_uuid(); -+ g_hash_table_insert(client_connections, (key? key : client->id), client); -+ return client; -+} -+ - crm_client_t * - crm_client_new(qb_ipcs_connection_t * c, uid_t uid_client, gid_t gid_client) - { -@@ -324,21 +342,16 @@ crm_client_new(qb_ipcs_connection_t * c, uid_t uid_client, gid_t gid_client) - crm_client_init(); - - /* TODO: Do our own auth checking, return NULL if unauthorized */ -- client = calloc(1, sizeof(crm_client_t)); -- -+ client = crm_client_alloc(c); - client->ipcs = c; - client->kind = CRM_CLIENT_IPC; - client->pid = crm_ipcs_client_pid(c); - -- client->id = crm_generate_uuid(); -- - crm_debug("Connecting %p for uid=%d gid=%d pid=%u id=%s", c, uid_client, gid_client, client->pid, client->id); - - #if ENABLE_ACL - client->user = uid2username(uid_client); - #endif -- -- g_hash_table_insert(client_connections, c, client); - return client; - } - -diff --git a/lrmd/tls_backend.c b/lrmd/tls_backend.c -index 8c36434..7d790cf 100644 ---- a/lrmd/tls_backend.c -+++ b/lrmd/tls_backend.c -@@ -212,11 +212,10 @@ lrmd_remote_listen(gpointer data) - return TRUE; - } - -- new_client = calloc(1, sizeof(crm_client_t)); -+ new_client = crm_client_alloc(NULL); - new_client->remote = calloc(1, sizeof(crm_remote_t)); - new_client->kind = CRM_CLIENT_TLS; - new_client->remote->tls_session = session; -- new_client->id = crm_generate_uuid(); - new_client->remote->auth_timeout = - g_timeout_add(LRMD_REMOTE_AUTH_TIMEOUT, lrmd_auth_timeout_cb, new_client); - crm_notice("LRMD client connection established. %p id: %s", new_client, new_client->id); -@@ -224,8 +223,6 @@ lrmd_remote_listen(gpointer data) - new_client->remote->source = - mainloop_add_fd("lrmd-remote-client", G_PRIORITY_DEFAULT, csock, new_client, - &lrmd_remote_fd_cb); -- g_hash_table_insert(client_connections, new_client->id, new_client); -- - return TRUE; - } - --- -1.8.3.1 - diff --git a/SOURCES/070-check_positive_number.patch b/SOURCES/070-check_positive_number.patch deleted file mode 100644 index 7022a7a..0000000 --- a/SOURCES/070-check_positive_number.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 52153c502ad12c723231f5c7cb80d50a5d0691cd Mon Sep 17 00:00:00 2001 -From: aravind-kumar -Date: Wed, 15 Mar 2017 22:46:42 +0530 -Subject: [PATCH] check_positive_number - ---- - include/crm_internal.h | 1 + - lib/common/utils.c | 9 +++++++++ - 2 files changed, 10 insertions(+), 0 deletions(-) - -diff --git a/include/crm_internal.h b/include/crm_internal.h -index 96a68bd..31d4efe 100644 ---- a/include/crm_internal.h -+++ b/include/crm_internal.h -@@ -126,6 +126,7 @@ gboolean check_time(const char *value); - gboolean check_timer(const char *value); - gboolean check_boolean(const char *value); - gboolean check_number(const char *value); -+gboolean check_positive_number(const char *value); - gboolean check_quorum(const char *value); - gboolean check_script(const char *value); - gboolean check_utilization(const char *value); -diff --git a/lib/common/utils.c b/lib/common/utils.c -index dbf84c0..32c004d 100644 ---- a/lib/common/utils.c -+++ b/lib/common/utils.c -@@ -162,6 +162,15 @@ check_number(const char *value) - } - - gboolean -+check_positive_number(const char* value) -+{ -+ if (check_number(value) && (value[0] != '-') && !(safe_str_eq(value,"0"))) { -+ return TRUE; -+ } -+ return FALSE; -+} -+ -+gboolean - check_quorum(const char *value) - { - if (safe_str_eq(value, "stop")) { --- -1.8.3.1 - diff --git a/SOURCES/071-cluster-ipc-limit.patch b/SOURCES/071-cluster-ipc-limit.patch deleted file mode 100644 index 7a0e350..0000000 --- a/SOURCES/071-cluster-ipc-limit.patch +++ /dev/null @@ -1,517 +0,0 @@ -From ae780515cd4db1e6f23db9f75a628ce9c39bdd49 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 9 Jun 2017 12:35:36 -0500 -Subject: [PATCH 1/8] Refactor: libcrmcommon: remember when IPC client is root - or cluster user - -will allow using a different eviction threshold ---- - include/crm/common/ipcs.h | 3 ++- - lib/common/ipc.c | 13 ++++++++++--- - 2 files changed, 12 insertions(+), 4 deletions(-) - -diff --git a/include/crm/common/ipcs.h b/include/crm/common/ipcs.h -index 52338e3..43b7b60 100644 ---- a/include/crm/common/ipcs.h -+++ b/include/crm/common/ipcs.h -@@ -60,7 +60,8 @@ struct crm_remote_s { - - enum crm_client_flags - { -- crm_client_flag_ipc_proxied = 0x00001, /* ipc_proxy code only */ -+ crm_client_flag_ipc_proxied = 0x00001, /* ipc_proxy code only */ -+ crm_client_flag_ipc_privileged = 0x00002, /* root or cluster user */ - }; - - struct crm_client_s { -diff --git a/lib/common/ipc.c b/lib/common/ipc.c -index 50980ec..e0a7a5c 100644 ---- a/lib/common/ipc.c -+++ b/lib/common/ipc.c -@@ -314,6 +314,7 @@ crm_client_alloc(void *key) - crm_client_t * - crm_client_new(qb_ipcs_connection_t * c, uid_t uid_client, gid_t gid_client) - { -+ static gid_t uid_cluster = 0; - static gid_t gid_cluster = 0; - - crm_client_t *client = NULL; -@@ -323,11 +324,12 @@ crm_client_new(qb_ipcs_connection_t * c, uid_t uid_client, gid_t gid_client) - return NULL; - } - -- if (gid_cluster == 0) { -- if(crm_user_lookup(CRM_DAEMON_USER, NULL, &gid_cluster) < 0) { -+ if (uid_cluster == 0) { -+ if (crm_user_lookup(CRM_DAEMON_USER, &uid_cluster, &gid_cluster) < 0) { - static bool have_error = FALSE; - if(have_error == FALSE) { -- crm_warn("Could not find group for user %s", CRM_DAEMON_USER); -+ crm_warn("Could not find user and group IDs for user %s", -+ CRM_DAEMON_USER); - have_error = TRUE; - } - } -@@ -347,6 +349,11 @@ crm_client_new(qb_ipcs_connection_t * c, uid_t uid_client, gid_t gid_client) - client->kind = CRM_CLIENT_IPC; - client->pid = crm_ipcs_client_pid(c); - -+ if ((uid_client == 0) || (uid_client == uid_cluster)) { -+ /* Remember when a connection came from root or hacluster */ -+ set_bit(client->flags, crm_client_flag_ipc_privileged); -+ } -+ - crm_debug("Connecting %p for uid=%d gid=%d pid=%u id=%s", c, uid_client, gid_client, client->pid, client->id); - - #if ENABLE_ACL --- -1.8.3.1 - - -From f93ce6bdd6be5d2670ab0cd8dd10d3b8b9972a65 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 9 Jun 2017 14:46:16 -0500 -Subject: [PATCH 2/8] Low: libcrmcommon: add function for testing daemon name - ---- - include/crm/common/util.h | 2 ++ - lib/common/utils.c | 21 +++++++++++++++++++++ - 2 files changed, 23 insertions(+) - -diff --git a/include/crm/common/util.h b/include/crm/common/util.h -index 682b346..aa192f9 100644 ---- a/include/crm/common/util.h -+++ b/include/crm/common/util.h -@@ -26,6 +26,7 @@ - - # include - # include -+# include - # include - # include - # include -@@ -127,6 +128,7 @@ gboolean did_rsc_op_fail(lrmd_event_data_t * event, int target_rc); - char *crm_md5sum(const char *buffer); - - char *crm_generate_uuid(void); -+bool crm_is_daemon_name(const char *name); - - int crm_user_lookup(const char *name, uid_t * uid, gid_t * gid); - -diff --git a/lib/common/utils.c b/lib/common/utils.c -index 27ed60d..a652197 100644 ---- a/lib/common/utils.c -+++ b/lib/common/utils.c -@@ -1959,6 +1959,27 @@ crm_generate_uuid(void) - return buffer; - } - -+/*! -+ * \brief Check whether a string represents a cluster daemon name -+ * -+ * \param[in] name String to check -+ * -+ * \return TRUE if name is standard client name used by daemons, FALSE otherwise -+ */ -+bool -+crm_is_daemon_name(const char *name) -+{ -+ return (name && -+ (!strcmp(name, CRM_SYSTEM_CRMD) -+ || !strcmp(name, CRM_SYSTEM_STONITHD) -+ || !strcmp(name, T_ATTRD) -+ || !strcmp(name, CRM_SYSTEM_CIB) -+ || !strcmp(name, CRM_SYSTEM_MCP) -+ || !strcmp(name, CRM_SYSTEM_DC) -+ || !strcmp(name, CRM_SYSTEM_TENGINE) -+ || !strcmp(name, CRM_SYSTEM_LRMD))); -+} -+ - #include - - char * --- -1.8.3.1 - - -From 19497fa9785c854084253167b7dc54a8c026e1ad Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 9 Jun 2017 11:11:50 -0500 -Subject: [PATCH 3/8] Low: libcrmcommon: support setting max queue length per - IPC client - ---- - include/crm/common/ipcs.h | 3 +++ - lib/common/ipc.c | 39 ++++++++++++++++++++++++++------------- - 2 files changed, 29 insertions(+), 13 deletions(-) - -diff --git a/include/crm/common/ipcs.h b/include/crm/common/ipcs.h -index 43b7b60..d2db212 100644 ---- a/include/crm/common/ipcs.h -+++ b/include/crm/common/ipcs.h -@@ -19,6 +19,7 @@ - #ifndef CRM_COMMON_IPCS__H - # define CRM_COMMON_IPCS__H - -+# include - # include - # ifdef HAVE_GNUTLS_GNUTLS_H - # undef KEYFILE -@@ -95,6 +96,7 @@ struct crm_client_s { - struct crm_remote_s *remote; /* TCP/TLS */ - - unsigned int queue_backlog; /* IPC queue length after last flush */ -+ unsigned int queue_max; /* Evict client whose queue grows this big */ - }; - - extern GHashTable *client_connections; -@@ -110,6 +112,7 @@ crm_client_t *crm_client_alloc(void *key); - crm_client_t *crm_client_new(qb_ipcs_connection_t * c, uid_t uid, gid_t gid); - void crm_client_destroy(crm_client_t * c); - void crm_client_disconnect_all(qb_ipcs_service_t *s); -+bool crm_set_client_queue_max(crm_client_t *client, const char *qmax); - - void crm_ipcs_send_ack(crm_client_t * c, uint32_t request, uint32_t flags, - const char *tag, const char *function, int line); -diff --git a/lib/common/ipc.c b/lib/common/ipc.c -index e0a7a5c..3110334 100644 ---- a/lib/common/ipc.c -+++ b/lib/common/ipc.c -@@ -37,8 +37,9 @@ - - #define PCMK_IPC_VERSION 1 - --/* Evict clients whose event queue grows this large */ --#define PCMK_IPC_MAX_QUEUE 500 -+/* Evict clients whose event queue grows this large (by default) */ -+#define PCMK_IPC_DEFAULT_QUEUE_MAX 500 -+#define PCMK_IPC_DEFAULT_QUEUE_MAX_S "500" - - struct crm_ipc_response_header { - struct qb_ipc_response_header qb; -@@ -409,6 +410,24 @@ crm_client_destroy(crm_client_t * c) - free(c); - } - -+/*! -+ * \brief Raise IPC eviction threshold for a client, if allowed -+ * -+ * \param[in,out] client Client to modify -+ * \param[in] queue_max New threshold (as string) -+ * -+ * \return TRUE if change was allowed, FALSE otherwise -+ */ -+bool -+crm_set_client_queue_max(crm_client_t *client, const char *qmax) -+{ -+ if (is_set(client->flags, crm_client_flag_ipc_privileged)) { -+ client->queue_max = crm_parse_int(qmax, PCMK_IPC_DEFAULT_QUEUE_MAX_S); -+ return TRUE; -+ } -+ return FALSE; -+} -+ - int - crm_ipcs_client_pid(qb_ipcs_connection_t * c) - { -@@ -553,18 +572,12 @@ crm_ipcs_flush_events(crm_client_t * c) - } - - if (queue_len) { -- /* We want to allow clients to briefly fall behind on processing -- * incoming messages, but drop completely unresponsive clients so the -- * connection doesn't consume resources indefinitely. -- * -- * @TODO It is possible that the queue could reasonably grow large in a -- * short time. An example is a reprobe of hundreds of resources on many -- * nodes resulting in a surge of CIB replies to the crmd. We could -- * possibly give cluster daemons a higher threshold here, and/or prevent -- * such a surge by throttling LRM history writes in the crmd. -- */ - -- if (queue_len > PCMK_IPC_MAX_QUEUE) { -+ /* Allow clients to briefly fall behind on processing incoming messages, -+ * but drop completely unresponsive clients so the connection doesn't -+ * consume resources indefinitely. -+ */ -+ if (queue_len > QB_MAX(c->queue_max, PCMK_IPC_DEFAULT_QUEUE_MAX)) { - if ((c->queue_backlog <= 1) || (queue_len < c->queue_backlog)) { - /* Don't evict for a new or shrinking backlog */ - crm_warn("Client with process ID %u has a backlog of %u messages " --- -1.8.3.1 - - -From 324e241d9d9666dfe6543ddf88d965b12d5a164f Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 12 Jun 2017 17:47:12 -0500 -Subject: [PATCH 4/8] Low: libcib: always use current values when unpacking - config - -Previously, cib_read_config() called unpack_instance_attributes() with -overwrite=FALSE. This meant that changes to an option would not take effect -unless the option was not set before. - -The only significant use of cib_read_config() was in cib_acl_enabled(), which -used a new, empty hash table for every call, so the issue didn't matter. - -The cib daemon also used cib_read_config() to maintain a global config_hash, -which was affected by the issue, but didn't matter because it was never used. -This change will allow config_hash to be used. ---- - lib/cib/cib_utils.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c -index ab48f16..8aeed67 100644 ---- a/lib/cib/cib_utils.c -+++ b/lib/cib/cib_utils.c -@@ -743,7 +743,7 @@ cib_read_config(GHashTable * options, xmlNode * current_cib) - config = get_object_root(XML_CIB_TAG_CRMCONFIG, current_cib); - if (config) { - unpack_instance_attributes(current_cib, config, XML_CIB_TAG_PROPSET, NULL, options, -- CIB_OPTIONS_FIRST, FALSE, now); -+ CIB_OPTIONS_FIRST, TRUE, now); - } - - verify_cib_options(options); --- -1.8.3.1 - - -From b986acbe131216aaa372681e97dfc0f2ef8f70ad Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 13 Jun 2017 16:03:36 -0500 -Subject: [PATCH 5/8] Low: libcib: correctly search for v2 patchset changes - -cib_internal_config_changed() was never updated for v2 patch format ---- - lib/cib/cib_utils.c | 23 ++++++++++++----------- - 1 file changed, 12 insertions(+), 11 deletions(-) - -diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c -index 8aeed67..f639ada 100644 ---- a/lib/cib/cib_utils.c -+++ b/lib/cib/cib_utils.c -@@ -794,23 +794,24 @@ cib_apply_patch_event(xmlNode * event, xmlNode * input, xmlNode ** output, int l - return rc; - } - -+/* v2 and v2 patch formats */ -+#define XPATH_CONFIG_CHANGE \ -+ "//" XML_CIB_TAG_CRMCONFIG " | " \ -+ "//" XML_DIFF_CHANGE "[contains(@" XML_DIFF_PATH ",'/" XML_CIB_TAG_CRMCONFIG "/')]" -+ - gboolean --cib_internal_config_changed(xmlNode * diff) -+cib_internal_config_changed(xmlNode *diff) - { - gboolean changed = FALSE; -- xmlXPathObject *xpathObj = NULL; - -- if (diff == NULL) { -- return FALSE; -- } -+ if (diff) { -+ xmlXPathObject *xpathObj = xpath_search(diff, XPATH_CONFIG_CHANGE); - -- xpathObj = xpath_search(diff, "//" XML_CIB_TAG_CRMCONFIG); -- if (numXpathResults(xpathObj) > 0) { -- changed = TRUE; -+ if (numXpathResults(xpathObj) > 0) { -+ changed = TRUE; -+ } -+ freeXpathObject(xpathObj); - } -- -- freeXpathObject(xpathObj); -- - return changed; - } - --- -1.8.3.1 - - -From 3e5cdd9b329b3328a88912db48c4e4a4d6f94563 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 9 Jun 2017 15:33:27 -0500 -Subject: [PATCH 6/8] Feature: cib,libcib: support option for IPC eviction - threshold - -Only the cib utilizes the option currently, but the other daemons -could easily do the same, if they are subject to large IPC bursts. ---- - cib/callbacks.c | 13 +++++++++++++ - cib/callbacks.h | 10 ++++++++++ - lib/cib/cib_utils.c | 24 ++++++++++++++++++++---- - 3 files changed, 43 insertions(+), 4 deletions(-) - -diff --git a/cib/callbacks.c b/cib/callbacks.c -index 4708f10..544a920 100644 ---- a/cib/callbacks.c -+++ b/cib/callbacks.c -@@ -281,6 +281,19 @@ cib_common_callback(qb_ipcs_connection_t * c, void *data, size_t size, gboolean - cib_client->name = crm_itoa(cib_client->pid); - } else { - cib_client->name = strdup(value); -+ if (crm_is_daemon_name(value)) { -+ set_bit(cib_client->options, cib_is_daemon); -+ } -+ } -+ } -+ -+ /* Allow cluster daemons more leeway before being evicted */ -+ if (is_set(cib_client->options, cib_is_daemon)) { -+ const char *qmax = cib_config_lookup("cluster-ipc-limit"); -+ -+ if (crm_set_client_queue_max(cib_client, qmax)) { -+ crm_trace("IPC threshold for %s[%u] is now %u", -+ cib_client->name, cib_client->pid, cib_client->queue_max); - } - } - -diff --git a/cib/callbacks.h b/cib/callbacks.h -index b4d48d6..bddff09 100644 ---- a/cib/callbacks.h -+++ b/cib/callbacks.h -@@ -19,6 +19,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -43,6 +44,9 @@ enum cib_notifications - cib_notify_replace = 0x0004, - cib_notify_confirm = 0x0008, - cib_notify_diff = 0x0010, -+ -+ /* not a notification, but uses the same IPC bitmask */ -+ cib_is_daemon = 0x1000, /* whether client is another cluster daemon */ - }; - /* *INDENT-ON* */ - -@@ -80,3 +84,9 @@ extern void cib_ha_peer_callback(HA_Message * msg, void *private_data); - extern int cib_ccm_dispatch(gpointer user_data); - extern void cib_ccm_msg_callback(oc_ed_t event, void *cookie, size_t size, const void *data); - #endif -+ -+static inline const char * -+cib_config_lookup(const char *opt) -+{ -+ return g_hash_table_lookup(config_hash, opt); -+} -diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c -index f639ada..adbf9c8 100644 ---- a/lib/cib/cib_utils.c -+++ b/lib/cib/cib_utils.c -@@ -699,10 +699,26 @@ cib_native_notify(gpointer data, gpointer user_data) - } - - pe_cluster_option cib_opts[] = { -- /* name, old-name, validate, default, description */ -- {"enable-acl", NULL, "boolean", NULL, "false", &check_boolean, -- "Enable CIB ACL", NULL} -- , -+ /* -+ * name, legacy name, -+ * type, allowed values, default, validator, -+ * short description, -+ * long description -+ */ -+ { -+ "enable-acl", NULL, -+ "boolean", NULL, "false", &check_boolean, -+ "Enable CIB ACL", -+ NULL -+ }, -+ { -+ "cluster-ipc-limit", NULL, -+ "integer", NULL, "500", &check_positive_number, -+ "Maximum IPC message backlog before disconnecting a cluster daemon", -+ "Raise this if log has \"Evicting client\" messages for cluster daemon" -+ " PIDs (a good value is the number of resources in the cluster" -+ " multiplied by the number of nodes)" -+ }, - }; - - void --- -1.8.3.1 - - -From 3f855794adbe9ad46aaca3848d591f5dc26d3371 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 13 Jun 2017 18:07:45 -0500 -Subject: [PATCH 7/8] Doc: Pacemaker Explained: document cluster-ipc-limit - ---- - doc/Pacemaker_Explained/en-US/Ch-Options.txt | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/doc/Pacemaker_Explained/en-US/Ch-Options.txt b/doc/Pacemaker_Explained/en-US/Ch-Options.txt -index f4e1af7..ec0c6b9 100644 ---- a/doc/Pacemaker_Explained/en-US/Ch-Options.txt -+++ b/doc/Pacemaker_Explained/en-US/Ch-Options.txt -@@ -267,6 +267,15 @@ take effect, we can optionally poll the cluster's status for changes. A value - of 0 disables polling. Positive values are an interval (in seconds unless other - SI units are specified, e.g. 5min). - -+| cluster-ipc-limit | 500 | -+indexterm:[cluster-ipc-limit,Cluster Option] -+indexterm:[Cluster,Option,cluster-ipc-limit] -+The maximum IPC message backlog before one cluster daemon will disconnect -+another. This is of use in large clusters, for which a good value is the number -+of resources in the cluster multiplied by the number of nodes. The default of -+500 is also the minimum. Raise this if you see "Evicting client" messages for -+cluster daemon PIDs in the logs. -+ - | pe-error-series-max | -1 | - indexterm:[pe-error-series-max,Cluster Option] - indexterm:[Cluster,Option,pe-error-series-max] --- -1.8.3.1 - - -From bc6d723a94221419b15650a52e8ed1d843a32ff1 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 15 Jun 2017 14:20:27 -0500 -Subject: [PATCH 8/8] Refactor: libcrmcommon: avoid redundant constant - definitions - ---- - lib/common/ipc.c | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -diff --git a/lib/common/ipc.c b/lib/common/ipc.c -index 3110334..c238bca 100644 ---- a/lib/common/ipc.c -+++ b/lib/common/ipc.c -@@ -39,7 +39,6 @@ - - /* Evict clients whose event queue grows this large (by default) */ - #define PCMK_IPC_DEFAULT_QUEUE_MAX 500 --#define PCMK_IPC_DEFAULT_QUEUE_MAX_S "500" - - struct crm_ipc_response_header { - struct qb_ipc_response_header qb; -@@ -422,8 +421,12 @@ bool - crm_set_client_queue_max(crm_client_t *client, const char *qmax) - { - if (is_set(client->flags, crm_client_flag_ipc_privileged)) { -- client->queue_max = crm_parse_int(qmax, PCMK_IPC_DEFAULT_QUEUE_MAX_S); -- return TRUE; -+ int qmax_int = crm_int_helper(qmax, NULL); -+ -+ if ((errno == 0) && (qmax_int > 0)) { -+ client->queue_max = qmax_int; -+ return TRUE; -+ } - } - return FALSE; - } --- -1.8.3.1 - diff --git a/SOURCES/072-bundle-placement.patch b/SOURCES/072-bundle-placement.patch deleted file mode 100644 index 2f669f5..0000000 --- a/SOURCES/072-bundle-placement.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 648f048aeaee089ec74953107e6252543b710966 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 21 Jun 2017 20:40:34 -0500 -Subject: [PATCH] Fix: libpe_status: properly disallow other resources from - bundle nodes - ---- - lib/pengine/container.c | 34 +++++++++++++++++++++++++++++----- - 1 file changed, 29 insertions(+), 5 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index e916446..cf81253 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -335,6 +335,29 @@ create_docker_resource( - return TRUE; - } - -+/*! -+ * \brief Ban a node from a resource's (and its children's) allowed nodes list -+ * -+ * \param[in,out] rsc Resource to modify -+ * \param[in] uname Name of node to ban -+ */ -+static void -+disallow_node(resource_t *rsc, const char *uname) -+{ -+ gpointer match = g_hash_table_lookup(rsc->allowed_nodes, uname); -+ -+ if (match) { -+ ((pe_node_t *) match)->weight = -INFINITY; -+ } -+ if (rsc->children) { -+ GListPtr child; -+ -+ for (child = rsc->children; child != NULL; child = child->next) { -+ disallow_node((resource_t *) (child->data), uname); -+ } -+ } -+} -+ - static bool - create_remote_resource( - resource_t *parent, container_variant_data_t *data, container_grouping_t *tuple, -@@ -413,7 +436,7 @@ create_remote_resource( - } - - /* unpack_remote_nodes() ensures that each remote node and guest node -- * has a node_t entry. Ideally, it would do the same for bundle nodes. -+ * has a pe_node_t entry. Ideally, it would do the same for bundle nodes. - * Unfortunately, a bundle has to be mostly unpacked before it's obvious - * what nodes will be needed, so we do it just above. - * -@@ -424,12 +447,13 @@ create_remote_resource( - * This adds a node *copy* to each resource's allowed nodes, and these - * copies will have the wrong weight. - * -- * As a hacky workaround, clear those copies here. -+ * As a hacky workaround, fix those copies here. -+ * -+ * @TODO Possible alternative: ensure bundles are unpacked before other -+ * resources, so the weight is correct before any copies are made. - */ - for (rsc_iter = data_set->resources; rsc_iter; rsc_iter = rsc_iter->next) { -- resource_t *rsc = (resource_t *) rsc_iter->data; -- -- g_hash_table_remove(rsc->allowed_nodes, uname); -+ disallow_node((resource_t *) (rsc_iter->data), uname); - } - - tuple->node = node_copy(node); --- -1.8.3.1 - diff --git a/SOURCES/073-shutdown-logging.patch b/SOURCES/073-shutdown-logging.patch deleted file mode 100644 index 553634e..0000000 --- a/SOURCES/073-shutdown-logging.patch +++ /dev/null @@ -1,1616 +0,0 @@ -From db1de472c1d1a4bef98b67f181a6e4fc8b5cbcfb Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 29 May 2017 19:24:50 +1000 -Subject: [PATCH] Log: PE: Improve logging of node fencing and shutdown - ---- - lib/pengine/unpack.c | 58 ++++++++++++---------- - lib/pengine/utils.c | 2 +- - pengine/allocate.c | 47 ++++++++++++++++-- - pengine/allocate.h | 3 +- - pengine/native.c | 4 +- - pengine/test10/594.summary | 2 + - pengine/test10/662.summary | 1 + - pengine/test10/797.summary | 1 + - pengine/test10/829.summary | 1 + - pengine/test10/bug-1572-1.summary | 1 + - pengine/test10/bug-1572-2.summary | 1 + - pengine/test10/bug-1573.summary | 1 + - pengine/test10/bug-1820-1.summary | 1 + - pengine/test10/bug-1820.summary | 1 + - pengine/test10/bug-1822.summary | 1 + - pengine/test10/bug-5028-bottom.summary | 1 + - pengine/test10/bug-5028-detach.summary | 1 + - pengine/test10/bug-5028.summary | 1 + - pengine/test10/bug-5186-partial-migrate.summary | 1 + - pengine/test10/bug-cl-5247.summary | 1 + - pengine/test10/bug-lf-2508.summary | 1 + - pengine/test10/bug-lf-2551.summary | 1 + - pengine/test10/bug-lf-2606.summary | 1 + - pengine/test10/bug-rh-1097457.summary | 1 + - .../test10/colocate-primitive-with-clone.summary | 1 + - pengine/test10/concurrent-fencing.summary | 3 ++ - pengine/test10/guest-node-host-dies.summary | 3 ++ - pengine/test10/inc12.summary | 6 +++ - pengine/test10/interleave-pseudo-stop.summary | 1 + - pengine/test10/master-7.summary | 1 + - pengine/test10/master-8.summary | 1 + - pengine/test10/master-9.summary | 1 + - pengine/test10/migrate-fencing.summary | 1 + - pengine/test10/migrate-shutdown.summary | 4 ++ - pengine/test10/novell-239082.summary | 1 + - pengine/test10/novell-252693.summary | 1 + - pengine/test10/params-2.summary | 1 + - pengine/test10/rec-node-11.summary | 1 + - pengine/test10/rec-node-12.summary | 1 + - pengine/test10/rec-node-13.summary | 1 + - pengine/test10/rec-node-14.summary | 3 ++ - pengine/test10/rec-node-15.summary | 1 + - pengine/test10/rec-node-2.summary | 1 + - pengine/test10/rec-node-4.summary | 1 + - pengine/test10/rec-node-6.summary | 1 + - pengine/test10/rec-node-7.summary | 1 + - pengine/test10/rec-rsc-5.summary | 1 + - .../test10/remote-fence-before-reconnect.summary | 1 + - pengine/test10/remote-fence-unclean.summary | 1 + - pengine/test10/remote-fence-unclean2.summary | 1 + - pengine/test10/remote-partial-migrate2.summary | 1 + - pengine/test10/remote-recover-all.summary | 3 ++ - pengine/test10/remote-recover-connection.summary | 1 + - pengine/test10/remote-recover-fail.summary | 1 + - pengine/test10/remote-recover-no-resources.summary | 2 + - pengine/test10/remote-recover-unknown.summary | 3 ++ - pengine/test10/remote-recovery.summary | 1 + - pengine/test10/remote-unclean2.summary | 1 + - pengine/test10/simple7.summary | 1 + - .../test10/start-then-stop-with-unfence.summary | 2 + - pengine/test10/stonith-0.summary | 2 + - pengine/test10/stonith-1.summary | 1 + - pengine/test10/stonith-2.summary | 1 + - pengine/test10/stonith-3.summary | 1 + - pengine/test10/stonith-4.summary | 4 ++ - pengine/test10/stop-failure-no-quorum.summary | 1 + - pengine/test10/stop-failure-with-fencing.summary | 1 + - pengine/test10/systemhealth1.summary | 2 + - pengine/test10/systemhealth2.summary | 1 + - pengine/test10/systemhealth3.summary | 1 + - pengine/test10/systemhealthm1.summary | 2 + - pengine/test10/systemhealthm2.summary | 1 + - pengine/test10/systemhealthm3.summary | 1 + - pengine/test10/systemhealthn1.summary | 2 + - pengine/test10/systemhealthn2.summary | 1 + - pengine/test10/systemhealthn3.summary | 1 + - pengine/test10/systemhealtho1.summary | 2 + - pengine/test10/systemhealtho2.summary | 1 + - pengine/test10/systemhealtho3.summary | 1 + - pengine/test10/systemhealthp1.summary | 2 + - pengine/test10/systemhealthp2.summary | 1 + - pengine/test10/systemhealthp3.summary | 1 + - pengine/test10/ticket-clone-21.summary | 2 + - pengine/test10/ticket-clone-9.summary | 2 + - pengine/test10/ticket-group-21.summary | 1 + - pengine/test10/ticket-group-9.summary | 1 + - pengine/test10/ticket-master-21.summary | 1 + - pengine/test10/ticket-master-9.summary | 1 + - pengine/test10/ticket-primitive-21.summary | 1 + - pengine/test10/ticket-primitive-9.summary | 1 + - pengine/test10/unfence-definition.summary | 5 ++ - pengine/test10/unfence-parameters.summary | 5 ++ - pengine/test10/unfence-startup.summary | 5 ++ - pengine/test10/unmanaged-master.summary | 2 + - pengine/test10/whitebox-fail1.summary | 1 + - pengine/test10/whitebox-fail2.summary | 1 + - .../test10/whitebox-imply-stop-on-fence.summary | 3 ++ - pengine/test10/whitebox-ms-ordering.summary | 2 + - .../test10/whitebox-unexpectedly-running.summary | 1 + - tools/crm_simulate.c | 1 + - 100 files changed, 223 insertions(+), 34 deletions(-) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 8caf522..377100c 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -62,6 +62,7 @@ is_dangling_container_remote_node(node_t *node) - return FALSE; - } - -+ - void - pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - { -@@ -73,12 +74,12 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - - if (is_set(rsc->flags, pe_rsc_failed) == FALSE) { - if (!is_set(rsc->flags, pe_rsc_managed)) { -- crm_notice("Not fencing guest node %s because the container is " -- "unmanaged, otherwise we would do so recovering %s " -- "%s", node->details->uname, rsc->id, reason); -+ crm_notice("Not fencing node %s due to '%s': container %s is" -+ " unmanaged" -+ "%s", node->details->uname, reason, rsc->id); - } else { -- crm_warn("Guest node %s will be fenced (by recovering %s) %s", -- node->details->uname, rsc->id, reason); -+ crm_warn("Remote node %s will be fenced due to '%s' by recovering %s", -+ node->details->uname, rsc->id, reason); - - /* We don't mark the node as unclean because that would prevent the - * node from running resources. We want to allow it to run resources -@@ -88,8 +89,9 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - set_bit(rsc->flags, pe_rsc_failed); - } - } -+ - } else if (is_dangling_container_remote_node(node)) { -- crm_info("Cleaning up dangling connection resource for guest node %s %s" -+ crm_info("Cleaning up dangling connection resource for guest node %s due to '%s'" - " (fencing is already done, guest resource no longer exists)", - node->details->uname, reason); - set_bit(node->details->remote_rsc->flags, pe_rsc_failed); -@@ -98,28 +100,32 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - resource_t *rsc = node->details->remote_rsc; - - if (rsc && (!is_set(rsc->flags, pe_rsc_managed))) { -- crm_notice("Not fencing node %s because connection is unmanaged, " -- "otherwise would %s", node->details->uname, reason); -+ crm_notice("Not fencing node %s due to '%s': connection is unmanaged", -+ node->details->uname, reason); - } else if(node->details->remote_requires_reset == FALSE) { - node->details->remote_requires_reset = TRUE; - if (pe_can_fence(data_set, node)) { -- crm_warn("Node %s will be fenced %s", node->details->uname, reason); -+ crm_warn("Remote node %s will be fenced due to %s", node->details->uname, reason); - } else { -- crm_warn("Node %s is unclean %s", node->details->uname, reason); -+ crm_warn("Remote node %s is unclean due to %s", node->details->uname, reason); - } - } - node->details->unclean = TRUE; - -- } else if (node->details->unclean == FALSE) { -+ } else if (node->details->unclean) { - if (pe_can_fence(data_set, node)) { -- crm_warn("Node %s will be fenced %s", node->details->uname, reason); -+ crm_trace("Node %s would also be fenced due to '%s'", node->details->uname, reason); - } else { -- crm_warn("Node %s is unclean %s", node->details->uname, reason); -+ crm_trace("Node %s is also unclean due to '%s'", node->details->uname, reason); - } -+ -+ } else if (pe_can_fence(data_set, node)) { -+ crm_warn("Node %s will be fenced due to %s", node->details->uname, reason); - node->details->unclean = TRUE; - - } else { -- crm_trace("Node %s would also be fenced '%s'", node->details->uname, reason); -+ crm_warn("Node %s is unclean due to %s", node->details->uname, reason); -+ node->details->unclean = TRUE; - } - } - -@@ -1260,7 +1266,7 @@ unpack_status(xmlNode * status, pe_working_set_t * data_set) - /* Everything else should flow from this automatically - * At least until the PE becomes able to migrate off healthy resources - */ -- pe_fence_node(data_set, this_node, "because the cluster does not have quorum"); -+ pe_fence_node(data_set, this_node, "cluster does not have quorum"); - } - } - } -@@ -1316,7 +1322,7 @@ determine_online_status_no_fencing(pe_working_set_t * data_set, xmlNode * node_s - - } else { - /* mark it unclean */ -- pe_fence_node(data_set, this_node, "because node is unexpectedly down"); -+ pe_fence_node(data_set, this_node, "peer is unexpectedly down"); - crm_info("\tin_cluster=%s, is_peer=%s, join=%s, expected=%s", - crm_str(in_cluster), crm_str(is_peer), crm_str(join), crm_str(exp_state)); - } -@@ -1373,10 +1379,10 @@ determine_online_status_fencing(pe_working_set_t * data_set, xmlNode * node_stat - online = crm_is_true(is_peer); - - } else if (in_cluster == NULL) { -- pe_fence_node(data_set, this_node, "because the peer has not been seen by the cluster"); -+ pe_fence_node(data_set, this_node, "peer has not been seen by the cluster"); - - } else if (safe_str_eq(join, CRMD_JOINSTATE_NACK)) { -- pe_fence_node(data_set, this_node, "because it failed the pacemaker membership criteria"); -+ pe_fence_node(data_set, this_node, "peer failed the pacemaker membership criteria"); - - } else if (do_terminate == FALSE && safe_str_eq(exp_state, CRMD_JOINSTATE_DOWN)) { - -@@ -1395,14 +1401,14 @@ determine_online_status_fencing(pe_working_set_t * data_set, xmlNode * node_stat - online = FALSE; - - } else if (crm_is_true(in_cluster) == FALSE) { -- pe_fence_node(data_set, this_node, "because the node is no longer part of the cluster"); -+ pe_fence_node(data_set, this_node, "peer is no longer part of the cluster"); - - } else if (crm_is_true(is_peer) == FALSE) { -- pe_fence_node(data_set, this_node, "because our peer process is no longer available"); -+ pe_fence_node(data_set, this_node, "peer process is no longer available"); - - /* Everything is running at this point, now check join state */ - } else if (do_terminate) { -- pe_fence_node(data_set, this_node, "because termination was requested"); -+ pe_fence_node(data_set, this_node, "termination was requested"); - - } else if (safe_str_eq(join, CRMD_JOINSTATE_MEMBER)) { - crm_info("Node %s is active", this_node->details->uname); -@@ -1414,7 +1420,7 @@ determine_online_status_fencing(pe_working_set_t * data_set, xmlNode * node_stat - this_node->details->pending = TRUE; - - } else { -- pe_fence_node(data_set, this_node, "because the peer was in an unknown state"); -+ pe_fence_node(data_set, this_node, "peer was in an unknown state"); - crm_warn("%s: in-cluster=%s, is-peer=%s, join=%s, expected=%s, term=%d, shutdown=%d", - this_node->details->uname, crm_str(in_cluster), crm_str(is_peer), - crm_str(join), crm_str(exp_state), do_terminate, this_node->details->shutdown); -@@ -1923,14 +1929,14 @@ process_rsc_state(resource_t * rsc, node_t * node, - * another node without requiring the baremetal remote nodes to be fenced - * as well. */ - node->details->unseen = TRUE; -- reason = crm_strdup_printf("because %s is active there. Fencing will be revoked if remote-node connection can be re-established on another cluster-node.", rsc->id); -+ reason = crm_strdup_printf("%s is active there. Fencing will be revoked if remote-node connection can be re-established on another cluster-node.", rsc->id); - } - should_fence = TRUE; - } - - if (should_fence) { - if (reason == NULL) { -- reason = crm_strdup_printf("because %s is thought to be active there", rsc->id); -+ reason = crm_strdup_printf("%s is thought to be active there", rsc->id); - } - pe_fence_node(data_set, node, reason); - } -@@ -1953,7 +1959,7 @@ process_rsc_state(resource_t * rsc, node_t * node, - /* treat it as if it is still running - * but also mark the node as unclean - */ -- pe_fence_node(data_set, node, "because of resource failure(s)"); -+ pe_fence_node(data_set, node, "resource failure(s)"); - break; - - case action_fail_standby: -@@ -2009,7 +2015,7 @@ process_rsc_state(resource_t * rsc, node_t * node, - - /* connection resource to baremetal resource failed in a way that - * should result in fencing the remote-node. */ -- pe_fence_node(data_set, tmpnode, "because of connection failure(s)"); -+ pe_fence_node(data_set, tmpnode, "of connection failure(s)"); - } - } - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 7acd90c..44fbb51 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -517,7 +517,7 @@ custom_action(resource_t * rsc, char *key, const char *task, - if (is_set(action->rsc->flags, pe_rsc_managed) - && save_action && a_task == stop_rsc - && action->node->details->unclean == FALSE) { -- pe_fence_node(data_set, action->node, "because of unrunnable resource actions"); -+ pe_fence_node(data_set, action->node, "resource actions are unrunnable"); - } - - } else if (action->node->details->pending) { -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 795ed56..0020af6 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -467,7 +467,7 @@ check_actions_for(xmlNode * rsc_entry, resource_t * rsc, node_t * node, pe_worki - set_bit(action_clear->flags, pe_action_runnable); - - crm_notice("Clearing failure of %s on %s " -- "because action definition changed " CRM_XS " %s", -+ "action definition changed " CRM_XS " %s", - rsc->id, node->details->uname, action_clear->uuid); - } - } -@@ -1798,7 +1798,7 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) - CRM_ASSERT(container); - - if(is_set(container->flags, pe_rsc_failed)) { -- pe_fence_node(data_set, action->node, " because the container failed"); -+ pe_fence_node(data_set, action->node, "container failed"); - } - - crm_trace("%s %s %s %s %d", action->uuid, action->task, remote_rsc->id, container->id, is_set(container->flags, pe_rsc_failed)); -@@ -1967,7 +1967,7 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - * way to stop it, it is necessary to fence the - * node. - */ -- pe_fence_node(data_set, action->node, "because resources are active and the connection is unrecoverable"); -+ pe_fence_node(data_set, action->node, "resources are active and the connection is unrecoverable"); - } - - custom_action_order(action->rsc, NULL, action, -@@ -2009,7 +2009,7 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - * Since we have no way to find out, it is - * necessary to fence the node. - */ -- pe_fence_node(data_set, action->node, "because resources are in an unknown state and the connection is unrecoverable"); -+ pe_fence_node(data_set, action->node, "resources are in an unknown state and the connection is unrecoverable"); - } - - if(cluster_node && state == remote_state_stopped) { -@@ -2270,6 +2270,7 @@ stage7(pe_working_set_t * data_set) - - crm_trace("Processing reloads"); - -+ LogNodeActions(data_set, FALSE); - for (gIter = data_set->resources; gIter != NULL; gIter = gIter->next) { - resource_t *rsc = (resource_t *) gIter->data; - -@@ -2379,6 +2380,44 @@ stage8(pe_working_set_t * data_set) - } - - void -+LogNodeActions(pe_working_set_t * data_set, gboolean terminal) -+{ -+ GListPtr gIter = NULL; -+ -+ for (gIter = data_set->actions; gIter != NULL; gIter = gIter->next) { -+ char *node_name = NULL; -+ const char *task = NULL; -+ action_t *action = (action_t *) gIter->data; -+ -+ if (action->rsc != NULL) { -+ continue; -+ } -+ -+ if (is_container_remote_node(action->node)) { -+ node_name = crm_strdup_printf("%s (resource: %s)", action->node->details->uname, action->node->details->remote_rsc->container->id); -+ } else if(action->node) { -+ node_name = crm_strdup_printf("%s", action->node->details->uname); -+ } -+ -+ if (safe_str_eq(action->task, CRM_OP_SHUTDOWN)) { -+ task = "Shutdown"; -+ } else if (safe_str_eq(action->task, CRM_OP_FENCE)) { -+ task = "Fence"; -+ } -+ -+ if(task == NULL) { -+ /* Nothing to report */ -+ } else if(terminal) { -+ printf(" * %s %s\n", task, node_name); -+ } else { -+ crm_notice(" * %s %s\n", task, node_name); -+ } -+ -+ free(node_name); -+ } -+} -+ -+void - cleanup_alloc_calculations(pe_working_set_t * data_set) - { - if (data_set == NULL) { -diff --git a/pengine/allocate.h b/pengine/allocate.h -index 3d7b7ce..d89943d 100644 ---- a/pengine/allocate.h -+++ b/pengine/allocate.h -@@ -152,7 +152,8 @@ extern gboolean unpack_location(xmlNode * xml_obj, pe_working_set_t * data_set); - - extern gboolean unpack_rsc_ticket(xmlNode * xml_obj, pe_working_set_t * data_set); - --extern void LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal); -+void LogNodeActions(pe_working_set_t * data_set, gboolean terminal); -+void LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal); - void container_LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal); - - extern void cleanup_alloc_calculations(pe_working_set_t * data_set); -diff --git a/pengine/native.c b/pengine/native.c -index 2c4e2a1..dd5ff18 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -1818,7 +1818,7 @@ rsc_ticket_constraint(resource_t * rsc_lh, rsc_ticket_t * rsc_ticket, pe_working - for (gIter = rsc_lh->running_on; gIter != NULL; gIter = gIter->next) { - node_t *node = (node_t *) gIter->data; - -- pe_fence_node(data_set, node, "because deadman ticket was lost"); -+ pe_fence_node(data_set, node, "deadman ticket was lost"); - } - break; - -@@ -2782,7 +2782,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - - if (force == FALSE && running != NULL) { - /* we already know the status of the resource on this node */ -- pe_rsc_trace(rsc, "Skipping active: %s on %s", rsc->id, node->details->uname); -+ pe_rsc_trace(rsc, "Skipping known: %s on %s", rsc->id, node->details->uname); - return FALSE; - } - -diff --git a/pengine/test10/594.summary b/pengine/test10/594.summary -index 6c208ee..d9fe8c1 100644 ---- a/pengine/test10/594.summary -+++ b/pengine/test10/594.summary -@@ -13,6 +13,8 @@ Online: [ hadev1 hadev2 ] - child_DoFencing:2 (stonith:ssh): Started hadev1 - - Transition Summary: -+ * Fence hadev3 -+ * Shutdown hadev2 - * Move DcIPaddr (Started hadev2 -> hadev1) - * Move rsc_hadev2 (Started hadev2 -> hadev1) - * Stop child_DoFencing:0 (hadev2) -diff --git a/pengine/test10/662.summary b/pengine/test10/662.summary -index 8d73b1d..1726f35 100644 ---- a/pengine/test10/662.summary -+++ b/pengine/test10/662.summary -@@ -14,6 +14,7 @@ Online: [ c001n02 c001n03 c001n04 c001n09 ] - child_DoFencing:3 (stonith:ssh): Started c001n09 - - Transition Summary: -+ * Shutdown c001n02 - * Move rsc_c001n02 (Started c001n02 -> c001n03) - * Stop child_DoFencing:0 (c001n02) - -diff --git a/pengine/test10/797.summary b/pengine/test10/797.summary -index 6e78255..3184eae 100644 ---- a/pengine/test10/797.summary -+++ b/pengine/test10/797.summary -@@ -15,6 +15,7 @@ Online: [ c001n01 c001n02 c001n03 ] - child_DoFencing:3 (stonith:ssh): Stopped - - Transition Summary: -+ * Shutdown c001n02 - * Stop DcIPaddr (Started c001n03) - * Stop rsc_c001n08 (Started c001n02) - * Stop rsc_c001n02 (Started c001n02) -diff --git a/pengine/test10/829.summary b/pengine/test10/829.summary -index d95a2ff..a9d25e0 100644 ---- a/pengine/test10/829.summary -+++ b/pengine/test10/829.summary -@@ -15,6 +15,7 @@ Online: [ c001n01 c001n03 c001n08 ] - child_DoFencing:3 (stonith:ssh): Started c001n08 - - Transition Summary: -+ * Fence c001n02 - * Move rsc_c001n02 (Started c001n02 -> c001n01) - * Stop child_DoFencing:0 (c001n02) - -diff --git a/pengine/test10/bug-1572-1.summary b/pengine/test10/bug-1572-1.summary -index 4280f7b..6c37bb4 100644 ---- a/pengine/test10/bug-1572-1.summary -+++ b/pengine/test10/bug-1572-1.summary -@@ -11,6 +11,7 @@ Online: [ arc-dknightlx arc-tkincaidlx.wsicorp.com ] - IPaddr_147_81_84_133 (ocf::heartbeat:IPaddr): Started arc-tkincaidlx.wsicorp.com - - Transition Summary: -+ * Shutdown arc-dknightlx - * Stop rsc_drbd_7788:0 (arc-dknightlx) - * Restart rsc_drbd_7788:1 (Master arc-tkincaidlx.wsicorp.com) - * Restart fs_mirror (Started arc-tkincaidlx.wsicorp.com) -diff --git a/pengine/test10/bug-1572-2.summary b/pengine/test10/bug-1572-2.summary -index 6174027..a4235a7 100644 ---- a/pengine/test10/bug-1572-2.summary -+++ b/pengine/test10/bug-1572-2.summary -@@ -11,6 +11,7 @@ Online: [ arc-dknightlx arc-tkincaidlx.wsicorp.com ] - IPaddr_147_81_84_133 (ocf::heartbeat:IPaddr): Started arc-tkincaidlx.wsicorp.com - - Transition Summary: -+ * Shutdown arc-dknightlx - * Stop rsc_drbd_7788:0 (arc-dknightlx) - * Demote rsc_drbd_7788:1 (Master -> Slave arc-tkincaidlx.wsicorp.com) - * Stop fs_mirror (arc-tkincaidlx.wsicorp.com) -diff --git a/pengine/test10/bug-1573.summary b/pengine/test10/bug-1573.summary -index 0c1fe3d..8fb2820 100644 ---- a/pengine/test10/bug-1573.summary -+++ b/pengine/test10/bug-1573.summary -@@ -11,6 +11,7 @@ OFFLINE: [ xen-c ] - apache_6 (ocf::heartbeat:apache): Stopped - - Transition Summary: -+ * Shutdown xen-b - * Stop IPaddr_192_168_1_102 (xen-b) - - Executing cluster transition: -diff --git a/pengine/test10/bug-1820-1.summary b/pengine/test10/bug-1820-1.summary -index 5edcbcb..db41ac4 100644 ---- a/pengine/test10/bug-1820-1.summary -+++ b/pengine/test10/bug-1820-1.summary -@@ -8,6 +8,7 @@ Online: [ star world ] - test2 (ocf::heartbeat:Xen): Started star - - Transition Summary: -+ * Shutdown star - * Start p1 (world) - * Migrate test1 (Started star -> world) - * Migrate test2 (Started star -> world) -diff --git a/pengine/test10/bug-1820.summary b/pengine/test10/bug-1820.summary -index 592fa67..6d9c021 100644 ---- a/pengine/test10/bug-1820.summary -+++ b/pengine/test10/bug-1820.summary -@@ -7,6 +7,7 @@ Online: [ star world ] - test2 (ocf::heartbeat:Xen): Started star - - Transition Summary: -+ * Shutdown star - * Migrate test1 (Started star -> world) - * Migrate test2 (Started star -> world) - -diff --git a/pengine/test10/bug-1822.summary b/pengine/test10/bug-1822.summary -index afb9fd1..325e408 100644 ---- a/pengine/test10/bug-1822.summary -+++ b/pengine/test10/bug-1822.summary -@@ -11,6 +11,7 @@ Online: [ process1a process2b ] - master_slave_procdctl:1 (ocf::heartbeat:procdctl): Master process1a - - Transition Summary: -+ * Shutdown process1a - * Demote master_slave_Stateful:1 (Master -> Stopped process1a) - * Demote master_slave_procdctl:1 (Master -> Stopped process1a) - -diff --git a/pengine/test10/bug-5028-bottom.summary b/pengine/test10/bug-5028-bottom.summary -index fc5cf8f..b43ba4e 100644 ---- a/pengine/test10/bug-5028-bottom.summary -+++ b/pengine/test10/bug-5028-bottom.summary -@@ -7,6 +7,7 @@ Online: [ bl460g6a bl460g6b ] - dummy02 (ocf::heartbeat:Dummy-stop-NG): Started bl460g6a - - Transition Summary: -+ * Shutdown bl460g6a - * Stop dummy02 (bl460g6a) - - Executing cluster transition: -diff --git a/pengine/test10/bug-5028-detach.summary b/pengine/test10/bug-5028-detach.summary -index 5e93b2a..712bfa1 100644 ---- a/pengine/test10/bug-5028-detach.summary -+++ b/pengine/test10/bug-5028-detach.summary -@@ -10,6 +10,7 @@ Online: [ bl460g6a bl460g6b ] - dummy02 (ocf::heartbeat:Dummy-stop-NG): FAILED bl460g6a ( blocked ) - - Transition Summary: -+ * Shutdown bl460g6a - - Executing cluster transition: - * Cluster action: do_shutdown on bl460g6a -diff --git a/pengine/test10/bug-5028.summary b/pengine/test10/bug-5028.summary -index ad7657c..a85f75b 100644 ---- a/pengine/test10/bug-5028.summary -+++ b/pengine/test10/bug-5028.summary -@@ -7,6 +7,7 @@ Online: [ bl460g6a bl460g6b ] - dummy02 (ocf::heartbeat:Dummy-stop-NG): FAILED bl460g6a ( blocked ) - - Transition Summary: -+ * Shutdown bl460g6a - * Stop dummy01 (Started bl460g6a - blocked) - - Executing cluster transition: -diff --git a/pengine/test10/bug-5186-partial-migrate.summary b/pengine/test10/bug-5186-partial-migrate.summary -index 4d0b10e..63ed2d7 100644 ---- a/pengine/test10/bug-5186-partial-migrate.summary -+++ b/pengine/test10/bug-5186-partial-migrate.summary -@@ -25,6 +25,7 @@ Online: [ bl460g1n6 bl460g1n8 ] - Started: [ bl460g1n6 bl460g1n8 ] - - Transition Summary: -+ * Fence bl460g1n7 - * Move prmDummy (Started bl460g1n7 -> bl460g1n6) - * Move prmVM2 (Started bl460g1n7 -> bl460g1n8) - * Move prmStonith8-1 (Started bl460g1n7 -> bl460g1n6) -diff --git a/pengine/test10/bug-cl-5247.summary b/pengine/test10/bug-cl-5247.summary -index a13754f..8ea3ff0 100644 ---- a/pengine/test10/bug-cl-5247.summary -+++ b/pengine/test10/bug-cl-5247.summary -@@ -18,6 +18,7 @@ Containers: [ pgsr01:prmDB1 ] - Stopped: [ bl460g8n3 bl460g8n4 ] - - Transition Summary: -+ * Fence pgsr02 (resource: prmDB2) - * Stop prmDB2 (bl460g8n4) - * Restart prmStonith1-2 (Started bl460g8n4) - * Restart prmStonith2-2 (Started bl460g8n3) -diff --git a/pengine/test10/bug-lf-2508.summary b/pengine/test10/bug-lf-2508.summary -index af5e4e2..7b436d4 100644 ---- a/pengine/test10/bug-lf-2508.summary -+++ b/pengine/test10/bug-lf-2508.summary -@@ -35,6 +35,7 @@ Online: [ srv01 srv03 srv04 ] - Stopped: [ srv04 ] - - Transition Summary: -+ * Fence srv02 - * Start Dummy01 (srv01) - * Move Dummy02 (Started srv02 -> srv04) - * Stop prmStonith1-1:1 (srv02) -diff --git a/pengine/test10/bug-lf-2551.summary b/pengine/test10/bug-lf-2551.summary -index 158eb73..ffb7c6d 100644 ---- a/pengine/test10/bug-lf-2551.summary -+++ b/pengine/test10/bug-lf-2551.summary -@@ -81,6 +81,7 @@ Online: [ hex-0 hex-7 hex-8 ] - vm-64 (ocf::heartbeat:Xen): Stopped - - Transition Summary: -+ * Fence hex-9 - * Move fencing-sbd (Started hex-9 -> hex-0) - * Move dummy1 (Started hex-9 -> hex-0) - * Stop dlm:3 (hex-9) -diff --git a/pengine/test10/bug-lf-2606.summary b/pengine/test10/bug-lf-2606.summary -index 3e74d4b..ab93bb3 100644 ---- a/pengine/test10/bug-lf-2606.summary -+++ b/pengine/test10/bug-lf-2606.summary -@@ -12,6 +12,7 @@ Online: [ node1 ] - Slaves: [ node1 ] - - Transition Summary: -+ * Fence node2 - * Stop rsc1 (node2) - * Move rsc2 (Started node2 -> node1) - * Demote rsc3:1 (Master -> Stopped node2) -diff --git a/pengine/test10/bug-rh-1097457.summary b/pengine/test10/bug-rh-1097457.summary -index f8d2c14..8fe474a 100644 ---- a/pengine/test10/bug-rh-1097457.summary -+++ b/pengine/test10/bug-rh-1097457.summary -@@ -32,6 +32,7 @@ Containers: [ lamaVM1:VM1 lamaVM2:VM2 lamaVM3:VM3 ] - Started: [ lamaVM1 lamaVM2 lamaVM3 ] - - Transition Summary: -+ * Fence lamaVM2 (resource: VM2) - * Recover VM2 (Started lama3) - * Recover FSlun3 (Started lamaVM2 -> lama2) - * Restart FAKE4 (Started lamaVM2) -diff --git a/pengine/test10/colocate-primitive-with-clone.summary b/pengine/test10/colocate-primitive-with-clone.summary -index 5e4c511..e0f685f 100644 ---- a/pengine/test10/colocate-primitive-with-clone.summary -+++ b/pengine/test10/colocate-primitive-with-clone.summary -@@ -53,6 +53,7 @@ Online: [ srv01 srv02 srv03 srv04 ] - Stopped: [ srv01 ] - - Transition Summary: -+ * Shutdown srv01 - * Start UmVIPcheck (srv04) - * Start UmIPaddr (srv04) - * Start UmDummy01 (srv04) -diff --git a/pengine/test10/concurrent-fencing.summary b/pengine/test10/concurrent-fencing.summary -index 10b2fde..a274c3b 100644 ---- a/pengine/test10/concurrent-fencing.summary -+++ b/pengine/test10/concurrent-fencing.summary -@@ -8,6 +8,9 @@ Node node3 (uuid3): UNCLEAN (offline) - lsb_dummy (lsb:/usr/lib/heartbeat/cts/LSBDummy): Stopped - - Transition Summary: -+ * Fence node3 -+ * Fence node2 -+ * Fence node1 - - Executing cluster transition: - * Fencing node3 (reboot) -diff --git a/pengine/test10/guest-node-host-dies.summary b/pengine/test10/guest-node-host-dies.summary -index c6180ca..717c43d 100644 ---- a/pengine/test10/guest-node-host-dies.summary -+++ b/pengine/test10/guest-node-host-dies.summary -@@ -11,6 +11,9 @@ Online: [ rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] - Stopped: [ rhel7-1 rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] - - Transition Summary: -+ * Fence rhel7-1 -+ * Fence lxc2 (resource: container2) -+ * Fence lxc1 (resource: container1) - * Restart Fencing (Started rhel7-4) - * Move rsc_rhel7-1 (Started rhel7-1 -> rhel7-5) - * Recover container1 (Started rhel7-1 -> rhel7-2) -diff --git a/pengine/test10/inc12.summary b/pengine/test10/inc12.summary -index 3df5a59..5068b7e 100644 ---- a/pengine/test10/inc12.summary -+++ b/pengine/test10/inc12.summary -@@ -32,6 +32,12 @@ Online: [ c001n02 c001n03 c001n04 c001n05 c001n06 c001n07 ] - ocf_msdummy:11 (ocf::heartbeat:Stateful): Slave c001n02 - - Transition Summary: -+ * Shutdown c001n07 -+ * Shutdown c001n06 -+ * Shutdown c001n05 -+ * Shutdown c001n04 -+ * Shutdown c001n03 -+ * Shutdown c001n02 - * Stop ocf_192.168.100.181 (c001n02) - * Stop heartbeat_192.168.100.182 (c001n02) - * Stop ocf_192.168.100.183 (c001n02) -diff --git a/pengine/test10/interleave-pseudo-stop.summary b/pengine/test10/interleave-pseudo-stop.summary -index a682462..cf30da0 100644 ---- a/pengine/test10/interleave-pseudo-stop.summary -+++ b/pengine/test10/interleave-pseudo-stop.summary -@@ -17,6 +17,7 @@ Online: [ node2 ] - Started: [ node2 ] - - Transition Summary: -+ * Fence node1 - * Stop stonithclone:1 (node1) - * Stop evmsclone:1 (node1) - * Stop imagestoreclone:1 (node1) -diff --git a/pengine/test10/master-7.summary b/pengine/test10/master-7.summary -index 7472542..348b4ee 100644 ---- a/pengine/test10/master-7.summary -+++ b/pengine/test10/master-7.summary -@@ -29,6 +29,7 @@ Online: [ c001n02 c001n03 c001n08 ] - ocf_msdummy:7 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n08 - - Transition Summary: -+ * Fence c001n01 - * Move DcIPaddr (Started c001n01 -> c001n03) - * Move ocf_192.168.100.181 (Started c001n03 -> c001n02) - * Move heartbeat_192.168.100.182 (Started c001n03 -> c001n02) -diff --git a/pengine/test10/master-8.summary b/pengine/test10/master-8.summary -index 450737b..b77c884 100644 ---- a/pengine/test10/master-8.summary -+++ b/pengine/test10/master-8.summary -@@ -29,6 +29,7 @@ Online: [ c001n02 c001n03 c001n08 ] - ocf_msdummy:7 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n08 - - Transition Summary: -+ * Fence c001n01 - * Move DcIPaddr (Started c001n01 -> c001n03) - * Move ocf_192.168.100.181 (Started c001n03 -> c001n02) - * Move heartbeat_192.168.100.182 (Started c001n03 -> c001n02) -diff --git a/pengine/test10/master-9.summary b/pengine/test10/master-9.summary -index 4f57a79..c1cd4a1 100644 ---- a/pengine/test10/master-9.summary -+++ b/pengine/test10/master-9.summary -@@ -30,6 +30,7 @@ Online: [ ibm1 va1 ] - ocf_msdummy:7 (ocf::heartbeat:/usr/lib64/heartbeat/cts/OCFMSDummy): Stopped - - Transition Summary: -+ * Shutdown ibm1 - * Start DcIPaddr (va1 - blocked) - * Start ocf_127.0.0.11 (va1 - blocked) - * Start heartbeat_127.0.0.12 (va1 - blocked) -diff --git a/pengine/test10/migrate-fencing.summary b/pengine/test10/migrate-fencing.summary -index e8bcd45..831e49a 100644 ---- a/pengine/test10/migrate-fencing.summary -+++ b/pengine/test10/migrate-fencing.summary -@@ -22,6 +22,7 @@ Online: [ pcmk-1 pcmk-2 pcmk-3 ] - Slaves: [ pcmk-1 pcmk-2 pcmk-3 ] - - Transition Summary: -+ * Fence pcmk-4 - * Stop FencingChild:0 (pcmk-4) - * Move r192.168.101.181 (Started pcmk-4 -> pcmk-1) - * Move r192.168.101.182 (Started pcmk-4 -> pcmk-1) -diff --git a/pengine/test10/migrate-shutdown.summary b/pengine/test10/migrate-shutdown.summary -index e634a5c..630d58d 100644 ---- a/pengine/test10/migrate-shutdown.summary -+++ b/pengine/test10/migrate-shutdown.summary -@@ -22,6 +22,10 @@ Online: [ pcmk-1 pcmk-2 pcmk-3 pcmk-4 ] - Stopped: [ pcmk-3 ] - - Transition Summary: -+ * Shutdown pcmk-4 -+ * Shutdown pcmk-3 -+ * Shutdown pcmk-2 -+ * Shutdown pcmk-1 - * Stop Fencing (pcmk-1) - * Stop r192.168.122.105 (pcmk-2) - * Stop r192.168.122.106 (pcmk-2) -diff --git a/pengine/test10/novell-239082.summary b/pengine/test10/novell-239082.summary -index b2c28ca..b596de4 100644 ---- a/pengine/test10/novell-239082.summary -+++ b/pengine/test10/novell-239082.summary -@@ -8,6 +8,7 @@ Online: [ xen-1 xen-2 ] - Slaves: [ xen-2 ] - - Transition Summary: -+ * Shutdown xen-1 - * Move fs_1 (Started xen-1 -> xen-2) - * Promote drbd0:0 (Slave -> Master xen-2) - * Demote drbd0:1 (Master -> Stopped xen-1) -diff --git a/pengine/test10/novell-252693.summary b/pengine/test10/novell-252693.summary -index 47bad6f..23f0632 100644 ---- a/pengine/test10/novell-252693.summary -+++ b/pengine/test10/novell-252693.summary -@@ -15,6 +15,7 @@ Online: [ node1 node2 ] - sles10 (ocf::heartbeat:Xen): Started node1 - - Transition Summary: -+ * Shutdown node1 - * Stop stonithclone:1 (node1) - * Stop evmsdclone:1 (node1) - * Stop evmsclone:1 (node1) -diff --git a/pengine/test10/params-2.summary b/pengine/test10/params-2.summary -index 891ea33..f4169f2 100644 ---- a/pengine/test10/params-2.summary -+++ b/pengine/test10/params-2.summary -@@ -7,6 +7,7 @@ Online: [ node1 node2 node3 ] - rsc3 (lsb:apache): Stopped - - Transition Summary: -+ * Shutdown node1 - * Stop rsc1 (node1) - * Restart rsc2 (Started node2) - * Start rsc3 (node3) -diff --git a/pengine/test10/rec-node-11.summary b/pengine/test10/rec-node-11.summary -index 1ed0eab..eb967dd 100644 ---- a/pengine/test10/rec-node-11.summary -+++ b/pengine/test10/rec-node-11.summary -@@ -10,6 +10,7 @@ Online: [ node2 ] - rsc3 (heartbeat:apache): Started node2 - - Transition Summary: -+ * Fence node1 - * Start stonith-1 (node2) - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -diff --git a/pengine/test10/rec-node-12.summary b/pengine/test10/rec-node-12.summary -index 82a03ac..26f9b13 100644 ---- a/pengine/test10/rec-node-12.summary -+++ b/pengine/test10/rec-node-12.summary -@@ -15,6 +15,7 @@ Online: [ c001n01 c001n03 c001n08 ] - child_DoFencing:3 (stonith:ssh): Stopped - - Transition Summary: -+ * Fence c001n02 - * Start DcIPaddr (c001n08) - * Start rsc_c001n08 (c001n08) - * Start rsc_c001n02 (c001n01) -diff --git a/pengine/test10/rec-node-13.summary b/pengine/test10/rec-node-13.summary -index 7c6f52b..e273a79 100644 ---- a/pengine/test10/rec-node-13.summary -+++ b/pengine/test10/rec-node-13.summary -@@ -34,6 +34,7 @@ OFFLINE: [ c001n03 c001n05 ] - ocf_msdummy:11 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n07 - - Transition Summary: -+ * Fence c001n04 - * Stop ocf_msdummy:6 (c001n04) - - Executing cluster transition: -diff --git a/pengine/test10/rec-node-14.summary b/pengine/test10/rec-node-14.summary -index d97d943..532f3d9 100644 ---- a/pengine/test10/rec-node-14.summary -+++ b/pengine/test10/rec-node-14.summary -@@ -8,6 +8,9 @@ Node node3 (uuid3): UNCLEAN (offline) - lsb_dummy (lsb:/usr/lib/heartbeat/cts/LSBDummy): Stopped - - Transition Summary: -+ * Fence node3 -+ * Fence node2 -+ * Fence node1 - - Executing cluster transition: - * Fencing node1 (reboot) -diff --git a/pengine/test10/rec-node-15.summary b/pengine/test10/rec-node-15.summary -index 1c3e8ea..8d88680 100644 ---- a/pengine/test10/rec-node-15.summary -+++ b/pengine/test10/rec-node-15.summary -@@ -21,6 +21,7 @@ Online: [ sapcl01 ] - oralsnr_25 (ocf::heartbeat:oralsnr): Stopped - - Transition Summary: -+ * Fence sapcl03 - * Start stonith-1 (sapcl01) - * Move IPaddr_192_168_1_102 (Started sapcl02 -> sapcl01) - * Move LVM_12 (Started sapcl02 -> sapcl01) -diff --git a/pengine/test10/rec-node-2.summary b/pengine/test10/rec-node-2.summary -index 6dc5098..5c8db02 100644 ---- a/pengine/test10/rec-node-2.summary -+++ b/pengine/test10/rec-node-2.summary -@@ -14,6 +14,7 @@ Online: [ node2 ] - rsc6 (heartbeat:apache): Stopped - - Transition Summary: -+ * Fence node1 - * Start stonith-1 (node2) - * Start rsc1 (node2) - * Start rsc2 (node2) -diff --git a/pengine/test10/rec-node-4.summary b/pengine/test10/rec-node-4.summary -index a64580c..761573f 100644 ---- a/pengine/test10/rec-node-4.summary -+++ b/pengine/test10/rec-node-4.summary -@@ -8,6 +8,7 @@ Online: [ node2 ] - rsc2 (heartbeat:apache): Started node1 (UNCLEAN) - - Transition Summary: -+ * Fence node1 - * Start stonith-1 (node2) - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -diff --git a/pengine/test10/rec-node-6.summary b/pengine/test10/rec-node-6.summary -index cf02414..fb294fb 100644 ---- a/pengine/test10/rec-node-6.summary -+++ b/pengine/test10/rec-node-6.summary -@@ -8,6 +8,7 @@ Online: [ node2 ] - rsc2 (heartbeat:apache): Started node1 - - Transition Summary: -+ * Fence node1 - * Start stonith-1 (node2) - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -diff --git a/pengine/test10/rec-node-7.summary b/pengine/test10/rec-node-7.summary -index a64580c..761573f 100644 ---- a/pengine/test10/rec-node-7.summary -+++ b/pengine/test10/rec-node-7.summary -@@ -8,6 +8,7 @@ Online: [ node2 ] - rsc2 (heartbeat:apache): Started node1 (UNCLEAN) - - Transition Summary: -+ * Fence node1 - * Start stonith-1 (node2) - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -diff --git a/pengine/test10/rec-rsc-5.summary b/pengine/test10/rec-rsc-5.summary -index bfb9a3c..7bcb1a3 100644 ---- a/pengine/test10/rec-rsc-5.summary -+++ b/pengine/test10/rec-rsc-5.summary -@@ -8,6 +8,7 @@ Online: [ node1 ] - rsc2 (heartbeat:apache): Started node2 - - Transition Summary: -+ * Fence node2 - * Start stonith-1 (node1) - * Recover rsc1 (Started node2 -> node1) - * Move rsc2 (Started node2 -> node1) -diff --git a/pengine/test10/remote-fence-before-reconnect.summary b/pengine/test10/remote-fence-before-reconnect.summary -index 88ca48c..520f5cf 100644 ---- a/pengine/test10/remote-fence-before-reconnect.summary -+++ b/pengine/test10/remote-fence-before-reconnect.summary -@@ -12,6 +12,7 @@ Online: [ c7auto1 c7auto2 c7auto3 ] - fake5 (ocf::heartbeat:Dummy): Started c7auto3 - - Transition Summary: -+ * Fence c7auto4 - * Stop c7auto4 (c7auto1) - * Move fake2 (Started c7auto4 -> c7auto1) - -diff --git a/pengine/test10/remote-fence-unclean.summary b/pengine/test10/remote-fence-unclean.summary -index cd246e4..06940fc 100644 ---- a/pengine/test10/remote-fence-unclean.summary -+++ b/pengine/test10/remote-fence-unclean.summary -@@ -11,6 +11,7 @@ Online: [ 18builder 18node1 18node2 ] - FAKE4 (ocf::heartbeat:Dummy): Started 18node1 - - Transition Summary: -+ * Fence remote1 - * Recover remote1 (Started 18node1) - * Move FAKE2 (Started remote1 -> 18builder) - * Move FAKE3 (Started 18builder -> 18node1) -diff --git a/pengine/test10/remote-fence-unclean2.summary b/pengine/test10/remote-fence-unclean2.summary -index 78ff784..96f5d69 100644 ---- a/pengine/test10/remote-fence-unclean2.summary -+++ b/pengine/test10/remote-fence-unclean2.summary -@@ -10,6 +10,7 @@ OFFLINE: [ rhel7-alt3 ] - fake (ocf::heartbeat:Dummy): Started rhel7-alt4 (UNCLEAN) - - Transition Summary: -+ * Fence rhel7-alt4 - * Stop fake (rhel7-alt4) - - Executing cluster transition: -diff --git a/pengine/test10/remote-partial-migrate2.summary b/pengine/test10/remote-partial-migrate2.summary -index 6a65975..197bd8c 100644 ---- a/pengine/test10/remote-partial-migrate2.summary -+++ b/pengine/test10/remote-partial-migrate2.summary -@@ -63,6 +63,7 @@ RemoteOFFLINE: [ pcmk_remote4 ] - FAKE50 (ocf::heartbeat:Dummy): Started pcmk_remote5 - - Transition Summary: -+ * Fence pcmk4 - * Migrate pcmk_remote2 (Started pcmk3 -> pcmk1) - * Start pcmk_remote4 (pcmk2) - * Migrate pcmk_remote5 (Started pcmk1 -> pcmk2) -diff --git a/pengine/test10/remote-recover-all.summary b/pengine/test10/remote-recover-all.summary -index 881f449..3f29f70 100644 ---- a/pengine/test10/remote-recover-all.summary -+++ b/pengine/test10/remote-recover-all.summary -@@ -38,6 +38,9 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - - Transition Summary: -+ * Fence messaging-1 -+ * Fence galera-2 -+ * Fence controller-1 - * Stop messaging-1 (controller-1) - * Move galera-0 (Started controller-1 -> controller-2) - * Stop galera-2 (controller-1) -diff --git a/pengine/test10/remote-recover-connection.summary b/pengine/test10/remote-recover-connection.summary -index 57b5e01..43507af 100644 ---- a/pengine/test10/remote-recover-connection.summary -+++ b/pengine/test10/remote-recover-connection.summary -@@ -38,6 +38,7 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - - Transition Summary: -+ * Fence controller-1 - * Move messaging-1 (Started controller-1 -> controller-2) - * Move galera-0 (Started controller-1 -> controller-2) - * Move galera-2 (Started controller-1 -> controller-2) -diff --git a/pengine/test10/remote-recover-fail.summary b/pengine/test10/remote-recover-fail.summary -index 5953e34..ec2d701 100644 ---- a/pengine/test10/remote-recover-fail.summary -+++ b/pengine/test10/remote-recover-fail.summary -@@ -14,6 +14,7 @@ OFFLINE: [ rhel7-auto1 ] - FAKE6 (ocf::heartbeat:Dummy): Started rhel7-auto4 (UNCLEAN) - - Transition Summary: -+ * Fence rhel7-auto4 - * Recover rhel7-auto4 (Started rhel7-auto2) - * Start FAKE1 (rhel7-auto2) - * Move FAKE2 (Started rhel7-auto4 -> rhel7-auto3) -diff --git a/pengine/test10/remote-recover-no-resources.summary b/pengine/test10/remote-recover-no-resources.summary -index 8bfeb43..48355a4 100644 ---- a/pengine/test10/remote-recover-no-resources.summary -+++ b/pengine/test10/remote-recover-no-resources.summary -@@ -38,6 +38,8 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - - Transition Summary: -+ * Fence messaging-1 -+ * Fence controller-1 - * Stop messaging-1 (controller-1) - * Move galera-0 (Started controller-1 -> controller-2) - * Stop galera-2 (controller-1) -diff --git a/pengine/test10/remote-recover-unknown.summary b/pengine/test10/remote-recover-unknown.summary -index 7562f12..212af4e 100644 ---- a/pengine/test10/remote-recover-unknown.summary -+++ b/pengine/test10/remote-recover-unknown.summary -@@ -38,6 +38,9 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - - Transition Summary: -+ * Fence messaging-1 -+ * Fence galera-2 -+ * Fence controller-1 - * Stop messaging-1 (controller-1) - * Move galera-0 (Started controller-1 -> controller-2) - * Stop galera-2 (controller-1) -diff --git a/pengine/test10/remote-recovery.summary b/pengine/test10/remote-recovery.summary -index 57b5e01..43507af 100644 ---- a/pengine/test10/remote-recovery.summary -+++ b/pengine/test10/remote-recovery.summary -@@ -38,6 +38,7 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - - Transition Summary: -+ * Fence controller-1 - * Move messaging-1 (Started controller-1 -> controller-2) - * Move galera-0 (Started controller-1 -> controller-2) - * Move galera-2 (Started controller-1 -> controller-2) -diff --git a/pengine/test10/remote-unclean2.summary b/pengine/test10/remote-unclean2.summary -index 0a73cbd..ad4af90 100644 ---- a/pengine/test10/remote-unclean2.summary -+++ b/pengine/test10/remote-unclean2.summary -@@ -7,6 +7,7 @@ Online: [ rhel7-auto1 rhel7-auto2 rhel7-auto3 ] - rhel7-auto4 (ocf::pacemaker:remote): FAILED rhel7-auto1 - - Transition Summary: -+ * Fence rhel7-auto4 - * Recover rhel7-auto4 (Started rhel7-auto1) - - Executing cluster transition: -diff --git a/pengine/test10/simple7.summary b/pengine/test10/simple7.summary -index 2c2818f..021c15f 100644 ---- a/pengine/test10/simple7.summary -+++ b/pengine/test10/simple7.summary -@@ -5,6 +5,7 @@ Online: [ node1 ] - rsc1 (heartbeat:apache): Started node1 - - Transition Summary: -+ * Shutdown node1 - * Stop rsc1 (node1) - - Executing cluster transition: -diff --git a/pengine/test10/start-then-stop-with-unfence.summary b/pengine/test10/start-then-stop-with-unfence.summary -index df7d9e3..4430cc0 100644 ---- a/pengine/test10/start-then-stop-with-unfence.summary -+++ b/pengine/test10/start-then-stop-with-unfence.summary -@@ -11,6 +11,8 @@ Online: [ rhel7-node1.example.com rhel7-node2.example.com ] - Stopped: [ rhel7-node1.example.com ] - - Transition Summary: -+ * Fence rhel7-node2.example.com -+ * Fence rhel7-node1.example.com - * Start mpath-node1 (rhel7-node1.example.com) - * Move ip1 (Started rhel7-node2.example.com -> rhel7-node1.example.com) - * Start jrummy:1 (rhel7-node1.example.com) -diff --git a/pengine/test10/stonith-0.summary b/pengine/test10/stonith-0.summary -index 0fcaf80..24008a1 100644 ---- a/pengine/test10/stonith-0.summary -+++ b/pengine/test10/stonith-0.summary -@@ -37,6 +37,8 @@ Online: [ c001n02 c001n04 c001n06 c001n07 c001n08 ] - ocf_msdummy:13 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n06 - - Transition Summary: -+ * Fence c001n05 -+ * Fence c001n03 - * Move ocf_192.168.100.181 (Started c001n03 -> c001n02) - * Move heartbeat_192.168.100.182 (Started c001n03 -> c001n02) - * Recover ocf_192.168.100.183 (Started c001n03 -> c001n02) -diff --git a/pengine/test10/stonith-1.summary b/pengine/test10/stonith-1.summary -index 589e402..8556021 100644 ---- a/pengine/test10/stonith-1.summary -+++ b/pengine/test10/stonith-1.summary -@@ -28,6 +28,7 @@ Online: [ sles-1 sles-2 sles-4 ] - ocf_msdummy:7 (ocf::heartbeat:Stateful): Stopped - - Transition Summary: -+ * Fence sles-3 - * Start r192.168.100.183 (sles-1) - * Move migrator (Started sles-3 -> sles-4) - * Move rsc_sles-3 (Started sles-3 -> sles-4) -diff --git a/pengine/test10/stonith-2.summary b/pengine/test10/stonith-2.summary -index b02c9b4..0f7cb99 100644 ---- a/pengine/test10/stonith-2.summary -+++ b/pengine/test10/stonith-2.summary -@@ -33,6 +33,7 @@ Online: [ sles-1 sles-2 sles-3 sles-4 sles-6 ] - ocf_msdummy:11 (ocf::heartbeat:Stateful): Slave sles-3 - - Transition Summary: -+ * Fence sles-5 - * Start rsc_sles-5 (sles-6) - - Executing cluster transition: -diff --git a/pengine/test10/stonith-3.summary b/pengine/test10/stonith-3.summary -index 64b21d4..cb25cc3 100644 ---- a/pengine/test10/stonith-3.summary -+++ b/pengine/test10/stonith-3.summary -@@ -8,6 +8,7 @@ Online: [ rh5node2 ] - Stopped: [ rh5node1 rh5node2 ] - - Transition Summary: -+ * Fence rh5node1 - * Start prmIpPostgreSQLDB (rh5node2) - * Start prmStonith:0 (rh5node2) - -diff --git a/pengine/test10/stonith-4.summary b/pengine/test10/stonith-4.summary -index 78118c5..dc7cd89 100644 ---- a/pengine/test10/stonith-4.summary -+++ b/pengine/test10/stonith-4.summary -@@ -14,6 +14,10 @@ OFFLINE: [ pcmk-4 pcmk-6 ] - Fencing (stonith:fence_xvm): Stopped - - Transition Summary: -+ * Fence pcmk-8 -+ * Fence pcmk-7 -+ * Fence pcmk-5 -+ * Fence pcmk-10 - * Start Fencing (pcmk-1 - blocked) - - Executing cluster transition: -diff --git a/pengine/test10/stop-failure-no-quorum.summary b/pengine/test10/stop-failure-no-quorum.summary -index 7c14ce2..d864f1a 100644 ---- a/pengine/test10/stop-failure-no-quorum.summary -+++ b/pengine/test10/stop-failure-no-quorum.summary -@@ -15,6 +15,7 @@ Online: [ pcmk-1 ] - Fencing (stonith:fence_xvm): Stopped - - Transition Summary: -+ * Fence pcmk-2 - * Start dlm:0 (pcmk-1 - blocked) - * Stop clvm:0 (pcmk-2) - * Start clvm:2 (pcmk-1 - blocked) -diff --git a/pengine/test10/stop-failure-with-fencing.summary b/pengine/test10/stop-failure-with-fencing.summary -index 72417e6..e01b6c4 100644 ---- a/pengine/test10/stop-failure-with-fencing.summary -+++ b/pengine/test10/stop-failure-with-fencing.summary -@@ -14,6 +14,7 @@ Online: [ pcmk-1 ] - Fencing (stonith:fence_xvm): Stopped - - Transition Summary: -+ * Fence pcmk-2 - * Start dlm:0 (pcmk-1 - blocked) - * Stop clvm:0 (pcmk-2) - * Start clvm:1 (pcmk-1 - blocked) -diff --git a/pengine/test10/systemhealth1.summary b/pengine/test10/systemhealth1.summary -index bbdbcaf..37b0b49 100644 ---- a/pengine/test10/systemhealth1.summary -+++ b/pengine/test10/systemhealth1.summary -@@ -8,6 +8,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d -+ * Fence hs21c - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealth2.summary b/pengine/test10/systemhealth2.summary -index 86c6bd4..a37ce18 100644 ---- a/pengine/test10/systemhealth2.summary -+++ b/pengine/test10/systemhealth2.summary -@@ -8,6 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealth3.summary b/pengine/test10/systemhealth3.summary -index 86c6bd4..a37ce18 100644 ---- a/pengine/test10/systemhealth3.summary -+++ b/pengine/test10/systemhealth3.summary -@@ -8,6 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealthm1.summary b/pengine/test10/systemhealthm1.summary -index bbdbcaf..37b0b49 100644 ---- a/pengine/test10/systemhealthm1.summary -+++ b/pengine/test10/systemhealthm1.summary -@@ -8,6 +8,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d -+ * Fence hs21c - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealthm2.summary b/pengine/test10/systemhealthm2.summary -index 86c6bd4..a37ce18 100644 ---- a/pengine/test10/systemhealthm2.summary -+++ b/pengine/test10/systemhealthm2.summary -@@ -8,6 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealthm3.summary b/pengine/test10/systemhealthm3.summary -index 760023d..b10d3f2 100644 ---- a/pengine/test10/systemhealthm3.summary -+++ b/pengine/test10/systemhealthm3.summary -@@ -8,6 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d - - Executing cluster transition: - * Resource action: stonith-1 monitor on hs21c -diff --git a/pengine/test10/systemhealthn1.summary b/pengine/test10/systemhealthn1.summary -index bbdbcaf..37b0b49 100644 ---- a/pengine/test10/systemhealthn1.summary -+++ b/pengine/test10/systemhealthn1.summary -@@ -8,6 +8,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d -+ * Fence hs21c - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealthn2.summary b/pengine/test10/systemhealthn2.summary -index 86c6bd4..a37ce18 100644 ---- a/pengine/test10/systemhealthn2.summary -+++ b/pengine/test10/systemhealthn2.summary -@@ -8,6 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealthn3.summary b/pengine/test10/systemhealthn3.summary -index 86c6bd4..a37ce18 100644 ---- a/pengine/test10/systemhealthn3.summary -+++ b/pengine/test10/systemhealthn3.summary -@@ -8,6 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealtho1.summary b/pengine/test10/systemhealtho1.summary -index bbdbcaf..37b0b49 100644 ---- a/pengine/test10/systemhealtho1.summary -+++ b/pengine/test10/systemhealtho1.summary -@@ -8,6 +8,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d -+ * Fence hs21c - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealtho2.summary b/pengine/test10/systemhealtho2.summary -index 760023d..b10d3f2 100644 ---- a/pengine/test10/systemhealtho2.summary -+++ b/pengine/test10/systemhealtho2.summary -@@ -8,6 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d - - Executing cluster transition: - * Resource action: stonith-1 monitor on hs21c -diff --git a/pengine/test10/systemhealtho3.summary b/pengine/test10/systemhealtho3.summary -index 760023d..b10d3f2 100644 ---- a/pengine/test10/systemhealtho3.summary -+++ b/pengine/test10/systemhealtho3.summary -@@ -8,6 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d - - Executing cluster transition: - * Resource action: stonith-1 monitor on hs21c -diff --git a/pengine/test10/systemhealthp1.summary b/pengine/test10/systemhealthp1.summary -index bbdbcaf..37b0b49 100644 ---- a/pengine/test10/systemhealthp1.summary -+++ b/pengine/test10/systemhealthp1.summary -@@ -8,6 +8,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d -+ * Fence hs21c - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealthp2.summary b/pengine/test10/systemhealthp2.summary -index 94c63d6..6605e12 100644 ---- a/pengine/test10/systemhealthp2.summary -+++ b/pengine/test10/systemhealthp2.summary -@@ -8,6 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) - -diff --git a/pengine/test10/systemhealthp3.summary b/pengine/test10/systemhealthp3.summary -index 760023d..b10d3f2 100644 ---- a/pengine/test10/systemhealthp3.summary -+++ b/pengine/test10/systemhealthp3.summary -@@ -8,6 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -+ * Fence hs21d - - Executing cluster transition: - * Resource action: stonith-1 monitor on hs21c -diff --git a/pengine/test10/ticket-clone-21.summary b/pengine/test10/ticket-clone-21.summary -index 5ae23ec..50df628 100644 ---- a/pengine/test10/ticket-clone-21.summary -+++ b/pengine/test10/ticket-clone-21.summary -@@ -7,6 +7,8 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -+ * Fence node2 -+ * Fence node1 - * Stop rsc_stonith (node1) - * Stop rsc1:0 (node1) - * Stop rsc1:1 (node2) -diff --git a/pengine/test10/ticket-clone-9.summary b/pengine/test10/ticket-clone-9.summary -index 5ae23ec..50df628 100644 ---- a/pengine/test10/ticket-clone-9.summary -+++ b/pengine/test10/ticket-clone-9.summary -@@ -7,6 +7,8 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -+ * Fence node2 -+ * Fence node1 - * Stop rsc_stonith (node1) - * Stop rsc1:0 (node1) - * Stop rsc1:1 (node2) -diff --git a/pengine/test10/ticket-group-21.summary b/pengine/test10/ticket-group-21.summary -index 9027d2c..eab14a9 100644 ---- a/pengine/test10/ticket-group-21.summary -+++ b/pengine/test10/ticket-group-21.summary -@@ -8,6 +8,7 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -+ * Fence node2 - * Stop rsc1 (node2) - * Stop rsc2 (node2) - -diff --git a/pengine/test10/ticket-group-9.summary b/pengine/test10/ticket-group-9.summary -index 9027d2c..eab14a9 100644 ---- a/pengine/test10/ticket-group-9.summary -+++ b/pengine/test10/ticket-group-9.summary -@@ -8,6 +8,7 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -+ * Fence node2 - * Stop rsc1 (node2) - * Stop rsc2 (node2) - -diff --git a/pengine/test10/ticket-master-21.summary b/pengine/test10/ticket-master-21.summary -index b228696..a107a38 100644 ---- a/pengine/test10/ticket-master-21.summary -+++ b/pengine/test10/ticket-master-21.summary -@@ -8,6 +8,7 @@ Online: [ node1 node2 ] - Slaves: [ node2 ] - - Transition Summary: -+ * Fence node1 - * Move rsc_stonith (Started node1 -> node2) - * Demote rsc1:0 (Master -> Stopped node1) - -diff --git a/pengine/test10/ticket-master-9.summary b/pengine/test10/ticket-master-9.summary -index b228696..a107a38 100644 ---- a/pengine/test10/ticket-master-9.summary -+++ b/pengine/test10/ticket-master-9.summary -@@ -8,6 +8,7 @@ Online: [ node1 node2 ] - Slaves: [ node2 ] - - Transition Summary: -+ * Fence node1 - * Move rsc_stonith (Started node1 -> node2) - * Demote rsc1:0 (Master -> Stopped node1) - -diff --git a/pengine/test10/ticket-primitive-21.summary b/pengine/test10/ticket-primitive-21.summary -index 6c523fe..918b743 100644 ---- a/pengine/test10/ticket-primitive-21.summary -+++ b/pengine/test10/ticket-primitive-21.summary -@@ -6,6 +6,7 @@ Online: [ node1 node2 ] - rsc1 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -+ * Fence node2 - * Stop rsc1 (node2) - - Executing cluster transition: -diff --git a/pengine/test10/ticket-primitive-9.summary b/pengine/test10/ticket-primitive-9.summary -index 6c523fe..918b743 100644 ---- a/pengine/test10/ticket-primitive-9.summary -+++ b/pengine/test10/ticket-primitive-9.summary -@@ -6,6 +6,7 @@ Online: [ node1 node2 ] - rsc1 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -+ * Fence node2 - * Stop rsc1 (node2) - - Executing cluster transition: -diff --git a/pengine/test10/unfence-definition.summary b/pengine/test10/unfence-definition.summary -index 05f8003..03506a3 100644 ---- a/pengine/test10/unfence-definition.summary -+++ b/pengine/test10/unfence-definition.summary -@@ -12,6 +12,11 @@ Online: [ virt-1 virt-2 virt-3 ] - Stopped: [ virt-2 virt-3 virt-4 ] - - Transition Summary: -+ * Fence virt-4 -+ * Fence virt-4 -+ * Fence virt-3 -+ * Fence virt-2 -+ * Fence virt-1 - * Restart fencing (Started virt-1) - * Restart dlm:0 (Started virt-1) - * Start dlm:2 (virt-3) -diff --git a/pengine/test10/unfence-parameters.summary b/pengine/test10/unfence-parameters.summary -index 41fed90..5cc4a4b 100644 ---- a/pengine/test10/unfence-parameters.summary -+++ b/pengine/test10/unfence-parameters.summary -@@ -12,6 +12,11 @@ Online: [ virt-1 virt-2 virt-3 ] - Stopped: [ virt-2 virt-3 virt-4 ] - - Transition Summary: -+ * Fence virt-4 -+ * Fence virt-4 -+ * Fence virt-3 -+ * Fence virt-2 -+ * Fence virt-1 - * Restart fencing (Started virt-1) - * Restart dlm:0 (Started virt-1) - * Restart dlm:1 (Started virt-2) -diff --git a/pengine/test10/unfence-startup.summary b/pengine/test10/unfence-startup.summary -index 76bc0fc..6cd38ad 100644 ---- a/pengine/test10/unfence-startup.summary -+++ b/pengine/test10/unfence-startup.summary -@@ -12,6 +12,11 @@ Online: [ virt-1 virt-2 virt-3 ] - Stopped: [ virt-2 virt-3 virt-4 ] - - Transition Summary: -+ * Fence virt-4 -+ * Fence virt-4 -+ * Fence virt-3 -+ * Fence virt-2 -+ * Fence virt-1 - * Start dlm:2 (virt-3) - * Start clvmd:1 (virt-2) - * Start clvmd:2 (virt-3) -diff --git a/pengine/test10/unmanaged-master.summary b/pengine/test10/unmanaged-master.summary -index 024179a..66a8748 100644 ---- a/pengine/test10/unmanaged-master.summary -+++ b/pengine/test10/unmanaged-master.summary -@@ -27,6 +27,8 @@ OFFLINE: [ pcmk-3 pcmk-4 ] - Stopped: [ pcmk-3 pcmk-4 ] - - Transition Summary: -+ * Shutdown pcmk-2 -+ * Shutdown pcmk-1 - - Executing cluster transition: - * Cluster action: do_shutdown on pcmk-2 -diff --git a/pengine/test10/whitebox-fail1.summary b/pengine/test10/whitebox-fail1.summary -index 1872e9a..5f70a66 100644 ---- a/pengine/test10/whitebox-fail1.summary -+++ b/pengine/test10/whitebox-fail1.summary -@@ -14,6 +14,7 @@ Containers: [ lxc2:container2 ] - D (ocf::pacemaker:Dummy): Started 18node1 - - Transition Summary: -+ * Fence lxc1 (resource: container1) - * Recover container1 (Started 18node2) - * Recover M:4 (Started lxc1) - * Recover B (Started lxc1) -diff --git a/pengine/test10/whitebox-fail2.summary b/pengine/test10/whitebox-fail2.summary -index 5db6588..2922f16 100644 ---- a/pengine/test10/whitebox-fail2.summary -+++ b/pengine/test10/whitebox-fail2.summary -@@ -14,6 +14,7 @@ Containers: [ lxc2:container2 ] - D (ocf::pacemaker:Dummy): Started 18node1 - - Transition Summary: -+ * Fence lxc1 (resource: container1) - * Recover container1 (Started 18node2) - * Recover M:4 (Started lxc1) - * Recover B (Started lxc1) -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.summary b/pengine/test10/whitebox-imply-stop-on-fence.summary -index 50a3446..31cc4a5 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.summary -+++ b/pengine/test10/whitebox-imply-stop-on-fence.summary -@@ -25,6 +25,9 @@ Containers: [ lxc-01_kiff-02:R-lxc-01_kiff-02 lxc-02_kiff-02:R-lxc-02_kiff-02 ] - vm-fs (ocf::heartbeat:Filesystem): FAILED lxc-01_kiff-01 - - Transition Summary: -+ * Fence lxc-02_kiff-01 (resource: R-lxc-02_kiff-01) -+ * Fence lxc-01_kiff-01 (resource: R-lxc-01_kiff-01) -+ * Fence kiff-01 - * Move fence-kiff-02 (Started kiff-01 -> kiff-02) - * Stop dlm:0 (kiff-01) - * Stop clvmd:0 (kiff-01) -diff --git a/pengine/test10/whitebox-ms-ordering.summary b/pengine/test10/whitebox-ms-ordering.summary -index 365cf8d..fcdef66 100644 ---- a/pengine/test10/whitebox-ms-ordering.summary -+++ b/pengine/test10/whitebox-ms-ordering.summary -@@ -9,6 +9,8 @@ Online: [ 18node1 18node2 18node3 ] - Stopped: [ 18node1 18node2 18node3 ] - - Transition Summary: -+ * Fence lxc2 (resource: container2) -+ * Fence lxc1 (resource: container1) - * Start container1 (18node1) - * Start container2 (18node1) - * Recover lxc-ms:0 (Master lxc1) -diff --git a/pengine/test10/whitebox-unexpectedly-running.summary b/pengine/test10/whitebox-unexpectedly-running.summary -index 0b5ca42..ed0a5bd 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.summary -+++ b/pengine/test10/whitebox-unexpectedly-running.summary -@@ -5,6 +5,7 @@ Online: [ 18builder ] - FAKE (ocf::pacemaker:Dummy): FAILED 18builder - - Transition Summary: -+ * Fence remote1 (resource: FAKE) - * Recover FAKE (Started 18builder) - * Start remote1 (18builder) - -diff --git a/tools/crm_simulate.c b/tools/crm_simulate.c -index 2cc578d..aaaf0aa 100644 ---- a/tools/crm_simulate.c -+++ b/tools/crm_simulate.c -@@ -892,6 +892,7 @@ main(int argc, char **argv) - || modified ? "\n" : ""); - fflush(stdout); - -+ LogNodeActions(&data_set, TRUE); - for (gIter = data_set.resources; gIter != NULL; gIter = gIter->next) { - resource_t *rsc = (resource_t *) gIter->data; - --- -1.8.3.1 - diff --git a/SOURCES/074-bundle-ordering.patch b/SOURCES/074-bundle-ordering.patch deleted file mode 100644 index 15d7335..0000000 --- a/SOURCES/074-bundle-ordering.patch +++ /dev/null @@ -1,17008 +0,0 @@ -From 557ad15ec500f8edf0356d3ffcd880965ae0de1a Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 15 Jun 2017 10:47:04 +1000 -Subject: [PATCH 1/8] Feature: PE: Implement bundle ordering - ---- - pengine/allocate.c | 8 ++-- - pengine/allocate.h | 4 +- - pengine/clone.c | 51 +++++++++++-------------- - pengine/container.c | 82 ++++++++++++++++++++++++++++++++++++++- - pengine/master.c | 108 ++++++++++++++++++++++------------------------------ - pengine/utils.c | 12 ++++++ - pengine/utils.h | 1 + - 7 files changed, 170 insertions(+), 96 deletions(-) - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index f2987cc..8f15282 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -1860,9 +1860,11 @@ apply_container_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); -+ 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); -+ } - } else { - custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, - action->rsc, NULL, action, -diff --git a/pengine/allocate.h b/pengine/allocate.h -index d89943d..9a30b80 100644 ---- a/pengine/allocate.h -+++ b/pengine/allocate.h -@@ -179,6 +179,8 @@ gboolean update_action_flags(action_t * action, enum pe_action_flags flags, cons - gboolean update_action(action_t * action); - void complex_set_cmds(resource_t * rsc); - -- -+void master_promotion_constraints(resource_t * rsc, pe_working_set_t * data_set); -+void clone_create_pseudo_actions( -+ resource_t * rsc, GListPtr children, notify_data_t **start_notify, notify_data_t **stop_notify, pe_working_set_t * data_set); - - #endif -diff --git a/pengine/clone.c b/pengine/clone.c -index 51338d6..a51677a 100644 ---- a/pengine/clone.c -+++ b/pengine/clone.c -@@ -805,6 +805,17 @@ child_ordering_constraints(resource_t * rsc, pe_working_set_t * data_set) - void - clone_create_actions(resource_t * rsc, pe_working_set_t * data_set) - { -+ clone_variant_data_t *clone_data = NULL; -+ -+ get_clone_variant_data(clone_data, rsc); -+ clone_create_pseudo_actions(rsc, rsc->children, &clone_data->start_notify, &clone_data->stop_notify,data_set); -+ child_ordering_constraints(rsc, data_set); -+} -+ -+void -+clone_create_pseudo_actions( -+ resource_t * rsc, GListPtr children, notify_data_t **start_notify, notify_data_t **stop_notify, pe_working_set_t * data_set) -+{ - gboolean child_active = FALSE; - gboolean child_starting = FALSE; - gboolean child_stopping = FALSE; -@@ -816,14 +827,9 @@ clone_create_actions(resource_t * rsc, pe_working_set_t * data_set) - action_t *start = NULL; - action_t *started = NULL; - -- GListPtr gIter = rsc->children; -- clone_variant_data_t *clone_data = NULL; -- -- get_clone_variant_data(clone_data, rsc); -- - pe_rsc_trace(rsc, "Creating actions for %s", rsc->id); - -- for (; gIter != NULL; gIter = gIter->next) { -+ for (GListPtr gIter = children; gIter != NULL; gIter = gIter->next) { - resource_t *child_rsc = (resource_t *) gIter->data; - gboolean starting = FALSE; - gboolean stopping = FALSE; -@@ -839,42 +845,31 @@ clone_create_actions(resource_t * rsc, pe_working_set_t * data_set) - } - - /* start */ -- start = start_action(rsc, NULL, !child_starting); -- started = custom_action(rsc, started_key(rsc), -- RSC_STARTED, NULL, !child_starting, TRUE, data_set); -- -- update_action_flags(start, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__); -- update_action_flags(started, pe_action_pseudo, __FUNCTION__, __LINE__); -+ start = create_pseudo_resource_op(rsc, RSC_START, !child_starting, TRUE, data_set); -+ started = create_pseudo_resource_op(rsc, RSC_STARTED, !child_starting, FALSE, data_set); - started->priority = INFINITY; - - if (child_active || child_starting) { - update_action_flags(started, pe_action_runnable, __FUNCTION__, __LINE__); - } - -- child_ordering_constraints(rsc, data_set); -- if (clone_data->start_notify == NULL) { -- clone_data->start_notify = -- create_notification_boundaries(rsc, RSC_START, start, started, data_set); -+ if (start_notify != NULL && *start_notify == NULL) { -+ *start_notify = create_notification_boundaries(rsc, RSC_START, start, started, data_set); - } - - /* stop */ -- stop = stop_action(rsc, NULL, !child_stopping); -- stopped = custom_action(rsc, stopped_key(rsc), -- RSC_STOPPED, NULL, !child_stopping, TRUE, data_set); -- -+ stop = create_pseudo_resource_op(rsc, RSC_STOP, !child_stopping, TRUE, data_set); -+ stopped = create_pseudo_resource_op(rsc, RSC_STOPPED, !child_stopping, TRUE, data_set); - stopped->priority = INFINITY; -- update_action_flags(stop, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__); - if (allow_dependent_migrations) { - update_action_flags(stop, pe_action_migrate_runnable, __FUNCTION__, __LINE__); - } -- update_action_flags(stopped, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__); -- if (clone_data->stop_notify == NULL) { -- clone_data->stop_notify = -- create_notification_boundaries(rsc, RSC_STOP, stop, stopped, data_set); - -- if (clone_data->stop_notify && clone_data->start_notify) { -- order_actions(clone_data->stop_notify->post_done, clone_data->start_notify->pre, -- pe_order_optional); -+ if (stop_notify != NULL && *stop_notify == NULL) { -+ *stop_notify = create_notification_boundaries(rsc, RSC_STOP, stop, stopped, data_set); -+ -+ if (*stop_notify && *start_notify) { -+ order_actions((*stop_notify)->post_done, (*start_notify)->pre, pe_order_optional); - } - } - } -diff --git a/pengine/container.c b/pengine/container.c -index 58f6fca..d648e0f 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -122,6 +122,8 @@ container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - void - container_create_actions(resource_t * rsc, pe_working_set_t * data_set) - { -+ pe_action_t *action = NULL; -+ GListPtr containers = NULL; - container_variant_data_t *container_data = NULL; - - CRM_CHECK(rsc != NULL, return); -@@ -136,15 +138,32 @@ container_create_actions(resource_t * rsc, pe_working_set_t * data_set) - } - if(tuple->docker) { - tuple->docker->cmds->create_actions(tuple->docker, data_set); -+ containers = g_list_append(containers, tuple->docker); - } - if(tuple->remote) { - tuple->remote->cmds->create_actions(tuple->remote, data_set); - } - } - -+ clone_create_pseudo_actions(rsc, containers, NULL, NULL, data_set); -+ - if(container_data->child) { - container_data->child->cmds->create_actions(container_data->child, data_set); -+ -+ if(container_data->child->variant == pe_master) { -+ /* promote */ -+ action = create_pseudo_resource_op(rsc, RSC_PROMOTE, TRUE, TRUE, data_set); -+ action = create_pseudo_resource_op(rsc, RSC_PROMOTED, TRUE, TRUE, data_set); -+ action->priority = INFINITY; -+ -+ /* demote */ -+ action = create_pseudo_resource_op(rsc, RSC_DEMOTE, TRUE, TRUE, data_set); -+ action = create_pseudo_resource_op(rsc, RSC_DEMOTED, TRUE, TRUE, data_set); -+ action->priority = INFINITY; -+ } - } -+ -+ g_list_free(containers); - } - - void -@@ -155,12 +174,38 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - CRM_CHECK(rsc != NULL, return); - - get_container_variant_data(container_data, rsc); -+ -+ if(container_data->child) { -+ new_rsc_order(rsc, RSC_START, container_data->child, RSC_START, pe_order_implies_first_printed, data_set); -+ new_rsc_order(rsc, RSC_STOP, container_data->child, RSC_STOP, pe_order_implies_first_printed, data_set); -+ -+ if(container_data->child->children) { -+ new_rsc_order(container_data->child, RSC_STARTED, rsc, RSC_STARTED, pe_order_implies_then_printed, data_set); -+ new_rsc_order(container_data->child, RSC_STOPPED, rsc, RSC_STOPPED, pe_order_implies_then_printed, data_set); -+ } else { -+ new_rsc_order(container_data->child, RSC_START, rsc, RSC_STARTED, pe_order_implies_then_printed, data_set); -+ new_rsc_order(container_data->child, RSC_STOP, rsc, RSC_STOPPED, pe_order_implies_then_printed, data_set); -+ } -+ } -+ - for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - - CRM_ASSERT(tuple); -- if(tuple->docker) { -- tuple->docker->cmds->internal_constraints(tuple->docker, data_set); -+ CRM_ASSERT(tuple->docker); -+ -+ tuple->docker->cmds->internal_constraints(tuple->docker, data_set); -+ -+ order_start_start(rsc, tuple->docker, pe_order_runnable_left | pe_order_implies_first_printed); -+ -+ if(tuple->child) { -+ order_stop_stop(rsc, tuple->child, pe_order_implies_first_printed); -+ -+ } else { -+ order_stop_stop(rsc, tuple->docker, pe_order_implies_first_printed); -+ new_rsc_order(tuple->docker, RSC_START, rsc, RSC_STARTED, pe_order_implies_then_printed, data_set); -+ new_rsc_order(tuple->docker, RSC_STOP, rsc, RSC_STOPPED, pe_order_implies_then_printed, -+ data_set); - } - - if(tuple->ip) { -@@ -194,10 +239,31 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - - if(container_data->child) { - container_data->child->cmds->internal_constraints(container_data->child, data_set); -+ if(container_data->child->variant == pe_master) { -+ master_promotion_constraints(rsc, data_set); -+ -+ /* child demoted before global demoted */ -+ new_rsc_order(container_data->child, RSC_DEMOTED, rsc, RSC_DEMOTED, pe_order_implies_then_printed, data_set); -+ -+ /* global demote before child demote */ -+ new_rsc_order(rsc, RSC_DEMOTE, container_data->child, RSC_DEMOTE, pe_order_implies_first_printed, data_set); -+ -+ /* child promoted before global promoted */ -+ new_rsc_order(container_data->child, RSC_PROMOTED, rsc, RSC_PROMOTED, pe_order_implies_then_printed, data_set); -+ -+ /* global promote before child promote */ -+ new_rsc_order(rsc, RSC_PROMOTE, container_data->child, RSC_PROMOTE, pe_order_implies_first_printed, data_set); -+ } -+ -+ } else { -+// int type = pe_order_optional | pe_order_implies_then | pe_order_restart; -+// custom_action_order(rsc, generate_op_key(rsc->id, RSC_STOP, 0), NULL, -+// rsc, generate_op_key(rsc->id, RSC_START, 0), NULL, pe_order_optional, data_set); - } - } - - -+ - static resource_t * - find_compatible_tuple_by_node(resource_t * rsc_lh, node_t * candidate, resource_t * rsc, - enum rsc_role_e filter, gboolean current) -@@ -336,6 +402,10 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum - enum pe_action_flags filter, enum pe_ordering type) - { - enum pe_graph_flags changed = pe_graph_none; -+ -+ // At the point we need to force container X to stop because -+ // resource Y needs to stop, here is where we'd implement that -+ - return changed; - } - -@@ -359,6 +429,14 @@ container_rsc_location(resource_t * rsc, rsc_to_node_t * constraint) - tuple->ip->cmds->rsc_location(tuple->ip, constraint); - } - } -+ -+ if(container_data->child && (constraint->role_filter == RSC_ROLE_SLAVE || constraint->role_filter == RSC_ROLE_MASTER)) { -+ // Translate the node into container names running on that node -+ crm_err("Applying constraint %s", constraint->id); -+ container_data->child->cmds->rsc_location(container_data->child, constraint); -+ container_data->child->rsc_location = g_list_prepend(container_data->child->rsc_location, constraint); -+ crm_err("Added %d location constraints to %s", g_list_length(container_data->child->rsc_location), container_data->child->id); -+ } - } - - void -diff --git a/pengine/master.c b/pengine/master.c -index f6fcad3..93e5186 100644 ---- a/pengine/master.c -+++ b/pengine/master.c -@@ -139,27 +139,26 @@ master_update_pseudo_status(resource_t * rsc, gboolean * demoting, gboolean * pr - } - } - --#define apply_master_location(list) do { \ -- gIter2 = list; \ -- for(; gIter2 != NULL; gIter2 = gIter2->next) { \ -- rsc_to_node_t *cons = (rsc_to_node_t*)gIter2->data; \ -- \ -- cons_node = NULL; \ -- if(cons->role_filter == RSC_ROLE_MASTER) { \ -- pe_rsc_trace(rsc, "Applying %s to %s", \ -- cons->id, child_rsc->id); \ -- cons_node = pe_find_node_id( \ -- cons->node_list_rh, chosen->details->id); \ -- } \ -- if(cons_node != NULL) { \ -- int new_priority = merge_weights( \ -- child_rsc->priority, cons_node->weight); \ -- pe_rsc_trace(rsc, "\t%s: %d->%d (%d)", child_rsc->id, \ -- child_rsc->priority, new_priority, cons_node->weight); \ -- child_rsc->priority = new_priority; \ -- } \ -- } \ -- } while(0) -+static void apply_master_location(resource_t *child, GListPtr location_constraints, pe_node_t *chosen) -+{ -+ for(GListPtr gIter = location_constraints; gIter != NULL; gIter = gIter->next) { -+ pe_node_t *cons_node = NULL; -+ rsc_to_node_t *cons = (rsc_to_node_t*)gIter->data; -+ -+ if(cons->role_filter == RSC_ROLE_MASTER) { -+ pe_rsc_trace(child, "Applying %s to %s", cons->id, child->id); -+ cons_node = pe_find_node_id(cons->node_list_rh, chosen->details->id); -+ } -+ if(cons_node != NULL) { -+ int new_priority = merge_weights(child->priority, cons_node->weight); -+ pe_rsc_trace(child, "\t%s[%s]: %d -> %d (%d)", child->id, cons_node->details->uname, -+ child->priority, new_priority, cons_node->weight); -+ crm_err("\t%s[%s]: %d -> %d (%d)", child->id, cons_node->details->uname, -+ child->priority, new_priority, cons_node->weight); -+ child->priority = new_priority; -+ } -+ } -+} - - static node_t * - can_be_master(resource_t * rsc) -@@ -290,8 +289,7 @@ master_promotion_order(resource_t * rsc, pe_working_set_t * data_set) - pe_rsc_trace(rsc, "Merging weights for %s", rsc->id); - set_bit(rsc->flags, pe_rsc_merging); - -- gIter = rsc->children; -- for (; gIter != NULL; gIter = gIter->next) { -+ for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) { - resource_t *child = (resource_t *) gIter->data; - - pe_rsc_trace(rsc, "Sort index: %s = %d", child->id, child->sort_index); -@@ -639,7 +637,6 @@ master_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - GHashTableIter iter; - node_t *node = NULL; - node_t *chosen = NULL; -- node_t *cons_node = NULL; - enum rsc_role_e next_role = RSC_ROLE_UNKNOWN; - - char score[33]; -@@ -672,8 +669,7 @@ master_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - /* - * assign priority - */ -- gIter = rsc->children; -- for (; gIter != NULL; gIter = gIter->next) { -+ for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) { - GListPtr list = NULL; - resource_t *child_rsc = (resource_t *) gIter->data; - -@@ -723,11 +719,11 @@ master_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - crm_err("Unknown resource role: %d for %s", next_role, child_rsc->id)); - } - -- apply_master_location(child_rsc->rsc_location); -- apply_master_location(rsc->rsc_location); -+ apply_master_location(child_rsc, child_rsc->rsc_location, chosen); -+ crm_err("Applying %d location constraints for %s", g_list_length(rsc->rsc_location), rsc->id); -+ apply_master_location(child_rsc, rsc->rsc_location, chosen); - -- gIter2 = child_rsc->rsc_cons; -- for (; gIter2 != NULL; gIter2 = gIter2->next) { -+ for (gIter2 = child_rsc->rsc_cons; gIter2 != NULL; gIter2 = gIter2->next) { - rsc_colocation_t *cons = (rsc_colocation_t *) gIter2->data; - - child_rsc->cmds->rsc_colocation_lh(child_rsc, cons->rsc_rh, cons); -@@ -746,8 +742,7 @@ master_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - - /* mark the first N as masters */ - -- gIter = rsc->children; -- for (; gIter != NULL; gIter = gIter->next) { -+ for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) { - resource_t *child_rsc = (resource_t *) gIter->data; - score2char_stack(child_rsc->sort_index, score, len); - -@@ -840,20 +835,9 @@ master_create_actions(resource_t * rsc, pe_working_set_t * data_set) - } - - /* promote */ -- action = promote_action(rsc, NULL, !any_promoting); -- action_complete = custom_action(rsc, promoted_key(rsc), -- RSC_PROMOTED, NULL, !any_promoting, TRUE, data_set); -- -+ action = create_pseudo_resource_op(rsc, RSC_PROMOTE, !any_promoting, TRUE, data_set); -+ action_complete = create_pseudo_resource_op(rsc, RSC_PROMOTED, !any_promoting, TRUE, data_set); - action_complete->priority = INFINITY; -- update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__); -- update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); -- update_action_flags(action_complete, pe_action_pseudo, __FUNCTION__, __LINE__); -- update_action_flags(action_complete, pe_action_runnable, __FUNCTION__, __LINE__); -- -- if (clone_data->masters_allocated > 0) { -- update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); -- update_action_flags(action_complete, pe_action_runnable, __FUNCTION__, __LINE__); -- } - - child_promoting_constraints(clone_data, pe_order_optional, - rsc, NULL, last_promote_rsc, data_set); -@@ -864,16 +848,10 @@ master_create_actions(resource_t * rsc, pe_working_set_t * data_set) - } - - /* demote */ -- action = demote_action(rsc, NULL, !any_demoting); -- action_complete = custom_action(rsc, demoted_key(rsc), -- RSC_DEMOTED, NULL, !any_demoting, TRUE, data_set); -+ action = create_pseudo_resource_op(rsc, RSC_DEMOTE, !any_demoting, TRUE, data_set); -+ action_complete = create_pseudo_resource_op(rsc, RSC_DEMOTED, !any_demoting, TRUE, data_set); - action_complete->priority = INFINITY; - -- update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__); -- update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); -- update_action_flags(action_complete, pe_action_pseudo, __FUNCTION__, __LINE__); -- update_action_flags(action_complete, pe_action_runnable, __FUNCTION__, __LINE__); -- - child_demoting_constraints(clone_data, pe_order_optional, rsc, NULL, last_demote_rsc, data_set); - - if (clone_data->demote_notify == NULL) { -@@ -908,16 +886,8 @@ master_create_actions(resource_t * rsc, pe_working_set_t * data_set) - } - - void --master_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) -+master_promotion_constraints(resource_t * rsc, pe_working_set_t * data_set) - { -- GListPtr gIter = rsc->children; -- resource_t *last_rsc = NULL; -- clone_variant_data_t *clone_data = NULL; -- -- get_clone_variant_data(clone_data, rsc); -- -- clone_internal_constraints(rsc, data_set); -- - /* global stopped before start */ - new_rsc_order(rsc, RSC_STOPPED, rsc, RSC_START, pe_order_optional, data_set); - -@@ -938,6 +908,20 @@ master_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - - /* global demoted before promote */ - new_rsc_order(rsc, RSC_DEMOTED, rsc, RSC_PROMOTE, pe_order_optional, data_set); -+} -+ -+ -+void -+master_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) -+{ -+ GListPtr gIter = rsc->children; -+ resource_t *last_rsc = NULL; -+ clone_variant_data_t *clone_data = NULL; -+ -+ get_clone_variant_data(clone_data, rsc); -+ -+ clone_internal_constraints(rsc, data_set); -+ master_promotion_constraints(rsc, data_set); - - for (; gIter != NULL; gIter = gIter->next) { - resource_t *child_rsc = (resource_t *) gIter->data; -diff --git a/pengine/utils.c b/pengine/utils.c -index a587e58..0cc6381 100644 ---- a/pengine/utils.c -+++ b/pengine/utils.c -@@ -422,3 +422,15 @@ can_run_any(GHashTable * nodes) - - return FALSE; - } -+ -+pe_action_t * -+create_pseudo_resource_op(resource_t * rsc, const char *task, bool optional, bool runnable, pe_working_set_t *data_set) -+{ -+ pe_action_t *action = custom_action(rsc, generate_op_key(rsc->id, task, 0), task, NULL, optional, TRUE, data_set); -+ update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__); -+ update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); -+ if(runnable) { -+ update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); -+ } -+ return action; -+} -diff --git a/pengine/utils.h b/pengine/utils.h -index 79fd33d..10e7201 100644 ---- a/pengine/utils.h -+++ b/pengine/utils.h -@@ -71,6 +71,7 @@ extern void calculate_utilization(GHashTable * current_utilization, - GHashTable * utilization, gboolean plus); - - extern void process_utilization(resource_t * rsc, node_t ** prefer, pe_working_set_t * data_set); -+pe_action_t *create_pseudo_resource_op(resource_t * rsc, const char *task, bool optional, bool runnable, pe_working_set_t *data_set); - - # define STONITH_UP "stonith_up" - # define STONITH_DONE "stonith_complete" --- -1.8.3.1 - - -From 356261e246b6aa46d6647eb16f09ff2dceeb1313 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 15 Jun 2017 10:47:13 +1000 -Subject: [PATCH 2/8] Test: PE: Implement bundle ordering - ---- - pengine/regression.sh | 6 + - pengine/test10/bundle-order-partial-start-2.dot | 51 ++ - pengine/test10/bundle-order-partial-start-2.exp | 299 ++++++++ - pengine/test10/bundle-order-partial-start-2.scores | 197 +++++ - .../test10/bundle-order-partial-start-2.summary | 75 ++ - pengine/test10/bundle-order-partial-start-2.xml | 387 ++++++++++ - pengine/test10/bundle-order-partial-start.dot | 65 ++ - pengine/test10/bundle-order-partial-start.exp | 375 ++++++++++ - pengine/test10/bundle-order-partial-start.scores | 197 +++++ - pengine/test10/bundle-order-partial-start.summary | 82 ++ - pengine/test10/bundle-order-partial-start.xml | 379 ++++++++++ - pengine/test10/bundle-order-partial-stop.dot | 194 +++++ - pengine/test10/bundle-order-partial-stop.exp | 734 ++++++++++++++++++ - pengine/test10/bundle-order-partial-stop.scores | 199 +++++ - pengine/test10/bundle-order-partial-stop.summary | 114 +++ - pengine/test10/bundle-order-partial-stop.xml | 421 +++++++++++ - pengine/test10/bundle-order-partial.dot | 2 + - pengine/test10/bundle-order-partial.exp | 1 + - pengine/test10/bundle-order-partial.scores | 197 +++++ - pengine/test10/bundle-order-partial.summary | 47 ++ - pengine/test10/bundle-order-partial.xml | 421 +++++++++++ - pengine/test10/bundle-order-startup.dot | 139 ++++ - pengine/test10/bundle-order-startup.exp | 825 +++++++++++++++++++++ - pengine/test10/bundle-order-startup.scores | 197 +++++ - pengine/test10/bundle-order-startup.summary | 126 ++++ - pengine/test10/bundle-order-startup.xml | 315 ++++++++ - pengine/test10/bundle-order-stop.dot | 194 +++++ - pengine/test10/bundle-order-stop.exp | 734 ++++++++++++++++++ - pengine/test10/bundle-order-stop.scores | 199 +++++ - pengine/test10/bundle-order-stop.summary | 114 +++ - pengine/test10/bundle-order-stop.xml | 421 +++++++++++ - 31 files changed, 7707 insertions(+) - create mode 100644 pengine/test10/bundle-order-partial-start-2.dot - create mode 100644 pengine/test10/bundle-order-partial-start-2.exp - create mode 100644 pengine/test10/bundle-order-partial-start-2.scores - create mode 100644 pengine/test10/bundle-order-partial-start-2.summary - create mode 100644 pengine/test10/bundle-order-partial-start-2.xml - create mode 100644 pengine/test10/bundle-order-partial-start.dot - create mode 100644 pengine/test10/bundle-order-partial-start.exp - create mode 100644 pengine/test10/bundle-order-partial-start.scores - create mode 100644 pengine/test10/bundle-order-partial-start.summary - create mode 100644 pengine/test10/bundle-order-partial-start.xml - create mode 100644 pengine/test10/bundle-order-partial-stop.dot - create mode 100644 pengine/test10/bundle-order-partial-stop.exp - create mode 100644 pengine/test10/bundle-order-partial-stop.scores - create mode 100644 pengine/test10/bundle-order-partial-stop.summary - create mode 100644 pengine/test10/bundle-order-partial-stop.xml - create mode 100644 pengine/test10/bundle-order-partial.dot - create mode 100644 pengine/test10/bundle-order-partial.exp - create mode 100644 pengine/test10/bundle-order-partial.scores - create mode 100644 pengine/test10/bundle-order-partial.summary - create mode 100644 pengine/test10/bundle-order-partial.xml - create mode 100644 pengine/test10/bundle-order-startup.dot - create mode 100644 pengine/test10/bundle-order-startup.exp - create mode 100644 pengine/test10/bundle-order-startup.scores - create mode 100644 pengine/test10/bundle-order-startup.summary - create mode 100644 pengine/test10/bundle-order-startup.xml - create mode 100644 pengine/test10/bundle-order-stop.dot - create mode 100644 pengine/test10/bundle-order-stop.exp - create mode 100644 pengine/test10/bundle-order-stop.scores - create mode 100644 pengine/test10/bundle-order-stop.summary - create mode 100644 pengine/test10/bundle-order-stop.xml - -diff --git a/pengine/regression.sh b/pengine/regression.sh -index df449e0..e97b54b 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -802,6 +802,12 @@ do_test container-is-remote-node "Place resource within container when container - do_test bug-rh-1097457 "Kill user defined container/contents ordering" - do_test bug-cl-5247 "Graph loop when recovering m/s resource in a container" - -+do_test bundle-order-startup "Bundle startup ordering" -+do_test bundle-order-partial-start "Bundle startup ordering when some dependancies are already running" -+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" -+ - echo "" - do_test whitebox-fail1 "Fail whitebox container rsc." - do_test whitebox-fail2 "Fail whitebox container rsc lrmd connection." -diff --git a/pengine/test10/bundle-order-partial-start-2.dot b/pengine/test10/bundle-order-partial-start-2.dot -new file mode 100644 -index 0000000..59a8b15 ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-start-2.dot -@@ -0,0 +1,51 @@ -+digraph "g" { -+"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:0_start_0 galera-bundle-0" [ style = bold] -+"galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] -+"galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"galera:0_monitor_20000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"galera:0_monitor_30000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = bold] -+"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] -+"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] -+"galera:0_start_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] -+"haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle_running_0" -> "galera-bundle_start_0" [ style = bold] -+"haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] -+"haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_running_0" -> "galera-bundle_start_0" [ style = bold] -+"rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"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_promoted_0" [ style = bold] -+"redis-bundle-master_promoted_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" -> "galera-bundle_start_0" [ style = bold] -+"redis-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis_monitor_20000 redis-bundle-0" [ 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"] -+} -diff --git a/pengine/test10/bundle-order-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp -new file mode 100644 -index 0000000..621332c ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-start-2.exp -@@ -0,0 +1,299 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-partial-start-2.scores b/pengine/test10/bundle-order-partial-start-2.scores -new file mode 100644 -index 0000000..f5e86de ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-start-2.scores -@@ -0,0 +1,197 @@ -+Allocation scores: -+clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera-bundle-master allocation score on undercloud: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:0 allocation score on undercloud: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 -+clone_color: redis-bundle-master allocation score on undercloud: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-0: INFINITY -+clone_color: redis:0 allocation score on undercloud: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on undercloud: 0 -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on undercloud: INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on undercloud: 0 -+container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera:0 allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on undercloud: 0 -+container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq:0 allocation score on undercloud: 0 -+container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on undercloud: 0 -+container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on undercloud: INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on undercloud: 0 -+container_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on undercloud: 0 -+galera:0 promotion score on galera-bundle-0: -1 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on undercloud: INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:0 allocation score on undercloud: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on undercloud: INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+native_color: rabbitmq:0 allocation score on undercloud: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on undercloud: INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY -+native_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-0: INFINITY -+native_color: redis:0 allocation score on undercloud: -INFINITY -+redis:0 promotion score on redis-bundle-0: 3000 -diff --git a/pengine/test10/bundle-order-partial-start-2.summary b/pengine/test10/bundle-order-partial-start-2.summary -new file mode 100644 -index 0000000..859ca25 ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-start-2.summary -@@ -0,0 +1,75 @@ -+ -+Current cluster status: -+Online: [ undercloud ] -+Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] -+ -+ Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Stopped undercloud -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped undercloud -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Slave undercloud -+ ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud -+ -+Transition Summary: -+ * Start rabbitmq:0 (rabbitmq-bundle-0) -+ * Start galera:0 (galera-bundle-0) -+ * Promote redis:0 (Slave -> Master redis-bundle-0) -+ * Start haproxy-bundle-docker-0 (undercloud) -+ -+Executing cluster transition: -+ * Resource action: haproxy-bundle-docker-0 monitor on undercloud -+ * Pseudo action: haproxy-bundle_start_0 -+ * Pseudo action: redis-bundle_promote_0 -+ * Pseudo action: redis-bundle-master_promote_0 -+ * Pseudo action: rabbitmq-bundle_start_0 -+ * Resource action: redis promote on redis-bundle-0 -+ * Resource action: haproxy-bundle-docker-0 start on undercloud -+ * Pseudo action: haproxy-bundle_running_0 -+ * Pseudo action: redis-bundle-master_promoted_0 -+ * Pseudo action: rabbitmq-bundle-clone_start_0 -+ * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 -+ * Resource action: redis monitor=20000 on redis-bundle-0 -+ * Resource action: haproxy-bundle-docker-0 monitor=60000 on undercloud -+ * Pseudo action: redis-bundle_promoted_0 -+ * Pseudo action: rabbitmq-bundle-clone_running_0 -+ * Pseudo action: rabbitmq-bundle_running_0 -+ * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 -+ * Pseudo action: galera-bundle_start_0 -+ * Pseudo action: galera-bundle-master_start_0 -+ * Resource action: galera:0 start on galera-bundle-0 -+ * Pseudo action: galera-bundle-master_running_0 -+ * Pseudo action: galera-bundle_running_0 -+ * Resource action: galera:0 monitor=30000 on galera-bundle-0 -+ * Resource action: galera:0 monitor=20000 on galera-bundle-0 -+ -+Revised cluster status: -+Online: [ undercloud ] -+Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] -+ -+ Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Slave undercloud -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master undercloud -+ ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud -+ -diff --git a/pengine/test10/bundle-order-partial-start-2.xml b/pengine/test10/bundle-order-partial-start-2.xml -new file mode 100644 -index 0000000..9c4d40c ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-start-2.xml -@@ -0,0 +1,387 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-partial-start.dot b/pengine/test10/bundle-order-partial-start.dot -new file mode 100644 -index 0000000..06c3620 ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-start.dot -@@ -0,0 +1,65 @@ -+digraph "g" { -+"galera-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_start_0 undercloud" -> "galera-bundle-0_monitor_60000 undercloud" [ style = bold] -+"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] -+"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] -+"galera-bundle-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] -+"galera-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] -+"galera-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] -+"galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"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:0_start_0 galera-bundle-0" [ style = bold] -+"galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] -+"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] -+"galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"galera:0_monitor_20000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"galera:0_monitor_30000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = bold] -+"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] -+"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] -+"galera:0_start_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] -+"haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle_running_0" -> "galera-bundle_start_0" [ style = bold] -+"haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] -+"haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_running_0" -> "galera-bundle_start_0" [ style = bold] -+"rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"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_promoted_0" [ style = bold] -+"redis-bundle-master_promoted_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" -> "galera-bundle_start_0" [ style = bold] -+"redis-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis_monitor_20000 redis-bundle-0" [ 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"] -+} -diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp -new file mode 100644 -index 0000000..b48bb03 ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-start.exp -@@ -0,0 +1,375 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-partial-start.scores b/pengine/test10/bundle-order-partial-start.scores -new file mode 100644 -index 0000000..ea702d0 ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-start.scores -@@ -0,0 +1,197 @@ -+Allocation scores: -+clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera-bundle-master allocation score on undercloud: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:0 allocation score on undercloud: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 -+clone_color: redis-bundle-master allocation score on undercloud: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-0: INFINITY -+clone_color: redis:0 allocation score on undercloud: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on undercloud: 0 -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on undercloud: 0 -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on undercloud: 0 -+container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on undercloud: 0 -+container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera:0 allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on undercloud: 0 -+container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq:0 allocation score on undercloud: 0 -+container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on undercloud: 0 -+container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on undercloud: INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on undercloud: 0 -+container_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on undercloud: 0 -+galera:0 promotion score on galera-bundle-0: -1 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on undercloud: 10000 -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on undercloud: 0 -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:0 allocation score on undercloud: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on undercloud: INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+native_color: rabbitmq:0 allocation score on undercloud: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on undercloud: INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY -+native_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-0: INFINITY -+native_color: redis:0 allocation score on undercloud: -INFINITY -+redis:0 promotion score on redis-bundle-0: 3000 -diff --git a/pengine/test10/bundle-order-partial-start.summary b/pengine/test10/bundle-order-partial-start.summary -new file mode 100644 -index 0000000..e56e55f ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-start.summary -@@ -0,0 +1,82 @@ -+ -+Current cluster status: -+Online: [ undercloud ] -+Containers: [ rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] -+ -+ Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Stopped undercloud -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Slave undercloud -+ ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud -+ -+Transition Summary: -+ * Start rabbitmq:0 (rabbitmq-bundle-0) -+ * Start galera-bundle-docker-0 (undercloud) -+ * Start galera-bundle-0 (undercloud) -+ * Start galera:0 (galera-bundle-0) -+ * Promote redis:0 (Slave -> Master redis-bundle-0) -+ * Start haproxy-bundle-docker-0 (undercloud) -+ -+Executing cluster transition: -+ * Resource action: galera-bundle-docker-0 monitor on undercloud -+ * Resource action: haproxy-bundle-docker-0 monitor on undercloud -+ * Pseudo action: haproxy-bundle_start_0 -+ * Pseudo action: redis-bundle_promote_0 -+ * Pseudo action: redis-bundle-master_promote_0 -+ * Pseudo action: rabbitmq-bundle_start_0 -+ * Resource action: redis promote on redis-bundle-0 -+ * Resource action: haproxy-bundle-docker-0 start on undercloud -+ * Pseudo action: haproxy-bundle_running_0 -+ * Pseudo action: redis-bundle-master_promoted_0 -+ * Pseudo action: rabbitmq-bundle-clone_start_0 -+ * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 -+ * Resource action: redis monitor=20000 on redis-bundle-0 -+ * Resource action: haproxy-bundle-docker-0 monitor=60000 on undercloud -+ * Pseudo action: redis-bundle_promoted_0 -+ * Pseudo action: rabbitmq-bundle-clone_running_0 -+ * Pseudo action: rabbitmq-bundle_running_0 -+ * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 -+ * Pseudo action: galera-bundle_start_0 -+ * Resource action: galera-bundle-docker-0 start on undercloud -+ * Resource action: galera-bundle-0 start on undercloud -+ * Pseudo action: galera-bundle-master_start_0 -+ * Resource action: galera:0 start on galera-bundle-0 -+ * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud -+ * Resource action: galera-bundle-0 monitor=60000 on undercloud -+ * Pseudo action: galera-bundle-master_running_0 -+ * Pseudo action: galera-bundle_running_0 -+ * Resource action: galera:0 monitor=30000 on galera-bundle-0 -+ * Resource action: galera:0 monitor=20000 on galera-bundle-0 -+ -+Revised cluster status: -+Online: [ undercloud ] -+Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] -+ -+ Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Slave undercloud -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master undercloud -+ ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud -+ -diff --git a/pengine/test10/bundle-order-partial-start.xml b/pengine/test10/bundle-order-partial-start.xml -new file mode 100644 -index 0000000..907dbfb ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-start.xml -@@ -0,0 +1,379 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-partial-stop.dot b/pengine/test10/bundle-order-partial-stop.dot -new file mode 100644 -index 0000000..235b634 ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-stop.dot -@@ -0,0 +1,194 @@ -+digraph "g" { -+"Cancel galera_monitor_10000 galera-bundle-0" -> "galera_demote_0 galera-bundle-0" [ style = bold] -+"Cancel galera_monitor_10000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"Cancel redis_monitor_20000 redis-bundle-0" -> "redis_demote_0 redis-bundle-0" [ style = bold] -+"Cancel redis_monitor_20000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"do_shutdown undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"galera-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"galera-bundle-0_stop_0 undercloud" -> "galera-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"galera-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"galera-bundle-docker-0_stop_0 undercloud" [ 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" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle-master_demoted_0" -> "galera-bundle-master_start_0" [ style = dashed] -+"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_running_0" [ style=dashed color="red" fontcolor="orange"] -+"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = dashed] -+"galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-0" [ style = dashed] -+"galera-bundle-master_start_0" [ style=dashed color="red" 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" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle-master_stopped_0" -> "galera-bundle-master_start_0" [ style = dashed] -+"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_stop_0" [ style = bold] -+"galera-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"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" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_stopped_0" -> "redis-bundle_stop_0" [ style = bold] -+"galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"galera_demote_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ style = bold] -+"galera_demote_0 galera-bundle-0" -> "galera-bundle-master_demoted_0" [ style = bold] -+"galera_demote_0 galera-bundle-0" -> "galera_monitor_20000 galera-bundle-0" [ style = dashed] -+"galera_demote_0 galera-bundle-0" -> "galera_monitor_30000 galera-bundle-0" [ style = dashed] -+"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="black"] -+"galera_monitor_20000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera_monitor_30000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = dashed] -+"galera_start_0 galera-bundle-0" -> "galera_monitor_20000 galera-bundle-0" [ style = dashed] -+"galera_start_0 galera-bundle-0" -> "galera_monitor_30000 galera-bundle-0" [ style = dashed] -+"galera_start_0 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera_stop_0 galera-bundle-0" -> "all_stopped" [ style = bold] -+"galera_stop_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ 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 = dashed] -+"galera_stop_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"haproxy-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"haproxy-bundle-docker-0_stop_0 undercloud" -> "haproxy-bundle_stopped_0" [ style = bold] -+"haproxy-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle_stop_0" -> "haproxy-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-bundle_stopped_0" -> "ip-192.168.122.247_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stopped_0" -> "ip-192.168.122.248_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stopped_0" -> "ip-192.168.122.249_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stopped_0" -> "ip-192.168.122.250_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stopped_0" -> "ip-192.168.122.253_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stopped_0" -> "ip-192.168.122.254_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"ip-192.168.122.247_start_0 " [ style=dashed color="red" fontcolor="black"] -+"ip-192.168.122.247_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"ip-192.168.122.247_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"ip-192.168.122.247_stop_0 undercloud" -> "ip-192.168.122.247_start_0 " [ style = dashed] -+"ip-192.168.122.247_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.248_start_0 " [ style=dashed color="red" fontcolor="black"] -+"ip-192.168.122.248_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"ip-192.168.122.248_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"ip-192.168.122.248_stop_0 undercloud" -> "ip-192.168.122.248_start_0 " [ style = dashed] -+"ip-192.168.122.248_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.249_start_0 " [ style=dashed color="red" fontcolor="black"] -+"ip-192.168.122.249_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"ip-192.168.122.249_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"ip-192.168.122.249_stop_0 undercloud" -> "ip-192.168.122.249_start_0 " [ style = dashed] -+"ip-192.168.122.249_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.250_start_0 " [ style=dashed color="red" fontcolor="black"] -+"ip-192.168.122.250_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"ip-192.168.122.250_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"ip-192.168.122.250_stop_0 undercloud" -> "ip-192.168.122.250_start_0 " [ style = dashed] -+"ip-192.168.122.250_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.253_start_0 " [ style=dashed color="red" fontcolor="black"] -+"ip-192.168.122.253_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"ip-192.168.122.253_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"ip-192.168.122.253_stop_0 undercloud" -> "ip-192.168.122.253_start_0 " [ style = dashed] -+"ip-192.168.122.253_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.254_start_0 " [ style=dashed color="red" fontcolor="black"] -+"ip-192.168.122.254_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"ip-192.168.122.254_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"ip-192.168.122.254_stop_0 undercloud" -> "ip-192.168.122.254_start_0 " [ style = dashed] -+"ip-192.168.122.254_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"openstack-cinder-volume-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"openstack-cinder-volume-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"openstack-cinder-volume-docker-0_stop_0 undercloud" -> "openstack-cinder-volume_stopped_0" [ style = bold] -+"openstack-cinder-volume-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"openstack-cinder-volume_stop_0" -> "openstack-cinder-volume-docker-0_stop_0 undercloud" [ style = bold] -+"openstack-cinder-volume_stop_0" [ style=bold color="green" fontcolor="orange"] -+"openstack-cinder-volume_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"rabbitmq-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"rabbitmq-bundle-0_stop_0 undercloud" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"rabbitmq-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-clone_running_0" [ style=dashed color="red" fontcolor="orange"] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] -+"rabbitmq-bundle-clone_start_0" [ style=dashed color="red" fontcolor="orange"] -+"rabbitmq-bundle-clone_stop_0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle-clone_start_0" [ style = dashed] -+"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] -+"rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] -+"rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] -+"rabbitmq_start_0 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"rabbitmq_stop_0 rabbitmq-bundle-0" -> "all_stopped" [ style = bold] -+"rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-0_stop_0 undercloud" [ style = bold] -+"rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] -+"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="black"] -+"redis-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"redis-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"redis-bundle-0_stop_0 undercloud" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"redis-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] -+"redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_demoted_0" -> "redis-bundle-master_start_0" [ style = dashed] -+"redis-bundle-master_demoted_0" -> "redis-bundle-master_stop_0" [ style = bold] -+"redis-bundle-master_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] -+"redis-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = dashed] -+"redis-bundle-master_start_0" -> "redis_start_0 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_start_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle-master_stop_0" -> "redis-bundle-master_stopped_0" [ style = bold] -+"redis-bundle-master_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_stopped_0" -> "redis-bundle-master_start_0" [ style = dashed] -+"redis-bundle-master_stopped_0" -> "redis-bundle_stopped_0" [ style = bold] -+"redis-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] -+"redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] -+"redis-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = bold] -+"redis-bundle_demoted_0" -> "redis-bundle_stop_0" [ style = bold] -+"redis-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] -+"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] -+"redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] -+"redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_stopped_0" -> "haproxy-bundle_stop_0" [ style = bold] -+"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = bold] -+"redis-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis_demote_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] -+"redis_demote_0 redis-bundle-0" -> "redis-bundle-master_demoted_0" [ style = bold] -+"redis_demote_0 redis-bundle-0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis_demote_0 redis-bundle-0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"redis_demote_0 redis-bundle-0" -> "redis_stop_0 redis-bundle-0" [ style = bold] -+"redis_demote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis_monitor_45000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"redis_monitor_60000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"redis_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = dashed] -+"redis_start_0 redis-bundle-0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis_start_0 redis-bundle-0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"redis_start_0 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"redis_stop_0 redis-bundle-0" -> "all_stopped" [ style = bold] -+"redis_stop_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] -+"redis_stop_0 redis-bundle-0" -> "redis-bundle-master_stopped_0" [ style = bold] -+"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="black"] -+} -diff --git a/pengine/test10/bundle-order-partial-stop.exp b/pengine/test10/bundle-order-partial-stop.exp -new file mode 100644 -index 0000000..d085433 ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-stop.exp -@@ -0,0 +1,734 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-partial-stop.scores b/pengine/test10/bundle-order-partial-stop.scores -new file mode 100644 -index 0000000..a662f42 ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-stop.scores -@@ -0,0 +1,199 @@ -+Allocation scores: -+clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera-bundle-master allocation score on undercloud: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:0 allocation score on undercloud: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 -+clone_color: redis-bundle-master allocation score on undercloud: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-0: INFINITY -+clone_color: redis:0 allocation score on undercloud: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on undercloud: 0 -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on undercloud: INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on undercloud: 0 -+container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera:0 allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on undercloud: 0 -+container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+container_color: rabbitmq:0 allocation score on undercloud: 0 -+container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on undercloud: 0 -+container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on undercloud: INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on undercloud: 0 -+container_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on undercloud: 0 -+galera:0 promotion score on galera-bundle-0: 100 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on undercloud: INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on undercloud: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:0 allocation score on undercloud: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on undercloud: -INFINITY -+native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on undercloud: -INFINITY -+native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on undercloud: -INFINITY -+native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on undercloud: -INFINITY -+native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on undercloud: -INFINITY -+native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on undercloud: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: -INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+native_color: rabbitmq:0 allocation score on undercloud: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on undercloud: INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on undercloud: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-0: INFINITY -+native_color: redis:0 allocation score on undercloud: -INFINITY -+redis:0 promotion score on redis-bundle-0: 1 -diff --git a/pengine/test10/bundle-order-partial-stop.summary b/pengine/test10/bundle-order-partial-stop.summary -new file mode 100644 -index 0000000..bd6f937 ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-stop.summary -@@ -0,0 +1,114 @@ -+ -+Current cluster status: -+Online: [ undercloud ] -+Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] -+ -+ Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Master undercloud -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master undercloud -+ ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud -+ -+Transition Summary: -+ * Shutdown undercloud -+ * Stop rabbitmq-bundle-docker-0 (undercloud) -+ * Stop rabbitmq-bundle-0 (undercloud) -+ * Stop rabbitmq:0 (Started rabbitmq-bundle-0) -+ * Stop galera-bundle-docker-0 (undercloud) -+ * Stop galera-bundle-0 (undercloud) -+ * Demote galera:0 (Master -> Slave galera-bundle-0) -+ * Restart galera:0 (Slave galera-bundle-0) -+ * Stop redis-bundle-docker-0 (undercloud) -+ * Stop redis-bundle-0 (undercloud) -+ * Demote redis:0 (Master -> Slave redis-bundle-0) -+ * Restart redis:0 (Slave redis-bundle-0) -+ * Stop ip-192.168.122.254 (undercloud) -+ * Stop ip-192.168.122.250 (undercloud) -+ * Stop ip-192.168.122.249 (undercloud) -+ * Stop ip-192.168.122.253 (undercloud) -+ * Stop ip-192.168.122.247 (undercloud) -+ * Stop ip-192.168.122.248 (undercloud) -+ * Stop haproxy-bundle-docker-0 (undercloud) -+ * Stop openstack-cinder-volume-docker-0 (undercloud) -+ -+Executing cluster transition: -+ * Resource action: galera cancel=10000 on galera-bundle-0 -+ * Resource action: redis cancel=20000 on redis-bundle-0 -+ * Pseudo action: openstack-cinder-volume_stop_0 -+ * Pseudo action: redis-bundle_demote_0 -+ * Pseudo action: redis-bundle-master_demote_0 -+ * Pseudo action: galera-bundle_demote_0 -+ * Pseudo action: galera-bundle-master_demote_0 -+ * Pseudo action: rabbitmq-bundle_stop_0 -+ * Resource action: galera demote on galera-bundle-0 -+ * Resource action: redis demote on redis-bundle-0 -+ * Resource action: openstack-cinder-volume-docker-0 stop on undercloud -+ * Pseudo action: openstack-cinder-volume_stopped_0 -+ * Pseudo action: redis-bundle-master_demoted_0 -+ * Pseudo action: galera-bundle-master_demoted_0 -+ * Pseudo action: rabbitmq-bundle-clone_stop_0 -+ * Resource action: rabbitmq stop on rabbitmq-bundle-0 -+ * Resource action: rabbitmq-bundle-0 stop on undercloud -+ * Pseudo action: redis-bundle_demoted_0 -+ * Pseudo action: galera-bundle_demoted_0 -+ * Pseudo action: galera-bundle_stop_0 -+ * Pseudo action: rabbitmq-bundle-clone_stopped_0 -+ * Pseudo action: rabbitmq-bundle_stopped_0 -+ * Resource action: rabbitmq-bundle-docker-0 stop on undercloud -+ * Pseudo action: galera-bundle-master_stop_0 -+ * Resource action: galera stop on galera-bundle-0 -+ * Resource action: galera-bundle-0 stop on undercloud -+ * Pseudo action: galera-bundle-master_stopped_0 -+ * Pseudo action: galera-bundle_stopped_0 -+ * Resource action: galera-bundle-docker-0 stop on undercloud -+ * Pseudo action: redis-bundle_stop_0 -+ * Pseudo action: redis-bundle-master_stop_0 -+ * Resource action: redis stop on redis-bundle-0 -+ * Resource action: redis-bundle-0 stop on undercloud -+ * Pseudo action: redis-bundle-master_stopped_0 -+ * Pseudo action: redis-bundle_stopped_0 -+ * Pseudo action: redis-bundle_start_0 -+ * Resource action: redis-bundle-docker-0 stop on undercloud -+ * Pseudo action: haproxy-bundle_stop_0 -+ * Resource action: haproxy-bundle-docker-0 stop on undercloud -+ * Pseudo action: haproxy-bundle_stopped_0 -+ * Resource action: ip-192.168.122.254 stop on undercloud -+ * Resource action: ip-192.168.122.250 stop on undercloud -+ * Resource action: ip-192.168.122.249 stop on undercloud -+ * Resource action: ip-192.168.122.253 stop on undercloud -+ * Resource action: ip-192.168.122.247 stop on undercloud -+ * Resource action: ip-192.168.122.248 stop on undercloud -+ * Cluster action: do_shutdown on undercloud -+ * Pseudo action: all_stopped -+ -+Revised cluster status: -+Online: [ undercloud ] -+ -+ Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Stopped -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Stopped -+ ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Stopped -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Stopped -+ -diff --git a/pengine/test10/bundle-order-partial-stop.xml b/pengine/test10/bundle-order-partial-stop.xml -new file mode 100644 -index 0000000..467082a ---- /dev/null -+++ b/pengine/test10/bundle-order-partial-stop.xml -@@ -0,0 +1,421 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-partial.dot b/pengine/test10/bundle-order-partial.dot -new file mode 100644 -index 0000000..4b30191 ---- /dev/null -+++ b/pengine/test10/bundle-order-partial.dot -@@ -0,0 +1,2 @@ -+digraph "g" { -+} -diff --git a/pengine/test10/bundle-order-partial.exp b/pengine/test10/bundle-order-partial.exp -new file mode 100644 -index 0000000..56e315f ---- /dev/null -+++ b/pengine/test10/bundle-order-partial.exp -@@ -0,0 +1 @@ -+ -diff --git a/pengine/test10/bundle-order-partial.scores b/pengine/test10/bundle-order-partial.scores -new file mode 100644 -index 0000000..be91c96 ---- /dev/null -+++ b/pengine/test10/bundle-order-partial.scores -@@ -0,0 +1,197 @@ -+Allocation scores: -+clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera-bundle-master allocation score on undercloud: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:0 allocation score on undercloud: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 -+clone_color: redis-bundle-master allocation score on undercloud: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-0: INFINITY -+clone_color: redis:0 allocation score on undercloud: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on undercloud: 0 -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on undercloud: INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on undercloud: 0 -+container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera:0 allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on undercloud: 0 -+container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+container_color: rabbitmq:0 allocation score on undercloud: 0 -+container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on undercloud: 0 -+container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on undercloud: INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on undercloud: 0 -+container_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on undercloud: 0 -+galera:0 promotion score on galera-bundle-0: 100 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on undercloud: INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:0 allocation score on undercloud: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on undercloud: INFINITY -+native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on undercloud: INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+native_color: rabbitmq:0 allocation score on undercloud: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on undercloud: INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY -+native_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-0: INFINITY -+native_color: redis:0 allocation score on undercloud: -INFINITY -+redis:0 promotion score on redis-bundle-0: 1 -diff --git a/pengine/test10/bundle-order-partial.summary b/pengine/test10/bundle-order-partial.summary -new file mode 100644 -index 0000000..6155230 ---- /dev/null -+++ b/pengine/test10/bundle-order-partial.summary -@@ -0,0 +1,47 @@ -+ -+Current cluster status: -+Online: [ undercloud ] -+Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] -+ -+ Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Master undercloud -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master undercloud -+ ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud -+ -+Transition Summary: -+ -+Executing cluster transition: -+ -+Revised cluster status: -+Online: [ undercloud ] -+Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] -+ -+ Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Master undercloud -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master undercloud -+ ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud -+ -diff --git a/pengine/test10/bundle-order-partial.xml b/pengine/test10/bundle-order-partial.xml -new file mode 100644 -index 0000000..eda20bb ---- /dev/null -+++ b/pengine/test10/bundle-order-partial.xml -@@ -0,0 +1,421 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-startup.dot b/pengine/test10/bundle-order-startup.dot -new file mode 100644 -index 0000000..73947a5 ---- /dev/null -+++ b/pengine/test10/bundle-order-startup.dot -@@ -0,0 +1,139 @@ -+digraph "g" { -+"galera-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_start_0 undercloud" -> "galera-bundle-0_monitor_60000 undercloud" [ style = bold] -+"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] -+"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] -+"galera-bundle-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] -+"galera-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] -+"galera-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] -+"galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"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:0_start_0 galera-bundle-0" [ style = bold] -+"galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] -+"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] -+"galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"galera:0_monitor_20000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"galera:0_monitor_30000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = bold] -+"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] -+"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] -+"galera:0_start_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] -+"haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle_running_0" -> "redis-bundle_start_0" [ style = bold] -+"haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] -+"haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"ip-192.168.122.247_monitor_0 undercloud" -> "ip-192.168.122.247_start_0 undercloud" [ style = bold] -+"ip-192.168.122.247_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.247_monitor_10000 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.247_start_0 undercloud" -> "haproxy-bundle_start_0" [ style = bold] -+"ip-192.168.122.247_start_0 undercloud" -> "ip-192.168.122.247_monitor_10000 undercloud" [ style = bold] -+"ip-192.168.122.247_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.248_monitor_0 undercloud" -> "ip-192.168.122.248_start_0 undercloud" [ style = bold] -+"ip-192.168.122.248_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.248_monitor_10000 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.248_start_0 undercloud" -> "haproxy-bundle_start_0" [ style = bold] -+"ip-192.168.122.248_start_0 undercloud" -> "ip-192.168.122.248_monitor_10000 undercloud" [ style = bold] -+"ip-192.168.122.248_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.249_monitor_0 undercloud" -> "ip-192.168.122.249_start_0 undercloud" [ style = bold] -+"ip-192.168.122.249_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.249_monitor_10000 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.249_start_0 undercloud" -> "haproxy-bundle_start_0" [ style = bold] -+"ip-192.168.122.249_start_0 undercloud" -> "ip-192.168.122.249_monitor_10000 undercloud" [ style = bold] -+"ip-192.168.122.249_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.250_monitor_0 undercloud" -> "ip-192.168.122.250_start_0 undercloud" [ style = bold] -+"ip-192.168.122.250_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.250_monitor_10000 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.250_start_0 undercloud" -> "haproxy-bundle_start_0" [ style = bold] -+"ip-192.168.122.250_start_0 undercloud" -> "ip-192.168.122.250_monitor_10000 undercloud" [ style = bold] -+"ip-192.168.122.250_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.253_monitor_0 undercloud" -> "ip-192.168.122.253_start_0 undercloud" [ style = bold] -+"ip-192.168.122.253_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.253_monitor_10000 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.253_start_0 undercloud" -> "haproxy-bundle_start_0" [ style = bold] -+"ip-192.168.122.253_start_0 undercloud" -> "ip-192.168.122.253_monitor_10000 undercloud" [ style = bold] -+"ip-192.168.122.253_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.254_monitor_0 undercloud" -> "ip-192.168.122.254_start_0 undercloud" [ style = bold] -+"ip-192.168.122.254_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.254_monitor_10000 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.254_start_0 undercloud" -> "haproxy-bundle_start_0" [ style = bold] -+"ip-192.168.122.254_start_0 undercloud" -> "ip-192.168.122.254_monitor_10000 undercloud" [ style = bold] -+"ip-192.168.122.254_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"openstack-cinder-volume-docker-0_monitor_0 undercloud" -> "openstack-cinder-volume-docker-0_start_0 undercloud" [ style = bold] -+"openstack-cinder-volume-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"openstack-cinder-volume-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"openstack-cinder-volume-docker-0_start_0 undercloud" -> "openstack-cinder-volume-docker-0_monitor_60000 undercloud" [ style = bold] -+"openstack-cinder-volume-docker-0_start_0 undercloud" -> "openstack-cinder-volume_running_0" [ style = bold] -+"openstack-cinder-volume-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"openstack-cinder-volume_running_0" [ style=bold color="green" fontcolor="orange"] -+"openstack-cinder-volume_start_0" -> "openstack-cinder-volume-docker-0_start_0 undercloud" [ style = bold] -+"openstack-cinder-volume_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-0_start_0 undercloud" -> "rabbitmq-bundle-0_monitor_60000 undercloud" [ style = bold] -+"rabbitmq-bundle-0_start_0 undercloud" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-0_start_0 undercloud" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-docker-0_monitor_0 undercloud" -> "rabbitmq-bundle-docker-0_start_0 undercloud" [ style = bold] -+"rabbitmq-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle-0_start_0 undercloud" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-docker-0_start_0 undercloud" [ style = bold] -+"rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_start_0 undercloud" -> "redis-bundle-0_monitor_60000 undercloud" [ style = bold] -+"redis-bundle-0_start_0 undercloud" -> "redis:0_monitor_45000 redis-bundle-0" [ style = bold] -+"redis-bundle-0_start_0 undercloud" -> "redis:0_monitor_60000 redis-bundle-0" [ style = bold] -+"redis-bundle-0_start_0 undercloud" -> "redis:0_start_0 redis-bundle-0" [ style = bold] -+"redis-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_monitor_0 undercloud" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] -+"redis-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-0_start_0 undercloud" [ style = bold] -+"redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"redis-bundle-docker-0_start_0 undercloud" -> "redis:0_start_0 redis-bundle-0" [ style = bold] -+"redis-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-master_running_0" -> "redis-bundle_running_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:0_start_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_running_0" -> "galera-bundle_start_0" [ style = bold] -+"redis-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_start_0" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] -+"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = bold] -+"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis:0_monitor_45000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis:0_monitor_60000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis:0_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = bold] -+"redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_45000 redis-bundle-0" [ style = bold] -+"redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_60000 redis-bundle-0" [ style = bold] -+"redis:0_start_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+} -diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp -new file mode 100644 -index 0000000..51d108d ---- /dev/null -+++ b/pengine/test10/bundle-order-startup.exp -@@ -0,0 +1,825 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-startup.scores b/pengine/test10/bundle-order-startup.scores -new file mode 100644 -index 0000000..565b47e ---- /dev/null -+++ b/pengine/test10/bundle-order-startup.scores -@@ -0,0 +1,197 @@ -+Allocation scores: -+clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera-bundle-master allocation score on undercloud: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:0 allocation score on undercloud: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 -+clone_color: redis-bundle-master allocation score on undercloud: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-0: INFINITY -+clone_color: redis:0 allocation score on undercloud: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on undercloud: 0 -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on undercloud: 0 -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on undercloud: 0 -+container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on undercloud: 0 -+container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera:0 allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on undercloud: 0 -+container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: 0 -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: 0 -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq:0 allocation score on undercloud: 0 -+container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on undercloud: 0 -+container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on undercloud: 0 -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on undercloud: 0 -+container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on undercloud: 0 -+container_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on undercloud: 0 -+galera:0 promotion score on galera-bundle-0: -1 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on undercloud: 10000 -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on undercloud: 0 -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:0 allocation score on undercloud: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on undercloud: 0 -+native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on undercloud: 0 -+native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on undercloud: 0 -+native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on undercloud: 0 -+native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on undercloud: 0 -+native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on undercloud: 0 -+native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: 0 -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on undercloud: 10000 -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: 0 -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+native_color: rabbitmq:0 allocation score on undercloud: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on undercloud: 10000 -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on undercloud: 0 -+native_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-0: INFINITY -+native_color: redis:0 allocation score on undercloud: -INFINITY -+redis:0 promotion score on redis-bundle-0: -1 -diff --git a/pengine/test10/bundle-order-startup.summary b/pengine/test10/bundle-order-startup.summary -new file mode 100644 -index 0000000..b5c2091 ---- /dev/null -+++ b/pengine/test10/bundle-order-startup.summary -@@ -0,0 +1,126 @@ -+ -+Current cluster status: -+Online: [ undercloud ] -+ -+ Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Stopped -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Stopped -+ ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Stopped -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Stopped -+ -+Transition Summary: -+ * Start rabbitmq-bundle-docker-0 (undercloud) -+ * Start rabbitmq-bundle-0 (undercloud) -+ * Start rabbitmq:0 (rabbitmq-bundle-0) -+ * Start galera-bundle-docker-0 (undercloud) -+ * Start galera-bundle-0 (undercloud) -+ * Start galera:0 (galera-bundle-0) -+ * Start redis-bundle-docker-0 (undercloud) -+ * Start redis-bundle-0 (undercloud) -+ * Start redis:0 (redis-bundle-0) -+ * Start ip-192.168.122.254 (undercloud) -+ * Start ip-192.168.122.250 (undercloud) -+ * Start ip-192.168.122.249 (undercloud) -+ * Start ip-192.168.122.253 (undercloud) -+ * Start ip-192.168.122.247 (undercloud) -+ * Start ip-192.168.122.248 (undercloud) -+ * Start haproxy-bundle-docker-0 (undercloud) -+ * Start openstack-cinder-volume-docker-0 (undercloud) -+ -+Executing cluster transition: -+ * Resource action: rabbitmq-bundle-docker-0 monitor on undercloud -+ * Resource action: galera-bundle-docker-0 monitor on undercloud -+ * Resource action: redis-bundle-docker-0 monitor on undercloud -+ * Resource action: ip-192.168.122.254 monitor on undercloud -+ * Resource action: ip-192.168.122.250 monitor on undercloud -+ * Resource action: ip-192.168.122.249 monitor on undercloud -+ * Resource action: ip-192.168.122.253 monitor on undercloud -+ * Resource action: ip-192.168.122.247 monitor on undercloud -+ * Resource action: ip-192.168.122.248 monitor on undercloud -+ * Resource action: haproxy-bundle-docker-0 monitor on undercloud -+ * Resource action: openstack-cinder-volume-docker-0 monitor on undercloud -+ * Pseudo action: openstack-cinder-volume_start_0 -+ * Pseudo action: rabbitmq-bundle_start_0 -+ * Resource action: rabbitmq-bundle-docker-0 start on undercloud -+ * Resource action: rabbitmq-bundle-0 start on undercloud -+ * Resource action: ip-192.168.122.254 start on undercloud -+ * Resource action: ip-192.168.122.250 start on undercloud -+ * Resource action: ip-192.168.122.249 start on undercloud -+ * Resource action: ip-192.168.122.253 start on undercloud -+ * Resource action: ip-192.168.122.247 start on undercloud -+ * Resource action: ip-192.168.122.248 start on undercloud -+ * Resource action: openstack-cinder-volume-docker-0 start on undercloud -+ * Pseudo action: openstack-cinder-volume_running_0 -+ * Pseudo action: haproxy-bundle_start_0 -+ * Pseudo action: rabbitmq-bundle-clone_start_0 -+ * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 -+ * Resource action: rabbitmq-bundle-docker-0 monitor=60000 on undercloud -+ * Resource action: rabbitmq-bundle-0 monitor=60000 on undercloud -+ * Resource action: ip-192.168.122.254 monitor=10000 on undercloud -+ * Resource action: ip-192.168.122.250 monitor=10000 on undercloud -+ * Resource action: ip-192.168.122.249 monitor=10000 on undercloud -+ * Resource action: ip-192.168.122.253 monitor=10000 on undercloud -+ * Resource action: ip-192.168.122.247 monitor=10000 on undercloud -+ * Resource action: ip-192.168.122.248 monitor=10000 on undercloud -+ * Resource action: haproxy-bundle-docker-0 start on undercloud -+ * Resource action: openstack-cinder-volume-docker-0 monitor=60000 on undercloud -+ * Pseudo action: haproxy-bundle_running_0 -+ * Pseudo action: redis-bundle_start_0 -+ * Pseudo action: rabbitmq-bundle-clone_running_0 -+ * Pseudo action: rabbitmq-bundle_running_0 -+ * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 -+ * Resource action: redis-bundle-docker-0 start on undercloud -+ * Resource action: redis-bundle-0 start on undercloud -+ * Resource action: haproxy-bundle-docker-0 monitor=60000 on undercloud -+ * Pseudo action: redis-bundle-master_start_0 -+ * Resource action: redis:0 start on redis-bundle-0 -+ * Resource action: redis-bundle-docker-0 monitor=60000 on undercloud -+ * Resource action: redis-bundle-0 monitor=60000 on undercloud -+ * Pseudo action: redis-bundle-master_running_0 -+ * Pseudo action: redis-bundle_running_0 -+ * Pseudo action: galera-bundle_start_0 -+ * Resource action: galera-bundle-docker-0 start on undercloud -+ * Resource action: galera-bundle-0 start on undercloud -+ * Resource action: redis:0 monitor=60000 on redis-bundle-0 -+ * Resource action: redis:0 monitor=45000 on redis-bundle-0 -+ * Pseudo action: galera-bundle-master_start_0 -+ * Resource action: galera:0 start on galera-bundle-0 -+ * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud -+ * Resource action: galera-bundle-0 monitor=60000 on undercloud -+ * Pseudo action: galera-bundle-master_running_0 -+ * Pseudo action: galera-bundle_running_0 -+ * Resource action: galera:0 monitor=30000 on galera-bundle-0 -+ * Resource action: galera:0 monitor=20000 on galera-bundle-0 -+ -+Revised cluster status: -+Online: [ undercloud ] -+Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] -+ -+ Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Slave undercloud -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Slave undercloud -+ ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud -+ -diff --git a/pengine/test10/bundle-order-startup.xml b/pengine/test10/bundle-order-startup.xml -new file mode 100644 -index 0000000..3e2e8f6 ---- /dev/null -+++ b/pengine/test10/bundle-order-startup.xml -@@ -0,0 +1,315 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-stop.dot b/pengine/test10/bundle-order-stop.dot -new file mode 100644 -index 0000000..235b634 ---- /dev/null -+++ b/pengine/test10/bundle-order-stop.dot -@@ -0,0 +1,194 @@ -+digraph "g" { -+"Cancel galera_monitor_10000 galera-bundle-0" -> "galera_demote_0 galera-bundle-0" [ style = bold] -+"Cancel galera_monitor_10000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"Cancel redis_monitor_20000 redis-bundle-0" -> "redis_demote_0 redis-bundle-0" [ style = bold] -+"Cancel redis_monitor_20000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"do_shutdown undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"galera-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"galera-bundle-0_stop_0 undercloud" -> "galera-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"galera-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"galera-bundle-docker-0_stop_0 undercloud" [ 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" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle-master_demoted_0" -> "galera-bundle-master_start_0" [ style = dashed] -+"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_running_0" [ style=dashed color="red" fontcolor="orange"] -+"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = dashed] -+"galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-0" [ style = dashed] -+"galera-bundle-master_start_0" [ style=dashed color="red" 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" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle-master_stopped_0" -> "galera-bundle-master_start_0" [ style = dashed] -+"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_stop_0" [ style = bold] -+"galera-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"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" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_stopped_0" -> "redis-bundle_stop_0" [ style = bold] -+"galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"galera_demote_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ style = bold] -+"galera_demote_0 galera-bundle-0" -> "galera-bundle-master_demoted_0" [ style = bold] -+"galera_demote_0 galera-bundle-0" -> "galera_monitor_20000 galera-bundle-0" [ style = dashed] -+"galera_demote_0 galera-bundle-0" -> "galera_monitor_30000 galera-bundle-0" [ style = dashed] -+"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="black"] -+"galera_monitor_20000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera_monitor_30000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = dashed] -+"galera_start_0 galera-bundle-0" -> "galera_monitor_20000 galera-bundle-0" [ style = dashed] -+"galera_start_0 galera-bundle-0" -> "galera_monitor_30000 galera-bundle-0" [ style = dashed] -+"galera_start_0 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera_stop_0 galera-bundle-0" -> "all_stopped" [ style = bold] -+"galera_stop_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ 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 = dashed] -+"galera_stop_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"haproxy-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"haproxy-bundle-docker-0_stop_0 undercloud" -> "haproxy-bundle_stopped_0" [ style = bold] -+"haproxy-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle_stop_0" -> "haproxy-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-bundle_stopped_0" -> "ip-192.168.122.247_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stopped_0" -> "ip-192.168.122.248_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stopped_0" -> "ip-192.168.122.249_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stopped_0" -> "ip-192.168.122.250_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stopped_0" -> "ip-192.168.122.253_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stopped_0" -> "ip-192.168.122.254_stop_0 undercloud" [ style = bold] -+"haproxy-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"ip-192.168.122.247_start_0 " [ style=dashed color="red" fontcolor="black"] -+"ip-192.168.122.247_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"ip-192.168.122.247_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"ip-192.168.122.247_stop_0 undercloud" -> "ip-192.168.122.247_start_0 " [ style = dashed] -+"ip-192.168.122.247_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.248_start_0 " [ style=dashed color="red" fontcolor="black"] -+"ip-192.168.122.248_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"ip-192.168.122.248_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"ip-192.168.122.248_stop_0 undercloud" -> "ip-192.168.122.248_start_0 " [ style = dashed] -+"ip-192.168.122.248_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.249_start_0 " [ style=dashed color="red" fontcolor="black"] -+"ip-192.168.122.249_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"ip-192.168.122.249_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"ip-192.168.122.249_stop_0 undercloud" -> "ip-192.168.122.249_start_0 " [ style = dashed] -+"ip-192.168.122.249_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.250_start_0 " [ style=dashed color="red" fontcolor="black"] -+"ip-192.168.122.250_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"ip-192.168.122.250_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"ip-192.168.122.250_stop_0 undercloud" -> "ip-192.168.122.250_start_0 " [ style = dashed] -+"ip-192.168.122.250_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.253_start_0 " [ style=dashed color="red" fontcolor="black"] -+"ip-192.168.122.253_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"ip-192.168.122.253_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"ip-192.168.122.253_stop_0 undercloud" -> "ip-192.168.122.253_start_0 " [ style = dashed] -+"ip-192.168.122.253_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.122.254_start_0 " [ style=dashed color="red" fontcolor="black"] -+"ip-192.168.122.254_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"ip-192.168.122.254_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"ip-192.168.122.254_stop_0 undercloud" -> "ip-192.168.122.254_start_0 " [ style = dashed] -+"ip-192.168.122.254_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"openstack-cinder-volume-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"openstack-cinder-volume-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"openstack-cinder-volume-docker-0_stop_0 undercloud" -> "openstack-cinder-volume_stopped_0" [ style = bold] -+"openstack-cinder-volume-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"openstack-cinder-volume_stop_0" -> "openstack-cinder-volume-docker-0_stop_0 undercloud" [ style = bold] -+"openstack-cinder-volume_stop_0" [ style=bold color="green" fontcolor="orange"] -+"openstack-cinder-volume_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"rabbitmq-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"rabbitmq-bundle-0_stop_0 undercloud" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"rabbitmq-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-clone_running_0" [ style=dashed color="red" fontcolor="orange"] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] -+"rabbitmq-bundle-clone_start_0" [ style=dashed color="red" fontcolor="orange"] -+"rabbitmq-bundle-clone_stop_0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle-clone_start_0" [ style = dashed] -+"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] -+"rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] -+"rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] -+"rabbitmq_start_0 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"rabbitmq_stop_0 rabbitmq-bundle-0" -> "all_stopped" [ style = bold] -+"rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-0_stop_0 undercloud" [ style = bold] -+"rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] -+"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="black"] -+"redis-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"redis-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"redis-bundle-0_stop_0 undercloud" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"redis-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] -+"redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_demoted_0" -> "redis-bundle-master_start_0" [ style = dashed] -+"redis-bundle-master_demoted_0" -> "redis-bundle-master_stop_0" [ style = bold] -+"redis-bundle-master_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] -+"redis-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = dashed] -+"redis-bundle-master_start_0" -> "redis_start_0 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_start_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle-master_stop_0" -> "redis-bundle-master_stopped_0" [ style = bold] -+"redis-bundle-master_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_stopped_0" -> "redis-bundle-master_start_0" [ style = dashed] -+"redis-bundle-master_stopped_0" -> "redis-bundle_stopped_0" [ style = bold] -+"redis-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] -+"redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] -+"redis-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = bold] -+"redis-bundle_demoted_0" -> "redis-bundle_stop_0" [ style = bold] -+"redis-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] -+"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] -+"redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] -+"redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_stopped_0" -> "haproxy-bundle_stop_0" [ style = bold] -+"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = bold] -+"redis-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis_demote_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] -+"redis_demote_0 redis-bundle-0" -> "redis-bundle-master_demoted_0" [ style = bold] -+"redis_demote_0 redis-bundle-0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis_demote_0 redis-bundle-0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"redis_demote_0 redis-bundle-0" -> "redis_stop_0 redis-bundle-0" [ style = bold] -+"redis_demote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis_monitor_45000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"redis_monitor_60000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"redis_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = dashed] -+"redis_start_0 redis-bundle-0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis_start_0 redis-bundle-0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"redis_start_0 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"redis_stop_0 redis-bundle-0" -> "all_stopped" [ style = bold] -+"redis_stop_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] -+"redis_stop_0 redis-bundle-0" -> "redis-bundle-master_stopped_0" [ style = bold] -+"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="black"] -+} -diff --git a/pengine/test10/bundle-order-stop.exp b/pengine/test10/bundle-order-stop.exp -new file mode 100644 -index 0000000..d085433 ---- /dev/null -+++ b/pengine/test10/bundle-order-stop.exp -@@ -0,0 +1,734 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-stop.scores b/pengine/test10/bundle-order-stop.scores -new file mode 100644 -index 0000000..a662f42 ---- /dev/null -+++ b/pengine/test10/bundle-order-stop.scores -@@ -0,0 +1,199 @@ -+Allocation scores: -+clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera-bundle-master allocation score on undercloud: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:0 allocation score on undercloud: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 -+clone_color: redis-bundle-master allocation score on undercloud: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-0: INFINITY -+clone_color: redis:0 allocation score on undercloud: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on undercloud: 0 -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on undercloud: INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on undercloud: 0 -+container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera:0 allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on undercloud: 0 -+container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+container_color: rabbitmq:0 allocation score on undercloud: 0 -+container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on undercloud: 0 -+container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on undercloud: INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on undercloud: 0 -+container_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on undercloud: 0 -+galera:0 promotion score on galera-bundle-0: 100 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on undercloud: INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on undercloud: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:0 allocation score on undercloud: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -+native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.247 allocation score on undercloud: -INFINITY -+native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.248 allocation score on undercloud: -INFINITY -+native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.249 allocation score on undercloud: -INFINITY -+native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.250 allocation score on undercloud: -INFINITY -+native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.253 allocation score on undercloud: -INFINITY -+native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.122.254 allocation score on undercloud: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: -INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+native_color: rabbitmq:0 allocation score on undercloud: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on undercloud: INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on undercloud: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-0: INFINITY -+native_color: redis:0 allocation score on undercloud: -INFINITY -+redis:0 promotion score on redis-bundle-0: 1 -diff --git a/pengine/test10/bundle-order-stop.summary b/pengine/test10/bundle-order-stop.summary -new file mode 100644 -index 0000000..bd6f937 ---- /dev/null -+++ b/pengine/test10/bundle-order-stop.summary -@@ -0,0 +1,114 @@ -+ -+Current cluster status: -+Online: [ undercloud ] -+Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] -+ -+ Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Master undercloud -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master undercloud -+ ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud -+ ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud -+ -+Transition Summary: -+ * Shutdown undercloud -+ * Stop rabbitmq-bundle-docker-0 (undercloud) -+ * Stop rabbitmq-bundle-0 (undercloud) -+ * Stop rabbitmq:0 (Started rabbitmq-bundle-0) -+ * Stop galera-bundle-docker-0 (undercloud) -+ * Stop galera-bundle-0 (undercloud) -+ * Demote galera:0 (Master -> Slave galera-bundle-0) -+ * Restart galera:0 (Slave galera-bundle-0) -+ * Stop redis-bundle-docker-0 (undercloud) -+ * Stop redis-bundle-0 (undercloud) -+ * Demote redis:0 (Master -> Slave redis-bundle-0) -+ * Restart redis:0 (Slave redis-bundle-0) -+ * Stop ip-192.168.122.254 (undercloud) -+ * Stop ip-192.168.122.250 (undercloud) -+ * Stop ip-192.168.122.249 (undercloud) -+ * Stop ip-192.168.122.253 (undercloud) -+ * Stop ip-192.168.122.247 (undercloud) -+ * Stop ip-192.168.122.248 (undercloud) -+ * Stop haproxy-bundle-docker-0 (undercloud) -+ * Stop openstack-cinder-volume-docker-0 (undercloud) -+ -+Executing cluster transition: -+ * Resource action: galera cancel=10000 on galera-bundle-0 -+ * Resource action: redis cancel=20000 on redis-bundle-0 -+ * Pseudo action: openstack-cinder-volume_stop_0 -+ * Pseudo action: redis-bundle_demote_0 -+ * Pseudo action: redis-bundle-master_demote_0 -+ * Pseudo action: galera-bundle_demote_0 -+ * Pseudo action: galera-bundle-master_demote_0 -+ * Pseudo action: rabbitmq-bundle_stop_0 -+ * Resource action: galera demote on galera-bundle-0 -+ * Resource action: redis demote on redis-bundle-0 -+ * Resource action: openstack-cinder-volume-docker-0 stop on undercloud -+ * Pseudo action: openstack-cinder-volume_stopped_0 -+ * Pseudo action: redis-bundle-master_demoted_0 -+ * Pseudo action: galera-bundle-master_demoted_0 -+ * Pseudo action: rabbitmq-bundle-clone_stop_0 -+ * Resource action: rabbitmq stop on rabbitmq-bundle-0 -+ * Resource action: rabbitmq-bundle-0 stop on undercloud -+ * Pseudo action: redis-bundle_demoted_0 -+ * Pseudo action: galera-bundle_demoted_0 -+ * Pseudo action: galera-bundle_stop_0 -+ * Pseudo action: rabbitmq-bundle-clone_stopped_0 -+ * Pseudo action: rabbitmq-bundle_stopped_0 -+ * Resource action: rabbitmq-bundle-docker-0 stop on undercloud -+ * Pseudo action: galera-bundle-master_stop_0 -+ * Resource action: galera stop on galera-bundle-0 -+ * Resource action: galera-bundle-0 stop on undercloud -+ * Pseudo action: galera-bundle-master_stopped_0 -+ * Pseudo action: galera-bundle_stopped_0 -+ * Resource action: galera-bundle-docker-0 stop on undercloud -+ * Pseudo action: redis-bundle_stop_0 -+ * Pseudo action: redis-bundle-master_stop_0 -+ * Resource action: redis stop on redis-bundle-0 -+ * Resource action: redis-bundle-0 stop on undercloud -+ * Pseudo action: redis-bundle-master_stopped_0 -+ * Pseudo action: redis-bundle_stopped_0 -+ * Pseudo action: redis-bundle_start_0 -+ * Resource action: redis-bundle-docker-0 stop on undercloud -+ * Pseudo action: haproxy-bundle_stop_0 -+ * Resource action: haproxy-bundle-docker-0 stop on undercloud -+ * Pseudo action: haproxy-bundle_stopped_0 -+ * Resource action: ip-192.168.122.254 stop on undercloud -+ * Resource action: ip-192.168.122.250 stop on undercloud -+ * Resource action: ip-192.168.122.249 stop on undercloud -+ * Resource action: ip-192.168.122.253 stop on undercloud -+ * Resource action: ip-192.168.122.247 stop on undercloud -+ * Resource action: ip-192.168.122.248 stop on undercloud -+ * Cluster action: do_shutdown on undercloud -+ * Pseudo action: all_stopped -+ -+Revised cluster status: -+Online: [ undercloud ] -+ -+ Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Stopped -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Stopped -+ ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Stopped -+ ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Stopped -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Stopped -+ -diff --git a/pengine/test10/bundle-order-stop.xml b/pengine/test10/bundle-order-stop.xml -new file mode 100644 -index 0000000..467082a ---- /dev/null -+++ b/pengine/test10/bundle-order-stop.xml -@@ -0,0 +1,421 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.8.3.1 - - -From 00c0cda9226b04a9a95e78b9bff63419bf3b4e47 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 15 Jun 2017 14:05:45 +1000 -Subject: [PATCH 3/8] PE: Basic inter-bundle ordering when both sides have - children - ---- - pengine/container.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 62 insertions(+), 1 deletion(-) - -diff --git a/pengine/container.c b/pengine/container.c -index d648e0f..a39aebf 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -396,15 +396,76 @@ container_action_flags(action_t * action, node_t * node) - return flags; - } - -- - enum pe_graph_flags - container_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, - enum pe_action_flags filter, enum pe_ordering type) - { -+ gboolean current = FALSE; - enum pe_graph_flags changed = pe_graph_none; -+ container_variant_data_t *first_data = NULL; -+ container_variant_data_t *then_data = NULL; -+ - - // At the point we need to force container X to stop because - // resource Y needs to stop, here is where we'd implement that -+ crm_trace("%s -> %s", first->uuid, then->uuid); -+ if(first->rsc == NULL || then->rsc == NULL) { -+ return changed; -+ -+ } else if(first->rsc->variant != then->rsc->variant) { -+ return changed; // For now -+ } -+ -+ /* Fix this - lazy */ -+ if (crm_ends_with(first->uuid, "_stopped_0") -+ || crm_ends_with(first->uuid, "_demoted_0")) { -+ current = TRUE; -+ } -+ -+ get_container_variant_data(first_data, first->rsc); -+ get_container_variant_data(then_data, then->rsc); -+ -+ if(first_data->child == NULL || then_data->child == NULL) { -+ return changed; // For now -+ } -+ -+ for (GListPtr gIter = then_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ -+ resource_t *first_child = find_compatible_child(tuple->docker, first_data->child, RSC_ROLE_UNKNOWN, current); -+ if (first_child == NULL && current) { -+ crm_trace("Ignore"); -+ -+ } else if (first_child == NULL) { -+ crm_debug("No match found for %s (%d / %s / %s)", tuple->child->id, current, first->uuid, then->uuid); -+ -+ /* Me no like this hack - but what else can we do? -+ * -+ * If there is no-one active or about to be active -+ * on the same node as then_child, then they must -+ * not be allowed to start -+ */ -+ if (type & (pe_order_runnable_left | pe_order_implies_then) /* Mandatory */ ) { -+ pe_rsc_info(then->rsc, "Inhibiting %s from being active", tuple->child->id); -+ if(assign_node(tuple->child, NULL, TRUE)) { -+ changed |= pe_graph_updated_then; -+ } -+ } -+ -+ } else { -+ enum action_tasks task = get_complex_task(first_child, first->task, TRUE); -+ pe_action_t *first_action = find_first_action(first_child->actions, NULL, task2text(task), node); -+ pe_action_t *then_action = find_first_action(tuple->child->actions, NULL, then->task, node); -+ -+ if (order_actions(first_action, then_action, type)) { -+ crm_debug("Created constraint for %s -> %s", first_action->uuid, then_action->uuid); -+ changed |= (pe_graph_updated_first | pe_graph_updated_then); -+ } -+ changed |= tuple->child->cmds->update_actions(first_action, then_action, node, -+ first_child->cmds->action_flags(first_action, node), -+ filter, type); -+ } -+ } - - return changed; - } --- -1.8.3.1 - - -From 45fa91e049629a22fd69310e34235b5422b87146 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 16 Jun 2017 13:33:55 +1000 -Subject: [PATCH 4/8] Fix: PE: Functional inter-bundle ordering when either - side has no child - -Also, force containers to restart if they are found active before one of -their dependancies. ---- - pengine/clone.c | 34 ++--- - pengine/container.c | 85 ++++++++---- - pengine/graph.c | 11 +- - pengine/master.c | 5 +- - pengine/test10/bundle-order-partial-start-2.dot | 21 +++ - pengine/test10/bundle-order-partial-start-2.exp | 149 ++++++++++++++++++--- - .../test10/bundle-order-partial-start-2.summary | 9 ++ - pengine/test10/bundle-order-partial-start.dot | 1 + - pengine/test10/bundle-order-partial-start.exp | 3 + - pengine/test10/bundle-order-partial-stop.dot | 19 ++- - pengine/test10/bundle-order-partial-stop.exp | 47 +++---- - pengine/test10/bundle-order-partial-stop.summary | 1 - - pengine/test10/bundle-order-startup.dot | 2 + - pengine/test10/bundle-order-startup.exp | 6 + - pengine/test10/bundle-order-stop.dot | 19 ++- - pengine/test10/bundle-order-stop.exp | 47 +++---- - pengine/test10/bundle-order-stop.summary | 1 - - pengine/utils.h | 4 +- - 18 files changed, 331 insertions(+), 133 deletions(-) - -diff --git a/pengine/clone.c b/pengine/clone.c -index a51677a..a79271e 100644 ---- a/pengine/clone.c -+++ b/pengine/clone.c -@@ -946,7 +946,7 @@ assign_node(resource_t * rsc, node_t * node, gboolean force) - - static resource_t * - find_compatible_child_by_node(resource_t * local_child, node_t * local_node, resource_t * rsc, -- enum rsc_role_e filter, gboolean current) -+ GListPtr children, enum rsc_role_e filter, gboolean current) - { - GListPtr gIter = NULL; - -@@ -958,8 +958,7 @@ find_compatible_child_by_node(resource_t * local_child, node_t * local_node, res - crm_trace("Looking for compatible child from %s for %s on %s", - local_child->id, rsc->id, local_node->details->uname); - -- gIter = rsc->children; -- for (; gIter != NULL; gIter = gIter->next) { -+ for (gIter = children; gIter != NULL; gIter = gIter->next) { - resource_t *child_rsc = (resource_t *) gIter->data; - - if(is_child_compatible(child_rsc, local_node, filter, current)) { -@@ -1003,8 +1002,7 @@ is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e - } - - resource_t * --find_compatible_child(resource_t * local_child, resource_t * rsc, enum rsc_role_e filter, -- gboolean current) -+find_compatible_child(resource_t * local_child, resource_t * rsc, GListPtr children, enum rsc_role_e filter, gboolean current) - { - resource_t *pair = NULL; - GListPtr gIter = NULL; -@@ -1013,7 +1011,7 @@ find_compatible_child(resource_t * local_child, resource_t * rsc, enum rsc_role_ - - local_node = local_child->fns->location(local_child, NULL, current); - if (local_node) { -- return find_compatible_child_by_node(local_child, local_node, rsc, filter, current); -+ return find_compatible_child_by_node(local_child, local_node, rsc, children, filter, current); - } - - scratch = g_hash_table_get_values(local_child->allowed_nodes); -@@ -1023,7 +1021,7 @@ find_compatible_child(resource_t * local_child, resource_t * rsc, enum rsc_role_ - for (; gIter != NULL; gIter = gIter->next) { - node_t *node = (node_t *) gIter->data; - -- pair = find_compatible_child_by_node(local_child, node, rsc, filter, current); -+ pair = find_compatible_child_by_node(local_child, node, rsc, children, filter, current); - if (pair) { - goto done; - } -@@ -1084,7 +1082,7 @@ clone_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation - } else if (do_interleave) { - resource_t *rh_child = NULL; - -- rh_child = find_compatible_child(rsc_lh, rsc_rh, RSC_ROLE_UNKNOWN, FALSE); -+ rh_child = find_compatible_child(rsc_lh, rsc_rh, rsc_rh->children, RSC_ROLE_UNKNOWN, FALSE); - - if (rh_child) { - pe_rsc_debug(rsc_rh, "Pairing %s with %s", rsc_lh->id, rh_child->id); -@@ -1167,7 +1165,7 @@ clone_child_action(action_t * action) - } - - enum pe_action_flags --clone_action_flags(action_t * action, node_t * node) -+summary_action_flags(action_t * action, GListPtr children, node_t * node) - { - GListPtr gIter = NULL; - gboolean any_runnable = FALSE; -@@ -1176,15 +1174,13 @@ clone_action_flags(action_t * action, node_t * node) - enum pe_action_flags flags = (pe_action_optional | pe_action_runnable | pe_action_pseudo); - const char *task_s = task2text(task); - -- gIter = action->rsc->children; -- for (; gIter != NULL; gIter = gIter->next) { -+ for (gIter = children; gIter != NULL; gIter = gIter->next) { - action_t *child_action = NULL; - resource_t *child = (resource_t *) gIter->data; - -- child_action = -- find_first_action(child->actions, NULL, task_s, child->children ? NULL : node); -- pe_rsc_trace(action->rsc, "Checking for %s in %s on %s", task_s, child->id, -- node ? node->details->uname : "none"); -+ child_action = find_first_action(child->actions, NULL, task_s, child->children ? NULL : node); -+ pe_rsc_trace(action->rsc, "Checking for %s in %s on %s (%s)", task_s, child->id, -+ node ? node->details->uname : "none", child_action?child_action->uuid:"NA"); - if (child_action) { - enum pe_action_flags child_flags = child->cmds->action_flags(child_action, node); - -@@ -1223,6 +1219,12 @@ clone_action_flags(action_t * action, node_t * node) - return flags; - } - -+enum pe_action_flags -+clone_action_flags(action_t * action, node_t * node) -+{ -+ return summary_action_flags(action, action->rsc->children, node); -+} -+ - static enum pe_graph_flags - clone_update_actions_interleave(action_t * first, action_t * then, node_t * node, - enum pe_action_flags flags, enum pe_action_flags filter, -@@ -1246,7 +1248,7 @@ clone_update_actions_interleave(action_t * first, action_t * then, node_t * node - resource_t *then_child = (resource_t *) gIter->data; - - CRM_ASSERT(then_child != NULL); -- first_child = find_compatible_child(then_child, first->rsc, RSC_ROLE_UNKNOWN, current); -+ first_child = find_compatible_child(then_child, first->rsc, first->rsc->children, RSC_ROLE_UNKNOWN, current); - if (first_child == NULL && current) { - crm_trace("Ignore"); - -diff --git a/pengine/container.c b/pengine/container.c -index a39aebf..f3ea797 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -42,6 +42,19 @@ gint sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set); - void distribute_children(resource_t *rsc, GListPtr children, GListPtr nodes, - int max, int per_host_max, pe_working_set_t * data_set); - -+static GListPtr get_container_list(resource_t *rsc) -+{ -+ GListPtr containers = NULL; -+ container_variant_data_t *data = NULL; -+ -+ get_container_variant_data(data, rsc); -+ for (GListPtr gIter = data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ containers = g_list_append(containers, tuple->docker); -+ } -+ return containers; -+} -+ - node_t * - container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - { -@@ -54,11 +67,7 @@ container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - get_container_variant_data(container_data, rsc); - - set_bit(rsc->flags, pe_rsc_allocating); -- -- for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -- container_grouping_t *tuple = (container_grouping_t *)gIter->data; -- containers = g_list_append(containers, tuple->docker); -- } -+ containers = get_container_list(rsc); - - dump_node_scores(show_scores ? 0 : scores_log_level, rsc, __FUNCTION__, rsc->allowed_nodes); - -@@ -128,6 +137,7 @@ container_create_actions(resource_t * rsc, pe_working_set_t * data_set) - - CRM_CHECK(rsc != NULL, return); - -+ containers = get_container_list(rsc); - get_container_variant_data(container_data, rsc); - for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; -@@ -138,7 +148,6 @@ container_create_actions(resource_t * rsc, pe_working_set_t * data_set) - } - if(tuple->docker) { - tuple->docker->cmds->create_actions(tuple->docker, data_set); -- containers = g_list_append(containers, tuple->docker); - } - if(tuple->remote) { - tuple->remote->cmds->create_actions(tuple->remote, data_set); -@@ -392,7 +401,18 @@ container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc, rsc_colocatio - enum pe_action_flags - container_action_flags(action_t * action, node_t * node) - { -- enum pe_action_flags flags = (pe_action_optional | pe_action_runnable | pe_action_pseudo); -+ enum pe_action_flags flags = 0; -+ container_variant_data_t *data = NULL; -+ -+ get_container_variant_data(data, action->rsc); -+ if(data->child) { -+ flags = summary_action_flags(action, data->child->children, node); -+ -+ } else { -+ GListPtr containers = get_container_list(action->rsc); -+ flags = summary_action_flags(action, containers, node); -+ g_list_free(containers); -+ } - return flags; - } - -@@ -402,9 +422,8 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum - { - gboolean current = FALSE; - enum pe_graph_flags changed = pe_graph_none; -- container_variant_data_t *first_data = NULL; - container_variant_data_t *then_data = NULL; -- -+ GListPtr containers = NULL; - - // At the point we need to force container X to stop because - // resource Y needs to stop, here is where we'd implement that -@@ -422,22 +441,21 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum - current = TRUE; - } - -- get_container_variant_data(first_data, first->rsc); - get_container_variant_data(then_data, then->rsc); -- -- if(first_data->child == NULL || then_data->child == NULL) { -- return changed; // For now -- } -+ containers = get_container_list(first->rsc); - - for (GListPtr gIter = then_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - -- resource_t *first_child = find_compatible_child(tuple->docker, first_data->child, RSC_ROLE_UNKNOWN, current); -+ /* We can't do the then_data->child->children trick here, -+ * since the node's wont match -+ */ -+ resource_t *first_child = find_compatible_child(tuple->docker, first->rsc, containers, RSC_ROLE_UNKNOWN, current); - if (first_child == NULL && current) { - crm_trace("Ignore"); - - } else if (first_child == NULL) { -- crm_debug("No match found for %s (%d / %s / %s)", tuple->child->id, current, first->uuid, then->uuid); -+ crm_debug("No match found for %s (%d / %s / %s)", tuple->docker->id, current, first->uuid, then->uuid); - - /* Me no like this hack - but what else can we do? - * -@@ -446,27 +464,45 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum - * not be allowed to start - */ - if (type & (pe_order_runnable_left | pe_order_implies_then) /* Mandatory */ ) { -- pe_rsc_info(then->rsc, "Inhibiting %s from being active", tuple->child->id); -- if(assign_node(tuple->child, NULL, TRUE)) { -+ pe_rsc_info(then->rsc, "Inhibiting %s from being active", tuple->docker->id); -+ if(assign_node(tuple->docker, NULL, TRUE)) { - changed |= pe_graph_updated_then; - } - } - - } else { - enum action_tasks task = get_complex_task(first_child, first->task, TRUE); -+ -+ /* Potentially we might want to invovle first_data->child -+ * if present, however we mostly just need the "you need -+ * to stop" signal to flow back up the ordering chain via -+ * the docker resources which are always present -+ * -+ * Almost certain to break if first->task or then->task is -+ * promote or demote -+ */ - pe_action_t *first_action = find_first_action(first_child->actions, NULL, task2text(task), node); -- pe_action_t *then_action = find_first_action(tuple->child->actions, NULL, then->task, node); -+ pe_action_t *then_action = find_first_action(tuple->docker->actions, NULL, then->task, node); - - if (order_actions(first_action, then_action, type)) { -- crm_debug("Created constraint for %s -> %s", first_action->uuid, then_action->uuid); -+ crm_debug("Created constraint for %s (%d) -> %s (%d) %.6x", -+ first_action->uuid, is_set(first_action->flags, pe_action_optional), -+ then_action->uuid, is_set(then_action->flags, pe_action_optional), type); - changed |= (pe_graph_updated_first | pe_graph_updated_then); - } -- changed |= tuple->child->cmds->update_actions(first_action, then_action, node, -- first_child->cmds->action_flags(first_action, node), -- filter, type); -+ if(first_action && then_action) { -+ changed |= tuple->docker->cmds->update_actions(first_action, then_action, node, -+ first_child->cmds->action_flags(first_action, node), -+ filter, type); -+ } else { -+ crm_err("Nothing found either for %s (%p) or %s (%p) %s", -+ first_child->id, first_action, -+ tuple->docker->id, then_action, task2text(task)); -+ } - } - } - -+ g_list_free(containers); - return changed; - } - -@@ -492,11 +528,8 @@ container_rsc_location(resource_t * rsc, rsc_to_node_t * constraint) - } - - if(container_data->child && (constraint->role_filter == RSC_ROLE_SLAVE || constraint->role_filter == RSC_ROLE_MASTER)) { -- // Translate the node into container names running on that node -- crm_err("Applying constraint %s", constraint->id); - container_data->child->cmds->rsc_location(container_data->child, constraint); - container_data->child->rsc_location = g_list_prepend(container_data->child->rsc_location, constraint); -- crm_err("Added %d location constraints to %s", g_list_length(container_data->child->rsc_location), container_data->child->id); - } - } - -diff --git a/pengine/graph.c b/pengine/graph.c -index c93745b..b774c71 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -231,7 +231,9 @@ graph_update_action(action_t * first, action_t * then, node_t * node, - pe_action_optional, pe_order_implies_first); - - } else if (is_set(first_flags, pe_action_optional) == FALSE) { -- pe_rsc_trace(first->rsc, "first unrunnable: %s then %s", first->uuid, then->uuid); -+ pe_rsc_trace(first->rsc, "first unrunnable: %s (%d) then %s (%d)", -+ first->uuid, is_set(first_flags, pe_action_optional), -+ then->uuid, is_set(then_flags, pe_action_optional)); - if (update_action_flags(first, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__)) { - changed |= pe_graph_updated_first; - } -@@ -240,7 +242,9 @@ graph_update_action(action_t * first, action_t * then, node_t * node, - if (changed) { - pe_rsc_trace(then->rsc, "implies left: %s then %s: changed", first->uuid, then->uuid); - } else { -- crm_trace("implies left: %s then %s", first->uuid, then->uuid); -+ crm_trace("implies left: %s (%d) then %s (%d)", -+ first->uuid, is_set(first_flags, pe_action_optional), -+ then->uuid, is_set(then_flags, pe_action_optional)); - } - } - -@@ -607,7 +611,8 @@ update_action(action_t * then) - } - - if (changed & pe_graph_disable) { -- crm_trace("Disabled constraint %s -> %s", other->action->uuid, then->uuid); -+ crm_trace("Disabled constraint %s -> %s in favor of %s -> %s", -+ other->action->uuid, then->uuid, first->uuid, then->uuid); - clear_bit(changed, pe_graph_disable); - other->type = pe_order_none; - } -diff --git a/pengine/master.c b/pengine/master.c -index 93e5186..c15e740 100644 ---- a/pengine/master.c -+++ b/pengine/master.c -@@ -153,8 +153,6 @@ static void apply_master_location(resource_t *child, GListPtr location_constrain - int new_priority = merge_weights(child->priority, cons_node->weight); - pe_rsc_trace(child, "\t%s[%s]: %d -> %d (%d)", child->id, cons_node->details->uname, - child->priority, new_priority, cons_node->weight); -- crm_err("\t%s[%s]: %d -> %d (%d)", child->id, cons_node->details->uname, -- child->priority, new_priority, cons_node->weight); - child->priority = new_priority; - } - } -@@ -720,7 +718,6 @@ master_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - } - - apply_master_location(child_rsc, child_rsc->rsc_location, chosen); -- crm_err("Applying %d location constraints for %s", g_list_length(rsc->rsc_location), rsc->id); - apply_master_location(child_rsc, rsc->rsc_location, chosen); - - for (gIter2 = child_rsc->rsc_cons; gIter2 != NULL; gIter2 = gIter2->next) { -@@ -1025,7 +1022,7 @@ master_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocatio - g_list_free(rhs); - - } else if (constraint->role_lh == RSC_ROLE_MASTER) { -- resource_t *rh_child = find_compatible_child(rsc_lh, rsc_rh, constraint->role_rh, FALSE); -+ resource_t *rh_child = find_compatible_child(rsc_lh, rsc_rh, rsc_rh->children, constraint->role_rh, FALSE); - - if (rh_child == NULL && constraint->score >= INFINITY) { - pe_rsc_trace(rsc_lh, "%s can't be promoted %s", rsc_lh->id, constraint->id); -diff --git a/pengine/test10/bundle-order-partial-start-2.dot b/pengine/test10/bundle-order-partial-start-2.dot -index 59a8b15..20afbe6 100644 ---- a/pengine/test10/bundle-order-partial-start-2.dot -+++ b/pengine/test10/bundle-order-partial-start-2.dot -@@ -1,10 +1,30 @@ - digraph "g" { -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_start_0 undercloud" -> "galera-bundle-0_monitor_60000 undercloud" [ style = bold] -+"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] -+"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] -+"galera-bundle-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] -+"galera-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"galera-bundle-0_stop_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] -+"galera-bundle-0_stop_0 undercloud" -> "galera-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] -+"galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -+"galera-bundle-docker-0_stop_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] -+"galera-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "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:0_start_0 galera-bundle-0" [ style = bold] - "galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] - "galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] - "galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] - "galera:0_monitor_20000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -@@ -16,6 +36,7 @@ digraph "g" { - "haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] - "haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bundle-order-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp -index 621332c..08f5084 100644 ---- a/pengine/test10/bundle-order-partial-start-2.exp -+++ b/pengine/test10/bundle-order-partial-start-2.exp -@@ -34,6 +34,9 @@ - - - -+ -+ -+ - - - -@@ -47,6 +50,9 @@ - - - -+ -+ -+ - - - -@@ -60,12 +66,104 @@ - - - -+ -+ -+ -+ -+ -+ - - - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -77,7 +175,7 @@ - -
    - -- -+ - - - -@@ -90,7 +188,7 @@ - -
    - -- -+ - - - -@@ -103,7 +201,7 @@ - -
    - -- -+ - - - -@@ -119,7 +217,7 @@ - -
    - -- -+ - - - -@@ -128,7 +226,7 @@ - - - -- -+ - - - -@@ -140,7 +238,7 @@ - -
    - -- -+ - - - -@@ -148,7 +246,7 @@ - - - -- -+ - - - -@@ -160,7 +258,7 @@ - -
    - -- -+ - - - -@@ -168,7 +266,7 @@ - - - -- -+ - - - -@@ -180,7 +278,7 @@ - -
    - -- -+ - - - -@@ -192,7 +290,7 @@ - -
    - -- -+ - - - -@@ -207,7 +305,7 @@ - -
    - -- -+ - - - -@@ -219,7 +317,7 @@ - -
    - -- -+ - - - -@@ -231,7 +329,7 @@ - -
    - -- -+ - - - -@@ -249,7 +347,7 @@ - -
    - -- -+ - - - -@@ -264,7 +362,7 @@ - -
    - -- -+ - - - -@@ -276,7 +374,7 @@ - -
    - -- -+ - - - -@@ -288,7 +386,7 @@ - - - -- -+ - - - -@@ -296,4 +394,19 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/bundle-order-partial-start-2.summary b/pengine/test10/bundle-order-partial-start-2.summary -index 859ca25..5e3927c 100644 ---- a/pengine/test10/bundle-order-partial-start-2.summary -+++ b/pengine/test10/bundle-order-partial-start-2.summary -@@ -22,21 +22,26 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq- - - Transition Summary: - * Start rabbitmq:0 (rabbitmq-bundle-0) -+ * Restart galera-bundle-docker-0 (Started undercloud) -+ * Restart galera-bundle-0 (Started undercloud) - * Start galera:0 (galera-bundle-0) - * Promote redis:0 (Slave -> Master redis-bundle-0) - * Start haproxy-bundle-docker-0 (undercloud) - - Executing cluster transition: -+ * Resource action: galera-bundle-0 stop on undercloud - * Resource action: haproxy-bundle-docker-0 monitor on undercloud - * Pseudo action: haproxy-bundle_start_0 - * Pseudo action: redis-bundle_promote_0 - * Pseudo action: redis-bundle-master_promote_0 - * Pseudo action: rabbitmq-bundle_start_0 -+ * Resource action: galera-bundle-docker-0 stop on undercloud - * Resource action: redis promote on redis-bundle-0 - * Resource action: haproxy-bundle-docker-0 start on undercloud - * Pseudo action: haproxy-bundle_running_0 - * Pseudo action: redis-bundle-master_promoted_0 - * Pseudo action: rabbitmq-bundle-clone_start_0 -+ * Pseudo action: all_stopped - * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 - * Resource action: redis monitor=20000 on redis-bundle-0 - * Resource action: haproxy-bundle-docker-0 monitor=60000 on undercloud -@@ -45,6 +50,10 @@ Executing cluster transition: - * Pseudo action: rabbitmq-bundle_running_0 - * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 - * Pseudo action: galera-bundle_start_0 -+ * Resource action: galera-bundle-docker-0 start on undercloud -+ * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud -+ * Resource action: galera-bundle-0 start on undercloud -+ * Resource action: galera-bundle-0 monitor=60000 on undercloud - * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera:0 start on galera-bundle-0 - * Pseudo action: galera-bundle-master_running_0 -diff --git a/pengine/test10/bundle-order-partial-start.dot b/pengine/test10/bundle-order-partial-start.dot -index 06c3620..c36ff04 100644 ---- a/pengine/test10/bundle-order-partial-start.dot -+++ b/pengine/test10/bundle-order-partial-start.dot -@@ -30,6 +30,7 @@ digraph "g" { - "haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] - "haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp -index b48bb03..4a5c01c 100644 ---- a/pengine/test10/bundle-order-partial-start.exp -+++ b/pengine/test10/bundle-order-partial-start.exp -@@ -103,6 +103,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-partial-stop.dot b/pengine/test10/bundle-order-partial-stop.dot -index 235b634..af2493c 100644 ---- a/pengine/test10/bundle-order-partial-stop.dot -+++ b/pengine/test10/bundle-order-partial-stop.dot -@@ -11,6 +11,7 @@ digraph "g" { - "galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "galera-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"galera-bundle-docker-0_stop_0 undercloud" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] - "galera-bundle-docker-0_stop_0 undercloud" [ 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] -@@ -19,6 +20,7 @@ digraph "g" { - "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_running_0" -> "galera-bundle_running_0" [ style = dashed] - "galera-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] - "galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = dashed] - "galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-0" [ style = dashed] -@@ -32,11 +34,16 @@ digraph "g" { - "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_start_0" [ style = dashed] - "galera-bundle_demoted_0" -> "galera-bundle_stop_0" [ style = bold] - "galera-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] -+"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = dashed] -+"galera-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] - "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" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_stopped_0" -> "galera-bundle_start_0" [ style = dashed] - "galera-bundle_stopped_0" -> "redis-bundle_stop_0" [ style = bold] - "galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] - "galera_demote_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ style = bold] -@@ -110,6 +117,7 @@ digraph "g" { - "rabbitmq-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] - "rabbitmq-bundle-0_stop_0 undercloud" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] - "rabbitmq-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = dashed] - "rabbitmq-bundle-clone_running_0" [ style=dashed color="red" fontcolor="orange"] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] -@@ -123,6 +131,7 @@ digraph "g" { - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] - "rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] - "rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -@@ -142,6 +151,7 @@ digraph "g" { - "redis-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"redis-bundle-docker-0_stop_0 undercloud" -> "haproxy-bundle-docker-0_stop_0 undercloud" [ style = bold] - "redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] - "redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] -@@ -150,6 +160,7 @@ digraph "g" { - "redis-bundle-master_demoted_0" -> "redis-bundle-master_stop_0" [ style = bold] - "redis-bundle-master_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] - "redis-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_running_0" -> "redis-bundle_running_0" [ style = dashed] - "redis-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] - "redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = dashed] - "redis-bundle-master_start_0" -> "redis_start_0 redis-bundle-0" [ style = dashed] -@@ -163,16 +174,18 @@ digraph "g" { - "redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] - "redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] - "redis-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] --"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = bold] -+"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = dashed] - "redis-bundle_demoted_0" -> "redis-bundle_stop_0" [ style = bold] - "redis-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_running_0" -> "galera-bundle_start_0" [ style = dashed] -+"redis-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] - "redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] --"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] - "redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] - "redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] - "redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] - "redis-bundle_stopped_0" -> "haproxy-bundle_stop_0" [ style = bold] --"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = bold] -+"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = dashed] - "redis-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] - "redis_demote_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] - "redis_demote_0 redis-bundle-0" -> "redis-bundle-master_demoted_0" [ style = bold] -diff --git a/pengine/test10/bundle-order-partial-stop.exp b/pengine/test10/bundle-order-partial-stop.exp -index d085433..02a7372 100644 ---- a/pengine/test10/bundle-order-partial-stop.exp -+++ b/pengine/test10/bundle-order-partial-stop.exp -@@ -173,6 +173,9 @@ - - - -+ -+ -+ - - - -@@ -283,6 +286,9 @@ - - - -+ -+ -+ - - - -@@ -505,22 +511,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -535,7 +526,7 @@ - - - -- -+ - - - -@@ -543,7 +534,7 @@ - - - -- -+ - - - -@@ -558,7 +549,7 @@ - - - -- -+ - - - -@@ -570,7 +561,7 @@ - - - -- -+ - - - -@@ -585,7 +576,7 @@ - - - -- -+ - - - -@@ -600,7 +591,7 @@ - - - -- -+ - - - -@@ -612,7 +603,7 @@ - - - -- -+ - - - -@@ -624,7 +615,7 @@ - - - -- -+ - - - -@@ -639,7 +630,7 @@ - - - -- -+ - - - -@@ -651,7 +642,7 @@ - - - -- -+ - - - -@@ -663,7 +654,7 @@ - - - -- -+ - - - -@@ -671,7 +662,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-stop.summary b/pengine/test10/bundle-order-partial-stop.summary -index bd6f937..c341f4c 100644 ---- a/pengine/test10/bundle-order-partial-stop.summary -+++ b/pengine/test10/bundle-order-partial-stop.summary -@@ -78,7 +78,6 @@ Executing cluster transition: - * Resource action: redis-bundle-0 stop on undercloud - * Pseudo action: redis-bundle-master_stopped_0 - * Pseudo action: redis-bundle_stopped_0 -- * Pseudo action: redis-bundle_start_0 - * Resource action: redis-bundle-docker-0 stop on undercloud - * Pseudo action: haproxy-bundle_stop_0 - * Resource action: haproxy-bundle-docker-0 stop on undercloud -diff --git a/pengine/test10/bundle-order-startup.dot b/pengine/test10/bundle-order-startup.dot -index 73947a5..4e60d79 100644 ---- a/pengine/test10/bundle-order-startup.dot -+++ b/pengine/test10/bundle-order-startup.dot -@@ -32,6 +32,7 @@ digraph "g" { - "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] -+"haproxy-bundle-docker-0_start_0 undercloud" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle_running_0" -> "redis-bundle_start_0" [ style = bold] - "haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -@@ -116,6 +117,7 @@ digraph "g" { - "redis-bundle-docker-0_monitor_0 undercloud" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] - "redis-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] - "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-0_start_0 undercloud" [ style = bold] - "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-docker-0_monitor_60000 undercloud" [ style = bold] - "redis-bundle-docker-0_start_0 undercloud" -> "redis:0_start_0 redis-bundle-0" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp -index 51d108d..66ecb08 100644 ---- a/pengine/test10/bundle-order-startup.exp -+++ b/pengine/test10/bundle-order-startup.exp -@@ -176,6 +176,9 @@ - - - -+ -+ -+ - - - -@@ -291,6 +294,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-stop.dot b/pengine/test10/bundle-order-stop.dot -index 235b634..af2493c 100644 ---- a/pengine/test10/bundle-order-stop.dot -+++ b/pengine/test10/bundle-order-stop.dot -@@ -11,6 +11,7 @@ digraph "g" { - "galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "galera-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"galera-bundle-docker-0_stop_0 undercloud" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] - "galera-bundle-docker-0_stop_0 undercloud" [ 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] -@@ -19,6 +20,7 @@ digraph "g" { - "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_running_0" -> "galera-bundle_running_0" [ style = dashed] - "galera-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] - "galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = dashed] - "galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-0" [ style = dashed] -@@ -32,11 +34,16 @@ digraph "g" { - "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_start_0" [ style = dashed] - "galera-bundle_demoted_0" -> "galera-bundle_stop_0" [ style = bold] - "galera-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] -+"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = dashed] -+"galera-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] - "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" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_stopped_0" -> "galera-bundle_start_0" [ style = dashed] - "galera-bundle_stopped_0" -> "redis-bundle_stop_0" [ style = bold] - "galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] - "galera_demote_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ style = bold] -@@ -110,6 +117,7 @@ digraph "g" { - "rabbitmq-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] - "rabbitmq-bundle-0_stop_0 undercloud" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] - "rabbitmq-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = dashed] - "rabbitmq-bundle-clone_running_0" [ style=dashed color="red" fontcolor="orange"] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] -@@ -123,6 +131,7 @@ digraph "g" { - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] - "rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] - "rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -@@ -142,6 +151,7 @@ digraph "g" { - "redis-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"redis-bundle-docker-0_stop_0 undercloud" -> "haproxy-bundle-docker-0_stop_0 undercloud" [ style = bold] - "redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] - "redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] -@@ -150,6 +160,7 @@ digraph "g" { - "redis-bundle-master_demoted_0" -> "redis-bundle-master_stop_0" [ style = bold] - "redis-bundle-master_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] - "redis-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_running_0" -> "redis-bundle_running_0" [ style = dashed] - "redis-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] - "redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = dashed] - "redis-bundle-master_start_0" -> "redis_start_0 redis-bundle-0" [ style = dashed] -@@ -163,16 +174,18 @@ digraph "g" { - "redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] - "redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] - "redis-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] --"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = bold] -+"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = dashed] - "redis-bundle_demoted_0" -> "redis-bundle_stop_0" [ style = bold] - "redis-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_running_0" -> "galera-bundle_start_0" [ style = dashed] -+"redis-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] - "redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] --"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] - "redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] - "redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] - "redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] - "redis-bundle_stopped_0" -> "haproxy-bundle_stop_0" [ style = bold] --"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = bold] -+"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = dashed] - "redis-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] - "redis_demote_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] - "redis_demote_0 redis-bundle-0" -> "redis-bundle-master_demoted_0" [ style = bold] -diff --git a/pengine/test10/bundle-order-stop.exp b/pengine/test10/bundle-order-stop.exp -index d085433..02a7372 100644 ---- a/pengine/test10/bundle-order-stop.exp -+++ b/pengine/test10/bundle-order-stop.exp -@@ -173,6 +173,9 @@ - - - -+ -+ -+ - - - -@@ -283,6 +286,9 @@ - - - -+ -+ -+ - - - -@@ -505,22 +511,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -535,7 +526,7 @@ - - - -- -+ - - - -@@ -543,7 +534,7 @@ - - - -- -+ - - - -@@ -558,7 +549,7 @@ - - - -- -+ - - - -@@ -570,7 +561,7 @@ - - - -- -+ - - - -@@ -585,7 +576,7 @@ - - - -- -+ - - - -@@ -600,7 +591,7 @@ - - - -- -+ - - - -@@ -612,7 +603,7 @@ - - - -- -+ - - - -@@ -624,7 +615,7 @@ - - - -- -+ - - - -@@ -639,7 +630,7 @@ - - - -- -+ - - - -@@ -651,7 +642,7 @@ - - - -- -+ - - - -@@ -663,7 +654,7 @@ - - - -- -+ - - - -@@ -671,7 +662,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-stop.summary b/pengine/test10/bundle-order-stop.summary -index bd6f937..c341f4c 100644 ---- a/pengine/test10/bundle-order-stop.summary -+++ b/pengine/test10/bundle-order-stop.summary -@@ -78,7 +78,6 @@ Executing cluster transition: - * Resource action: redis-bundle-0 stop on undercloud - * Pseudo action: redis-bundle-master_stopped_0 - * Pseudo action: redis-bundle_stopped_0 -- * Pseudo action: redis-bundle_start_0 - * Resource action: redis-bundle-docker-0 stop on undercloud - * Pseudo action: haproxy-bundle_stop_0 - * Resource action: haproxy-bundle-docker-0 stop on undercloud -diff --git a/pengine/utils.h b/pengine/utils.h -index 10e7201..1421166 100644 ---- a/pengine/utils.h -+++ b/pengine/utils.h -@@ -50,11 +50,11 @@ extern void log_action(unsigned int log_level, const char *pre_text, - action_t * action, gboolean details); - - extern gboolean can_run_any(GHashTable * nodes); --extern resource_t *find_compatible_child(resource_t * local_child, resource_t * rsc, -+extern resource_t *find_compatible_child(resource_t * local_child, resource_t * rsc, GListPtr children, - enum rsc_role_e filter, gboolean current); - gboolean is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e filter, gboolean current); - bool assign_node(resource_t * rsc, node_t * node, gboolean force); -- -+enum pe_action_flags summary_action_flags(action_t * action, GListPtr children, node_t * node); - - enum filter_colocation_res { - influence_nothing = 0, --- -1.8.3.1 - - -From e083fa923274c908a8ef4b124a5d7e53caabd7f5 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 16 Jun 2017 14:47:37 +1000 -Subject: [PATCH 5/8] Fix: PE: Default to non-interleaved bundle ordering for - safety - ---- - pengine/container.c | 89 +++++++++++++++++++----- - pengine/test10/bundle-order-partial-start-2.dot | 2 +- - pengine/test10/bundle-order-partial-start-2.exp | 6 +- - pengine/test10/bundle-order-partial-start.dot | 2 +- - pengine/test10/bundle-order-partial-start.exp | 6 +- - pengine/test10/bundle-order-partial-stop.dot | 8 ++- - pengine/test10/bundle-order-partial-stop.exp | 22 ++++-- - pengine/test10/bundle-order-partial-stop.summary | 6 +- - pengine/test10/bundle-order-startup.dot | 5 +- - pengine/test10/bundle-order-startup.exp | 15 ++-- - pengine/test10/bundle-order-stop.dot | 8 ++- - pengine/test10/bundle-order-stop.exp | 22 ++++-- - pengine/test10/bundle-order-stop.summary | 6 +- - 13 files changed, 143 insertions(+), 54 deletions(-) - -diff --git a/pengine/container.c b/pengine/container.c -index f3ea797..adee92a 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -209,13 +209,10 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - - if(tuple->child) { - order_stop_stop(rsc, tuple->child, pe_order_implies_first_printed); -- -- } else { -- order_stop_stop(rsc, tuple->docker, pe_order_implies_first_printed); -- new_rsc_order(tuple->docker, RSC_START, rsc, RSC_STARTED, pe_order_implies_then_printed, data_set); -- new_rsc_order(tuple->docker, RSC_STOP, rsc, RSC_STOPPED, pe_order_implies_then_printed, -- data_set); - } -+ order_stop_stop(rsc, tuple->docker, pe_order_implies_first_printed); -+ new_rsc_order(tuple->docker, RSC_START, rsc, RSC_STARTED, pe_order_implies_then_printed, data_set); -+ new_rsc_order(tuple->docker, RSC_STOP, rsc, RSC_STOPPED, pe_order_implies_then_printed, data_set); - - if(tuple->ip) { - tuple->ip->cmds->internal_constraints(tuple->ip, data_set); -@@ -416,8 +413,8 @@ container_action_flags(action_t * action, node_t * node) - return flags; - } - --enum pe_graph_flags --container_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, -+static enum pe_graph_flags -+container_update_interleave_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, - enum pe_action_flags filter, enum pe_ordering type) - { - gboolean current = FALSE; -@@ -425,22 +422,18 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum - container_variant_data_t *then_data = NULL; - GListPtr containers = NULL; - -- // At the point we need to force container X to stop because -- // resource Y needs to stop, here is where we'd implement that -- crm_trace("%s -> %s", first->uuid, then->uuid); -- if(first->rsc == NULL || then->rsc == NULL) { -- return changed; -- -- } else if(first->rsc->variant != then->rsc->variant) { -- return changed; // For now -- } -- - /* Fix this - lazy */ - if (crm_ends_with(first->uuid, "_stopped_0") - || crm_ends_with(first->uuid, "_demoted_0")) { - current = TRUE; - } - -+ /* Eventually we may want to allow interleaving between bundles -+ * and clones, but for now assert both sides are bundles -+ */ -+ CRM_ASSERT(first->rsc->variant == pe_container); -+ CRM_ASSERT(then->rsc->variant == pe_container); -+ - get_container_variant_data(then_data, then->rsc); - containers = get_container_list(first->rsc); - -@@ -506,6 +499,66 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum - return changed; - } - -+enum pe_graph_flags -+container_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, -+ enum pe_action_flags filter, enum pe_ordering type) -+{ -+ bool interleave = FALSE; -+ enum pe_graph_flags changed = pe_graph_none; -+ -+ crm_trace("%s -> %s", first->uuid, then->uuid); -+ -+ if(first->rsc == NULL || then->rsc == NULL) { -+ return changed; -+ -+ } else if(first->rsc->variant == then->rsc->variant) { -+ // When and how to turn on interleaving? -+ // interleave = TRUE; -+ } -+ -+ if(interleave) { -+ changed = container_update_interleave_actions(first, then, node, flags, filter, type); -+ -+ } else { -+ GListPtr gIter = then->rsc->children; -+ GListPtr containers = NULL; -+ -+ // Handle the 'primitive' ordering case -+ changed |= native_update_actions(first, then, node, flags, filter, type); -+ -+ // Now any children (or containers in the case of a bundle) -+ if(then->rsc->variant == pe_container) { -+ containers = get_container_list(then->rsc); -+ gIter = containers; -+ } -+ -+ for (; gIter != NULL; gIter = gIter->next) { -+ resource_t *then_child = (resource_t *) gIter->data; -+ enum pe_graph_flags then_child_changed = pe_graph_none; -+ action_t *then_child_action = find_first_action(then_child->actions, NULL, then->task, node); -+ -+ if (then_child_action) { -+ enum pe_action_flags then_child_flags = then_child->cmds->action_flags(then_child_action, node); -+ -+ if (is_set(then_child_flags, pe_action_runnable)) { -+ then_child_changed |= -+ then_child->cmds->update_actions(first, then_child_action, node, flags, filter, type); -+ } -+ changed |= then_child_changed; -+ if (then_child_changed & pe_graph_updated_then) { -+ for (GListPtr lpc = then_child_action->actions_after; lpc != NULL; lpc = lpc->next) { -+ action_wrapper_t *next = (action_wrapper_t *) lpc->data; -+ update_action(next->action); -+ } -+ } -+ } -+ } -+ -+ g_list_free(containers); -+ } -+ return changed; -+} -+ - void - container_rsc_location(resource_t * rsc, rsc_to_node_t * constraint) - { -diff --git a/pengine/test10/bundle-order-partial-start-2.dot b/pengine/test10/bundle-order-partial-start-2.dot -index 20afbe6..b5ecaf5 100644 ---- a/pengine/test10/bundle-order-partial-start-2.dot -+++ b/pengine/test10/bundle-order-partial-start-2.dot -@@ -13,6 +13,7 @@ digraph "g" { - "galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle_running_0" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] -@@ -36,7 +37,6 @@ digraph "g" { - "haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] - "haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] --"haproxy-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bundle-order-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp -index 08f5084..a2740d7 100644 ---- a/pengine/test10/bundle-order-partial-start-2.exp -+++ b/pengine/test10/bundle-order-partial-start-2.exp -@@ -90,9 +90,6 @@ - - - -- -- -- - - - -@@ -325,6 +322,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start.dot b/pengine/test10/bundle-order-partial-start.dot -index c36ff04..756acfd 100644 ---- a/pengine/test10/bundle-order-partial-start.dot -+++ b/pengine/test10/bundle-order-partial-start.dot -@@ -10,6 +10,7 @@ digraph "g" { - "galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle_running_0" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] -@@ -30,7 +31,6 @@ digraph "g" { - "haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] - "haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] --"haproxy-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp -index 4a5c01c..ebd5785 100644 ---- a/pengine/test10/bundle-order-partial-start.exp -+++ b/pengine/test10/bundle-order-partial-start.exp -@@ -103,9 +103,6 @@ - - - -- -- -- - - - -@@ -306,6 +303,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-partial-stop.dot b/pengine/test10/bundle-order-partial-stop.dot -index af2493c..c0e6616 100644 ---- a/pengine/test10/bundle-order-partial-stop.dot -+++ b/pengine/test10/bundle-order-partial-stop.dot -@@ -11,7 +11,7 @@ digraph "g" { - "galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "galera-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] --"galera-bundle-docker-0_stop_0 undercloud" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"galera-bundle-docker-0_stop_0 undercloud" -> "galera-bundle_stopped_0" [ style = bold] - "galera-bundle-docker-0_stop_0 undercloud" [ 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] -@@ -40,6 +40,7 @@ digraph "g" { - "galera-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] - "galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = dashed] - "galera-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] -+"galera-bundle_stop_0" -> "galera-bundle-docker-0_stop_0 undercloud" [ 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" [ style=bold color="green" fontcolor="orange"] -@@ -130,9 +131,11 @@ digraph "g" { - "rabbitmq-bundle-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"rabbitmq-bundle-docker-0_stop_0 undercloud" -> "rabbitmq-bundle_stopped_0" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] - "rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] -+"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] - "rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -@@ -151,7 +154,7 @@ digraph "g" { - "redis-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] --"redis-bundle-docker-0_stop_0 undercloud" -> "haproxy-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"redis-bundle-docker-0_stop_0 undercloud" -> "redis-bundle_stopped_0" [ style = bold] - "redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] - "redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] -@@ -181,6 +184,7 @@ digraph "g" { - "redis-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] - "redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] - "redis-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle_stop_0" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] - "redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] - "redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] - "redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -diff --git a/pengine/test10/bundle-order-partial-stop.exp b/pengine/test10/bundle-order-partial-stop.exp -index 02a7372..27ae320 100644 ---- a/pengine/test10/bundle-order-partial-stop.exp -+++ b/pengine/test10/bundle-order-partial-stop.exp -@@ -26,6 +26,9 @@ - - - -+ -+ -+ - - - -@@ -99,6 +102,9 @@ - - - -+ -+ -+ - - - -@@ -173,10 +179,10 @@ - - - -- -+ - - -- -+ - - - -@@ -286,9 +292,6 @@ - - - -- -- -- - - - -@@ -492,6 +495,9 @@ - - - -+ -+ -+ - - - -@@ -599,6 +605,9 @@ - - - -+ -+ -+ - - - -@@ -650,6 +659,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-partial-stop.summary b/pengine/test10/bundle-order-partial-stop.summary -index c341f4c..b30a237 100644 ---- a/pengine/test10/bundle-order-partial-stop.summary -+++ b/pengine/test10/bundle-order-partial-stop.summary -@@ -64,21 +64,21 @@ Executing cluster transition: - * Pseudo action: galera-bundle_demoted_0 - * Pseudo action: galera-bundle_stop_0 - * Pseudo action: rabbitmq-bundle-clone_stopped_0 -- * Pseudo action: rabbitmq-bundle_stopped_0 - * Resource action: rabbitmq-bundle-docker-0 stop on undercloud - * Pseudo action: galera-bundle-master_stop_0 -+ * Pseudo action: rabbitmq-bundle_stopped_0 - * Resource action: galera stop on galera-bundle-0 - * Resource action: galera-bundle-0 stop on undercloud - * Pseudo action: galera-bundle-master_stopped_0 -- * Pseudo action: galera-bundle_stopped_0 - * Resource action: galera-bundle-docker-0 stop on undercloud -+ * Pseudo action: galera-bundle_stopped_0 - * Pseudo action: redis-bundle_stop_0 - * Pseudo action: redis-bundle-master_stop_0 - * Resource action: redis stop on redis-bundle-0 - * Resource action: redis-bundle-0 stop on undercloud - * Pseudo action: redis-bundle-master_stopped_0 -- * Pseudo action: redis-bundle_stopped_0 - * Resource action: redis-bundle-docker-0 stop on undercloud -+ * Pseudo action: redis-bundle_stopped_0 - * Pseudo action: haproxy-bundle_stop_0 - * Resource action: haproxy-bundle-docker-0 stop on undercloud - * Pseudo action: haproxy-bundle_stopped_0 -diff --git a/pengine/test10/bundle-order-startup.dot b/pengine/test10/bundle-order-startup.dot -index 4e60d79..66053b9 100644 ---- a/pengine/test10/bundle-order-startup.dot -+++ b/pengine/test10/bundle-order-startup.dot -@@ -10,6 +10,7 @@ digraph "g" { - "galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle_running_0" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] -@@ -32,7 +33,6 @@ digraph "g" { - "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] --"haproxy-bundle-docker-0_start_0 undercloud" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] - "haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle_running_0" -> "redis-bundle_start_0" [ style = bold] - "haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -@@ -98,6 +98,7 @@ digraph "g" { - "rabbitmq-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle-0_start_0 undercloud" [ style = bold] - "rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle_running_0" [ style = bold] - "rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -@@ -117,9 +118,9 @@ digraph "g" { - "redis-bundle-docker-0_monitor_0 undercloud" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] - "redis-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] --"redis-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] - "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-0_start_0 undercloud" [ style = bold] - "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-docker-0_monitor_60000 undercloud" [ style = bold] -+"redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle_running_0" [ style = bold] - "redis-bundle-docker-0_start_0 undercloud" -> "redis:0_start_0 redis-bundle-0" [ style = bold] - "redis-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-master_running_0" -> "redis-bundle_running_0" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp -index 66ecb08..2128d7c 100644 ---- a/pengine/test10/bundle-order-startup.exp -+++ b/pengine/test10/bundle-order-startup.exp -@@ -176,9 +176,6 @@ - - - -- -- -- - - - -@@ -294,9 +291,6 @@ - - - -- -- -- - - - -@@ -714,6 +708,9 @@ - - - -+ -+ -+ - - - -@@ -765,6 +762,9 @@ - - - -+ -+ -+ - - - -@@ -816,6 +816,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-stop.dot b/pengine/test10/bundle-order-stop.dot -index af2493c..c0e6616 100644 ---- a/pengine/test10/bundle-order-stop.dot -+++ b/pengine/test10/bundle-order-stop.dot -@@ -11,7 +11,7 @@ digraph "g" { - "galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "galera-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] --"galera-bundle-docker-0_stop_0 undercloud" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"galera-bundle-docker-0_stop_0 undercloud" -> "galera-bundle_stopped_0" [ style = bold] - "galera-bundle-docker-0_stop_0 undercloud" [ 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] -@@ -40,6 +40,7 @@ digraph "g" { - "galera-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] - "galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = dashed] - "galera-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] -+"galera-bundle_stop_0" -> "galera-bundle-docker-0_stop_0 undercloud" [ 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" [ style=bold color="green" fontcolor="orange"] -@@ -130,9 +131,11 @@ digraph "g" { - "rabbitmq-bundle-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -+"rabbitmq-bundle-docker-0_stop_0 undercloud" -> "rabbitmq-bundle_stopped_0" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] - "rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] -+"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] - "rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -@@ -151,7 +154,7 @@ digraph "g" { - "redis-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] --"redis-bundle-docker-0_stop_0 undercloud" -> "haproxy-bundle-docker-0_stop_0 undercloud" [ style = bold] -+"redis-bundle-docker-0_stop_0 undercloud" -> "redis-bundle_stopped_0" [ style = bold] - "redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] - "redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] -@@ -181,6 +184,7 @@ digraph "g" { - "redis-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] - "redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] - "redis-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle_stop_0" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] - "redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] - "redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] - "redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -diff --git a/pengine/test10/bundle-order-stop.exp b/pengine/test10/bundle-order-stop.exp -index 02a7372..27ae320 100644 ---- a/pengine/test10/bundle-order-stop.exp -+++ b/pengine/test10/bundle-order-stop.exp -@@ -26,6 +26,9 @@ - - - -+ -+ -+ - - - -@@ -99,6 +102,9 @@ - - - -+ -+ -+ - - - -@@ -173,10 +179,10 @@ - - - -- -+ - - -- -+ - - - -@@ -286,9 +292,6 @@ - - - -- -- -- - - - -@@ -492,6 +495,9 @@ - - - -+ -+ -+ - - - -@@ -599,6 +605,9 @@ - - - -+ -+ -+ - - - -@@ -650,6 +659,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-stop.summary b/pengine/test10/bundle-order-stop.summary -index c341f4c..b30a237 100644 ---- a/pengine/test10/bundle-order-stop.summary -+++ b/pengine/test10/bundle-order-stop.summary -@@ -64,21 +64,21 @@ Executing cluster transition: - * Pseudo action: galera-bundle_demoted_0 - * Pseudo action: galera-bundle_stop_0 - * Pseudo action: rabbitmq-bundle-clone_stopped_0 -- * Pseudo action: rabbitmq-bundle_stopped_0 - * Resource action: rabbitmq-bundle-docker-0 stop on undercloud - * Pseudo action: galera-bundle-master_stop_0 -+ * Pseudo action: rabbitmq-bundle_stopped_0 - * Resource action: galera stop on galera-bundle-0 - * Resource action: galera-bundle-0 stop on undercloud - * Pseudo action: galera-bundle-master_stopped_0 -- * Pseudo action: galera-bundle_stopped_0 - * Resource action: galera-bundle-docker-0 stop on undercloud -+ * Pseudo action: galera-bundle_stopped_0 - * Pseudo action: redis-bundle_stop_0 - * Pseudo action: redis-bundle-master_stop_0 - * Resource action: redis stop on redis-bundle-0 - * Resource action: redis-bundle-0 stop on undercloud - * Pseudo action: redis-bundle-master_stopped_0 -- * Pseudo action: redis-bundle_stopped_0 - * Resource action: redis-bundle-docker-0 stop on undercloud -+ * Pseudo action: redis-bundle_stopped_0 - * Pseudo action: haproxy-bundle_stop_0 - * Resource action: haproxy-bundle-docker-0 stop on undercloud - * Pseudo action: haproxy-bundle_stopped_0 --- -1.8.3.1 - - -From a189db3a8f42ee4817b9b0e1fc128ea64e945130 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 20 Jun 2017 16:19:02 +1000 -Subject: [PATCH 6/8] Feature: PE: Generic ordering for anything with bundles - ---- - pengine/allocate.c | 4 +- - pengine/allocate.h | 3 - - pengine/clone.c | 220 +++------------------------------------- - pengine/container.c | 287 +++++++++++++++++++++++++++++++++++++++++----------- - pengine/master.c | 2 +- - pengine/utils.h | 10 +- - 6 files changed, 250 insertions(+), 276 deletions(-) - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 8f15282..3a95be6 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -79,7 +79,7 @@ resource_alloc_functions_t resource_class_alloc_functions[] = { - clone_rsc_colocation_rh, - clone_rsc_location, - clone_action_flags, -- clone_update_actions, -+ container_update_actions, - clone_expand, - clone_append_meta, - }, -@@ -93,7 +93,7 @@ resource_alloc_functions_t resource_class_alloc_functions[] = { - master_rsc_colocation_rh, - clone_rsc_location, - clone_action_flags, -- clone_update_actions, -+ container_update_actions, - clone_expand, - master_append_meta, - }, -diff --git a/pengine/allocate.h b/pengine/allocate.h -index 9a30b80..4ca5d65 100644 ---- a/pengine/allocate.h -+++ b/pengine/allocate.h -@@ -168,9 +168,6 @@ extern enum pe_graph_flags native_update_actions(action_t * first, action_t * th - extern enum pe_graph_flags group_update_actions(action_t * first, action_t * then, node_t * node, - enum pe_action_flags flags, - enum pe_action_flags filter, enum pe_ordering type); --extern enum pe_graph_flags clone_update_actions(action_t * first, action_t * then, node_t * node, -- enum pe_action_flags flags, -- enum pe_action_flags filter, enum pe_ordering type); - extern enum pe_graph_flags container_update_actions(action_t * first, action_t * then, node_t * node, - enum pe_action_flags flags, - enum pe_action_flags filter, enum pe_ordering type); -diff --git a/pengine/clone.c b/pengine/clone.c -index a79271e..28f368e 100644 ---- a/pengine/clone.c -+++ b/pengine/clone.c -@@ -944,34 +944,6 @@ assign_node(resource_t * rsc, node_t * node, gboolean force) - return changed; - } - --static resource_t * --find_compatible_child_by_node(resource_t * local_child, node_t * local_node, resource_t * rsc, -- GListPtr children, enum rsc_role_e filter, gboolean current) --{ -- GListPtr gIter = NULL; -- -- if (local_node == NULL) { -- crm_err("Can't colocate unrunnable child %s with %s", local_child->id, rsc->id); -- return NULL; -- } -- -- crm_trace("Looking for compatible child from %s for %s on %s", -- local_child->id, rsc->id, local_node->details->uname); -- -- for (gIter = children; gIter != NULL; gIter = gIter->next) { -- resource_t *child_rsc = (resource_t *) gIter->data; -- -- if(is_child_compatible(child_rsc, local_node, filter, current)) { -- crm_trace("Pairing %s with %s on %s", -- local_child->id, child_rsc->id, local_node->details->uname); -- return child_rsc; -- } -- } -- -- crm_trace("Can't pair %s with %s", local_child->id, rsc->id); -- return NULL; --} -- - gboolean - is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e filter, gboolean current) - { -@@ -1002,7 +974,7 @@ is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e - } - - resource_t * --find_compatible_child(resource_t * local_child, resource_t * rsc, GListPtr children, enum rsc_role_e filter, gboolean current) -+find_compatible_child(resource_t * local_child, resource_t * rsc, enum rsc_role_e filter, gboolean current) - { - resource_t *pair = NULL; - GListPtr gIter = NULL; -@@ -1011,7 +983,7 @@ find_compatible_child(resource_t * local_child, resource_t * rsc, GListPtr child - - local_node = local_child->fns->location(local_child, NULL, current); - if (local_node) { -- return find_compatible_child_by_node(local_child, local_node, rsc, children, filter, current); -+ return find_compatible_child_by_node(local_child, local_node, rsc, filter, current); - } - - scratch = g_hash_table_get_values(local_child->allowed_nodes); -@@ -1021,7 +993,7 @@ find_compatible_child(resource_t * local_child, resource_t * rsc, GListPtr child - for (; gIter != NULL; gIter = gIter->next) { - node_t *node = (node_t *) gIter->data; - -- pair = find_compatible_child_by_node(local_child, node, rsc, children, filter, current); -+ pair = find_compatible_child_by_node(local_child, node, rsc, filter, current); - if (pair) { - goto done; - } -@@ -1048,29 +1020,26 @@ clone_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation - { - GListPtr gIter = NULL; - gboolean do_interleave = FALSE; -- clone_variant_data_t *clone_data = NULL; -- clone_variant_data_t *clone_data_lh = NULL; -+ const char *interleave_s = NULL; - - CRM_CHECK(constraint != NULL, return); - CRM_CHECK(rsc_lh != NULL, pe_err("rsc_lh was NULL for %s", constraint->id); return); - CRM_CHECK(rsc_rh != NULL, pe_err("rsc_rh was NULL for %s", constraint->id); return); - CRM_CHECK(rsc_lh->variant == pe_native, return); - -- get_clone_variant_data(clone_data, constraint->rsc_rh); - pe_rsc_trace(rsc_rh, "Processing constraint %s: %s -> %s %d", - constraint->id, rsc_lh->id, rsc_rh->id, constraint->score); - -- if (pe_rsc_is_clone(constraint->rsc_lh)) { -- -- get_clone_variant_data(clone_data_lh, constraint->rsc_lh); -- if (clone_data_lh->interleave -- && clone_data->clone_node_max != clone_data_lh->clone_node_max) { -- crm_config_err("Cannot interleave " XML_CIB_TAG_INCARNATION " %s and %s because" -- " they do not support the same number of" " resources per node", -+ /* only the LHS side needs to be labeled as interleave */ -+ interleave_s = g_hash_table_lookup(constraint->rsc_lh->meta, XML_RSC_ATTR_INTERLEAVE); -+ if(crm_is_true(interleave_s) && constraint->rsc_lh->variant > pe_group) { -+ // TODO: Do we actually care about multiple RH copies sharing a LH copy anymore? -+ if (copies_per_node(constraint->rsc_lh) != copies_per_node(constraint->rsc_rh)) { -+ crm_config_err("Cannot interleave %s and %s because" -+ " they do not support the same number of copies per node", - constraint->rsc_lh->id, constraint->rsc_rh->id); - -- /* only the LHS side needs to be labeled as interleave */ -- } else if (clone_data_lh->interleave) { -+ } else { - do_interleave = TRUE; - } - } -@@ -1082,7 +1051,7 @@ clone_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation - } else if (do_interleave) { - resource_t *rh_child = NULL; - -- rh_child = find_compatible_child(rsc_lh, rsc_rh, rsc_rh->children, RSC_ROLE_UNKNOWN, FALSE); -+ rh_child = find_compatible_child(rsc_lh, rsc_rh, RSC_ROLE_UNKNOWN, FALSE); - - if (rh_child) { - pe_rsc_debug(rsc_rh, "Pairing %s with %s", rsc_lh->id, rh_child->id); -@@ -1125,7 +1094,7 @@ clone_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation - } - } - --static enum action_tasks -+enum action_tasks - clone_child_action(action_t * action) - { - enum action_tasks result = no_action; -@@ -1225,167 +1194,6 @@ clone_action_flags(action_t * action, node_t * node) - return summary_action_flags(action, action->rsc->children, node); - } - --static enum pe_graph_flags --clone_update_actions_interleave(action_t * first, action_t * then, node_t * node, -- enum pe_action_flags flags, enum pe_action_flags filter, -- enum pe_ordering type) --{ -- gboolean current = FALSE; -- resource_t *first_child = NULL; -- GListPtr gIter = then->rsc->children; -- enum pe_graph_flags changed = pe_graph_none; /*pe_graph_disable */ -- -- enum action_tasks task = clone_child_action(first); -- const char *first_task = task2text(task); -- -- /* Fix this - lazy */ -- if (crm_ends_with(first->uuid, "_stopped_0") -- || crm_ends_with(first->uuid, "_demoted_0")) { -- current = TRUE; -- } -- -- for (; gIter != NULL; gIter = gIter->next) { -- resource_t *then_child = (resource_t *) gIter->data; -- -- CRM_ASSERT(then_child != NULL); -- first_child = find_compatible_child(then_child, first->rsc, first->rsc->children, RSC_ROLE_UNKNOWN, current); -- if (first_child == NULL && current) { -- crm_trace("Ignore"); -- -- } else if (first_child == NULL) { -- crm_debug("No match found for %s (%d / %s / %s)", then_child->id, current, first->uuid, -- then->uuid); -- -- /* Me no like this hack - but what else can we do? -- * -- * If there is no-one active or about to be active -- * on the same node as then_child, then they must -- * not be allowed to start -- */ -- if (type & (pe_order_runnable_left | pe_order_implies_then) /* Mandatory */ ) { -- pe_rsc_info(then->rsc, "Inhibiting %s from being active", then_child->id); -- if(assign_node(then_child, NULL, TRUE)) { -- changed |= pe_graph_updated_then; -- } -- } -- -- } else { -- action_t *first_action = NULL; -- action_t *then_action = NULL; -- -- pe_rsc_debug(then->rsc, "Pairing %s with %s", first_child->id, then_child->id); -- -- first_action = find_first_action(first_child->actions, NULL, first_task, node); -- then_action = find_first_action(then_child->actions, NULL, then->task, node); -- -- if (first_action == NULL) { -- if (is_not_set(first_child->flags, pe_rsc_orphan) -- && crm_str_eq(first_task, RSC_STOP, TRUE) == FALSE -- && crm_str_eq(first_task, RSC_DEMOTE, TRUE) == FALSE) { -- crm_err("Internal error: No action found for %s in %s (first)", -- first_task, first_child->id); -- -- } else { -- crm_trace("No action found for %s in %s%s (first)", -- first_task, first_child->id, -- is_set(first_child->flags, pe_rsc_orphan) ? " (ORPHAN)" : ""); -- } -- continue; -- } -- -- /* We're only interested if 'then' is neither stopping nor being demoted */ -- if (then_action == NULL) { -- if (is_not_set(then_child->flags, pe_rsc_orphan) -- && crm_str_eq(then->task, RSC_STOP, TRUE) == FALSE -- && crm_str_eq(then->task, RSC_DEMOTE, TRUE) == FALSE) { -- crm_err("Internal error: No action found for %s in %s (then)", -- then->task, then_child->id); -- -- } else { -- crm_trace("No action found for %s in %s%s (then)", -- then->task, then_child->id, -- is_set(then_child->flags, pe_rsc_orphan) ? " (ORPHAN)" : ""); -- } -- continue; -- } -- -- if (order_actions(first_action, then_action, type)) { -- crm_debug("Created constraint for %s -> %s", first_action->uuid, then_action->uuid); -- changed |= (pe_graph_updated_first | pe_graph_updated_then); -- } -- changed |= -- then_child->cmds->update_actions(first_action, then_action, node, -- first_child->cmds->action_flags(first_action, -- node), filter, -- type); -- } -- } -- return changed; --} -- --enum pe_graph_flags --clone_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, -- enum pe_action_flags filter, enum pe_ordering type) --{ -- const char *rsc = "none"; -- gboolean interleave = FALSE; -- enum pe_graph_flags changed = pe_graph_none; -- -- if (first->rsc != then->rsc -- && pe_rsc_is_clone(first->rsc) -- && pe_rsc_is_clone(then->rsc)) { -- clone_variant_data_t *clone_data = NULL; -- -- if (crm_ends_with(then->uuid, "_stop_0") -- || crm_ends_with(then->uuid, "_demote_0")) { -- get_clone_variant_data(clone_data, first->rsc); -- rsc = first->rsc->id; -- } else { -- get_clone_variant_data(clone_data, then->rsc); -- rsc = then->rsc->id; -- } -- interleave = clone_data->interleave; -- } -- -- crm_trace("Interleave %s -> %s: %s (based on %s)", -- first->uuid, then->uuid, interleave ? "yes" : "no", rsc); -- -- if (interleave) { -- changed = clone_update_actions_interleave(first, then, node, flags, filter, type); -- -- } else if (then->rsc) { -- GListPtr gIter = then->rsc->children; -- -- changed |= native_update_actions(first, then, node, flags, filter, type); -- -- for (; gIter != NULL; gIter = gIter->next) { -- enum pe_graph_flags child_changed = pe_graph_none; -- GListPtr lpc = NULL; -- resource_t *child = (resource_t *) gIter->data; -- action_t *child_action = find_first_action(child->actions, NULL, then->task, node); -- -- if (child_action) { -- enum pe_action_flags child_flags = child->cmds->action_flags(child_action, node); -- -- if (is_set(child_flags, pe_action_runnable)) { -- -- child_changed |= -- child->cmds->update_actions(first, child_action, node, flags, filter, type); -- } -- changed |= child_changed; -- if (child_changed & pe_graph_updated_then) { -- for (lpc = child_action->actions_after; lpc != NULL; lpc = lpc->next) { -- action_wrapper_t *other = (action_wrapper_t *) lpc->data; -- update_action(other->action); -- } -- } -- } -- } -- } -- -- return changed; --} -- - void - clone_rsc_location(resource_t * rsc, rsc_to_node_t * constraint) - { -diff --git a/pengine/container.c b/pengine/container.c -index adee92a..f742660 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -47,14 +47,33 @@ static GListPtr get_container_list(resource_t *rsc) - GListPtr containers = NULL; - container_variant_data_t *data = NULL; - -- get_container_variant_data(data, rsc); -- for (GListPtr gIter = data->tuples; gIter != NULL; gIter = gIter->next) { -- container_grouping_t *tuple = (container_grouping_t *)gIter->data; -- containers = g_list_append(containers, tuple->docker); -+ if(rsc->variant == pe_container) { -+ get_container_variant_data(data, rsc); -+ for (GListPtr gIter = data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ containers = g_list_append(containers, tuple->docker); -+ } - } - return containers; - } - -+static GListPtr get_containers_or_children(resource_t *rsc) -+{ -+ GListPtr containers = NULL; -+ container_variant_data_t *data = NULL; -+ -+ if(rsc->variant == pe_container) { -+ get_container_variant_data(data, rsc); -+ for (GListPtr gIter = data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ containers = g_list_append(containers, tuple->docker); -+ } -+ return containers; -+ } else { -+ return rsc->children; -+ } -+} -+ - node_t * - container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - { -@@ -337,6 +356,39 @@ container_rsc_colocation_lh(resource_t * rsc, resource_t * rsc_rh, rsc_colocatio - CRM_ASSERT(FALSE); - } - -+int copies_per_node(resource_t * rsc) -+{ -+ /* Strictly speaking, there should be a 'copies_per_node' addition -+ * to the resource function table and each case would be a -+ * function. However that would be serious overkill to return an -+ * int. In fact, it seems to me that both function tables -+ * could/should be replaced by resources.{c,h} full of -+ * rsc_{some_operation} functions containing a switch as below -+ * which calls out to functions named {variant}_{some_operation} -+ * as needed. -+ */ -+ switch(rsc->variant) { -+ case pe_unknown: -+ return 0; -+ case pe_native: -+ case pe_group: -+ return 1; -+ case pe_clone: -+ case pe_master: -+ { -+ const char *max_clones_node = g_hash_table_lookup(rsc->meta, XML_RSC_ATTR_INCARNATION_NODEMAX); -+ return crm_parse_int(max_clones_node, "1"); -+ } -+ case pe_container: -+ { -+ container_variant_data_t *data = NULL; -+ get_container_variant_data(data, rsc); -+ return data->replicas_per_host; -+ } -+ } -+ return 0; -+} -+ - void - container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc, rsc_colocation_t * constraint) - { -@@ -346,6 +398,7 @@ container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc, rsc_colocatio - CRM_CHECK(constraint != NULL, return); - CRM_CHECK(rsc_lh != NULL, pe_err("rsc_lh was NULL for %s", constraint->id); return); - CRM_CHECK(rsc != NULL, pe_err("rsc was NULL for %s", constraint->id); return); -+ CRM_ASSERT(rsc_lh->variant == pe_native); - - if (is_set(rsc->flags, pe_rsc_provisional)) { - pe_rsc_trace(rsc, "%s is still provisional", rsc->id); -@@ -413,14 +466,65 @@ container_action_flags(action_t * action, node_t * node) - return flags; - } - -+resource_t * -+find_compatible_child_by_node(resource_t * local_child, node_t * local_node, resource_t * rsc, -+ enum rsc_role_e filter, gboolean current) -+{ -+ GListPtr gIter = NULL; -+ GListPtr children = NULL; -+ -+ if (local_node == NULL) { -+ crm_err("Can't colocate unrunnable child %s with %s", local_child->id, rsc->id); -+ return NULL; -+ } -+ -+ crm_trace("Looking for compatible child from %s for %s on %s", -+ local_child->id, rsc->id, local_node->details->uname); -+ -+ children = get_containers_or_children(rsc); -+ for (gIter = children; gIter != NULL; gIter = gIter->next) { -+ resource_t *child_rsc = (resource_t *) gIter->data; -+ -+ if(is_child_compatible(child_rsc, local_node, filter, current)) { -+ crm_trace("Pairing %s with %s on %s", -+ local_child->id, child_rsc->id, local_node->details->uname); -+ return child_rsc; -+ } -+ } -+ -+ crm_trace("Can't pair %s with %s", local_child->id, rsc->id); -+ if(children != rsc->children) { -+ g_list_free(children); -+ } -+ return NULL; -+} -+ -+static container_grouping_t * -+tuple_for_docker(resource_t *rsc, resource_t *docker, node_t *node) -+{ -+ if(rsc->variant == pe_container) { -+ container_variant_data_t *data = NULL; -+ get_container_variant_data(data, rsc); -+ for (GListPtr gIter = data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ if(tuple->child -+ && docker == tuple->docker -+ && node->details == tuple->node->details) { -+ return tuple; -+ } -+ } -+ } -+ return NULL; -+} -+ - static enum pe_graph_flags - container_update_interleave_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, - enum pe_action_flags filter, enum pe_ordering type) - { -+ GListPtr gIter = NULL; -+ GListPtr children = NULL; - gboolean current = FALSE; - enum pe_graph_flags changed = pe_graph_none; -- container_variant_data_t *then_data = NULL; -- GListPtr containers = NULL; - - /* Fix this - lazy */ - if (crm_ends_with(first->uuid, "_stopped_0") -@@ -428,27 +532,15 @@ container_update_interleave_actions(action_t * first, action_t * then, node_t * - current = TRUE; - } - -- /* Eventually we may want to allow interleaving between bundles -- * and clones, but for now assert both sides are bundles -- */ -- CRM_ASSERT(first->rsc->variant == pe_container); -- CRM_ASSERT(then->rsc->variant == pe_container); -- -- get_container_variant_data(then_data, then->rsc); -- containers = get_container_list(first->rsc); -- -- for (GListPtr gIter = then_data->tuples; gIter != NULL; gIter = gIter->next) { -- container_grouping_t *tuple = (container_grouping_t *)gIter->data; -- -- /* We can't do the then_data->child->children trick here, -- * since the node's wont match -- */ -- resource_t *first_child = find_compatible_child(tuple->docker, first->rsc, containers, RSC_ROLE_UNKNOWN, current); -+ children = get_containers_or_children(then->rsc); -+ for (gIter = children; gIter != NULL; gIter = gIter->next) { -+ resource_t *then_child = (resource_t *) gIter->data; -+ resource_t *first_child = find_compatible_child(then_child, first->rsc, RSC_ROLE_UNKNOWN, current); - if (first_child == NULL && current) { - crm_trace("Ignore"); - - } else if (first_child == NULL) { -- crm_debug("No match found for %s (%d / %s / %s)", tuple->docker->id, current, first->uuid, then->uuid); -+ crm_debug("No match found for %s (%d / %s / %s)", then_child->id, current, first->uuid, then->uuid); - - /* Me no like this hack - but what else can we do? - * -@@ -457,25 +549,76 @@ container_update_interleave_actions(action_t * first, action_t * then, node_t * - * not be allowed to start - */ - if (type & (pe_order_runnable_left | pe_order_implies_then) /* Mandatory */ ) { -- pe_rsc_info(then->rsc, "Inhibiting %s from being active", tuple->docker->id); -- if(assign_node(tuple->docker, NULL, TRUE)) { -+ pe_rsc_info(then->rsc, "Inhibiting %s from being active", then_child->id); -+ if(assign_node(then_child, NULL, TRUE)) { - changed |= pe_graph_updated_then; - } - } - - } else { -- enum action_tasks task = get_complex_task(first_child, first->task, TRUE); -+ pe_action_t *first_action = NULL; -+ pe_action_t *then_action = NULL; - -- /* Potentially we might want to invovle first_data->child -- * if present, however we mostly just need the "you need -- * to stop" signal to flow back up the ordering chain via -- * the docker resources which are always present -- * -- * Almost certain to break if first->task or then->task is -- * promote or demote -- */ -- pe_action_t *first_action = find_first_action(first_child->actions, NULL, task2text(task), node); -- pe_action_t *then_action = find_first_action(tuple->docker->actions, NULL, then->task, node); -+ enum action_tasks task = clone_child_action(first); -+ const char *first_task = task2text(task); -+ -+ container_grouping_t *first_tuple = tuple_for_docker(first->rsc, first_child, node); -+ container_grouping_t *then_tuple = tuple_for_docker(then->rsc, then_child, node); -+ -+ if(strstr(first->task, "stop") && first_tuple && first_tuple->child) { -+ /* Except for 'stopped' we should be looking at the -+ * in-container resource, actions for the child will -+ * happen later and are therefor more likely to align -+ * with the user's intent. -+ */ -+ first_action = find_first_action(first_tuple->child->actions, NULL, task2text(task), node); -+ } else { -+ first_action = find_first_action(first_child->actions, NULL, task2text(task), node); -+ } -+ -+ if(strstr(then->task, "mote") && then_tuple && then_tuple->child) { -+ /* Promote/demote actions will never be found for the -+ * docker resource, look in the child instead -+ * -+ * Alternatively treat: -+ * 'XXXX then promote YYYY' as 'XXXX then start container for YYYY', and -+ * 'demote XXXX then stop YYYY' as 'stop container for XXXX then stop YYYY' -+ */ -+ then_action = find_first_action(then_tuple->child->actions, NULL, then->task, node); -+ } else { -+ then_action = find_first_action(then_child->actions, NULL, then->task, node); -+ } -+ -+ if (first_action == NULL) { -+ if (is_not_set(first_child->flags, pe_rsc_orphan) -+ && crm_str_eq(first_task, RSC_STOP, TRUE) == FALSE -+ && crm_str_eq(first_task, RSC_DEMOTE, TRUE) == FALSE) { -+ crm_err("Internal error: No action found for %s in %s (first)", -+ first_task, first_child->id); -+ -+ } else { -+ crm_trace("No action found for %s in %s%s (first)", -+ first_task, first_child->id, -+ is_set(first_child->flags, pe_rsc_orphan) ? " (ORPHAN)" : ""); -+ } -+ continue; -+ } -+ -+ /* We're only interested if 'then' is neither stopping nor being demoted */ -+ if (then_action == NULL) { -+ if (is_not_set(then_child->flags, pe_rsc_orphan) -+ && crm_str_eq(then->task, RSC_STOP, TRUE) == FALSE -+ && crm_str_eq(then->task, RSC_DEMOTE, TRUE) == FALSE) { -+ crm_err("Internal error: No action found for %s in %s (then)", -+ then->task, then_child->id); -+ -+ } else { -+ crm_trace("No action found for %s in %s%s (then)", -+ then->task, then_child->id, -+ is_set(then_child->flags, pe_rsc_orphan) ? " (ORPHAN)" : ""); -+ } -+ continue; -+ } - - if (order_actions(first_action, then_action, type)) { - crm_debug("Created constraint for %s (%d) -> %s (%d) %.6x", -@@ -484,55 +627,75 @@ container_update_interleave_actions(action_t * first, action_t * then, node_t * - changed |= (pe_graph_updated_first | pe_graph_updated_then); - } - if(first_action && then_action) { -- changed |= tuple->docker->cmds->update_actions(first_action, then_action, node, -- first_child->cmds->action_flags(first_action, node), -- filter, type); -+ changed |= then_child->cmds->update_actions(first_action, then_action, node, -+ first_child->cmds->action_flags(first_action, node), -+ filter, type); - } else { - crm_err("Nothing found either for %s (%p) or %s (%p) %s", - first_child->id, first_action, -- tuple->docker->id, then_action, task2text(task)); -+ then_child->id, then_action, task2text(task)); - } - } - } - -- g_list_free(containers); -+ if(children != then->rsc->children) { -+ g_list_free(children); -+ } - return changed; - } - -+bool can_interleave_actions(pe_action_t *first, pe_action_t *then) -+{ -+ bool interleave = FALSE; -+ resource_t *rsc = NULL; -+ const char *interleave_s = NULL; -+ -+ if(first->rsc == NULL || then->rsc == NULL) { -+ crm_trace("Not interleaving %s with %s (both must be resources)", first->uuid, then->uuid); -+ return FALSE; -+ } else if(first->rsc == then->rsc) { -+ crm_trace("Not interleaving %s with %s (must belong to different resources)", first->uuid, then->uuid); -+ return FALSE; -+ } else if(first->rsc->variant < pe_clone || then->rsc->variant < pe_clone) { -+ crm_trace("Not interleaving %s with %s (both sides must be clones, masters, or bundles)", first->uuid, then->uuid); -+ return FALSE; -+ } -+ -+ if (crm_ends_with(then->uuid, "_stop_0") || crm_ends_with(then->uuid, "_demote_0")) { -+ rsc = first->rsc; -+ } else { -+ rsc = then->rsc; -+ } -+ -+ interleave_s = g_hash_table_lookup(rsc->meta, XML_RSC_ATTR_INTERLEAVE); -+ interleave = crm_is_true(interleave_s); -+ crm_trace("Interleave %s -> %s: %s (based on %s)", -+ first->uuid, then->uuid, interleave ? "yes" : "no", rsc->id); -+ -+ return interleave; -+} -+ - enum pe_graph_flags - container_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, - enum pe_action_flags filter, enum pe_ordering type) - { -- bool interleave = FALSE; - enum pe_graph_flags changed = pe_graph_none; - - crm_trace("%s -> %s", first->uuid, then->uuid); - -- if(first->rsc == NULL || then->rsc == NULL) { -- return changed; -- -- } else if(first->rsc->variant == then->rsc->variant) { -- // When and how to turn on interleaving? -- // interleave = TRUE; -- } -- -- if(interleave) { -+ if(can_interleave_actions(first, then)) { - changed = container_update_interleave_actions(first, then, node, flags, filter, type); - -- } else { -- GListPtr gIter = then->rsc->children; -- GListPtr containers = NULL; -+ } else if(then->rsc) { -+ GListPtr gIter = NULL; -+ GListPtr children = NULL; - - // Handle the 'primitive' ordering case - changed |= native_update_actions(first, then, node, flags, filter, type); - - // Now any children (or containers in the case of a bundle) -- if(then->rsc->variant == pe_container) { -- containers = get_container_list(then->rsc); -- gIter = containers; -- } -- -- for (; gIter != NULL; gIter = gIter->next) { -+ children = get_containers_or_children(then->rsc); -+ for (gIter = children; gIter != NULL; gIter = gIter->next) { - resource_t *then_child = (resource_t *) gIter->data; - enum pe_graph_flags then_child_changed = pe_graph_none; - action_t *then_child_action = find_first_action(then_child->actions, NULL, then->task, node); -@@ -554,7 +717,9 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum - } - } - -- g_list_free(containers); -+ if(children != then->rsc->children) { -+ g_list_free(children); -+ } - } - return changed; - } -diff --git a/pengine/master.c b/pengine/master.c -index c15e740..8c39f49 100644 ---- a/pengine/master.c -+++ b/pengine/master.c -@@ -1022,7 +1022,7 @@ master_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocatio - g_list_free(rhs); - - } else if (constraint->role_lh == RSC_ROLE_MASTER) { -- resource_t *rh_child = find_compatible_child(rsc_lh, rsc_rh, rsc_rh->children, constraint->role_rh, FALSE); -+ resource_t *rh_child = find_compatible_child(rsc_lh, rsc_rh, constraint->role_rh, FALSE); - - if (rh_child == NULL && constraint->score >= INFINITY) { - pe_rsc_trace(rsc_lh, "%s can't be promoted %s", rsc_lh->id, constraint->id); -diff --git a/pengine/utils.h b/pengine/utils.h -index 1421166..7a788f7 100644 ---- a/pengine/utils.h -+++ b/pengine/utils.h -@@ -49,12 +49,16 @@ void native_deallocate(resource_t * rsc); - extern void log_action(unsigned int log_level, const char *pre_text, - action_t * action, gboolean details); - --extern gboolean can_run_any(GHashTable * nodes); --extern resource_t *find_compatible_child(resource_t * local_child, resource_t * rsc, GListPtr children, -- enum rsc_role_e filter, gboolean current); -+gboolean can_run_any(GHashTable * nodes); -+bool can_interleave_actions(pe_action_t *first, pe_action_t *then); -+resource_t *find_compatible_child(resource_t * local_child, resource_t * rsc, enum rsc_role_e filter, gboolean current); -+resource_t *find_compatible_child_by_node(resource_t * local_child, node_t * local_node, resource_t * rsc, -+ enum rsc_role_e filter, gboolean current); - gboolean is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e filter, gboolean current); - bool assign_node(resource_t * rsc, node_t * node, gboolean force); - enum pe_action_flags summary_action_flags(action_t * action, GListPtr children, node_t * node); -+enum action_tasks clone_child_action(action_t * action); -+int copies_per_node(resource_t * rsc); - - enum filter_colocation_res { - influence_nothing = 0, --- -1.8.3.1 - - -From 879a52ce9f4288fde5c19d2fb677e5ad51e6c4af Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 23 Jun 2017 13:16:57 +1000 -Subject: [PATCH 7/8] Test: PE: Generic ordering for anything with bundles - ---- - lib/pengine/container.c | 14 +- - pengine/regression.sh | 5 +- - pengine/test10/bundle-order-startup-clone-2.dot | 335 ++++ - pengine/test10/bundle-order-startup-clone-2.exp | 1697 ++++++++++++++++++++ - pengine/test10/bundle-order-startup-clone-2.scores | 584 +++++++ - .../test10/bundle-order-startup-clone-2.summary | 179 +++ - pengine/test10/bundle-order-startup-clone-2.xml | 190 +++ - pengine/test10/bundle-order-startup-clone.dot | 119 ++ - pengine/test10/bundle-order-startup-clone.exp | 327 ++++ - pengine/test10/bundle-order-startup-clone.scores | 174 ++ - pengine/test10/bundle-order-startup-clone.summary | 69 + - pengine/test10/bundle-order-startup-clone.xml | 187 +++ - pengine/test10/bundle-order-stop-clone.dot | 80 + - pengine/test10/bundle-order-stop-clone.exp | 345 ++++ - pengine/test10/bundle-order-stop-clone.scores | 591 +++++++ - pengine/test10/bundle-order-stop-clone.summary | 75 + - pengine/test10/bundle-order-stop-clone.xml | 398 +++++ - 17 files changed, 5366 insertions(+), 3 deletions(-) - create mode 100644 pengine/test10/bundle-order-startup-clone-2.dot - create mode 100644 pengine/test10/bundle-order-startup-clone-2.exp - create mode 100644 pengine/test10/bundle-order-startup-clone-2.scores - create mode 100644 pengine/test10/bundle-order-startup-clone-2.summary - create mode 100644 pengine/test10/bundle-order-startup-clone-2.xml - create mode 100644 pengine/test10/bundle-order-startup-clone.dot - create mode 100644 pengine/test10/bundle-order-startup-clone.exp - create mode 100644 pengine/test10/bundle-order-startup-clone.scores - create mode 100644 pengine/test10/bundle-order-startup-clone.summary - create mode 100644 pengine/test10/bundle-order-startup-clone.xml - create mode 100644 pengine/test10/bundle-order-stop-clone.dot - create mode 100644 pengine/test10/bundle-order-stop-clone.exp - create mode 100644 pengine/test10/bundle-order-stop-clone.scores - create mode 100644 pengine/test10/bundle-order-stop-clone.summary - create mode 100644 pengine/test10/bundle-order-stop-clone.xml - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index cf81253..6e98e6f 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -727,8 +727,6 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - } - - container_data->child = new_rsc; -- container_data->child->orig_xml = xml_obj; // Also the trigger for common_free() -- // to free xml_resource as container_data->child->xml - - mount = calloc(1, sizeof(container_mount_t)); - mount->source = strdup(DEFAULT_REMOTE_KEY_LOCATION); -@@ -1035,17 +1033,25 @@ tuple_free(container_grouping_t *tuple) - - if(tuple->ip) { - tuple->ip->fns->free(tuple->ip); -+ tuple->ip->xml = NULL; -+ free_xml(tuple->ip->xml); - tuple->ip = NULL; - } - if(tuple->child) { -+ free_xml(tuple->child->xml); -+ tuple->child->xml = NULL; - tuple->child->fns->free(tuple->child); - tuple->child = NULL; - } - if(tuple->docker) { -+ free_xml(tuple->docker->xml); -+ tuple->docker->xml = NULL; - tuple->docker->fns->free(tuple->docker); - tuple->docker = NULL; - } - if(tuple->remote) { -+ free_xml(tuple->remote->xml); -+ tuple->remote->xml = NULL; - tuple->remote->fns->free(tuple->remote); - tuple->remote = NULL; - } -@@ -1073,9 +1079,13 @@ container_free(resource_t * rsc) - free(container_data->docker_run_command); - free(container_data->docker_host_options); - -+ if(container_data->child) { -+ free_xml(container_data->child->xml); -+ } - g_list_free_full(container_data->tuples, (GDestroyNotify)tuple_free); - g_list_free_full(container_data->mounts, (GDestroyNotify)mount_free); - g_list_free_full(container_data->ports, (GDestroyNotify)port_free); -+ g_list_free(rsc->children); - common_free(rsc); - } - -diff --git a/pengine/regression.sh b/pengine/regression.sh -index e97b54b..b844bb9 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -23,7 +23,6 @@ core=`dirname $0` - create_mode="true" - info Generating test outputs for these tests... - # do_test file description -- - info Done. - echo "" - -@@ -808,6 +807,10 @@ do_test bundle-order-partial-start-2 "Bundle startup ordering when some dependan - 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-startup-clone "Prevent startup because bundle isn't promoted" -+do_test bundle-order-startup-clone-2 "Bundle startup with clones" -+do_test bundle-order-stop-clone "Stop bundle because clone is stopping" -+ - echo "" - do_test whitebox-fail1 "Fail whitebox container rsc." - do_test whitebox-fail2 "Fail whitebox container rsc lrmd connection." -diff --git a/pengine/test10/bundle-order-startup-clone-2.dot b/pengine/test10/bundle-order-startup-clone-2.dot -new file mode 100644 -index 0000000..af90261 ---- /dev/null -+++ b/pengine/test10/bundle-order-startup-clone-2.dot -@@ -0,0 +1,335 @@ -+digraph "g" { -+"galera-bundle-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_start_0 metal-1" -> "galera-bundle-0_monitor_60000 metal-1" [ style = bold] -+"galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] -+"galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] -+"galera-bundle-0_start_0 metal-1" -> "galera:0_start_0 galera-bundle-0" [ style = bold] -+"galera-bundle-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-1_start_0 metal-2" -> "galera-bundle-1_monitor_60000 metal-2" [ style = bold] -+"galera-bundle-1_start_0 metal-2" -> "galera:1_monitor_20000 galera-bundle-1" [ style = bold] -+"galera-bundle-1_start_0 metal-2" -> "galera:1_monitor_30000 galera-bundle-1" [ style = bold] -+"galera-bundle-1_start_0 metal-2" -> "galera:1_start_0 galera-bundle-1" [ style = bold] -+"galera-bundle-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-2_start_0 metal-3" -> "galera-bundle-2_monitor_60000 metal-3" [ style = bold] -+"galera-bundle-2_start_0 metal-3" -> "galera:2_monitor_20000 galera-bundle-2" [ style = bold] -+"galera-bundle-2_start_0 metal-3" -> "galera:2_monitor_30000 galera-bundle-2" [ style = bold] -+"galera-bundle-2_start_0 metal-3" -> "galera:2_start_0 galera-bundle-2" [ style = bold] -+"galera-bundle-2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] -+"galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] -+"galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] -+"galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] -+"galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] -+"galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] -+"galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = bold] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-docker-0_monitor_60000 metal-1" [ style = bold] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle_running_0" [ style = bold] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera:0_start_0 galera-bundle-0" [ style = bold] -+"galera-bundle-docker-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] -+"galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] -+"galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] -+"galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] -+"galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] -+"galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] -+"galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle-1_start_0 metal-2" [ style = bold] -+"galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle-docker-1_monitor_60000 metal-2" [ style = bold] -+"galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle_running_0" [ style = bold] -+"galera-bundle-docker-1_start_0 metal-2" -> "galera:1_start_0 galera-bundle-1" [ style = bold] -+"galera-bundle-docker-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] -+"galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] -+"galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] -+"galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] -+"galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] -+"galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] -+"galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle-docker-2_monitor_60000 metal-3" [ style = bold] -+"galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle_running_0" [ style = bold] -+"galera-bundle-docker-2_start_0 metal-3" -> "galera:2_start_0 galera-bundle-2" [ style = bold] -+"galera-bundle-docker-2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"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:0_start_0 galera-bundle-0" [ style = bold] -+"galera-bundle-master_start_0" -> "galera:1_start_0 galera-bundle-1" [ style = bold] -+"galera-bundle-master_start_0" -> "galera:2_start_0 galera-bundle-2" [ style = bold] -+"galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] -+"galera-bundle_start_0" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] -+"galera-bundle_start_0" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] -+"galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"galera:0_monitor_20000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"galera:0_monitor_30000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = bold] -+"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] -+"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] -+"galera:0_start_0 galera-bundle-0" -> "galera:1_start_0 galera-bundle-1" [ style = bold] -+"galera:0_start_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"galera:1_monitor_20000 galera-bundle-1" [ style=bold color="green" fontcolor="black"] -+"galera:1_monitor_30000 galera-bundle-1" [ style=bold color="green" fontcolor="black"] -+"galera:1_start_0 galera-bundle-1" -> "galera-bundle-master_running_0" [ style = bold] -+"galera:1_start_0 galera-bundle-1" -> "galera:1_monitor_20000 galera-bundle-1" [ style = bold] -+"galera:1_start_0 galera-bundle-1" -> "galera:1_monitor_30000 galera-bundle-1" [ style = bold] -+"galera:1_start_0 galera-bundle-1" -> "galera:2_start_0 galera-bundle-2" [ style = bold] -+"galera:1_start_0 galera-bundle-1" [ style=bold color="green" fontcolor="black"] -+"galera:2_monitor_20000 galera-bundle-2" [ style=bold color="green" fontcolor="black"] -+"galera:2_monitor_30000 galera-bundle-2" [ style=bold color="green" fontcolor="black"] -+"galera:2_start_0 galera-bundle-2" -> "galera-bundle-master_running_0" [ style = bold] -+"galera:2_start_0 galera-bundle-2" -> "galera:2_monitor_20000 galera-bundle-2" [ style = bold] -+"galera:2_start_0 galera-bundle-2" -> "galera:2_monitor_30000 galera-bundle-2" [ style = bold] -+"galera:2_start_0 galera-bundle-2" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_0 metal-1" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 metal-1" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 metal-1" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_0 metal-2" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 metal-2" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 metal-2" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_0 metal-3" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 metal-3" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 metal-3" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_start_0 metal-1" -> "haproxy-bundle-docker-0_monitor_60000 metal-1" [ style = bold] -+"haproxy-bundle-docker-0_start_0 metal-1" -> "haproxy-bundle_running_0" [ style = bold] -+"haproxy-bundle-docker-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-1_monitor_0 metal-1" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] -+"haproxy-bundle-docker-1_monitor_0 metal-1" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] -+"haproxy-bundle-docker-1_monitor_0 metal-1" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] -+"haproxy-bundle-docker-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-1_monitor_0 metal-2" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] -+"haproxy-bundle-docker-1_monitor_0 metal-2" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] -+"haproxy-bundle-docker-1_monitor_0 metal-2" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] -+"haproxy-bundle-docker-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-1_monitor_0 metal-3" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] -+"haproxy-bundle-docker-1_monitor_0 metal-3" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] -+"haproxy-bundle-docker-1_monitor_0 metal-3" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] -+"haproxy-bundle-docker-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-1_start_0 metal-2" -> "haproxy-bundle-docker-1_monitor_60000 metal-2" [ style = bold] -+"haproxy-bundle-docker-1_start_0 metal-2" -> "haproxy-bundle_running_0" [ style = bold] -+"haproxy-bundle-docker-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-2_monitor_0 metal-1" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] -+"haproxy-bundle-docker-2_monitor_0 metal-1" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] -+"haproxy-bundle-docker-2_monitor_0 metal-1" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] -+"haproxy-bundle-docker-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-2_monitor_0 metal-2" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] -+"haproxy-bundle-docker-2_monitor_0 metal-2" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] -+"haproxy-bundle-docker-2_monitor_0 metal-2" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] -+"haproxy-bundle-docker-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-2_monitor_0 metal-3" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] -+"haproxy-bundle-docker-2_monitor_0 metal-3" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] -+"haproxy-bundle-docker-2_monitor_0 metal-3" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] -+"haproxy-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-2_start_0 metal-3" -> "haproxy-bundle-docker-2_monitor_60000 metal-3" [ style = bold] -+"haproxy-bundle-docker-2_start_0 metal-3" -> "haproxy-bundle_running_0" [ style = bold] -+"haproxy-bundle-docker-2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle_running_0" -> "storage-clone_start_0" [ style = bold] -+"haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] -+"haproxy-bundle_start_0" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] -+"haproxy-bundle_start_0" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] -+"haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_start_0 metal-1" -> "redis-bundle-0_monitor_60000 metal-1" [ style = bold] -+"redis-bundle-0_start_0 metal-1" -> "redis:0_monitor_20000 redis-bundle-0" [ style = bold] -+"redis-bundle-0_start_0 metal-1" -> "redis:0_promote_0 redis-bundle-0" [ style = bold] -+"redis-bundle-0_start_0 metal-1" -> "redis:0_start_0 redis-bundle-0" [ style = bold] -+"redis-bundle-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-1_start_0 metal-2" -> "redis-bundle-1_monitor_60000 metal-2" [ style = bold] -+"redis-bundle-1_start_0 metal-2" -> "redis:1_monitor_20000 redis-bundle-1" [ style = bold] -+"redis-bundle-1_start_0 metal-2" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] -+"redis-bundle-1_start_0 metal-2" -> "redis:1_start_0 redis-bundle-1" [ style = bold] -+"redis-bundle-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-2_start_0 metal-3" -> "redis-bundle-2_monitor_60000 metal-3" [ style = bold] -+"redis-bundle-2_start_0 metal-3" -> "redis:2_monitor_20000 redis-bundle-2" [ style = bold] -+"redis-bundle-2_start_0 metal-3" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] -+"redis-bundle-2_start_0 metal-3" -> "redis:2_start_0 redis-bundle-2" [ style = bold] -+"redis-bundle-2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle-0_start_0 metal-1" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle-docker-0_monitor_60000 metal-1" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle_running_0" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-1" -> "redis:0_promote_0 redis-bundle-0" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-1" -> "redis:0_start_0 redis-bundle-0" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] -+"redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] -+"redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] -+"redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle-1_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle-docker-1_monitor_60000 metal-2" [ style = bold] -+"redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle_running_0" [ style = bold] -+"redis-bundle-docker-1_start_0 metal-2" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] -+"redis-bundle-docker-1_start_0 metal-2" -> "redis:1_start_0 redis-bundle-1" [ style = bold] -+"redis-bundle-docker-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] -+"redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] -+"redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] -+"redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle-docker-2_monitor_60000 metal-3" [ style = bold] -+"redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle_running_0" [ style = bold] -+"redis-bundle-docker-2_start_0 metal-3" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] -+"redis-bundle-docker-2_start_0 metal-3" -> "redis:2_start_0 redis-bundle-2" [ style = bold] -+"redis-bundle-docker-2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-master_promote_0" -> "redis:0_promote_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_promote_0" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] -+"redis-bundle-master_promote_0" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] -+"redis-bundle-master_promote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_promoted_0" -> "redis-bundle_promoted_0" [ style = bold] -+"redis-bundle-master_promoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_running_0" -> "redis-bundle-master_promote_0" [ style = bold] -+"redis-bundle-master_running_0" -> "redis-bundle_running_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:0_start_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_start_0" -> "redis:1_start_0 redis-bundle-1" [ style = bold] -+"redis-bundle-master_start_0" -> "redis:2_start_0 redis-bundle-2" [ 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" -> "storage-clone_start_0" [ style = bold] -+"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-0_start_0 metal-1" [ style = bold] -+"redis-bundle_start_0" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] -+"redis-bundle_start_0" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = bold] -+"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis:0_monitor_20000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis:0_promote_0 redis-bundle-0" -> "redis-bundle-master_promoted_0" [ style = bold] -+"redis:0_promote_0 redis-bundle-0" -> "redis:0_monitor_20000 redis-bundle-0" [ style = bold] -+"redis:0_promote_0 redis-bundle-0" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] -+"redis:0_promote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis:0_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = bold] -+"redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_20000 redis-bundle-0" [ style = bold] -+"redis:0_start_0 redis-bundle-0" -> "redis:0_promote_0 redis-bundle-0" [ style = bold] -+"redis:0_start_0 redis-bundle-0" -> "redis:1_start_0 redis-bundle-1" [ style = bold] -+"redis:0_start_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis:1_monitor_20000 redis-bundle-1" [ style=bold color="green" fontcolor="black"] -+"redis:1_promote_0 redis-bundle-1" -> "redis-bundle-master_promoted_0" [ style = bold] -+"redis:1_promote_0 redis-bundle-1" -> "redis:1_monitor_20000 redis-bundle-1" [ style = bold] -+"redis:1_promote_0 redis-bundle-1" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] -+"redis:1_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_20000 redis-bundle-1" [ style = bold] -+"redis:1_start_0 redis-bundle-1" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] -+"redis:1_start_0 redis-bundle-1" -> "redis:2_start_0 redis-bundle-2" [ style = bold] -+"redis:1_start_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] -+"redis:2_monitor_20000 redis-bundle-2" [ style=bold color="green" fontcolor="black"] -+"redis:2_promote_0 redis-bundle-2" -> "redis-bundle-master_promoted_0" [ style = bold] -+"redis:2_promote_0 redis-bundle-2" -> "redis:2_monitor_20000 redis-bundle-2" [ style = bold] -+"redis:2_promote_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] -+"redis:2_start_0 redis-bundle-2" -> "redis-bundle-master_running_0" [ style = bold] -+"redis:2_start_0 redis-bundle-2" -> "redis:2_monitor_20000 redis-bundle-2" [ style = bold] -+"redis:2_start_0 redis-bundle-2" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] -+"redis:2_start_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] -+"storage-clone_confirmed-post_notify_running_0" -> "galera-bundle_start_0" [ style = bold] -+"storage-clone_confirmed-post_notify_running_0" -> "storage:0_monitor_30000 metal-1" [ style = bold] -+"storage-clone_confirmed-post_notify_running_0" -> "storage:1_monitor_30000 metal-2" [ style = bold] -+"storage-clone_confirmed-post_notify_running_0" -> "storage:2_monitor_30000 metal-3" [ style = bold] -+"storage-clone_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"storage-clone_confirmed-pre_notify_start_0" -> "storage-clone_post_notify_running_0" [ style = bold] -+"storage-clone_confirmed-pre_notify_start_0" -> "storage-clone_start_0" [ style = bold] -+"storage-clone_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] -+"storage-clone_post_notify_running_0" -> "storage-clone_confirmed-post_notify_running_0" [ style = bold] -+"storage-clone_post_notify_running_0" -> "storage:0_post_notify_start_0 metal-1" [ style = bold] -+"storage-clone_post_notify_running_0" -> "storage:1_post_notify_start_0 metal-2" [ style = bold] -+"storage-clone_post_notify_running_0" -> "storage:2_post_notify_start_0 metal-3" [ style = bold] -+"storage-clone_post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"storage-clone_pre_notify_start_0" -> "storage-clone_confirmed-pre_notify_start_0" [ style = bold] -+"storage-clone_pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] -+"storage-clone_running_0" -> "storage-clone_post_notify_running_0" [ style = bold] -+"storage-clone_running_0" [ style=bold color="green" fontcolor="orange"] -+"storage-clone_start_0" -> "storage-clone_running_0" [ style = bold] -+"storage-clone_start_0" -> "storage:0_start_0 metal-1" [ style = bold] -+"storage-clone_start_0" -> "storage:1_start_0 metal-2" [ style = bold] -+"storage-clone_start_0" -> "storage:2_start_0 metal-3" [ style = bold] -+"storage-clone_start_0" [ style=bold color="green" fontcolor="orange"] -+"storage:0_monitor_0 metal-1" -> "storage-clone_start_0" [ style = bold] -+"storage:0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"storage:0_monitor_30000 metal-1" [ style=bold color="green" fontcolor="black"] -+"storage:0_post_notify_start_0 metal-1" -> "storage-clone_confirmed-post_notify_running_0" [ style = bold] -+"storage:0_post_notify_start_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"storage:0_start_0 metal-1" -> "storage-clone_running_0" [ style = bold] -+"storage:0_start_0 metal-1" -> "storage:0_monitor_30000 metal-1" [ style = bold] -+"storage:0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"storage:1_monitor_0 metal-2" -> "storage-clone_start_0" [ style = bold] -+"storage:1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"storage:1_monitor_30000 metal-2" [ style=bold color="green" fontcolor="black"] -+"storage:1_post_notify_start_0 metal-2" -> "storage-clone_confirmed-post_notify_running_0" [ style = bold] -+"storage:1_post_notify_start_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"storage:1_start_0 metal-2" -> "storage-clone_running_0" [ style = bold] -+"storage:1_start_0 metal-2" -> "storage:1_monitor_30000 metal-2" [ style = bold] -+"storage:1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"storage:2_monitor_0 metal-3" -> "storage-clone_start_0" [ style = bold] -+"storage:2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"storage:2_monitor_30000 metal-3" [ style=bold color="green" fontcolor="black"] -+"storage:2_post_notify_start_0 metal-3" -> "storage-clone_confirmed-post_notify_running_0" [ style = bold] -+"storage:2_post_notify_start_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"storage:2_start_0 metal-3" -> "storage-clone_running_0" [ style = bold] -+"storage:2_start_0 metal-3" -> "storage:2_monitor_30000 metal-3" [ style = bold] -+"storage:2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] -+} -diff --git a/pengine/test10/bundle-order-startup-clone-2.exp b/pengine/test10/bundle-order-startup-clone-2.exp -new file mode 100644 -index 0000000..d05eb96 ---- /dev/null -+++ b/pengine/test10/bundle-order-startup-clone-2.exp -@@ -0,0 +1,1697 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-startup-clone-2.scores b/pengine/test10/bundle-order-startup-clone-2.scores -new file mode 100644 -index 0000000..493cd87 ---- /dev/null -+++ b/pengine/test10/bundle-order-startup-clone-2.scores -@@ -0,0 +1,584 @@ -+Allocation scores: -+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 metal-1: -INFINITY -+clone_color: galera-bundle-master allocation score on metal-2: -INFINITY -+clone_color: galera-bundle-master allocation score on metal-3: -INFINITY -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:0 allocation score on metal-1: -INFINITY -+clone_color: galera:0 allocation score on metal-2: -INFINITY -+clone_color: galera:0 allocation score on metal-3: -INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-1: INFINITY -+clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:1 allocation score on metal-1: -INFINITY -+clone_color: galera:1 allocation score on metal-2: -INFINITY -+clone_color: galera:1 allocation score on metal-3: -INFINITY -+clone_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-2: INFINITY -+clone_color: galera:2 allocation score on metal-1: -INFINITY -+clone_color: galera:2 allocation score on metal-2: -INFINITY -+clone_color: galera:2 allocation score on metal-3: -INFINITY -+clone_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY -+clone_color: redis-bundle-master allocation score on metal-1: -INFINITY -+clone_color: redis-bundle-master allocation score on metal-2: -INFINITY -+clone_color: redis-bundle-master allocation score on metal-3: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -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 galera-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-1: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-2: -INFINITY -+clone_color: redis:0 allocation score on metal-1: -INFINITY -+clone_color: redis:0 allocation score on metal-2: -INFINITY -+clone_color: redis:0 allocation score on metal-3: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-0: INFINITY -+clone_color: redis:0 allocation score on redis-bundle-1: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-2: -INFINITY -+clone_color: redis:1 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:1 allocation score on galera-bundle-1: -INFINITY -+clone_color: redis:1 allocation score on galera-bundle-2: -INFINITY -+clone_color: redis:1 allocation score on metal-1: -INFINITY -+clone_color: redis:1 allocation score on metal-2: -INFINITY -+clone_color: redis:1 allocation score on metal-3: -INFINITY -+clone_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:1 allocation score on redis-bundle-0: -INFINITY -+clone_color: redis:1 allocation score on redis-bundle-1: INFINITY -+clone_color: redis:1 allocation score on redis-bundle-2: -INFINITY -+clone_color: redis:2 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:2 allocation score on galera-bundle-1: -INFINITY -+clone_color: redis:2 allocation score on galera-bundle-2: -INFINITY -+clone_color: redis:2 allocation score on metal-1: -INFINITY -+clone_color: redis:2 allocation score on metal-2: -INFINITY -+clone_color: redis:2 allocation score on metal-3: -INFINITY -+clone_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:2 allocation score on redis-bundle-0: -INFINITY -+clone_color: redis:2 allocation score on redis-bundle-1: -INFINITY -+clone_color: redis:2 allocation score on redis-bundle-2: INFINITY -+clone_color: storage-clone allocation score on metal-1: 0 -+clone_color: storage-clone allocation score on metal-2: 0 -+clone_color: storage-clone allocation score on metal-3: 0 -+clone_color: storage-clone allocation score on rabbitmq-bundle-0: 0 -+clone_color: storage:0 allocation score on metal-1: 0 -+clone_color: storage:0 allocation score on metal-2: 0 -+clone_color: storage:0 allocation score on metal-3: 0 -+clone_color: storage:0 allocation score on rabbitmq-bundle-0: 0 -+clone_color: storage:1 allocation score on metal-1: 0 -+clone_color: storage:1 allocation score on metal-2: 0 -+clone_color: storage:1 allocation score on metal-3: 0 -+clone_color: storage:1 allocation score on rabbitmq-bundle-0: 0 -+clone_color: storage:2 allocation score on metal-1: 0 -+clone_color: storage:2 allocation score on metal-2: 0 -+clone_color: storage:2 allocation score on metal-3: 0 -+clone_color: storage:2 allocation score on rabbitmq-bundle-0: 0 -+clone_color: storage:3 allocation score on metal-1: 0 -+clone_color: storage:3 allocation score on metal-2: 0 -+clone_color: storage:3 allocation score on metal-3: 0 -+clone_color: storage:3 allocation score on rabbitmq-bundle-0: 0 -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle allocation score on metal-1: 0 -+container_color: galera-bundle allocation score on metal-2: 0 -+container_color: galera-bundle allocation score on metal-3: 0 -+container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-0 allocation score on metal-1: 0 -+container_color: galera-bundle-0 allocation score on metal-2: 0 -+container_color: galera-bundle-0 allocation score on metal-3: 0 -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-1 allocation score on metal-1: 0 -+container_color: galera-bundle-1 allocation score on metal-2: 0 -+container_color: galera-bundle-1 allocation score on metal-3: 0 -+container_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-2 allocation score on metal-1: 0 -+container_color: galera-bundle-2 allocation score on metal-2: 0 -+container_color: galera-bundle-2 allocation score on metal-3: 0 -+container_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on metal-1: 0 -+container_color: galera-bundle-docker-0 allocation score on metal-2: 0 -+container_color: galera-bundle-docker-0 allocation score on metal-3: 0 -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on metal-1: 0 -+container_color: galera-bundle-docker-1 allocation score on metal-2: 0 -+container_color: galera-bundle-docker-1 allocation score on metal-3: 0 -+container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on metal-1: 0 -+container_color: galera-bundle-docker-2 allocation score on metal-2: 0 -+container_color: galera-bundle-docker-2 allocation score on metal-3: 0 -+container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+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 metal-1: 0 -+container_color: galera-bundle-master allocation score on metal-2: 0 -+container_color: galera-bundle-master allocation score on metal-3: 0 -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: 0 -+container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:0 allocation score on metal-1: 0 -+container_color: galera:0 allocation score on metal-2: 0 -+container_color: galera:0 allocation score on metal-3: 0 -+container_color: galera:0 allocation score on rabbitmq-bundle-0: 0 -+container_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:1 allocation score on metal-1: 0 -+container_color: galera:1 allocation score on metal-2: 0 -+container_color: galera:1 allocation score on metal-3: 0 -+container_color: galera:1 allocation score on rabbitmq-bundle-0: 0 -+container_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:2 allocation score on metal-1: 0 -+container_color: galera:2 allocation score on metal-2: 0 -+container_color: galera:2 allocation score on metal-3: 0 -+container_color: galera:2 allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on metal-1: 0 -+container_color: haproxy-bundle allocation score on metal-1: 0 -+container_color: haproxy-bundle allocation score on metal-1: 0 -+container_color: haproxy-bundle allocation score on metal-1: 0 -+container_color: haproxy-bundle allocation score on metal-2: 0 -+container_color: haproxy-bundle allocation score on metal-2: 0 -+container_color: haproxy-bundle allocation score on metal-2: 0 -+container_color: haproxy-bundle allocation score on metal-2: 0 -+container_color: haproxy-bundle allocation score on metal-3: 0 -+container_color: haproxy-bundle allocation score on metal-3: 0 -+container_color: haproxy-bundle allocation score on metal-3: 0 -+container_color: haproxy-bundle allocation score on metal-3: 0 -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on metal-1: 0 -+container_color: haproxy-bundle-docker-1 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-1 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-1 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-1 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-1: 0 -+container_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-2 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-2 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-2 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-2 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: 0 -+container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle allocation score on metal-1: 0 -+container_color: redis-bundle allocation score on metal-2: 0 -+container_color: redis-bundle allocation score on metal-3: 0 -+container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-0 allocation score on metal-1: 0 -+container_color: redis-bundle-0 allocation score on metal-2: 0 -+container_color: redis-bundle-0 allocation score on metal-3: 0 -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-1 allocation score on metal-1: 0 -+container_color: redis-bundle-1 allocation score on metal-2: 0 -+container_color: redis-bundle-1 allocation score on metal-3: 0 -+container_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-2 allocation score on metal-1: 0 -+container_color: redis-bundle-2 allocation score on metal-2: 0 -+container_color: redis-bundle-2 allocation score on metal-3: 0 -+container_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on metal-1: 0 -+container_color: redis-bundle-docker-0 allocation score on metal-2: 0 -+container_color: redis-bundle-docker-0 allocation score on metal-3: 0 -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on metal-1: 0 -+container_color: redis-bundle-docker-1 allocation score on metal-2: 0 -+container_color: redis-bundle-docker-1 allocation score on metal-3: 0 -+container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on metal-1: 0 -+container_color: redis-bundle-docker-2 allocation score on metal-2: 0 -+container_color: redis-bundle-docker-2 allocation score on metal-3: 0 -+container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-master allocation score on metal-1: 0 -+container_color: redis-bundle-master allocation score on metal-2: 0 -+container_color: redis-bundle-master allocation score on metal-3: 0 -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: 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 galera-bundle-0: -INFINITY -+container_color: redis:0 allocation score on galera-bundle-1: -INFINITY -+container_color: redis:0 allocation score on galera-bundle-2: -INFINITY -+container_color: redis:0 allocation score on metal-1: 0 -+container_color: redis:0 allocation score on metal-2: 0 -+container_color: redis:0 allocation score on metal-3: 0 -+container_color: redis:0 allocation score on rabbitmq-bundle-0: 0 -+container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-2: -INFINITY -+container_color: redis:1 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:1 allocation score on galera-bundle-1: -INFINITY -+container_color: redis:1 allocation score on galera-bundle-2: -INFINITY -+container_color: redis:1 allocation score on metal-1: 0 -+container_color: redis:1 allocation score on metal-2: 0 -+container_color: redis:1 allocation score on metal-3: 0 -+container_color: redis:1 allocation score on rabbitmq-bundle-0: 0 -+container_color: redis:1 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-2: -INFINITY -+container_color: redis:2 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:2 allocation score on galera-bundle-1: -INFINITY -+container_color: redis:2 allocation score on galera-bundle-2: -INFINITY -+container_color: redis:2 allocation score on metal-1: 0 -+container_color: redis:2 allocation score on metal-2: 0 -+container_color: redis:2 allocation score on metal-3: 0 -+container_color: redis:2 allocation score on rabbitmq-bundle-0: 0 -+container_color: redis:2 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:2 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:2 allocation score on redis-bundle-2: -INFINITY -+galera:0 promotion score on galera-bundle-0: -1 -+galera:1 promotion score on galera-bundle-1: -1 -+galera:2 promotion score on galera-bundle-2: -1 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-0 allocation score on metal-1: 10000 -+native_color: galera-bundle-0 allocation score on metal-2: 0 -+native_color: galera-bundle-0 allocation score on metal-3: 0 -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-1 allocation score on metal-1: 0 -+native_color: galera-bundle-1 allocation score on metal-2: 10000 -+native_color: galera-bundle-1 allocation score on metal-3: 0 -+native_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-2 allocation score on metal-1: 0 -+native_color: galera-bundle-2 allocation score on metal-2: 0 -+native_color: galera-bundle-2 allocation score on metal-3: 10000 -+native_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on metal-1: 0 -+native_color: galera-bundle-docker-0 allocation score on metal-2: 0 -+native_color: galera-bundle-docker-0 allocation score on metal-3: 0 -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on metal-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on metal-2: 0 -+native_color: galera-bundle-docker-1 allocation score on metal-3: 0 -+native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on metal-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on metal-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on metal-3: 0 -+native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:0 allocation score on metal-1: -INFINITY -+native_color: galera:0 allocation score on metal-2: -INFINITY -+native_color: galera:0 allocation score on metal-3: -INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-1: INFINITY -+native_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:1 allocation score on metal-1: -INFINITY -+native_color: galera:1 allocation score on metal-2: -INFINITY -+native_color: galera:1 allocation score on metal-3: -INFINITY -+native_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-2: INFINITY -+native_color: galera:2 allocation score on metal-1: -INFINITY -+native_color: galera:2 allocation score on metal-2: -INFINITY -+native_color: galera:2 allocation score on metal-3: -INFINITY -+native_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 -+native_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+native_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on metal-2: 0 -+native_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 -+native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on metal-3: 0 -+native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-0 allocation score on metal-1: 10000 -+native_color: redis-bundle-0 allocation score on metal-2: 0 -+native_color: redis-bundle-0 allocation score on metal-3: 0 -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-1 allocation score on metal-1: 0 -+native_color: redis-bundle-1 allocation score on metal-2: 10000 -+native_color: redis-bundle-1 allocation score on metal-3: 0 -+native_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-2 allocation score on metal-1: 0 -+native_color: redis-bundle-2 allocation score on metal-2: 0 -+native_color: redis-bundle-2 allocation score on metal-3: 10000 -+native_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on metal-1: 0 -+native_color: redis-bundle-docker-0 allocation score on metal-2: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on metal-3: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on metal-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on metal-2: 0 -+native_color: redis-bundle-docker-1 allocation score on metal-3: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on metal-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on metal-2: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on metal-3: 0 -+native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-1: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-2: -INFINITY -+native_color: redis:0 allocation score on metal-1: -INFINITY -+native_color: redis:0 allocation score on metal-2: -INFINITY -+native_color: redis:0 allocation score on metal-3: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-0: INFINITY -+native_color: redis:0 allocation score on redis-bundle-1: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-2: -INFINITY -+native_color: redis:1 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:1 allocation score on galera-bundle-1: -INFINITY -+native_color: redis:1 allocation score on galera-bundle-2: -INFINITY -+native_color: redis:1 allocation score on metal-1: -INFINITY -+native_color: redis:1 allocation score on metal-2: -INFINITY -+native_color: redis:1 allocation score on metal-3: -INFINITY -+native_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:1 allocation score on redis-bundle-0: -INFINITY -+native_color: redis:1 allocation score on redis-bundle-1: INFINITY -+native_color: redis:1 allocation score on redis-bundle-2: -INFINITY -+native_color: redis:2 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:2 allocation score on galera-bundle-1: -INFINITY -+native_color: redis:2 allocation score on galera-bundle-2: -INFINITY -+native_color: redis:2 allocation score on metal-1: -INFINITY -+native_color: redis:2 allocation score on metal-2: -INFINITY -+native_color: redis:2 allocation score on metal-3: -INFINITY -+native_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:2 allocation score on redis-bundle-0: -INFINITY -+native_color: redis:2 allocation score on redis-bundle-1: -INFINITY -+native_color: redis:2 allocation score on redis-bundle-2: INFINITY -+native_color: storage:0 allocation score on metal-1: 0 -+native_color: storage:0 allocation score on metal-2: 0 -+native_color: storage:0 allocation score on metal-3: 0 -+native_color: storage:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: storage:1 allocation score on metal-1: -INFINITY -+native_color: storage:1 allocation score on metal-2: 0 -+native_color: storage:1 allocation score on metal-3: 0 -+native_color: storage:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: storage:2 allocation score on metal-1: -INFINITY -+native_color: storage:2 allocation score on metal-2: -INFINITY -+native_color: storage:2 allocation score on metal-3: 0 -+native_color: storage:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: storage:3 allocation score on metal-1: -INFINITY -+native_color: storage:3 allocation score on metal-2: -INFINITY -+native_color: storage:3 allocation score on metal-3: -INFINITY -+native_color: storage:3 allocation score on rabbitmq-bundle-0: -INFINITY -+redis:0 promotion score on redis-bundle-0: 99 -+redis:1 promotion score on redis-bundle-1: 99 -+redis:2 promotion score on redis-bundle-2: 99 -diff --git a/pengine/test10/bundle-order-startup-clone-2.summary b/pengine/test10/bundle-order-startup-clone-2.summary -new file mode 100644 -index 0000000..e23d933 ---- /dev/null -+++ b/pengine/test10/bundle-order-startup-clone-2.summary -@@ -0,0 +1,179 @@ -+ -+Current cluster status: -+Online: [ metal-1 metal-2 metal-3 ] -+RemoteOFFLINE: [ rabbitmq-bundle-0 ] -+ -+ Clone Set: storage-clone [storage] -+ Stopped: [ metal-1 metal-2 metal-3 rabbitmq-bundle-0 ] -+ Docker container set: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped -+ galera-bundle-1 (ocf::heartbeat:galera): Stopped -+ galera-bundle-2 (ocf::heartbeat:galera): Stopped -+ Docker container set: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped -+ haproxy-bundle-docker-1 (ocf::heartbeat:docker): Stopped -+ haproxy-bundle-docker-2 (ocf::heartbeat:docker): Stopped -+ Docker container set: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Stopped -+ redis-bundle-1 (ocf::heartbeat:redis): Stopped -+ redis-bundle-2 (ocf::heartbeat:redis): Stopped -+ -+Transition Summary: -+ * Start storage:0 (metal-1) -+ * Start storage:1 (metal-2) -+ * Start storage:2 (metal-3) -+ * Start galera-bundle-docker-0 (metal-1) -+ * Start galera-bundle-0 (metal-1) -+ * Start galera:0 (galera-bundle-0) -+ * Start galera-bundle-docker-1 (metal-2) -+ * Start galera-bundle-1 (metal-2) -+ * Start galera:1 (galera-bundle-1) -+ * Start galera-bundle-docker-2 (metal-3) -+ * Start galera-bundle-2 (metal-3) -+ * Start galera:2 (galera-bundle-2) -+ * Start haproxy-bundle-docker-0 (metal-1) -+ * Start haproxy-bundle-docker-1 (metal-2) -+ * Start haproxy-bundle-docker-2 (metal-3) -+ * Start redis-bundle-docker-0 (metal-1) -+ * Start redis-bundle-0 (metal-1) -+ * Start redis:0 (redis-bundle-0) -+ * Promote redis:0 (Stopped -> Master redis-bundle-0) -+ * Start redis-bundle-docker-1 (metal-2) -+ * Start redis-bundle-1 (metal-2) -+ * Start redis:1 (redis-bundle-1) -+ * Promote redis:1 (Stopped -> Master redis-bundle-1) -+ * Start redis-bundle-docker-2 (metal-3) -+ * Start redis-bundle-2 (metal-3) -+ * Start redis:2 (redis-bundle-2) -+ * Promote redis:2 (Stopped -> Master redis-bundle-2) -+ -+Executing cluster transition: -+ * Resource action: storage:0 monitor on metal-1 -+ * Resource action: storage:1 monitor on metal-2 -+ * Resource action: storage:2 monitor on metal-3 -+ * Pseudo action: storage-clone_pre_notify_start_0 -+ * Resource action: galera-bundle-docker-0 monitor on metal-3 -+ * Resource action: galera-bundle-docker-0 monitor on metal-2 -+ * Resource action: galera-bundle-docker-0 monitor on metal-1 -+ * Resource action: galera-bundle-docker-1 monitor on metal-3 -+ * Resource action: galera-bundle-docker-1 monitor on metal-2 -+ * Resource action: galera-bundle-docker-1 monitor on metal-1 -+ * Resource action: galera-bundle-docker-2 monitor on metal-3 -+ * Resource action: galera-bundle-docker-2 monitor on metal-2 -+ * Resource action: galera-bundle-docker-2 monitor on metal-1 -+ * Resource action: haproxy-bundle-docker-0 monitor on metal-3 -+ * Resource action: haproxy-bundle-docker-0 monitor on metal-2 -+ * Resource action: haproxy-bundle-docker-0 monitor on metal-1 -+ * Resource action: haproxy-bundle-docker-1 monitor on metal-3 -+ * Resource action: haproxy-bundle-docker-1 monitor on metal-2 -+ * Resource action: haproxy-bundle-docker-1 monitor on metal-1 -+ * Resource action: haproxy-bundle-docker-2 monitor on metal-3 -+ * Resource action: haproxy-bundle-docker-2 monitor on metal-2 -+ * Resource action: haproxy-bundle-docker-2 monitor on metal-1 -+ * Resource action: redis-bundle-docker-0 monitor on metal-3 -+ * Resource action: redis-bundle-docker-0 monitor on metal-2 -+ * Resource action: redis-bundle-docker-0 monitor on metal-1 -+ * Resource action: redis-bundle-docker-1 monitor on metal-3 -+ * Resource action: redis-bundle-docker-1 monitor on metal-2 -+ * Resource action: redis-bundle-docker-1 monitor on metal-1 -+ * Resource action: redis-bundle-docker-2 monitor on metal-3 -+ * Resource action: redis-bundle-docker-2 monitor on metal-2 -+ * Resource action: redis-bundle-docker-2 monitor on metal-1 -+ * Pseudo action: redis-bundle_start_0 -+ * Pseudo action: haproxy-bundle_start_0 -+ * Pseudo action: storage-clone_confirmed-pre_notify_start_0 -+ * Resource action: haproxy-bundle-docker-0 start on metal-1 -+ * Resource action: haproxy-bundle-docker-1 start on metal-2 -+ * Resource action: haproxy-bundle-docker-2 start on metal-3 -+ * Resource action: redis-bundle-docker-0 start on metal-1 -+ * Resource action: redis-bundle-0 start on metal-1 -+ * Resource action: redis-bundle-docker-1 start on metal-2 -+ * Resource action: redis-bundle-1 start on metal-2 -+ * Resource action: redis-bundle-docker-2 start on metal-3 -+ * Resource action: redis-bundle-2 start on metal-3 -+ * Pseudo action: redis-bundle-master_start_0 -+ * Pseudo action: haproxy-bundle_running_0 -+ * Resource action: haproxy-bundle-docker-0 monitor=60000 on metal-1 -+ * Resource action: haproxy-bundle-docker-1 monitor=60000 on metal-2 -+ * Resource action: haproxy-bundle-docker-2 monitor=60000 on metal-3 -+ * Resource action: redis:0 start on redis-bundle-0 -+ * Resource action: redis-bundle-docker-0 monitor=60000 on metal-1 -+ * Resource action: redis-bundle-0 monitor=60000 on metal-1 -+ * Resource action: redis:1 start on redis-bundle-1 -+ * Resource action: redis-bundle-docker-1 monitor=60000 on metal-2 -+ * Resource action: redis-bundle-1 monitor=60000 on metal-2 -+ * Resource action: redis:2 start on redis-bundle-2 -+ * Resource action: redis-bundle-docker-2 monitor=60000 on metal-3 -+ * Resource action: redis-bundle-2 monitor=60000 on metal-3 -+ * Pseudo action: redis-bundle-master_running_0 -+ * Pseudo action: redis-bundle_running_0 -+ * Pseudo action: redis-bundle_promote_0 -+ * Pseudo action: redis-bundle-master_promote_0 -+ * Resource action: redis:0 promote on redis-bundle-0 -+ * Resource action: redis:1 promote on redis-bundle-1 -+ * Resource action: redis:2 promote on redis-bundle-2 -+ * Pseudo action: redis-bundle-master_promoted_0 -+ * Resource action: redis:0 monitor=20000 on redis-bundle-0 -+ * Resource action: redis:1 monitor=20000 on redis-bundle-1 -+ * Resource action: redis:2 monitor=20000 on redis-bundle-2 -+ * Pseudo action: redis-bundle_promoted_0 -+ * Pseudo action: storage-clone_start_0 -+ * Resource action: storage:0 start on metal-1 -+ * Resource action: storage:1 start on metal-2 -+ * Resource action: storage:2 start on metal-3 -+ * Pseudo action: storage-clone_running_0 -+ * Pseudo action: storage-clone_post_notify_running_0 -+ * Resource action: storage:0 notify on metal-1 -+ * Resource action: storage:1 notify on metal-2 -+ * Resource action: storage:2 notify on metal-3 -+ * Pseudo action: storage-clone_confirmed-post_notify_running_0 -+ * Pseudo action: galera-bundle_start_0 -+ * Resource action: storage:0 monitor=30000 on metal-1 -+ * Resource action: storage:1 monitor=30000 on metal-2 -+ * Resource action: storage:2 monitor=30000 on metal-3 -+ * Resource action: galera-bundle-docker-0 start on metal-1 -+ * Resource action: galera-bundle-0 start on metal-1 -+ * Resource action: galera-bundle-docker-1 start on metal-2 -+ * Resource action: galera-bundle-1 start on metal-2 -+ * Resource action: galera-bundle-docker-2 start on metal-3 -+ * Resource action: galera-bundle-2 start on metal-3 -+ * Pseudo action: galera-bundle-master_start_0 -+ * Resource action: galera:0 start on galera-bundle-0 -+ * Resource action: galera-bundle-docker-0 monitor=60000 on metal-1 -+ * Resource action: galera-bundle-0 monitor=60000 on metal-1 -+ * Resource action: galera:1 start on galera-bundle-1 -+ * Resource action: galera-bundle-docker-1 monitor=60000 on metal-2 -+ * Resource action: galera-bundle-1 monitor=60000 on metal-2 -+ * Resource action: galera:2 start on galera-bundle-2 -+ * Resource action: galera-bundle-docker-2 monitor=60000 on metal-3 -+ * Resource action: galera-bundle-2 monitor=60000 on metal-3 -+ * Pseudo action: galera-bundle-master_running_0 -+ * Pseudo action: galera-bundle_running_0 -+ * Resource action: galera:0 monitor=30000 on galera-bundle-0 -+ * Resource action: galera:0 monitor=20000 on galera-bundle-0 -+ * Resource action: galera:1 monitor=30000 on galera-bundle-1 -+ * Resource action: galera:1 monitor=20000 on galera-bundle-1 -+ * Resource action: galera:2 monitor=30000 on galera-bundle-2 -+ * Resource action: galera:2 monitor=20000 on galera-bundle-2 -+ -+Revised cluster status: -+Online: [ metal-1 metal-2 metal-3 ] -+RemoteOFFLINE: [ rabbitmq-bundle-0 ] -+Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bundle-docker-1 galera-bundle-2:galera-bundle-docker-2 redis-bundle-0:redis-bundle-docker-0 redis-bundle-1:redis-bundle-docker-1 redis-bundle-2:redis-bundle-docker-2 ] -+ -+ Clone Set: storage-clone [storage] -+ Started: [ metal-1 metal-2 metal-3 ] -+ Stopped: [ rabbitmq-bundle-0 ] -+ Docker container set: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Slave metal-1 -+ galera-bundle-1 (ocf::heartbeat:galera): Slave metal-2 -+ galera-bundle-2 (ocf::heartbeat:galera): Slave metal-3 -+ Docker container set: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started metal-1 -+ haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started metal-2 -+ haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started metal-3 -+ Docker container set: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master metal-1 -+ redis-bundle-1 (ocf::heartbeat:redis): Master metal-2 -+ redis-bundle-2 (ocf::heartbeat:redis): Master metal-3 -+ -diff --git a/pengine/test10/bundle-order-startup-clone-2.xml b/pengine/test10/bundle-order-startup-clone-2.xml -new file mode 100644 -index 0000000..e2c248e ---- /dev/null -+++ b/pengine/test10/bundle-order-startup-clone-2.xml -@@ -0,0 +1,190 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-startup-clone.dot b/pengine/test10/bundle-order-startup-clone.dot -new file mode 100644 -index 0000000..92f019f ---- /dev/null -+++ b/pengine/test10/bundle-order-startup-clone.dot -@@ -0,0 +1,119 @@ -+digraph "g" { -+"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] -+"galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_20000 galera-bundle-0" [ style = dashed] -+"galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_30000 galera-bundle-0" [ style = dashed] -+"galera-bundle-0_start_0 metal-1" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] -+"galera-bundle-0_start_0 metal-1" [ style=dashed color="red" fontcolor="black"] -+"galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = dashed] -+"galera-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = dashed] -+"galera-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = dashed] -+"galera-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_60000 metal-1" [ style=dashed color="red" fontcolor="black"] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-docker-0_monitor_60000 metal-1" [ style = dashed] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle_running_0" [ style = dashed] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] -+"galera-bundle-docker-0_start_0 metal-1" [ style=dashed color="red" fontcolor="black"] -+"galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = dashed] -+"galera-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] -+"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = dashed] -+"galera-bundle-master_start_0" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] -+"galera-bundle-master_start_0" [ style=dashed color="red" fontcolor="orange"] -+"galera-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] -+"galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 metal-1" [ style = dashed] -+"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = dashed] -+"galera-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] -+"galera:0_monitor_20000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera:0_monitor_30000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = dashed] -+"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_20000 galera-bundle-0" [ style = dashed] -+"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_30000 galera-bundle-0" [ style = dashed] -+"galera:0_start_0 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_0 metal-1" -> "haproxy-bundle-docker-0_start_0 metal-2" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_0 metal-2" -> "haproxy-bundle-docker-0_start_0 metal-2" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_0 metal-3" -> "haproxy-bundle-docker-0_start_0 metal-2" [ style = bold] -+"haproxy-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle-docker-0_start_0 metal-2" -> "haproxy-bundle-docker-0_monitor_60000 metal-2" [ style = bold] -+"haproxy-bundle-docker-0_start_0 metal-2" -> "haproxy-bundle_running_0" [ style = bold] -+"haproxy-bundle-docker-0_start_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"haproxy-bundle_running_0" -> "storage-clone_start_0" [ style = dashed] -+"haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 metal-2" [ style = bold] -+"haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-0_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_start_0 metal-2" -> "redis-bundle-0_monitor_60000 metal-2" [ style = bold] -+"redis-bundle-0_start_0 metal-2" -> "redis:0_monitor_45000 redis-bundle-0" [ style = bold] -+"redis-bundle-0_start_0 metal-2" -> "redis:0_monitor_60000 redis-bundle-0" [ style = bold] -+"redis-bundle-0_start_0 metal-2" -> "redis:0_start_0 redis-bundle-0" [ style = bold] -+"redis-bundle-0_start_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle-0_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle-docker-0_monitor_60000 metal-2" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle_running_0" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-2" -> "redis:0_start_0 redis-bundle-0" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-master_running_0" -> "redis-bundle_running_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:0_start_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_start_0" -> "redis-bundle-docker-0_start_0 metal-2" [ style = bold] -+"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = bold] -+"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis:0_monitor_45000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis:0_monitor_60000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis:0_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = bold] -+"redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_45000 redis-bundle-0" [ style = bold] -+"redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_60000 redis-bundle-0" [ style = bold] -+"redis:0_start_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"storage-clone_confirmed-post_notify_running_0" -> "galera-bundle_start_0" [ style = dashed] -+"storage-clone_confirmed-post_notify_running_0" -> "storage:0_monitor_30000 metal-1" [ style = dashed] -+"storage-clone_confirmed-post_notify_running_0" -> "storage:1_monitor_30000 metal-2" [ style = dashed] -+"storage-clone_confirmed-post_notify_running_0" -> "storage:2_monitor_30000 metal-3" [ style = dashed] -+"storage-clone_confirmed-post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] -+"storage-clone_confirmed-pre_notify_start_0" -> "storage-clone_post_notify_running_0" [ style = dashed] -+"storage-clone_confirmed-pre_notify_start_0" -> "storage-clone_start_0" [ style = dashed] -+"storage-clone_confirmed-pre_notify_start_0" [ style=dashed color="red" fontcolor="orange"] -+"storage-clone_post_notify_running_0" -> "storage-clone_confirmed-post_notify_running_0" [ style = dashed] -+"storage-clone_post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] -+"storage-clone_pre_notify_start_0" -> "storage-clone_confirmed-pre_notify_start_0" [ style = dashed] -+"storage-clone_pre_notify_start_0" [ style=dashed color="red" fontcolor="orange"] -+"storage-clone_running_0" -> "storage-clone_post_notify_running_0" [ style = dashed] -+"storage-clone_running_0" [ style=dashed color="red" fontcolor="orange"] -+"storage-clone_start_0" -> "storage-clone_running_0" [ style = dashed] -+"storage-clone_start_0" -> "storage:0_start_0 metal-1" [ style = dashed] -+"storage-clone_start_0" -> "storage:1_start_0 metal-2" [ style = dashed] -+"storage-clone_start_0" -> "storage:2_start_0 metal-3" [ style = dashed] -+"storage-clone_start_0" [ style=dashed color="red" fontcolor="orange"] -+"storage:0_monitor_0 metal-1" -> "storage-clone_start_0" [ style = dashed] -+"storage:0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"storage:0_monitor_30000 metal-1" [ style=dashed color="red" fontcolor="black"] -+"storage:0_start_0 metal-1" -> "storage-clone_running_0" [ style = dashed] -+"storage:0_start_0 metal-1" -> "storage:0_monitor_30000 metal-1" [ style = dashed] -+"storage:0_start_0 metal-1" [ style=dashed color="red" fontcolor="black"] -+"storage:1_monitor_0 metal-2" -> "storage-clone_start_0" [ style = dashed] -+"storage:1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"storage:1_monitor_30000 metal-2" [ style=dashed color="red" fontcolor="black"] -+"storage:1_start_0 metal-2" -> "storage-clone_running_0" [ style = dashed] -+"storage:1_start_0 metal-2" -> "storage:1_monitor_30000 metal-2" [ style = dashed] -+"storage:1_start_0 metal-2" [ style=dashed color="red" fontcolor="black"] -+"storage:2_monitor_0 metal-3" -> "storage-clone_start_0" [ style = dashed] -+"storage:2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"storage:2_monitor_30000 metal-3" [ style=dashed color="red" fontcolor="black"] -+"storage:2_start_0 metal-3" -> "storage-clone_running_0" [ style = dashed] -+"storage:2_start_0 metal-3" -> "storage:2_monitor_30000 metal-3" [ style = dashed] -+"storage:2_start_0 metal-3" [ style=dashed color="red" fontcolor="black"] -+} -diff --git a/pengine/test10/bundle-order-startup-clone.exp b/pengine/test10/bundle-order-startup-clone.exp -new file mode 100644 -index 0000000..c736cb9 ---- /dev/null -+++ b/pengine/test10/bundle-order-startup-clone.exp -@@ -0,0 +1,327 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-startup-clone.scores b/pengine/test10/bundle-order-startup-clone.scores -new file mode 100644 -index 0000000..d907861 ---- /dev/null -+++ b/pengine/test10/bundle-order-startup-clone.scores -@@ -0,0 +1,174 @@ -+Allocation scores: -+clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 -+clone_color: galera-bundle-master allocation score on metal-1: -INFINITY -+clone_color: galera-bundle-master allocation score on metal-2: -INFINITY -+clone_color: galera-bundle-master allocation score on metal-3: -INFINITY -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on metal-1: -INFINITY -+clone_color: galera:0 allocation score on metal-2: -INFINITY -+clone_color: galera:0 allocation score on metal-3: -INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on metal-1: -INFINITY -+clone_color: redis-bundle-master allocation score on metal-2: -INFINITY -+clone_color: redis-bundle-master allocation score on metal-3: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 -+clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on metal-1: -INFINITY -+clone_color: redis:0 allocation score on metal-2: -INFINITY -+clone_color: redis:0 allocation score on metal-3: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-0: INFINITY -+clone_color: storage-clone allocation score on metal-1: 0 -+clone_color: storage-clone allocation score on metal-2: 0 -+clone_color: storage-clone allocation score on metal-3: 0 -+clone_color: storage-clone allocation score on rabbitmq-bundle-0: 0 -+clone_color: storage:0 allocation score on metal-1: 0 -+clone_color: storage:0 allocation score on metal-2: 0 -+clone_color: storage:0 allocation score on metal-3: 0 -+clone_color: storage:0 allocation score on rabbitmq-bundle-0: 0 -+clone_color: storage:1 allocation score on metal-1: 0 -+clone_color: storage:1 allocation score on metal-2: 0 -+clone_color: storage:1 allocation score on metal-3: 0 -+clone_color: storage:1 allocation score on rabbitmq-bundle-0: 0 -+clone_color: storage:2 allocation score on metal-1: 0 -+clone_color: storage:2 allocation score on metal-2: 0 -+clone_color: storage:2 allocation score on metal-3: 0 -+clone_color: storage:2 allocation score on rabbitmq-bundle-0: 0 -+clone_color: storage:3 allocation score on metal-1: 0 -+clone_color: storage:3 allocation score on metal-2: 0 -+clone_color: storage:3 allocation score on metal-3: 0 -+clone_color: storage:3 allocation score on rabbitmq-bundle-0: 0 -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on metal-1: 0 -+container_color: galera-bundle allocation score on metal-2: 0 -+container_color: galera-bundle allocation score on metal-3: 0 -+container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on metal-1: 0 -+container_color: galera-bundle-0 allocation score on metal-2: 0 -+container_color: galera-bundle-0 allocation score on metal-3: 0 -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on metal-1: 0 -+container_color: galera-bundle-docker-0 allocation score on metal-2: 0 -+container_color: galera-bundle-docker-0 allocation score on metal-3: 0 -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on metal-1: 0 -+container_color: galera-bundle-master allocation score on metal-2: 0 -+container_color: galera-bundle-master allocation score on metal-3: 0 -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: 0 -+container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on metal-1: 0 -+container_color: galera:0 allocation score on metal-2: 0 -+container_color: galera:0 allocation score on metal-3: 0 -+container_color: galera:0 allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on metal-1: 0 -+container_color: haproxy-bundle allocation score on metal-1: 0 -+container_color: haproxy-bundle allocation score on metal-2: 0 -+container_color: haproxy-bundle allocation score on metal-2: 0 -+container_color: haproxy-bundle allocation score on metal-3: 0 -+container_color: haproxy-bundle allocation score on metal-3: 0 -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: 0 -+container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on metal-1: 0 -+container_color: redis-bundle allocation score on metal-2: 0 -+container_color: redis-bundle allocation score on metal-3: 0 -+container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on metal-1: 0 -+container_color: redis-bundle-0 allocation score on metal-2: 0 -+container_color: redis-bundle-0 allocation score on metal-3: 0 -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on metal-1: 0 -+container_color: redis-bundle-docker-0 allocation score on metal-2: 0 -+container_color: redis-bundle-docker-0 allocation score on metal-3: 0 -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on metal-1: 0 -+container_color: redis-bundle-master allocation score on metal-2: 0 -+container_color: redis-bundle-master allocation score on metal-3: 0 -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: 0 -+container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:0 allocation score on metal-1: 0 -+container_color: redis:0 allocation score on metal-2: 0 -+container_color: redis:0 allocation score on metal-3: 0 -+container_color: redis:0 allocation score on rabbitmq-bundle-0: 0 -+container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+galera:0 promotion score on galera-bundle-0: -1 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on metal-1: 10000 -+native_color: galera-bundle-0 allocation score on metal-2: 0 -+native_color: galera-bundle-0 allocation score on metal-3: 0 -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on metal-1: 0 -+native_color: galera-bundle-docker-0 allocation score on metal-2: 0 -+native_color: galera-bundle-docker-0 allocation score on metal-3: 0 -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on metal-1: -INFINITY -+native_color: galera:0 allocation score on metal-2: -INFINITY -+native_color: galera:0 allocation score on metal-3: -INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 -+native_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+native_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on metal-1: 0 -+native_color: redis-bundle-0 allocation score on metal-2: 10000 -+native_color: redis-bundle-0 allocation score on metal-3: 0 -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on metal-1: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on metal-2: 0 -+native_color: redis-bundle-docker-0 allocation score on metal-3: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:0 allocation score on metal-1: -INFINITY -+native_color: redis:0 allocation score on metal-2: -INFINITY -+native_color: redis:0 allocation score on metal-3: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-0: INFINITY -+native_color: storage:0 allocation score on metal-1: 0 -+native_color: storage:0 allocation score on metal-2: 0 -+native_color: storage:0 allocation score on metal-3: 0 -+native_color: storage:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: storage:1 allocation score on metal-1: -INFINITY -+native_color: storage:1 allocation score on metal-2: 0 -+native_color: storage:1 allocation score on metal-3: 0 -+native_color: storage:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: storage:2 allocation score on metal-1: -INFINITY -+native_color: storage:2 allocation score on metal-2: -INFINITY -+native_color: storage:2 allocation score on metal-3: 0 -+native_color: storage:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: storage:3 allocation score on metal-1: -INFINITY -+native_color: storage:3 allocation score on metal-2: -INFINITY -+native_color: storage:3 allocation score on metal-3: -INFINITY -+native_color: storage:3 allocation score on rabbitmq-bundle-0: -INFINITY -+redis:0 promotion score on redis-bundle-0: -1 -diff --git a/pengine/test10/bundle-order-startup-clone.summary b/pengine/test10/bundle-order-startup-clone.summary -new file mode 100644 -index 0000000..f3f8be0 ---- /dev/null -+++ b/pengine/test10/bundle-order-startup-clone.summary -@@ -0,0 +1,69 @@ -+ -+Current cluster status: -+Online: [ metal-1 metal-2 metal-3 ] -+RemoteOFFLINE: [ rabbitmq-bundle-0 ] -+ -+ Clone Set: storage-clone [storage] -+ Stopped: [ metal-1 metal-2 metal-3 rabbitmq-bundle-0 ] -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Stopped -+ -+Transition Summary: -+ * Start storage:0 (metal-1 - blocked) -+ * Start storage:1 (metal-2 - blocked) -+ * Start storage:2 (metal-3 - blocked) -+ * Start galera-bundle-docker-0 (metal-1 - blocked) -+ * Start galera-bundle-0 (metal-1 - blocked) -+ * Start galera:0 (galera-bundle-0 - blocked) -+ * Start haproxy-bundle-docker-0 (metal-2) -+ * Start redis-bundle-docker-0 (metal-2) -+ * Start redis-bundle-0 (metal-2) -+ * Start redis:0 (redis-bundle-0) -+ -+Executing cluster transition: -+ * Resource action: storage:0 monitor on metal-1 -+ * Resource action: storage:1 monitor on metal-2 -+ * Resource action: storage:2 monitor on metal-3 -+ * Resource action: galera-bundle-docker-0 monitor on metal-3 -+ * Resource action: galera-bundle-docker-0 monitor on metal-2 -+ * Resource action: galera-bundle-docker-0 monitor on metal-1 -+ * Resource action: haproxy-bundle-docker-0 monitor on metal-3 -+ * Resource action: haproxy-bundle-docker-0 monitor on metal-2 -+ * Resource action: haproxy-bundle-docker-0 monitor on metal-1 -+ * Resource action: redis-bundle-docker-0 monitor on metal-3 -+ * Resource action: redis-bundle-docker-0 monitor on metal-2 -+ * Resource action: redis-bundle-docker-0 monitor on metal-1 -+ * Pseudo action: redis-bundle_start_0 -+ * Pseudo action: haproxy-bundle_start_0 -+ * Resource action: haproxy-bundle-docker-0 start on metal-2 -+ * Resource action: redis-bundle-docker-0 start on metal-2 -+ * Resource action: redis-bundle-0 start on metal-2 -+ * Pseudo action: redis-bundle-master_start_0 -+ * Pseudo action: haproxy-bundle_running_0 -+ * Resource action: haproxy-bundle-docker-0 monitor=60000 on metal-2 -+ * Resource action: redis:0 start on redis-bundle-0 -+ * Resource action: redis-bundle-docker-0 monitor=60000 on metal-2 -+ * Resource action: redis-bundle-0 monitor=60000 on metal-2 -+ * Pseudo action: redis-bundle-master_running_0 -+ * Pseudo action: redis-bundle_running_0 -+ * Resource action: redis:0 monitor=60000 on redis-bundle-0 -+ * Resource action: redis:0 monitor=45000 on redis-bundle-0 -+ -+Revised cluster status: -+Online: [ metal-1 metal-2 metal-3 ] -+RemoteOFFLINE: [ rabbitmq-bundle-0 ] -+Containers: [ redis-bundle-0:redis-bundle-docker-0 ] -+ -+ Clone Set: storage-clone [storage] -+ Stopped: [ metal-1 metal-2 metal-3 rabbitmq-bundle-0 ] -+ Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped -+ Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started metal-2 -+ Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Slave metal-2 -+ -diff --git a/pengine/test10/bundle-order-startup-clone.xml b/pengine/test10/bundle-order-startup-clone.xml -new file mode 100644 -index 0000000..d24c707 ---- /dev/null -+++ b/pengine/test10/bundle-order-startup-clone.xml -@@ -0,0 +1,187 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-stop-clone.dot b/pengine/test10/bundle-order-stop-clone.dot -new file mode 100644 -index 0000000..6545fb8 ---- /dev/null -+++ b/pengine/test10/bundle-order-stop-clone.dot -@@ -0,0 +1,80 @@ -+digraph "g" { -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"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] -+"galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_20000 galera-bundle-0" [ style = dashed] -+"galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_30000 galera-bundle-0" [ style = dashed] -+"galera-bundle-0_start_0 metal-1" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] -+"galera-bundle-0_start_0 metal-1" [ style=dashed color="red" fontcolor="black"] -+"galera-bundle-0_stop_0 metal-1" -> "all_stopped" [ style = bold] -+"galera-bundle-0_stop_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] -+"galera-bundle-0_stop_0 metal-1" -> "galera-bundle-docker-0_stop_0 metal-1" [ style = bold] -+"galera-bundle-0_stop_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_stop_0 metal-1" -> "all_stopped" [ style = bold] -+"galera-bundle-docker-0_stop_0 metal-1" -> "galera-bundle_stopped_0" [ style = bold] -+"galera-bundle-docker-0_stop_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"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:0_start_0 galera-bundle-0" [ style = dashed] -+"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:0_stop_0 galera-bundle-0" [ style = bold] -+"galera-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"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_running_0" [ style=bold color="green" fontcolor="orange"] -+"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 metal-1" [ style = bold] -+"galera-bundle_stop_0" -> "galera-bundle-master_stop_0" [ style = bold] -+"galera-bundle_stop_0" -> "galera:0_stop_0 galera-bundle-0" [ style = bold] -+"galera-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_stopped_0" -> "galera-bundle_start_0" [ style = bold] -+"galera-bundle_stopped_0" -> "storage-clone_stop_0" [ style = bold] -+"galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"galera:0_monitor_20000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera:0_monitor_30000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = dashed] -+"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_20000 galera-bundle-0" [ style = dashed] -+"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_30000 galera-bundle-0" [ style = dashed] -+"galera:0_start_0 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera:0_stop_0 galera-bundle-0" -> "all_stopped" [ style = bold] -+"galera:0_stop_0 galera-bundle-0" -> "galera-bundle-0_stop_0 metal-1" [ style = bold] -+"galera:0_stop_0 galera-bundle-0" -> "galera-bundle-master_stopped_0" [ style = bold] -+"galera:0_stop_0 galera-bundle-0" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] -+"galera:0_stop_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"storage-clone_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -+"storage-clone_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"storage-clone_confirmed-pre_notify_stop_0" -> "storage-clone_post_notify_stopped_0" [ style = bold] -+"storage-clone_confirmed-pre_notify_stop_0" -> "storage-clone_stop_0" [ style = bold] -+"storage-clone_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"storage-clone_post_notify_stopped_0" -> "storage-clone_confirmed-post_notify_stopped_0" [ style = bold] -+"storage-clone_post_notify_stopped_0" -> "storage:1_post_notify_stop_0 metal-2" [ style = bold] -+"storage-clone_post_notify_stopped_0" -> "storage:2_post_notify_stop_0 metal-3" [ style = bold] -+"storage-clone_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"storage-clone_pre_notify_stop_0" -> "storage-clone_confirmed-pre_notify_stop_0" [ style = bold] -+"storage-clone_pre_notify_stop_0" -> "storage:0_pre_notify_stop_0 metal-1" [ style = bold] -+"storage-clone_pre_notify_stop_0" -> "storage:1_pre_notify_stop_0 metal-2" [ style = bold] -+"storage-clone_pre_notify_stop_0" -> "storage:2_pre_notify_stop_0 metal-3" [ style = bold] -+"storage-clone_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"storage-clone_stop_0" -> "storage-clone_stopped_0" [ style = bold] -+"storage-clone_stop_0" -> "storage:0_stop_0 metal-1" [ style = bold] -+"storage-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"storage-clone_stopped_0" -> "storage-clone_post_notify_stopped_0" [ style = bold] -+"storage-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"storage:0_pre_notify_stop_0 metal-1" -> "storage-clone_confirmed-pre_notify_stop_0" [ style = bold] -+"storage:0_pre_notify_stop_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"storage:0_stop_0 metal-1" -> "all_stopped" [ style = bold] -+"storage:0_stop_0 metal-1" -> "storage-clone_stopped_0" [ style = bold] -+"storage:0_stop_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"storage:1_post_notify_stop_0 metal-2" -> "storage-clone_confirmed-post_notify_stopped_0" [ style = bold] -+"storage:1_post_notify_stop_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"storage:1_pre_notify_stop_0 metal-2" -> "storage-clone_confirmed-pre_notify_stop_0" [ style = bold] -+"storage:1_pre_notify_stop_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"storage:2_post_notify_stop_0 metal-3" -> "storage-clone_confirmed-post_notify_stopped_0" [ style = bold] -+"storage:2_post_notify_stop_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"storage:2_pre_notify_stop_0 metal-3" -> "storage-clone_confirmed-pre_notify_stop_0" [ style = bold] -+"storage:2_pre_notify_stop_0 metal-3" [ style=bold color="green" fontcolor="black"] -+} -diff --git a/pengine/test10/bundle-order-stop-clone.exp b/pengine/test10/bundle-order-stop-clone.exp -new file mode 100644 -index 0000000..ac0ae05 ---- /dev/null -+++ b/pengine/test10/bundle-order-stop-clone.exp -@@ -0,0 +1,345 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-stop-clone.scores b/pengine/test10/bundle-order-stop-clone.scores -new file mode 100644 -index 0000000..df53f32 ---- /dev/null -+++ b/pengine/test10/bundle-order-stop-clone.scores -@@ -0,0 +1,591 @@ -+Allocation scores: -+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 metal-1: -INFINITY -+clone_color: galera-bundle-master allocation score on metal-2: -INFINITY -+clone_color: galera-bundle-master allocation score on metal-3: -INFINITY -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:0 allocation score on metal-1: -INFINITY -+clone_color: galera:0 allocation score on metal-2: -INFINITY -+clone_color: galera:0 allocation score on metal-3: -INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-1: INFINITY -+clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:1 allocation score on metal-1: -INFINITY -+clone_color: galera:1 allocation score on metal-2: -INFINITY -+clone_color: galera:1 allocation score on metal-3: -INFINITY -+clone_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-2: INFINITY -+clone_color: galera:2 allocation score on metal-1: -INFINITY -+clone_color: galera:2 allocation score on metal-2: -INFINITY -+clone_color: galera:2 allocation score on metal-3: -INFINITY -+clone_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY -+clone_color: redis-bundle-master allocation score on metal-1: -INFINITY -+clone_color: redis-bundle-master allocation score on metal-2: -INFINITY -+clone_color: redis-bundle-master allocation score on metal-3: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -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 galera-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-1: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-2: -INFINITY -+clone_color: redis:0 allocation score on metal-1: -INFINITY -+clone_color: redis:0 allocation score on metal-2: -INFINITY -+clone_color: redis:0 allocation score on metal-3: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-0: INFINITY -+clone_color: redis:0 allocation score on redis-bundle-1: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-2: -INFINITY -+clone_color: redis:1 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:1 allocation score on galera-bundle-1: -INFINITY -+clone_color: redis:1 allocation score on galera-bundle-2: -INFINITY -+clone_color: redis:1 allocation score on metal-1: -INFINITY -+clone_color: redis:1 allocation score on metal-2: -INFINITY -+clone_color: redis:1 allocation score on metal-3: -INFINITY -+clone_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:1 allocation score on redis-bundle-0: -INFINITY -+clone_color: redis:1 allocation score on redis-bundle-1: INFINITY -+clone_color: redis:1 allocation score on redis-bundle-2: -INFINITY -+clone_color: redis:2 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:2 allocation score on galera-bundle-1: -INFINITY -+clone_color: redis:2 allocation score on galera-bundle-2: -INFINITY -+clone_color: redis:2 allocation score on metal-1: -INFINITY -+clone_color: redis:2 allocation score on metal-2: -INFINITY -+clone_color: redis:2 allocation score on metal-3: -INFINITY -+clone_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:2 allocation score on redis-bundle-0: -INFINITY -+clone_color: redis:2 allocation score on redis-bundle-1: -INFINITY -+clone_color: redis:2 allocation score on redis-bundle-2: INFINITY -+clone_color: storage-clone allocation score on metal-1: -INFINITY -+clone_color: storage-clone allocation score on metal-2: 0 -+clone_color: storage-clone allocation score on metal-3: 0 -+clone_color: storage-clone allocation score on rabbitmq-bundle-0: 0 -+clone_color: storage:0 allocation score on metal-1: -INFINITY -+clone_color: storage:0 allocation score on metal-2: 0 -+clone_color: storage:0 allocation score on metal-3: 0 -+clone_color: storage:0 allocation score on rabbitmq-bundle-0: 0 -+clone_color: storage:1 allocation score on metal-1: -INFINITY -+clone_color: storage:1 allocation score on metal-2: INFINITY -+clone_color: storage:1 allocation score on metal-3: 0 -+clone_color: storage:1 allocation score on rabbitmq-bundle-0: 0 -+clone_color: storage:2 allocation score on metal-1: -INFINITY -+clone_color: storage:2 allocation score on metal-2: 0 -+clone_color: storage:2 allocation score on metal-3: INFINITY -+clone_color: storage:2 allocation score on rabbitmq-bundle-0: 0 -+clone_color: storage:3 allocation score on metal-1: -INFINITY -+clone_color: storage:3 allocation score on metal-2: 0 -+clone_color: storage:3 allocation score on metal-3: 0 -+clone_color: storage:3 allocation score on rabbitmq-bundle-0: 0 -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle allocation score on metal-1: 0 -+container_color: galera-bundle allocation score on metal-2: 0 -+container_color: galera-bundle allocation score on metal-3: 0 -+container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-0 allocation score on metal-1: INFINITY -+container_color: galera-bundle-0 allocation score on metal-2: 0 -+container_color: galera-bundle-0 allocation score on metal-3: 0 -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-1 allocation score on metal-1: 0 -+container_color: galera-bundle-1 allocation score on metal-2: INFINITY -+container_color: galera-bundle-1 allocation score on metal-3: 0 -+container_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-2 allocation score on metal-1: 0 -+container_color: galera-bundle-2 allocation score on metal-2: 0 -+container_color: galera-bundle-2 allocation score on metal-3: INFINITY -+container_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on metal-1: INFINITY -+container_color: galera-bundle-docker-0 allocation score on metal-2: 0 -+container_color: galera-bundle-docker-0 allocation score on metal-3: 0 -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on metal-1: 0 -+container_color: galera-bundle-docker-1 allocation score on metal-2: INFINITY -+container_color: galera-bundle-docker-1 allocation score on metal-3: 0 -+container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on metal-1: 0 -+container_color: galera-bundle-docker-2 allocation score on metal-2: 0 -+container_color: galera-bundle-docker-2 allocation score on metal-3: INFINITY -+container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+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 metal-1: 0 -+container_color: galera-bundle-master allocation score on metal-2: 0 -+container_color: galera-bundle-master allocation score on metal-3: 0 -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: 0 -+container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:0 allocation score on metal-1: 0 -+container_color: galera:0 allocation score on metal-2: 0 -+container_color: galera:0 allocation score on metal-3: 0 -+container_color: galera:0 allocation score on rabbitmq-bundle-0: 0 -+container_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:1 allocation score on metal-1: 0 -+container_color: galera:1 allocation score on metal-2: 0 -+container_color: galera:1 allocation score on metal-3: 0 -+container_color: galera:1 allocation score on rabbitmq-bundle-0: 0 -+container_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:2 allocation score on metal-1: 0 -+container_color: galera:2 allocation score on metal-2: 0 -+container_color: galera:2 allocation score on metal-3: 0 -+container_color: galera:2 allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on metal-1: 0 -+container_color: haproxy-bundle allocation score on metal-1: 0 -+container_color: haproxy-bundle allocation score on metal-1: 0 -+container_color: haproxy-bundle allocation score on metal-1: 0 -+container_color: haproxy-bundle allocation score on metal-2: 0 -+container_color: haproxy-bundle allocation score on metal-2: 0 -+container_color: haproxy-bundle allocation score on metal-2: 0 -+container_color: haproxy-bundle allocation score on metal-2: 0 -+container_color: haproxy-bundle allocation score on metal-3: 0 -+container_color: haproxy-bundle allocation score on metal-3: 0 -+container_color: haproxy-bundle allocation score on metal-3: 0 -+container_color: haproxy-bundle allocation score on metal-3: 0 -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on metal-1: 0 -+container_color: haproxy-bundle-docker-1 allocation score on metal-2: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on metal-2: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on metal-2: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on metal-2: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: 0 -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-1: 0 -+container_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-2: 0 -+container_color: haproxy-bundle-docker-2 allocation score on metal-3: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-3: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-3: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on metal-3: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: 0 -+container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle allocation score on metal-1: 0 -+container_color: redis-bundle allocation score on metal-2: 0 -+container_color: redis-bundle allocation score on metal-3: 0 -+container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-0 allocation score on metal-1: INFINITY -+container_color: redis-bundle-0 allocation score on metal-2: 0 -+container_color: redis-bundle-0 allocation score on metal-3: 0 -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-1 allocation score on metal-1: 0 -+container_color: redis-bundle-1 allocation score on metal-2: INFINITY -+container_color: redis-bundle-1 allocation score on metal-3: 0 -+container_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-2 allocation score on metal-1: 0 -+container_color: redis-bundle-2 allocation score on metal-2: 0 -+container_color: redis-bundle-2 allocation score on metal-3: INFINITY -+container_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on metal-1: INFINITY -+container_color: redis-bundle-docker-0 allocation score on metal-2: 0 -+container_color: redis-bundle-docker-0 allocation score on metal-3: 0 -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on metal-1: 0 -+container_color: redis-bundle-docker-1 allocation score on metal-2: INFINITY -+container_color: redis-bundle-docker-1 allocation score on metal-3: 0 -+container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on metal-1: 0 -+container_color: redis-bundle-docker-2 allocation score on metal-2: 0 -+container_color: redis-bundle-docker-2 allocation score on metal-3: INFINITY -+container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-master allocation score on metal-1: 0 -+container_color: redis-bundle-master allocation score on metal-2: 0 -+container_color: redis-bundle-master allocation score on metal-3: 0 -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: 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 galera-bundle-0: -INFINITY -+container_color: redis:0 allocation score on galera-bundle-1: -INFINITY -+container_color: redis:0 allocation score on galera-bundle-2: -INFINITY -+container_color: redis:0 allocation score on metal-1: 0 -+container_color: redis:0 allocation score on metal-2: 0 -+container_color: redis:0 allocation score on metal-3: 0 -+container_color: redis:0 allocation score on rabbitmq-bundle-0: 0 -+container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-2: -INFINITY -+container_color: redis:1 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:1 allocation score on galera-bundle-1: -INFINITY -+container_color: redis:1 allocation score on galera-bundle-2: -INFINITY -+container_color: redis:1 allocation score on metal-1: 0 -+container_color: redis:1 allocation score on metal-2: 0 -+container_color: redis:1 allocation score on metal-3: 0 -+container_color: redis:1 allocation score on rabbitmq-bundle-0: 0 -+container_color: redis:1 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-2: -INFINITY -+container_color: redis:2 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:2 allocation score on galera-bundle-1: -INFINITY -+container_color: redis:2 allocation score on galera-bundle-2: -INFINITY -+container_color: redis:2 allocation score on metal-1: 0 -+container_color: redis:2 allocation score on metal-2: 0 -+container_color: redis:2 allocation score on metal-3: 0 -+container_color: redis:2 allocation score on rabbitmq-bundle-0: 0 -+container_color: redis:2 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:2 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:2 allocation score on redis-bundle-2: -INFINITY -+galera:0 promotion score on galera-bundle-0: -1 -+galera:1 promotion score on galera-bundle-1: -1 -+galera:2 promotion score on galera-bundle-2: -1 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-0 allocation score on metal-1: INFINITY -+native_color: galera-bundle-0 allocation score on metal-2: -10000 -+native_color: galera-bundle-0 allocation score on metal-3: -10000 -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-1 allocation score on metal-1: 0 -+native_color: galera-bundle-1 allocation score on metal-2: INFINITY -+native_color: galera-bundle-1 allocation score on metal-3: 0 -+native_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-2 allocation score on metal-1: 0 -+native_color: galera-bundle-2 allocation score on metal-2: 0 -+native_color: galera-bundle-2 allocation score on metal-3: INFINITY -+native_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on metal-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on metal-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on metal-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on metal-2: 0 -+native_color: galera-bundle-docker-0 allocation score on metal-3: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on metal-3: 0 -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on metal-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on metal-2: INFINITY -+native_color: galera-bundle-docker-1 allocation score on metal-3: 0 -+native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on metal-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on metal-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on metal-3: INFINITY -+native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:0 allocation score on metal-1: -INFINITY -+native_color: galera:0 allocation score on metal-2: -INFINITY -+native_color: galera:0 allocation score on metal-3: -INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-1: INFINITY -+native_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:1 allocation score on metal-1: -INFINITY -+native_color: galera:1 allocation score on metal-2: -INFINITY -+native_color: galera:1 allocation score on metal-3: -INFINITY -+native_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-2: INFINITY -+native_color: galera:2 allocation score on metal-1: -INFINITY -+native_color: galera:2 allocation score on metal-2: -INFINITY -+native_color: galera:2 allocation score on metal-3: -INFINITY -+native_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -+native_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on metal-2: INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 -+native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on metal-3: INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-0 allocation score on metal-1: INFINITY -+native_color: redis-bundle-0 allocation score on metal-2: 0 -+native_color: redis-bundle-0 allocation score on metal-3: 0 -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-1 allocation score on metal-1: 0 -+native_color: redis-bundle-1 allocation score on metal-2: INFINITY -+native_color: redis-bundle-1 allocation score on metal-3: 0 -+native_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-2 allocation score on metal-1: 0 -+native_color: redis-bundle-2 allocation score on metal-2: 0 -+native_color: redis-bundle-2 allocation score on metal-3: INFINITY -+native_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on metal-1: INFINITY -+native_color: redis-bundle-docker-0 allocation score on metal-2: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on metal-3: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on metal-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on metal-2: INFINITY -+native_color: redis-bundle-docker-1 allocation score on metal-3: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on metal-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on metal-2: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on metal-3: INFINITY -+native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-1: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-2: -INFINITY -+native_color: redis:0 allocation score on metal-1: -INFINITY -+native_color: redis:0 allocation score on metal-2: -INFINITY -+native_color: redis:0 allocation score on metal-3: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-0: INFINITY -+native_color: redis:0 allocation score on redis-bundle-1: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-2: -INFINITY -+native_color: redis:1 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:1 allocation score on galera-bundle-1: -INFINITY -+native_color: redis:1 allocation score on galera-bundle-2: -INFINITY -+native_color: redis:1 allocation score on metal-1: -INFINITY -+native_color: redis:1 allocation score on metal-2: -INFINITY -+native_color: redis:1 allocation score on metal-3: -INFINITY -+native_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:1 allocation score on redis-bundle-0: -INFINITY -+native_color: redis:1 allocation score on redis-bundle-1: INFINITY -+native_color: redis:1 allocation score on redis-bundle-2: -INFINITY -+native_color: redis:2 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:2 allocation score on galera-bundle-1: -INFINITY -+native_color: redis:2 allocation score on galera-bundle-2: -INFINITY -+native_color: redis:2 allocation score on metal-1: -INFINITY -+native_color: redis:2 allocation score on metal-2: -INFINITY -+native_color: redis:2 allocation score on metal-3: -INFINITY -+native_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:2 allocation score on redis-bundle-0: -INFINITY -+native_color: redis:2 allocation score on redis-bundle-1: -INFINITY -+native_color: redis:2 allocation score on redis-bundle-2: INFINITY -+native_color: storage:0 allocation score on metal-1: -INFINITY -+native_color: storage:0 allocation score on metal-2: -INFINITY -+native_color: storage:0 allocation score on metal-3: -INFINITY -+native_color: storage:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: storage:1 allocation score on metal-1: -INFINITY -+native_color: storage:1 allocation score on metal-2: INFINITY -+native_color: storage:1 allocation score on metal-3: 0 -+native_color: storage:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: storage:2 allocation score on metal-1: -INFINITY -+native_color: storage:2 allocation score on metal-2: -INFINITY -+native_color: storage:2 allocation score on metal-3: INFINITY -+native_color: storage:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: storage:3 allocation score on metal-1: -INFINITY -+native_color: storage:3 allocation score on metal-2: -INFINITY -+native_color: storage:3 allocation score on metal-3: -INFINITY -+native_color: storage:3 allocation score on rabbitmq-bundle-0: -INFINITY -+redis:0 promotion score on redis-bundle-0: 99 -+redis:1 promotion score on redis-bundle-1: 99 -+redis:2 promotion score on redis-bundle-2: 99 -diff --git a/pengine/test10/bundle-order-stop-clone.summary b/pengine/test10/bundle-order-stop-clone.summary -new file mode 100644 -index 0000000..404eecd ---- /dev/null -+++ b/pengine/test10/bundle-order-stop-clone.summary -@@ -0,0 +1,75 @@ -+ -+Current cluster status: -+Online: [ metal-1 metal-2 metal-3 ] -+RemoteOFFLINE: [ rabbitmq-bundle-0 ] -+Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bundle-docker-1 galera-bundle-2:galera-bundle-docker-2 redis-bundle-0:redis-bundle-docker-0 redis-bundle-1:redis-bundle-docker-1 redis-bundle-2:redis-bundle-docker-2 ] -+ -+ Clone Set: storage-clone [storage] -+ Started: [ metal-1 metal-2 metal-3 ] -+ Stopped: [ rabbitmq-bundle-0 ] -+ Docker container set: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Slave metal-1 -+ galera-bundle-1 (ocf::heartbeat:galera): Slave metal-2 -+ galera-bundle-2 (ocf::heartbeat:galera): Slave metal-3 -+ Docker container set: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started metal-1 -+ haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started metal-2 -+ haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started metal-3 -+ Docker container set: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master metal-1 -+ redis-bundle-1 (ocf::heartbeat:redis): Master metal-2 -+ redis-bundle-2 (ocf::heartbeat:redis): Master metal-3 -+ -+Transition Summary: -+ * Stop storage:0 (metal-1) -+ * Stop galera-bundle-docker-0 (metal-1) -+ * Stop galera-bundle-0 (Started metal-1) -+ * Stop galera:0 (Slave galera-bundle-0) -+ -+Executing cluster transition: -+ * Pseudo action: storage-clone_pre_notify_stop_0 -+ * Pseudo action: galera-bundle_stop_0 -+ * Resource action: storage:0 notify on metal-1 -+ * Resource action: storage:1 notify on metal-2 -+ * Resource action: storage:2 notify on metal-3 -+ * Pseudo action: storage-clone_confirmed-pre_notify_stop_0 -+ * Pseudo action: galera-bundle-master_stop_0 -+ * Resource action: galera:0 stop on galera-bundle-0 -+ * Resource action: galera-bundle-0 stop on metal-1 -+ * Pseudo action: galera-bundle-master_stopped_0 -+ * Resource action: galera-bundle-docker-0 stop on metal-1 -+ * Pseudo action: galera-bundle_stopped_0 -+ * Pseudo action: galera-bundle_start_0 -+ * Pseudo action: storage-clone_stop_0 -+ * Pseudo action: galera-bundle-master_start_0 -+ * Resource action: storage:0 stop on metal-1 -+ * Pseudo action: storage-clone_stopped_0 -+ * Pseudo action: galera-bundle-master_running_0 -+ * Pseudo action: galera-bundle_running_0 -+ * Pseudo action: storage-clone_post_notify_stopped_0 -+ * Resource action: storage:1 notify on metal-2 -+ * Resource action: storage:2 notify on metal-3 -+ * Pseudo action: storage-clone_confirmed-post_notify_stopped_0 -+ * Pseudo action: all_stopped -+ -+Revised cluster status: -+Online: [ metal-1 metal-2 metal-3 ] -+RemoteOFFLINE: [ rabbitmq-bundle-0 ] -+Containers: [ galera-bundle-1:galera-bundle-docker-1 galera-bundle-2:galera-bundle-docker-2 redis-bundle-0:redis-bundle-docker-0 redis-bundle-1:redis-bundle-docker-1 redis-bundle-2:redis-bundle-docker-2 ] -+ -+ Clone Set: storage-clone [storage] -+ Started: [ metal-2 metal-3 ] -+ Stopped: [ metal-1 rabbitmq-bundle-0 ] -+ Docker container set: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped -+ galera-bundle-1 (ocf::heartbeat:galera): Slave metal-2 -+ galera-bundle-2 (ocf::heartbeat:galera): Slave metal-3 -+ Docker container set: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started metal-1 -+ haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started metal-2 -+ haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started metal-3 -+ Docker container set: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master metal-1 -+ redis-bundle-1 (ocf::heartbeat:redis): Master metal-2 -+ redis-bundle-2 (ocf::heartbeat:redis): Master metal-3 -+ -diff --git a/pengine/test10/bundle-order-stop-clone.xml b/pengine/test10/bundle-order-stop-clone.xml -new file mode 100644 -index 0000000..60db64d ---- /dev/null -+++ b/pengine/test10/bundle-order-stop-clone.xml -@@ -0,0 +1,398 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.8.3.1 - - -From 79fea20c78979e1d849b4ec36e3ebde185811aab Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 26 Jun 2017 11:02:40 +1000 -Subject: [PATCH 8/8] Fix: PE: Ensure bundle nodes and child resources are - correctly cleaned up - ---- - lib/pengine/container.c | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 6e98e6f..5d4e697 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -1029,7 +1029,10 @@ tuple_free(container_grouping_t *tuple) - return; - } - -- // TODO: Free tuple->node ? -+ if(tuple->node) { -+ free(tuple->node); -+ tuple->node = NULL; -+ } - - if(tuple->ip) { - tuple->ip->fns->free(tuple->ip); -@@ -1037,12 +1040,6 @@ tuple_free(container_grouping_t *tuple) - free_xml(tuple->ip->xml); - tuple->ip = NULL; - } -- if(tuple->child) { -- free_xml(tuple->child->xml); -- tuple->child->xml = NULL; -- tuple->child->fns->free(tuple->child); -- tuple->child = NULL; -- } - if(tuple->docker) { - free_xml(tuple->docker->xml); - tuple->docker->xml = NULL; -@@ -1079,13 +1076,16 @@ container_free(resource_t * rsc) - free(container_data->docker_run_command); - free(container_data->docker_host_options); - -- if(container_data->child) { -- free_xml(container_data->child->xml); -- } - g_list_free_full(container_data->tuples, (GDestroyNotify)tuple_free); - g_list_free_full(container_data->mounts, (GDestroyNotify)mount_free); - g_list_free_full(container_data->ports, (GDestroyNotify)port_free); - g_list_free(rsc->children); -+ -+ if(container_data->child) { -+ free_xml(container_data->child->xml); -+ container_data->child->xml = NULL; -+ container_data->child->fns->free(container_data->child); -+ } - common_free(rsc); - } - --- -1.8.3.1 - diff --git a/SOURCES/075-bundle-memory.patch b/SOURCES/075-bundle-memory.patch deleted file mode 100644 index 7e2acba..0000000 --- a/SOURCES/075-bundle-memory.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 12a6af187dec7b0c229673958dd0916e2479584e Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 26 Jun 2017 18:39:30 -0500 -Subject: [PATCH 1/2] Low: pengine: avoid use of NULL - ---- - pengine/clone.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pengine/clone.c b/pengine/clone.c -index 28f368e..1722166 100644 ---- a/pengine/clone.c -+++ b/pengine/clone.c -@@ -868,7 +868,7 @@ clone_create_pseudo_actions( - if (stop_notify != NULL && *stop_notify == NULL) { - *stop_notify = create_notification_boundaries(rsc, RSC_STOP, stop, stopped, data_set); - -- if (*stop_notify && *start_notify) { -+ if (start_notify && *start_notify && *stop_notify) { - order_actions((*stop_notify)->post_done, (*start_notify)->pre, pe_order_optional); - } - } --- -1.8.3.1 - - -From 4882ac112253f1f3afece01eb2e32a87b6d3689e Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 27 Jun 2017 11:11:45 -0500 -Subject: [PATCH 2/2] Low: libpe_status: avoid use-after-free - ---- - lib/pengine/container.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 5d4e697..a21f0a4 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -1035,9 +1035,9 @@ tuple_free(container_grouping_t *tuple) - } - - if(tuple->ip) { -- tuple->ip->fns->free(tuple->ip); -- tuple->ip->xml = NULL; - free_xml(tuple->ip->xml); -+ tuple->ip->xml = NULL; -+ tuple->ip->fns->free(tuple->ip); - tuple->ip = NULL; - } - if(tuple->docker) { --- -1.8.3.1 - diff --git a/SOURCES/076-quorum-loss.patch b/SOURCES/076-quorum-loss.patch deleted file mode 100644 index 8bd1923..0000000 --- a/SOURCES/076-quorum-loss.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 0b6890554a1928ec96cc22f71497d7874e72aa4f Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 27 Jun 2017 12:27:32 -0500 -Subject: [PATCH] Fix: crmd: abort transition whenever we lose quorum - -If a node drops us below quorum because it was unexpectedly lost, the peer -update callback will abort the transition. If it was shut down cleanly while -running resources, the CIB recovery results will abort the transition. However, -if it was shut down cleanly while not running any resources (e.g. in standby -mode), previously we would not trigger a new transition, and the remaining -nodes would not stop their resources until the next recheck interval. ---- - crmd/membership.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/crmd/membership.c b/crmd/membership.c -index b292f23..c36dbed 100644 ---- a/crmd/membership.c -+++ b/crmd/membership.c -@@ -437,6 +437,14 @@ crm_update_quorum(gboolean quorum, gboolean force_update) - crm_debug("Updating quorum status to %s (call=%d)", quorum ? "true" : "false", call_id); - fsa_register_cib_callback(call_id, FALSE, NULL, cib_quorum_update_complete); - free_xml(update); -+ -+ /* If a node not running any resources is cleanly shut down and drops us -+ * below quorum, we won't necessarily abort the transition, so abort it -+ * here to be safe. -+ */ -+ if (quorum == FALSE) { -+ abort_transition(INFINITY, tg_restart, "Quorum loss", NULL); -+ } - } - fsa_has_quorum = quorum; - } --- -1.8.3.1 - diff --git a/SOURCES/077-reenable-fence-device.patch b/SOURCES/077-reenable-fence-device.patch deleted file mode 100644 index f380bd8..0000000 --- a/SOURCES/077-reenable-fence-device.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 4ad87e494d56e18bcaafa058554573f890517eed Mon Sep 17 00:00:00 2001 -From: Klaus Wenninger -Date: Fri, 21 Jul 2017 17:57:48 +0200 -Subject: [PATCH] Fix: stonith-ng: make fencing-device reappear properly after - reenabling - ---- - fencing/main.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/fencing/main.c b/fencing/main.c -index 360bc25..f58ccc7 100644 ---- a/fencing/main.c -+++ b/fencing/main.c -@@ -781,7 +781,7 @@ update_cib_stonith_devices_v2(const char *event, xmlNode * msg) - } - free(mutable); - -- } else if(strstr(xpath, "/"XML_CIB_TAG_RESOURCES)) { -+ } else if(strstr(xpath, XML_CIB_TAG_RESOURCES)) { - shortpath = strrchr(xpath, '/'); CRM_ASSERT(shortpath); - reason = crm_strdup_printf("%s %s", op, shortpath+1); - needs_update = TRUE; --- -1.8.3.1 - diff --git a/SOURCES/078-fencing-memory.patch b/SOURCES/078-fencing-memory.patch deleted file mode 100644 index 8237470..0000000 --- a/SOURCES/078-fencing-memory.patch +++ /dev/null @@ -1,25 +0,0 @@ -From e7027e9d303be5e3f9531c0cb0ef8af914f2adda Mon Sep 17 00:00:00 2001 -From: Klaus Wenninger -Date: Tue, 11 Jul 2017 16:35:33 +0200 -Subject: [PATCH] fix: stonith-ng: avoid double-free of pending-ops in - free_device - ---- - fencing/commands.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/fencing/commands.c b/fencing/commands.c -index b336d3b..57a1a4e 100644 ---- a/fencing/commands.c -+++ b/fencing/commands.c -@@ -509,7 +509,6 @@ free_device(gpointer data) - - crm_warn("Removal of device '%s' purged operation %s", device->id, cmd->action); - cmd->done_cb(0, -ENODEV, NULL, cmd); -- free_async_command(cmd); - } - g_list_free(device->pending_ops); - --- -1.8.3.1 - diff --git a/SOURCES/079-crm_report.patch b/SOURCES/079-crm_report.patch deleted file mode 100644 index 43a9874..0000000 --- a/SOURCES/079-crm_report.patch +++ /dev/null @@ -1,194 +0,0 @@ -From 6a387a3a9d150ff972e6842e07a96a288eda4471 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 16 Aug 2017 20:37:36 -0500 -Subject: [PATCH] Fix: tools: allow crm_report to work with no log files - specified - -582e886d broke crm_report --sos-mode - -Specifying no log files is a valid use case: someone might want to collect only -the other information (cluster configuration, policy engine inputs, etc.); -or someone might use only the systemd journal and no log files. ---- - tools/report.collector | 143 ++++++++++++++++++++++++++++++++----------------- - 1 file changed, 93 insertions(+), 50 deletions(-) - -diff --git a/tools/report.collector b/tools/report.collector -index 0130a2b..d7c7c51 100644 ---- a/tools/report.collector -+++ b/tools/report.collector -@@ -693,6 +693,85 @@ EOF - esac - } - -+# Trim leading and ending whitespace (using only POSIX expressions) -+trim() { -+ TRIM_S="$1" -+ -+ TRIM_S="${TRIM_S#"${TRIM_S%%[![:space:]]*}"}" -+ TRIM_S="${TRIM_S%"${TRIM_S##*[![:space:]]}"}" -+ echo -n "$TRIM_S" -+} -+ -+collect_logs() { -+ CL_START="$1" -+ shift -+ CL_END="$1" -+ shift -+ CL_LOGFILES="$@" -+ -+ which journalctl > /dev/null 2>&1 -+ if [ $? -eq 0 ]; then -+ cl_have_journald=1 -+ else -+ cl_have_journald=0 -+ fi -+ -+ cl_lognames="$CL_LOGFILES" -+ if [ $cl_have_journald -eq 1 ]; then -+ cl_lognames="$cl_lognames journalctl" -+ fi -+ cl_lognames=$(trim "$cl_lognames") -+ if [ -z "$cl_lognames" ]; then -+ return -+ fi -+ -+ # YYYY-MM-DD HH:MM:SS -+ cl_start_ymd=$(date -d @${CL_START} +"%F %T") -+ cl_end_ymd=$(date -d @${CL_END} +"%F %T") -+ -+ debug "Gathering logs from $cl_start_ymd to $cl_end_ymd:" -+ debug " $cl_lognames" -+ -+ # Remove our temporary file if we get interrupted here -+ trap '[ -z "$cl_pattfile" ] || rm -f "$cl_pattfile"' 0 -+ -+ # Create a temporary file with patterns to grep for -+ cl_pattfile=$(mktemp) || fatal "cannot create temporary files" -+ for cl_pattern in $LOG_PATTERNS; do -+ echo "$cl_pattern" -+ done > $cl_pattfile -+ -+ echo "Log pattern matches from $REPORT_TARGET:" > $ANALYSIS_F -+ if [ -n "$CL_LOGFILES" ]; then -+ for cl_logfile in $CL_LOGFILES; do -+ cl_extract="$(basename $cl_logfile).extract.txt" -+ -+ if [ ! -f "$cl_logfile" ]; then -+ # Not a file -+ continue -+ -+ elif [ -f "$cl_extract" ]; then -+ # We already have it -+ continue -+ fi -+ -+ dumplogset "$cl_logfile" $LOG_START $LOG_END > "$cl_extract" -+ sanitize "$cl_extract" -+ -+ grep -f "$cl_pattfile" "$cl_extract" >> $ANALYSIS_F -+ done -+ fi -+ -+ # Collect systemd logs if present -+ if [ $cl_have_journald -eq 1 ]; then -+ journalctl --since "$cl_start_ymd" --until "$cl_end_ymd" > journal.log -+ grep -f "$cl_pattfile" journal.log >> $ANALYSIS_F -+ fi -+ -+ rm -f $cl_pattfile -+ trap "" 0 -+} -+ - debug "Initializing $REPORT_TARGET subdir" - if [ "$REPORT_MASTER" != "$REPORT_TARGET" ]; then - if [ -e $REPORT_HOME/$REPORT_TARGET ]; then -@@ -718,17 +797,19 @@ if [ -z "$cluster_cf" ] && [ $cluster != "any" ]; then - warning "Could not determine the location of your cluster configuration" - fi - --if [ $SEARCH_LOGS = 1 ]; then -- logfiles=`get_logfiles $cluster "$cluster_cf" "$logd_cf" | sort -u` -- if [ -z "$logfiles" ]; then -- fatal "Logfile discovery disabled, try specifying --logfile /some/path" -- fi -- --elif [ -z "$EXTRA_LOGS" ]; then -- fatal "Could not determine the location of your cluster logs, try specifying --logfile /some/path" -+if [ "$SEARCH_LOGS" = "1" ]; then -+ logfiles=$(get_logfiles "$cluster" "$cluster_cf" "$logd_cf" | sort -u) -+fi -+logfiles="$(trim "$logfiles $EXTRA_LOGS")" - --else -- logfiles="$EXTRA_LOGS" -+if [ -z "$logfiles" ]; then -+ which journalctl > /dev/null 2>&1 -+ if [ $? -eq 0 ]; then -+ info "Systemd journal will be only log collected" -+ else -+ info "No logs will be collected" -+ fi -+ info "No log files found or specified with --logfile /some/path" - fi - - debug "Config: $cluster ($cluster_cf $logd_cf) $logfiles" -@@ -783,45 +864,7 @@ done - # in it (AFTER sanitizing, so we don't need to sanitize this output) - get_readable_cib "$REPORT_HOME/$REPORT_TARGET" - --# Grab logs --start=`date -d @${LOG_START} +"%F %T"` --end=`date -d @${LOG_END} +"%F %T"` -- --debug "Gathering logs from $start to $end: $logfiles $EXTRA_LOGS" --trap '[ -z "$pattfile" ] || rm -f "$pattfile"' 0 --pattfile=`mktemp` || fatal "cannot create temporary files" --for p in $LOG_PATTERNS; do -- echo "$p" --done > $pattfile -- --for l in $logfiles $EXTRA_LOGS; do -- b="$(basename $l).extract.txt" -- -- if [ ! -f "$l" ]; then -- # Not a file -- continue -- -- elif [ -f "$b" ]; then -- # We already have it -- continue -- fi -- -- dumplogset "$l" $LOG_START $LOG_END > "$b" -- sanitize "$b" -- -- echo "Log patterns $REPORT_TARGET:" > $ANALYSIS_F -- grep -f "$pattfile" "$b" >> $ANALYSIS_F --done -- --which journalctl > /dev/null 2>&1 --if [ $? = 0 ]; then -- log "Including segment [$LOG_START-$LOG_END] from journald" -- journalctl --since "$start" --until "$end" > journal.log -- cat journal.log | grep -f $pattfile >> $ANALYSIS_F --fi -- --rm -f $pattfile --trap "" 0 -+collect_logs "$LOG_START" "$LOG_END" $logfiles - - # Purge files containing no information - for f in `ls -1`; do -@@ -838,7 +881,7 @@ for f in `ls -1`; do - done - - # Parse for events --for l in $logfiles $EXTRA_LOGS; do -+for l in $logfiles; do - b="$(basename $l).extract.txt" - node_events "$b" > $EVENTS_F - --- -1.8.3.1 - diff --git a/SOURCES/080-docker-location.patch b/SOURCES/080-docker-location.patch deleted file mode 100644 index c98f1b0..0000000 --- a/SOURCES/080-docker-location.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 84e1eb06f3434edc20d87d3d3b5d09c755eeee69 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 5 May 2017 18:51:49 +1000 -Subject: [PATCH] container: The location of the docker resource is the more - interesting one - ---- - lib/pengine/container.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 1280227..043f129 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -883,9 +883,9 @@ tuple_print(container_grouping_t * tuple, const char *pre_text, long options, vo - offset += snprintf(buffer + offset, LINE_MAX - offset, " (%s)", tuple->ipaddr); - } - -- if(tuple->remote && tuple->remote->running_on != NULL) { -- node = tuple->remote->running_on->data; -- } else if (tuple->remote == NULL && rsc->running_on != NULL) { -+ if(tuple->docker && tuple->docker->running_on != NULL) { -+ node = tuple->docker->running_on->data; -+ } else if (tuple->docker == NULL && rsc->running_on != NULL) { - node = rsc->running_on->data; - } - common_print(rsc, pre_text, buffer, node, options, print_data); --- -1.8.3.1 - diff --git a/SOURCES/081-fence-logs.patch b/SOURCES/081-fence-logs.patch deleted file mode 100644 index ddb2eed..0000000 --- a/SOURCES/081-fence-logs.patch +++ /dev/null @@ -1,333 +0,0 @@ -From 083c3a49ad41bd17387c8ae661c23b44d4b845c6 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 30 May 2017 14:43:25 -0500 -Subject: [PATCH] Log: pengine,libpe_status: revisit fencing messages - ---- - lib/pengine/unpack.c | 72 ++++++++++++++++++++++++++++++++-------------------- - pengine/allocate.c | 65 ++++++++++++++++++++++++++--------------------- - 2 files changed, 81 insertions(+), 56 deletions(-) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 377100c..21eca90 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -63,6 +63,13 @@ is_dangling_container_remote_node(node_t *node) - } - - -+/*! -+ * \brief Schedule a fence action for a node -+ * -+ * \param[in,out] data_set Current working set of cluster -+ * \param[in,out] node Node to fence -+ * \param[in] reason Text description of why fencing is needed -+ */ - void - pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - { -@@ -74,11 +81,13 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - - if (is_set(rsc->flags, pe_rsc_failed) == FALSE) { - if (!is_set(rsc->flags, pe_rsc_managed)) { -- crm_notice("Not fencing node %s due to '%s': container %s is" -- " unmanaged" -- "%s", node->details->uname, reason, rsc->id); -+ crm_notice("Not fencing guest node %s " -+ "(otherwise would because %s): " -+ "its guest resource %s is unmanaged", -+ node->details->uname, reason, rsc->id); - } else { -- crm_warn("Remote node %s will be fenced due to '%s' by recovering %s", -+ crm_warn("Guest node %s will be fenced " -+ "(by recovering its guest resource %s): %s", - node->details->uname, rsc->id, reason); - - /* We don't mark the node as unclean because that would prevent the -@@ -91,8 +100,9 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - } - - } else if (is_dangling_container_remote_node(node)) { -- crm_info("Cleaning up dangling connection resource for guest node %s due to '%s'" -- " (fencing is already done, guest resource no longer exists)", -+ crm_info("Cleaning up dangling connection for guest node %s: " -+ "fencing was already done because %s, " -+ "and guest resource no longer exists", - node->details->uname, reason); - set_bit(node->details->remote_rsc->flags, pe_rsc_failed); - -@@ -100,31 +110,29 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - resource_t *rsc = node->details->remote_rsc; - - if (rsc && (!is_set(rsc->flags, pe_rsc_managed))) { -- crm_notice("Not fencing node %s due to '%s': connection is unmanaged", -+ crm_notice("Not fencing remote node %s " -+ "(otherwise would because %s): connection is unmanaged", - node->details->uname, reason); - } else if(node->details->remote_requires_reset == FALSE) { - node->details->remote_requires_reset = TRUE; -- if (pe_can_fence(data_set, node)) { -- crm_warn("Remote node %s will be fenced due to %s", node->details->uname, reason); -- } else { -- crm_warn("Remote node %s is unclean due to %s", node->details->uname, reason); -- } -+ crm_warn("Remote node %s %s: %s", -+ node->details->uname, -+ pe_can_fence(data_set, node)? "will be fenced" : "is unclean", -+ reason); - } - node->details->unclean = TRUE; - - } else if (node->details->unclean) { -- if (pe_can_fence(data_set, node)) { -- crm_trace("Node %s would also be fenced due to '%s'", node->details->uname, reason); -- } else { -- crm_trace("Node %s is also unclean due to '%s'", node->details->uname, reason); -- } -- -- } else if (pe_can_fence(data_set, node)) { -- crm_warn("Node %s will be fenced due to %s", node->details->uname, reason); -- node->details->unclean = TRUE; -+ crm_trace("Cluster node %s %s because %s", -+ node->details->uname, -+ pe_can_fence(data_set, node)? "would also be fenced" : "also is unclean", -+ reason); - - } else { -- crm_warn("Node %s is unclean due to %s", node->details->uname, reason); -+ crm_warn("Cluster node %s %s: %s", -+ node->details->uname, -+ pe_can_fence(data_set, node)? "will be fenced" : "is unclean", -+ reason); - node->details->unclean = TRUE; - } - } -@@ -1878,6 +1886,8 @@ process_rsc_state(resource_t * rsc, node_t * node, - xmlNode * migrate_op, pe_working_set_t * data_set) - { - node_t *tmpnode = NULL; -+ char *reason = NULL; -+ - CRM_ASSERT(rsc); - pe_rsc_trace(rsc, "Resource %s is %s on %s: on_fail=%s", - rsc->id, role2text(rsc->role), node->details->uname, fail2text(on_fail)); -@@ -1907,7 +1917,6 @@ process_rsc_state(resource_t * rsc, node_t * node, - && node->details->maintenance == FALSE - && is_set(rsc->flags, pe_rsc_managed)) { - -- char *reason = NULL; - gboolean should_fence = FALSE; - - /* If this is a guest node, fence it (regardless of whether fencing is -@@ -1922,14 +1931,19 @@ process_rsc_state(resource_t * rsc, node_t * node, - should_fence = TRUE; - - } else if (is_set(data_set->flags, pe_flag_stonith_enabled)) { -- if (is_baremetal_remote_node(node) && node->details->remote_rsc && is_not_set(node->details->remote_rsc->flags, pe_rsc_failed)) { -+ if (is_baremetal_remote_node(node) && node->details->remote_rsc -+ && is_not_set(node->details->remote_rsc->flags, pe_rsc_failed)) { -+ - /* setting unseen = true means that fencing of the remote node will - * only occur if the connection resource is not going to start somewhere. - * This allows connection resources on a failed cluster-node to move to - * another node without requiring the baremetal remote nodes to be fenced - * as well. */ - node->details->unseen = TRUE; -- reason = crm_strdup_printf("%s is active there. Fencing will be revoked if remote-node connection can be re-established on another cluster-node.", rsc->id); -+ reason = crm_strdup_printf("%s is active there (fencing will be" -+ " revoked if remote connection can " -+ "be re-established elsewhere)", -+ rsc->id); - } - should_fence = TRUE; - } -@@ -1959,7 +1973,9 @@ process_rsc_state(resource_t * rsc, node_t * node, - /* treat it as if it is still running - * but also mark the node as unclean - */ -- pe_fence_node(data_set, node, "resource failure(s)"); -+ reason = crm_strdup_printf("%s failed there", rsc->id); -+ pe_fence_node(data_set, node, reason); -+ free(reason); - break; - - case action_fail_standby: -@@ -2002,6 +2018,7 @@ process_rsc_state(resource_t * rsc, node_t * node, - stop_action(rsc, node, FALSE); - } - break; -+ - case action_fail_reset_remote: - set_bit(rsc->flags, pe_rsc_failed); - if (is_set(data_set->flags, pe_flag_stonith_enabled)) { -@@ -2015,7 +2032,8 @@ process_rsc_state(resource_t * rsc, node_t * node, - - /* connection resource to baremetal resource failed in a way that - * should result in fencing the remote-node. */ -- pe_fence_node(data_set, tmpnode, "of connection failure(s)"); -+ pe_fence_node(data_set, tmpnode, -+ "remote connection is unrecoverable"); - } - } - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 0020af6..f2987cc 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -467,7 +467,7 @@ check_actions_for(xmlNode * rsc_entry, resource_t * rsc, node_t * node, pe_worki - set_bit(action_clear->flags, pe_action_runnable); - - crm_notice("Clearing failure of %s on %s " -- "action definition changed " CRM_XS " %s", -+ "because action definition changed " CRM_XS " %s", - rsc->id, node->details->uname, action_clear->uuid); - } - } -@@ -1789,7 +1789,6 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) - - CRM_ASSERT(action->node); - CRM_ASSERT(is_remote_node(action->node)); -- CRM_ASSERT(action->node->details->remote_rsc); - - remote_rsc = action->node->details->remote_rsc; - CRM_ASSERT(remote_rsc); -@@ -1801,7 +1800,13 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) - pe_fence_node(data_set, action->node, "container failed"); - } - -- crm_trace("%s %s %s %s %d", action->uuid, action->task, remote_rsc->id, container->id, is_set(container->flags, pe_rsc_failed)); -+ crm_trace("Order %s action %s relative to %s%s for %s%s", -+ action->task, action->uuid, -+ is_set(remote_rsc->flags, pe_rsc_failed)? "failed " : "", -+ remote_rsc->id, -+ is_set(container->flags, pe_rsc_failed)? "failed " : "", -+ container->id); -+ - switch (task) { - case start_rsc: - case action_promote: -@@ -1874,6 +1879,7 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - node_t *cluster_node = NULL; - enum action_tasks task = text2task(action->task); - enum remote_connection_state state = remote_state_unknown; -+ enum pe_ordering order_opts = pe_order_none; - - if (action->rsc == NULL) { - return; -@@ -1881,7 +1887,6 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - - CRM_ASSERT(action->node); - CRM_ASSERT(is_remote_node(action->node)); -- CRM_ASSERT(action->node->details->remote_rsc); - - remote_rsc = action->node->details->remote_rsc; - CRM_ASSERT(remote_rsc); -@@ -1895,7 +1900,7 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - * on that remote node until after it starts elsewhere. - */ - if(remote_rsc->next_role == RSC_ROLE_STOPPED || remote_rsc->allocated_to == NULL) { -- /* There is no-where left to run the connection resource -+ /* There is nowhere left to run the connection resource, - * and the resource is in a failed state (either directly - * or because it is located on a failed node). - * -@@ -1903,8 +1908,7 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - * or if there are resources in an unknown state (probe), we - * must assume the worst and fence it. - */ -- -- if(is_set(action->node->details->remote_rsc->flags, pe_rsc_failed)) { -+ if (is_set(remote_rsc->flags, pe_rsc_failed)) { - state = remote_state_failed; - } else if(cluster_node && cluster_node->details->unclean) { - state = remote_state_failed; -@@ -1934,22 +1938,31 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - state = remote_state_alive; - } - -- crm_trace("%s %s %s %d %d", action->uuid, action->task, action->node->details->uname, state, is_set(remote_rsc->flags, pe_rsc_failed)); -+ crm_trace("Order %s action %s relative to %s%s (state %d)", -+ action->task, action->uuid, -+ is_set(remote_rsc->flags, pe_rsc_failed)? "failed " : "", -+ remote_rsc->id, state); - switch (task) { - case start_rsc: - case action_promote: -- if(state == remote_state_failed) { -- /* Wait for the connection resource to be up and force recovery */ -- custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, -- action->rsc, NULL, action, -- pe_order_preserve | pe_order_implies_then | pe_order_runnable_left, data_set); -- } else { -- /* Ensure the connection resource is 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); -+ /* 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; -+ -+ if (state == remote_state_failed) { -+ /* Force recovery, by making this action required */ -+ order_opts |= pe_order_implies_then; - } -+ -+ /* 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); - break; -+ - case stop_rsc: - /* Handle special case with remote node where stop actions need to be - * ordered after the connection resource starts somewhere else. -@@ -1975,22 +1988,19 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - pe_order_preserve | pe_order_implies_first, data_set); - } - break; -- case action_demote: - -- /* If the connection is being torn down, we don't want -- * to build a constraint between a resource's demotion and -- * the connection resource starting... because the connection -- * resource can not start. The connection might already be up, -- * but the "start" action would not be allowed, which in turn would -- * block the demotion of any resources living in the node. -+ case action_demote: -+ /* Only order this demote relative to the connection start if the -+ * connection isn't being torn down. Otherwise, the demote would be -+ * 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); - } /* Otherwise we can rely on the stop ordering */ - break; -+ - default: - /* Wait for the connection resource to be up */ - if (is_recurring_action(action)) { -@@ -2261,15 +2271,12 @@ stage7(pe_working_set_t * data_set) - order_probes(data_set); - - crm_trace("Updating %d actions", g_list_length(data_set->actions)); -- - for (gIter = data_set->actions; gIter != NULL; gIter = gIter->next) { - action_t *action = (action_t *) gIter->data; - - update_action(action); - } - -- crm_trace("Processing reloads"); -- - LogNodeActions(data_set, FALSE); - for (gIter = data_set->resources; gIter != NULL; gIter = gIter->next) { - resource_t *rsc = (resource_t *) gIter->data; --- -1.8.3.1 - diff --git a/SOURCES/082-unrecoverable-remotes.patch b/SOURCES/082-unrecoverable-remotes.patch deleted file mode 100644 index 8fd52ac..0000000 --- a/SOURCES/082-unrecoverable-remotes.patch +++ /dev/null @@ -1,225 +0,0 @@ -From c97ac6cda7f148dfdf09b8b4f4ce9762d9c59bcd Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 4 Jul 2017 14:16:52 +1000 -Subject: [PATCH] Fix: PE: Ensure unrecoverable remote nodes are fenced even if - no resources can run on them - ---- - pengine/allocate.c | 106 ++++++++++++++++++++++++++++++++--------------------- - 1 file changed, 65 insertions(+), 41 deletions(-) - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 3a95be6..3a883ad 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -39,6 +39,16 @@ void migrate_reload_madness(pe_working_set_t * data_set); - extern void ReloadRsc(resource_t * rsc, node_t *node, pe_working_set_t * data_set); - extern gboolean DeleteRsc(resource_t * rsc, node_t * node, gboolean optional, pe_working_set_t * data_set); - static void apply_remote_node_ordering(pe_working_set_t *data_set); -+static enum remote_connection_state get_remote_node_state(pe_node_t *node); -+enum remote_connection_state -+{ -+ remote_state_unknown = 0, -+ remote_state_alive = 1, -+ remote_state_resting = 2, -+ remote_state_failed = 3, -+ remote_state_stopped = 4 -+}; -+ - - resource_alloc_functions_t resource_class_alloc_functions[] = { - { -@@ -886,21 +896,25 @@ probe_resources(pe_working_set_t * data_set) - { - action_t *probe_node_complete = NULL; - -- GListPtr gIter = NULL; -- GListPtr gIter2 = NULL; -- -- for (gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) { -+ for (GListPtr gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) { - node_t *node = (node_t *) gIter->data; - const char *probed = g_hash_table_lookup(node->details->attrs, CRM_OP_PROBED); - -- if (node->details->online == FALSE) { -+ if (is_container_remote_node(node)) { -+ /* TODO enable guest node probes once ordered probing is implemented */ - continue; - -- } else if (node->details->unclean) { -+ } else if (node->details->online == FALSE && node->details->remote_rsc) { -+ enum remote_connection_state state = get_remote_node_state(node); -+ if(state == remote_state_failed) { -+ pe_fence_node(data_set, node, "the connection is unrecoverable"); -+ } - continue; - -- } else if (is_container_remote_node(node)) { -- /* TODO enable guest node probes once ordered probing is implemented */ -+ } else if(node->details->online == FALSE) { -+ continue; -+ -+ } else if (node->details->unclean) { - continue; - - } else if (node->details->rsc_discovery_enabled == FALSE) { -@@ -916,7 +930,7 @@ probe_resources(pe_working_set_t * data_set) - continue; - } - -- for (gIter2 = data_set->resources; gIter2 != NULL; gIter2 = gIter2->next) { -+ for (GListPtr gIter2 = data_set->resources; gIter2 != NULL; gIter2 = gIter2->next) { - resource_t *rsc = (resource_t *) gIter2->data; - - rsc->cmds->create_probe(rsc, node, probe_node_complete, FALSE, data_set); -@@ -1749,15 +1763,6 @@ rsc_order_first(resource_t * lh_rsc, order_constraint_t * order, pe_working_set_ - extern gboolean update_action(action_t * action); - extern void update_colo_start_chain(action_t * action); - --enum remote_connection_state --{ -- remote_state_unknown = 0, -- remote_state_alive = 1, -- remote_state_resting = 2, -- remote_state_failed = 3, -- remote_state_stopped = 4 --}; -- - static int - is_recurring_action(action_t *action) - { -@@ -1874,29 +1879,24 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) - } - } - --static void --apply_remote_ordering(action_t *action, pe_working_set_t *data_set) -+static enum remote_connection_state -+get_remote_node_state(pe_node_t *node) - { - resource_t *remote_rsc = NULL; - node_t *cluster_node = NULL; -- enum action_tasks task = text2task(action->task); -- enum remote_connection_state state = remote_state_unknown; -- enum pe_ordering order_opts = pe_order_none; - -- if (action->rsc == NULL) { -- return; -+ if(node == NULL) { -+ return remote_state_unknown; - } - -- CRM_ASSERT(action->node); -- CRM_ASSERT(is_remote_node(action->node)); -- -- remote_rsc = action->node->details->remote_rsc; -+ remote_rsc = node->details->remote_rsc; - CRM_ASSERT(remote_rsc); - - if(remote_rsc->running_on) { - cluster_node = remote_rsc->running_on->data; - } - -+ - /* If the cluster node the remote connection resource resides on - * is unclean or went offline, we can't process any operations - * on that remote node until after it starts elsewhere. -@@ -1911,21 +1911,21 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - * must assume the worst and fence it. - */ - if (is_set(remote_rsc->flags, pe_rsc_failed)) { -- state = remote_state_failed; -+ return remote_state_failed; - } else if(cluster_node && cluster_node->details->unclean) { -- state = remote_state_failed; -+ return remote_state_failed; - } else { -- state = remote_state_stopped; -+ return remote_state_stopped; - } - - } else if (cluster_node == NULL) { - /* Connection is recoverable but not currently running anywhere, see if we can recover it first */ -- state = remote_state_unknown; -+ return remote_state_unknown; - - } else if(cluster_node->details->unclean == TRUE - || cluster_node->details->online == FALSE) { - /* Connection is running on a dead node, see if we can recover it first */ -- state = remote_state_resting; -+ return remote_state_resting; - - } else if (g_list_length(remote_rsc->running_on) > 1 - && remote_rsc->partial_migration_source -@@ -1934,10 +1934,34 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - * wait until after the resource migrates before performing - * any actions. - */ -- state = remote_state_resting; -+ return remote_state_resting; - -- } else { -- state = remote_state_alive; -+ } -+ return remote_state_alive; -+} -+ -+static void -+apply_remote_ordering(action_t *action, pe_working_set_t *data_set) -+{ -+ resource_t *remote_rsc = NULL; -+ node_t *cluster_node = NULL; -+ enum action_tasks task = text2task(action->task); -+ enum remote_connection_state state = get_remote_node_state(action->node); -+ -+ enum pe_ordering order_opts = pe_order_none; -+ -+ if (action->rsc == NULL) { -+ return; -+ } -+ -+ CRM_ASSERT(action->node); -+ CRM_ASSERT(is_remote_node(action->node)); -+ -+ remote_rsc = action->node->details->remote_rsc; -+ CRM_ASSERT(remote_rsc); -+ -+ if(remote_rsc->running_on) { -+ cluster_node = remote_rsc->running_on->data; - } - - crm_trace("Order %s action %s relative to %s%s (state %d)", -@@ -2049,13 +2073,11 @@ apply_remote_ordering(action_t *action, pe_working_set_t *data_set) - static void - apply_remote_node_ordering(pe_working_set_t *data_set) - { -- GListPtr gIter = data_set->actions; -- - if (is_set(data_set->flags, pe_flag_have_remote_nodes) == FALSE) { - return; - } - -- for (; gIter != NULL; gIter = gIter->next) { -+ for (GListPtr gIter = data_set->actions; gIter != NULL; gIter = gIter->next) { - action_t *action = (action_t *) gIter->data; - - if (action->rsc == NULL) { -@@ -2092,12 +2114,14 @@ apply_remote_node_ordering(pe_working_set_t *data_set) - is_remote_node(action->node) == FALSE || - action->node->details->remote_rsc == NULL || - is_set(action->flags, pe_action_pseudo)) { -- crm_trace("Nothing required for %s", action->uuid); -+ crm_trace("Nothing required for %s on %s", action->uuid, action->node?action->node->details->uname:"NA"); - - } else if(action->node->details->remote_rsc->container) { -+ crm_trace("Container ordering for %s", action->uuid); - apply_container_ordering(action, data_set); - - } else { -+ crm_trace("Remote ordering for %s", action->uuid); - apply_remote_ordering(action, data_set); - } - } --- -1.8.3.1 - diff --git a/SOURCES/083-unrecoverable-remotes-test.patch b/SOURCES/083-unrecoverable-remotes-test.patch deleted file mode 100644 index 893e24a..0000000 --- a/SOURCES/083-unrecoverable-remotes-test.patch +++ /dev/null @@ -1,2458 +0,0 @@ -From 67788d4c70237ffe1f44e315491a841c7434718c Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 4 Jul 2017 14:17:00 +1000 -Subject: [PATCH] Test: PE: Ensure unrecoverable remote nodes are fenced even - if no resources can run on them - ---- - pengine/regression.sh | 1 + - pengine/test10/remote-fence-unclean-3.dot | 27 + - pengine/test10/remote-fence-unclean-3.exp | 163 ++++ - pengine/test10/remote-fence-unclean-3.scores | 1298 +++++++++++++++++++++++++ - pengine/test10/remote-fence-unclean-3.summary | 92 ++ - pengine/test10/remote-fence-unclean-3.xml | 813 ++++++++++++++++ - 6 files changed, 2394 insertions(+) - create mode 100644 pengine/test10/remote-fence-unclean-3.dot - create mode 100644 pengine/test10/remote-fence-unclean-3.exp - create mode 100644 pengine/test10/remote-fence-unclean-3.scores - create mode 100644 pengine/test10/remote-fence-unclean-3.summary - create mode 100644 pengine/test10/remote-fence-unclean-3.xml - -diff --git a/pengine/regression.sh b/pengine/regression.sh -index 5755660..d89d93c 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -834,6 +834,7 @@ do_test remote-startup-probes "Baremetal remote-node startup probes" - do_test remote-startup "Startup a newly discovered remote-nodes with no status." - do_test remote-fence-unclean "Fence unclean baremetal remote-node" - do_test remote-fence-unclean2 "Fence baremetal remote-node after cluster node fails and connection can not be recovered" -+do_test remote-fence-unclean-3 "Probe failed remote nodes (triggers fencing)" - do_test remote-move "Move remote-node connection resource" - do_test remote-disable "Disable a baremetal remote-node" - do_test remote-probe-disable "Probe then stop a baremetal remote-node" -diff --git a/pengine/test10/remote-fence-unclean-3.dot b/pengine/test10/remote-fence-unclean-3.dot -new file mode 100644 -index 0000000..11d1208 ---- /dev/null -+++ b/pengine/test10/remote-fence-unclean-3.dot -@@ -0,0 +1,27 @@ -+digraph "g" { -+"all_stopped" -> "fence1_start_0 overcloud-controller-1" [ style = bold] -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"fence1_monitor_0 overcloud-controller-0" -> "fence1_start_0 overcloud-controller-1" [ style = bold] -+"fence1_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"fence1_monitor_0 overcloud-controller-1" -> "fence1_start_0 overcloud-controller-1" [ style = bold] -+"fence1_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"fence1_monitor_0 overcloud-controller-2" -> "fence1_start_0 overcloud-controller-1" [ style = bold] -+"fence1_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"fence1_monitor_60000 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"fence1_start_0 overcloud-controller-1" -> "fence1_monitor_60000 overcloud-controller-1" [ style = bold] -+"fence1_start_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"foo_monitor_0 overcloud-controller-0" -> "foo_start_0 overcloud-controller-0" [ style = bold] -+"foo_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"foo_monitor_0 overcloud-controller-1" -> "foo_start_0 overcloud-controller-0" [ style = bold] -+"foo_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"foo_monitor_0 overcloud-controller-2" -> "foo_start_0 overcloud-controller-0" [ style = bold] -+"foo_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"foo_start_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"overcloud-novacompute-0_stop_0 overcloud-controller-0" -> "all_stopped" [ style = bold] -+"overcloud-novacompute-0_stop_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' overcloud-novacompute-0" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' overcloud-novacompute-0" [ style=bold color="green" fontcolor="black"] -+"stonith_complete" -> "all_stopped" [ style = bold] -+"stonith_complete" -> "foo_start_0 overcloud-controller-0" [ style = bold] -+"stonith_complete" [ style=bold color="green" fontcolor="orange"] -+} -diff --git a/pengine/test10/remote-fence-unclean-3.exp b/pengine/test10/remote-fence-unclean-3.exp -new file mode 100644 -index 0000000..14e1b0b ---- /dev/null -+++ b/pengine/test10/remote-fence-unclean-3.exp -@@ -0,0 +1,163 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/remote-fence-unclean-3.scores b/pengine/test10/remote-fence-unclean-3.scores -new file mode 100644 -index 0000000..0284218 ---- /dev/null -+++ b/pengine/test10/remote-fence-unclean-3.scores -@@ -0,0 +1,1298 @@ -+Allocation scores: -+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 overcloud-controller-0: -INFINITY -+clone_color: galera-bundle-master allocation score on overcloud-controller-1: -INFINITY -+clone_color: galera-bundle-master allocation score on overcloud-controller-2: -INFINITY -+clone_color: galera-bundle-master allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:0 allocation score on overcloud-controller-0: -INFINITY -+clone_color: galera:0 allocation score on overcloud-controller-1: -INFINITY -+clone_color: galera:0 allocation score on overcloud-controller-2: -INFINITY -+clone_color: galera:0 allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-1: INFINITY -+clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:1 allocation score on overcloud-controller-0: -INFINITY -+clone_color: galera:1 allocation score on overcloud-controller-1: -INFINITY -+clone_color: galera:1 allocation score on overcloud-controller-2: -INFINITY -+clone_color: galera:1 allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-2: INFINITY -+clone_color: galera:2 allocation score on overcloud-controller-0: -INFINITY -+clone_color: galera:2 allocation score on overcloud-controller-1: -INFINITY -+clone_color: galera:2 allocation score on overcloud-controller-2: -INFINITY -+clone_color: galera:2 allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: galera:2 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-controller-0: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-controller-1: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-controller-2: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-novacompute-0: -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 overcloud-controller-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on overcloud-controller-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on overcloud-controller-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-controller-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-controller-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-controller-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY -+clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-controller-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-controller-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-controller-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: rabbitmq:2 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 galera-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY -+clone_color: redis-bundle-master allocation score on overcloud-controller-0: -INFINITY -+clone_color: redis-bundle-master allocation score on overcloud-controller-1: -INFINITY -+clone_color: redis-bundle-master allocation score on overcloud-controller-2: -INFINITY -+clone_color: redis-bundle-master allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-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 galera-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-1: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-2: -INFINITY -+clone_color: redis:0 allocation score on overcloud-controller-0: -INFINITY -+clone_color: redis:0 allocation score on overcloud-controller-1: -INFINITY -+clone_color: redis:0 allocation score on overcloud-controller-2: -INFINITY -+clone_color: redis:0 allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-0: INFINITY -+clone_color: redis:0 allocation score on redis-bundle-1: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-2: -INFINITY -+clone_color: redis:1 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:1 allocation score on galera-bundle-1: -INFINITY -+clone_color: redis:1 allocation score on galera-bundle-2: -INFINITY -+clone_color: redis:1 allocation score on overcloud-controller-0: -INFINITY -+clone_color: redis:1 allocation score on overcloud-controller-1: -INFINITY -+clone_color: redis:1 allocation score on overcloud-controller-2: -INFINITY -+clone_color: redis:1 allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: redis:1 allocation score on redis-bundle-0: -INFINITY -+clone_color: redis:1 allocation score on redis-bundle-1: INFINITY -+clone_color: redis:1 allocation score on redis-bundle-2: -INFINITY -+clone_color: redis:2 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:2 allocation score on galera-bundle-1: -INFINITY -+clone_color: redis:2 allocation score on galera-bundle-2: -INFINITY -+clone_color: redis:2 allocation score on overcloud-controller-0: -INFINITY -+clone_color: redis:2 allocation score on overcloud-controller-1: -INFINITY -+clone_color: redis:2 allocation score on overcloud-controller-2: -INFINITY -+clone_color: redis:2 allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: redis:2 allocation score on redis-bundle-0: -INFINITY -+clone_color: redis:2 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 galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle allocation score on overcloud-controller-0: 0 -+container_color: galera-bundle allocation score on overcloud-controller-1: 0 -+container_color: galera-bundle allocation score on overcloud-controller-2: 0 -+container_color: galera-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-0 allocation score on overcloud-controller-0: INFINITY -+container_color: galera-bundle-0 allocation score on overcloud-controller-1: 0 -+container_color: galera-bundle-0 allocation score on overcloud-controller-2: 0 -+container_color: galera-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-1 allocation score on overcloud-controller-0: 0 -+container_color: galera-bundle-1 allocation score on overcloud-controller-1: INFINITY -+container_color: galera-bundle-1 allocation score on overcloud-controller-2: 0 -+container_color: galera-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-2 allocation score on overcloud-controller-0: 0 -+container_color: galera-bundle-2 allocation score on overcloud-controller-1: 0 -+container_color: galera-bundle-2 allocation score on overcloud-controller-2: INFINITY -+container_color: galera-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+container_color: galera-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+container_color: galera-bundle-docker-0 allocation score on overcloud-controller-2: 0 -+container_color: galera-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on overcloud-controller-0: 0 -+container_color: galera-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+container_color: galera-bundle-docker-1 allocation score on overcloud-controller-2: 0 -+container_color: galera-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on overcloud-controller-0: 0 -+container_color: galera-bundle-docker-2 allocation score on overcloud-controller-1: 0 -+container_color: galera-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+container_color: galera-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+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 overcloud-controller-0: 0 -+container_color: galera-bundle-master allocation score on overcloud-controller-1: 0 -+container_color: galera-bundle-master allocation score on overcloud-controller-2: 0 -+container_color: galera-bundle-master allocation score on overcloud-novacompute-0: 0 -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:0 allocation score on overcloud-controller-0: 0 -+container_color: galera:0 allocation score on overcloud-controller-1: 0 -+container_color: galera:0 allocation score on overcloud-controller-2: 0 -+container_color: galera:0 allocation score on overcloud-novacompute-0: 0 -+container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:1 allocation score on overcloud-controller-0: 0 -+container_color: galera:1 allocation score on overcloud-controller-1: 0 -+container_color: galera:1 allocation score on overcloud-controller-2: 0 -+container_color: galera:1 allocation score on overcloud-novacompute-0: 0 -+container_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:2 allocation score on overcloud-controller-0: 0 -+container_color: galera:2 allocation score on overcloud-controller-1: 0 -+container_color: galera:2 allocation score on overcloud-controller-2: 0 -+container_color: galera:2 allocation score on overcloud-novacompute-0: 0 -+container_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera:2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-controller-0: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-0: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-0: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-0: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-0: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-0: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-0: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-0: 0 -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-0: 0 -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: openstack-cinder-backup allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-backup allocation score on galera-bundle-1: -INFINITY -+container_color: openstack-cinder-backup allocation score on galera-bundle-2: -INFINITY -+container_color: openstack-cinder-backup allocation score on overcloud-controller-0: 0 -+container_color: openstack-cinder-backup allocation score on overcloud-controller-1: 0 -+container_color: openstack-cinder-backup allocation score on overcloud-controller-2: 0 -+container_color: openstack-cinder-backup allocation score on overcloud-novacompute-0: -INFINITY -+container_color: openstack-cinder-backup allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-backup allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: openstack-cinder-backup allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: openstack-cinder-backup allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-backup allocation score on redis-bundle-1: -INFINITY -+container_color: openstack-cinder-backup allocation score on redis-bundle-2: -INFINITY -+container_color: openstack-cinder-backup-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-backup-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: openstack-cinder-backup-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: openstack-cinder-backup-docker-0 allocation score on overcloud-controller-0: 0 -+container_color: openstack-cinder-backup-docker-0 allocation score on overcloud-controller-1: INFINITY -+container_color: openstack-cinder-backup-docker-0 allocation score on overcloud-controller-2: 0 -+container_color: openstack-cinder-backup-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: openstack-cinder-backup-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-backup-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: openstack-cinder-backup-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: openstack-cinder-backup-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-backup-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: openstack-cinder-backup-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on galera-bundle-1: -INFINITY -+container_color: openstack-cinder-volume allocation score on galera-bundle-2: -INFINITY -+container_color: openstack-cinder-volume allocation score on overcloud-controller-0: 0 -+container_color: openstack-cinder-volume allocation score on overcloud-controller-1: 0 -+container_color: openstack-cinder-volume allocation score on overcloud-controller-2: 0 -+container_color: openstack-cinder-volume allocation score on overcloud-novacompute-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on redis-bundle-1: -INFINITY -+container_color: openstack-cinder-volume allocation score on redis-bundle-2: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on overcloud-controller-0: INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on overcloud-controller-1: 0 -+container_color: openstack-cinder-volume-docker-0 allocation score on overcloud-controller-2: 0 -+container_color: openstack-cinder-volume-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: rabbitmq-bundle allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq-bundle allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq-bundle allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on overcloud-controller-0: INFINITY -+container_color: rabbitmq-bundle-0 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq-bundle-0 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq-bundle-1 allocation score on overcloud-controller-1: INFINITY -+container_color: rabbitmq-bundle-1 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq-bundle-2 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq-bundle-2 allocation score on overcloud-controller-2: INFINITY -+container_color: rabbitmq-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-clone allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-novacompute-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-1: 0 -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-2: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq:0 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq:0 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq:0 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq:0 allocation score on overcloud-novacompute-0: 0 -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: 0 -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: 0 -+container_color: rabbitmq:1 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq:1 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq:1 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq:1 allocation score on overcloud-novacompute-0: 0 -+container_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY -+container_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: 0 -+container_color: rabbitmq:2 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq:2 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq:2 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq:2 allocation score on overcloud-novacompute-0: 0 -+container_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq:2 allocation score on rabbitmq-bundle-1: 0 -+container_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY -+container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle allocation score on overcloud-controller-0: 0 -+container_color: redis-bundle allocation score on overcloud-controller-1: 0 -+container_color: redis-bundle allocation score on overcloud-controller-2: 0 -+container_color: redis-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-0 allocation score on overcloud-controller-0: INFINITY -+container_color: redis-bundle-0 allocation score on overcloud-controller-1: 0 -+container_color: redis-bundle-0 allocation score on overcloud-controller-2: 0 -+container_color: redis-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-1 allocation score on overcloud-controller-0: 0 -+container_color: redis-bundle-1 allocation score on overcloud-controller-1: INFINITY -+container_color: redis-bundle-1 allocation score on overcloud-controller-2: 0 -+container_color: redis-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-2 allocation score on overcloud-controller-0: 0 -+container_color: redis-bundle-2 allocation score on overcloud-controller-1: 0 -+container_color: redis-bundle-2 allocation score on overcloud-controller-2: INFINITY -+container_color: redis-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+container_color: redis-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+container_color: redis-bundle-docker-0 allocation score on overcloud-controller-2: 0 -+container_color: redis-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on overcloud-controller-0: 0 -+container_color: redis-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+container_color: redis-bundle-docker-1 allocation score on overcloud-controller-2: 0 -+container_color: redis-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on overcloud-controller-0: 0 -+container_color: redis-bundle-docker-2 allocation score on overcloud-controller-1: 0 -+container_color: redis-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+container_color: redis-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-master allocation score on overcloud-controller-0: 0 -+container_color: redis-bundle-master allocation score on overcloud-controller-1: 0 -+container_color: redis-bundle-master allocation score on overcloud-controller-2: 0 -+container_color: redis-bundle-master allocation score on overcloud-novacompute-0: 0 -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY -+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 galera-bundle-0: -INFINITY -+container_color: redis:0 allocation score on galera-bundle-1: -INFINITY -+container_color: redis:0 allocation score on galera-bundle-2: -INFINITY -+container_color: redis:0 allocation score on overcloud-controller-0: 0 -+container_color: redis:0 allocation score on overcloud-controller-1: 0 -+container_color: redis:0 allocation score on overcloud-controller-2: 0 -+container_color: redis:0 allocation score on overcloud-novacompute-0: 0 -+container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-2: -INFINITY -+container_color: redis:1 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:1 allocation score on galera-bundle-1: -INFINITY -+container_color: redis:1 allocation score on galera-bundle-2: -INFINITY -+container_color: redis:1 allocation score on overcloud-controller-0: 0 -+container_color: redis:1 allocation score on overcloud-controller-1: 0 -+container_color: redis:1 allocation score on overcloud-controller-2: 0 -+container_color: redis:1 allocation score on overcloud-novacompute-0: 0 -+container_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-2: -INFINITY -+container_color: redis:2 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:2 allocation score on galera-bundle-1: -INFINITY -+container_color: redis:2 allocation score on galera-bundle-2: -INFINITY -+container_color: redis:2 allocation score on overcloud-controller-0: 0 -+container_color: redis:2 allocation score on overcloud-controller-1: 0 -+container_color: redis:2 allocation score on overcloud-controller-2: 0 -+container_color: redis:2 allocation score on overcloud-novacompute-0: 0 -+container_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis:2 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:2 allocation score on redis-bundle-1: -INFINITY -+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: fence1 allocation score on overcloud-controller-0: 0 -+native_color: fence1 allocation score on overcloud-controller-1: 0 -+native_color: fence1 allocation score on overcloud-controller-2: 0 -+native_color: fence1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: foo allocation score on overcloud-controller-0: 0 -+native_color: foo allocation score on overcloud-controller-1: 0 -+native_color: foo allocation score on overcloud-controller-2: 0 -+native_color: foo allocation score on overcloud-novacompute-0: 0 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-0 allocation score on overcloud-controller-0: INFINITY -+native_color: galera-bundle-0 allocation score on overcloud-controller-1: 0 -+native_color: galera-bundle-0 allocation score on overcloud-controller-2: 0 -+native_color: galera-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-1 allocation score on overcloud-controller-0: 0 -+native_color: galera-bundle-1 allocation score on overcloud-controller-1: INFINITY -+native_color: galera-bundle-1 allocation score on overcloud-controller-2: 0 -+native_color: galera-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-2 allocation score on overcloud-controller-0: 0 -+native_color: galera-bundle-2 allocation score on overcloud-controller-1: 0 -+native_color: galera-bundle-2 allocation score on overcloud-controller-2: INFINITY -+native_color: galera-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+native_color: galera-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+native_color: galera-bundle-docker-0 allocation score on overcloud-controller-2: 0 -+native_color: galera-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-controller-2: 0 -+native_color: galera-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:0 allocation score on overcloud-controller-0: -INFINITY -+native_color: galera:0 allocation score on overcloud-controller-1: -INFINITY -+native_color: galera:0 allocation score on overcloud-controller-2: -INFINITY -+native_color: galera:0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-1: INFINITY -+native_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:1 allocation score on overcloud-controller-0: -INFINITY -+native_color: galera:1 allocation score on overcloud-controller-1: -INFINITY -+native_color: galera:1 allocation score on overcloud-controller-2: -INFINITY -+native_color: galera:1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-2: INFINITY -+native_color: galera:2 allocation score on overcloud-controller-0: -INFINITY -+native_color: galera:2 allocation score on overcloud-controller-1: -INFINITY -+native_color: galera:2 allocation score on overcloud-controller-2: -INFINITY -+native_color: galera:2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera:2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+native_color: ip-10.0.0.7 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-10.0.0.7 allocation score on galera-bundle-1: -INFINITY -+native_color: ip-10.0.0.7 allocation score on galera-bundle-2: -INFINITY -+native_color: ip-10.0.0.7 allocation score on overcloud-controller-0: 0 -+native_color: ip-10.0.0.7 allocation score on overcloud-controller-1: INFINITY -+native_color: ip-10.0.0.7 allocation score on overcloud-controller-2: 0 -+native_color: ip-10.0.0.7 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: ip-10.0.0.7 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-10.0.0.7 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: ip-10.0.0.7 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: ip-10.0.0.7 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-10.0.0.7 allocation score on redis-bundle-1: -INFINITY -+native_color: ip-10.0.0.7 allocation score on redis-bundle-2: -INFINITY -+native_color: ip-172.16.1.9 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-172.16.1.9 allocation score on galera-bundle-1: -INFINITY -+native_color: ip-172.16.1.9 allocation score on galera-bundle-2: -INFINITY -+native_color: ip-172.16.1.9 allocation score on overcloud-controller-0: 0 -+native_color: ip-172.16.1.9 allocation score on overcloud-controller-1: INFINITY -+native_color: ip-172.16.1.9 allocation score on overcloud-controller-2: 0 -+native_color: ip-172.16.1.9 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: ip-172.16.1.9 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-172.16.1.9 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: ip-172.16.1.9 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: ip-172.16.1.9 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-172.16.1.9 allocation score on redis-bundle-1: -INFINITY -+native_color: ip-172.16.1.9 allocation score on redis-bundle-2: -INFINITY -+native_color: ip-172.16.2.4 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-172.16.2.4 allocation score on galera-bundle-1: -INFINITY -+native_color: ip-172.16.2.4 allocation score on galera-bundle-2: -INFINITY -+native_color: ip-172.16.2.4 allocation score on overcloud-controller-0: 0 -+native_color: ip-172.16.2.4 allocation score on overcloud-controller-1: 0 -+native_color: ip-172.16.2.4 allocation score on overcloud-controller-2: INFINITY -+native_color: ip-172.16.2.4 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: ip-172.16.2.4 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-172.16.2.4 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: ip-172.16.2.4 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: ip-172.16.2.4 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-172.16.2.4 allocation score on redis-bundle-1: -INFINITY -+native_color: ip-172.16.2.4 allocation score on redis-bundle-2: -INFINITY -+native_color: ip-172.16.2.8 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-172.16.2.8 allocation score on galera-bundle-1: -INFINITY -+native_color: ip-172.16.2.8 allocation score on galera-bundle-2: -INFINITY -+native_color: ip-172.16.2.8 allocation score on overcloud-controller-0: INFINITY -+native_color: ip-172.16.2.8 allocation score on overcloud-controller-1: 0 -+native_color: ip-172.16.2.8 allocation score on overcloud-controller-2: 0 -+native_color: ip-172.16.2.8 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: ip-172.16.2.8 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-172.16.2.8 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: ip-172.16.2.8 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: ip-172.16.2.8 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-172.16.2.8 allocation score on redis-bundle-1: -INFINITY -+native_color: ip-172.16.2.8 allocation score on redis-bundle-2: -INFINITY -+native_color: ip-172.16.3.9 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-172.16.3.9 allocation score on galera-bundle-1: -INFINITY -+native_color: ip-172.16.3.9 allocation score on galera-bundle-2: -INFINITY -+native_color: ip-172.16.3.9 allocation score on overcloud-controller-0: 0 -+native_color: ip-172.16.3.9 allocation score on overcloud-controller-1: 0 -+native_color: ip-172.16.3.9 allocation score on overcloud-controller-2: INFINITY -+native_color: ip-172.16.3.9 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: ip-172.16.3.9 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-172.16.3.9 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: ip-172.16.3.9 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: ip-172.16.3.9 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-172.16.3.9 allocation score on redis-bundle-1: -INFINITY -+native_color: ip-172.16.3.9 allocation score on redis-bundle-2: -INFINITY -+native_color: ip-192.168.24.9 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.24.9 allocation score on galera-bundle-1: -INFINITY -+native_color: ip-192.168.24.9 allocation score on galera-bundle-2: -INFINITY -+native_color: ip-192.168.24.9 allocation score on overcloud-controller-0: INFINITY -+native_color: ip-192.168.24.9 allocation score on overcloud-controller-1: 0 -+native_color: ip-192.168.24.9 allocation score on overcloud-controller-2: 0 -+native_color: ip-192.168.24.9 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: ip-192.168.24.9 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.24.9 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: ip-192.168.24.9 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: ip-192.168.24.9 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.24.9 allocation score on redis-bundle-1: -INFINITY -+native_color: ip-192.168.24.9 allocation score on redis-bundle-2: -INFINITY -+native_color: openstack-cinder-backup-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: openstack-cinder-backup-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: openstack-cinder-backup-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: openstack-cinder-backup-docker-0 allocation score on overcloud-controller-0: 0 -+native_color: openstack-cinder-backup-docker-0 allocation score on overcloud-controller-1: INFINITY -+native_color: openstack-cinder-backup-docker-0 allocation score on overcloud-controller-2: 0 -+native_color: openstack-cinder-backup-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: openstack-cinder-backup-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: openstack-cinder-backup-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: openstack-cinder-backup-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: openstack-cinder-backup-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: openstack-cinder-backup-docker-0 allocation score on redis-bundle-1: -INFINITY -+native_color: openstack-cinder-backup-docker-0 allocation score on redis-bundle-2: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on overcloud-controller-0: INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on overcloud-controller-1: 0 -+native_color: openstack-cinder-volume-docker-0 allocation score on overcloud-controller-2: 0 -+native_color: openstack-cinder-volume-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-1: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-2: -INFINITY -+native_color: overcloud-novacompute-0 allocation score on overcloud-controller-0: -INFINITY -+native_color: overcloud-novacompute-0 allocation score on overcloud-controller-1: -INFINITY -+native_color: overcloud-novacompute-0 allocation score on overcloud-controller-2: -INFINITY -+native_color: overcloud-novacompute-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on overcloud-controller-0: INFINITY -+native_color: rabbitmq-bundle-0 allocation score on overcloud-controller-1: 0 -+native_color: rabbitmq-bundle-0 allocation score on overcloud-controller-2: 0 -+native_color: rabbitmq-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on overcloud-controller-0: 0 -+native_color: rabbitmq-bundle-1 allocation score on overcloud-controller-1: INFINITY -+native_color: rabbitmq-bundle-1 allocation score on overcloud-controller-2: 0 -+native_color: rabbitmq-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on overcloud-controller-0: 0 -+native_color: rabbitmq-bundle-2 allocation score on overcloud-controller-1: 0 -+native_color: rabbitmq-bundle-2 allocation score on overcloud-controller-2: INFINITY -+native_color: rabbitmq-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-2: 0 -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-2: 0 -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-controller-1: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-controller-2: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-controller-1: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-controller-2: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY -+native_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-controller-1: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-controller-2: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq:2 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 galera-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-0 allocation score on overcloud-controller-0: INFINITY -+native_color: redis-bundle-0 allocation score on overcloud-controller-1: 0 -+native_color: redis-bundle-0 allocation score on overcloud-controller-2: 0 -+native_color: redis-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-1 allocation score on overcloud-controller-0: 0 -+native_color: redis-bundle-1 allocation score on overcloud-controller-1: INFINITY -+native_color: redis-bundle-1 allocation score on overcloud-controller-2: 0 -+native_color: redis-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-2 allocation score on overcloud-controller-0: 0 -+native_color: redis-bundle-2 allocation score on overcloud-controller-1: 0 -+native_color: redis-bundle-2 allocation score on overcloud-controller-2: INFINITY -+native_color: redis-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -+native_color: redis-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+native_color: redis-bundle-docker-0 allocation score on overcloud-controller-2: 0 -+native_color: redis-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY -+native_color: redis-bundle-docker-1 allocation score on overcloud-controller-2: 0 -+native_color: redis-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY -+native_color: redis-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-1: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-2: -INFINITY -+native_color: redis:0 allocation score on overcloud-controller-0: -INFINITY -+native_color: redis:0 allocation score on overcloud-controller-1: -INFINITY -+native_color: redis:0 allocation score on overcloud-controller-2: -INFINITY -+native_color: redis:0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-0: INFINITY -+native_color: redis:0 allocation score on redis-bundle-1: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-2: -INFINITY -+native_color: redis:1 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:1 allocation score on galera-bundle-1: -INFINITY -+native_color: redis:1 allocation score on galera-bundle-2: -INFINITY -+native_color: redis:1 allocation score on overcloud-controller-0: -INFINITY -+native_color: redis:1 allocation score on overcloud-controller-1: -INFINITY -+native_color: redis:1 allocation score on overcloud-controller-2: -INFINITY -+native_color: redis:1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis:1 allocation score on redis-bundle-0: -INFINITY -+native_color: redis:1 allocation score on redis-bundle-1: INFINITY -+native_color: redis:1 allocation score on redis-bundle-2: -INFINITY -+native_color: redis:2 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:2 allocation score on galera-bundle-1: -INFINITY -+native_color: redis:2 allocation score on galera-bundle-2: -INFINITY -+native_color: redis:2 allocation score on overcloud-controller-0: -INFINITY -+native_color: redis:2 allocation score on overcloud-controller-1: -INFINITY -+native_color: redis:2 allocation score on overcloud-controller-2: -INFINITY -+native_color: redis:2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis:2 allocation score on redis-bundle-0: -INFINITY -+native_color: redis:2 allocation score on redis-bundle-1: -INFINITY -+native_color: redis:2 allocation score on redis-bundle-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/remote-fence-unclean-3.summary b/pengine/test10/remote-fence-unclean-3.summary -new file mode 100644 -index 0000000..cc60ebe ---- /dev/null -+++ b/pengine/test10/remote-fence-unclean-3.summary -@@ -0,0 +1,92 @@ -+ -+Current cluster status: -+Online: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ] -+RemoteOFFLINE: [ overcloud-novacompute-0 ] -+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 ] -+ -+ foo (ocf::heartbeat:Dummy): Stopped -+ fence1 (stonith:fence_xvm): Stopped -+ overcloud-novacompute-0 (ocf::pacemaker:remote): FAILED overcloud-controller-0 -+ Docker container set: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started overcloud-controller-0 -+ rabbitmq-bundle-1 (ocf::heartbeat:rabbitmq-cluster): Started overcloud-controller-1 -+ rabbitmq-bundle-2 (ocf::heartbeat:rabbitmq-cluster): Started overcloud-controller-2 -+ Docker container set: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Master overcloud-controller-0 -+ galera-bundle-1 (ocf::heartbeat:galera): Master overcloud-controller-1 -+ galera-bundle-2 (ocf::heartbeat:galera): Master overcloud-controller-2 -+ Docker container set: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master overcloud-controller-0 -+ redis-bundle-1 (ocf::heartbeat:redis): Slave overcloud-controller-1 -+ redis-bundle-2 (ocf::heartbeat:redis): Slave overcloud-controller-2 -+ ip-192.168.24.9 (ocf::heartbeat:IPaddr2): Started overcloud-controller-0 -+ ip-10.0.0.7 (ocf::heartbeat:IPaddr2): Started overcloud-controller-1 -+ ip-172.16.2.4 (ocf::heartbeat:IPaddr2): Started overcloud-controller-2 -+ ip-172.16.2.8 (ocf::heartbeat:IPaddr2): Started overcloud-controller-0 -+ ip-172.16.1.9 (ocf::heartbeat:IPaddr2): Started overcloud-controller-1 -+ ip-172.16.3.9 (ocf::heartbeat:IPaddr2): Started overcloud-controller-2 -+ Docker container set: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-0 -+ haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started overcloud-controller-1 -+ haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started overcloud-controller-2 -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-0 -+ Docker container: openstack-cinder-backup [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-backup:latest] -+ openstack-cinder-backup-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-1 -+ -+Transition Summary: -+ * Fence overcloud-novacompute-0 -+ * Start foo (overcloud-controller-0) -+ * Start fence1 (overcloud-controller-1) -+ * Stop overcloud-novacompute-0 (overcloud-controller-0) -+ -+Executing cluster transition: -+ * Resource action: foo monitor on overcloud-controller-2 -+ * Resource action: foo monitor on overcloud-controller-1 -+ * Resource action: foo monitor on overcloud-controller-0 -+ * Resource action: fence1 monitor on overcloud-controller-2 -+ * Resource action: fence1 monitor on overcloud-controller-1 -+ * Resource action: fence1 monitor on overcloud-controller-0 -+ * Resource action: overcloud-novacompute-0 stop on overcloud-controller-0 -+ * Fencing overcloud-novacompute-0 (reboot) -+ * Pseudo action: stonith_complete -+ * Pseudo action: all_stopped -+ * Resource action: foo start on overcloud-controller-0 -+ * Resource action: fence1 start on overcloud-controller-1 -+ * Resource action: fence1 monitor=60000 on overcloud-controller-1 -+ -+Revised cluster status: -+Online: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ] -+RemoteOFFLINE: [ overcloud-novacompute-0 ] -+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 ] -+ -+ foo (ocf::heartbeat:Dummy): Started overcloud-controller-0 -+ fence1 (stonith:fence_xvm): Started overcloud-controller-1 -+ overcloud-novacompute-0 (ocf::pacemaker:remote): Stopped -+ Docker container set: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started overcloud-controller-0 -+ rabbitmq-bundle-1 (ocf::heartbeat:rabbitmq-cluster): Started overcloud-controller-1 -+ rabbitmq-bundle-2 (ocf::heartbeat:rabbitmq-cluster): Started overcloud-controller-2 -+ Docker container set: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-0 (ocf::heartbeat:galera): Master overcloud-controller-0 -+ galera-bundle-1 (ocf::heartbeat:galera): Master overcloud-controller-1 -+ galera-bundle-2 (ocf::heartbeat:galera): Master overcloud-controller-2 -+ Docker container set: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master overcloud-controller-0 -+ redis-bundle-1 (ocf::heartbeat:redis): Slave overcloud-controller-1 -+ redis-bundle-2 (ocf::heartbeat:redis): Slave overcloud-controller-2 -+ ip-192.168.24.9 (ocf::heartbeat:IPaddr2): Started overcloud-controller-0 -+ ip-10.0.0.7 (ocf::heartbeat:IPaddr2): Started overcloud-controller-1 -+ ip-172.16.2.4 (ocf::heartbeat:IPaddr2): Started overcloud-controller-2 -+ ip-172.16.2.8 (ocf::heartbeat:IPaddr2): Started overcloud-controller-0 -+ ip-172.16.1.9 (ocf::heartbeat:IPaddr2): Started overcloud-controller-1 -+ ip-172.16.3.9 (ocf::heartbeat:IPaddr2): Started overcloud-controller-2 -+ Docker container set: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-0 -+ haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started overcloud-controller-1 -+ haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started overcloud-controller-2 -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-0 -+ Docker container: openstack-cinder-backup [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-backup:latest] -+ openstack-cinder-backup-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-1 -+ -diff --git a/pengine/test10/remote-fence-unclean-3.xml b/pengine/test10/remote-fence-unclean-3.xml -new file mode 100644 -index 0000000..8856fc0 ---- /dev/null -+++ b/pengine/test10/remote-fence-unclean-3.xml -@@ -0,0 +1,813 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.8.3.1 - diff --git a/SOURCES/084-remote-fence-test.patch b/SOURCES/084-remote-fence-test.patch deleted file mode 100644 index ecba100..0000000 --- a/SOURCES/084-remote-fence-test.patch +++ /dev/null @@ -1,300 +0,0 @@ -From 201d058a6df884ddab4d83d482203e0ef7044d21 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 5 Jul 2017 18:03:14 -0500 -Subject: [PATCH] Test: pengine: update remote-fence-unclean-3 regression test - ---- - pengine/test10/remote-fence-unclean-3.dot | 22 ++----- - pengine/test10/remote-fence-unclean-3.exp | 95 +++++++-------------------- - pengine/test10/remote-fence-unclean-3.scores | 4 -- - pengine/test10/remote-fence-unclean-3.summary | 15 ++--- - 4 files changed, 34 insertions(+), 102 deletions(-) - -diff --git a/pengine/test10/remote-fence-unclean-3.dot b/pengine/test10/remote-fence-unclean-3.dot -index 11d1208..b32b77e 100644 ---- a/pengine/test10/remote-fence-unclean-3.dot -+++ b/pengine/test10/remote-fence-unclean-3.dot -@@ -1,27 +1,19 @@ - digraph "g" { --"all_stopped" -> "fence1_start_0 overcloud-controller-1" [ style = bold] -+"all_stopped" -> "fence1_start_0 overcloud-controller-0" [ style = bold] - "all_stopped" [ style=bold color="green" fontcolor="orange"] --"fence1_monitor_0 overcloud-controller-0" -> "fence1_start_0 overcloud-controller-1" [ style = bold] -+"fence1_monitor_0 overcloud-controller-0" -> "fence1_start_0 overcloud-controller-0" [ style = bold] - "fence1_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] --"fence1_monitor_0 overcloud-controller-1" -> "fence1_start_0 overcloud-controller-1" [ style = bold] -+"fence1_monitor_0 overcloud-controller-1" -> "fence1_start_0 overcloud-controller-0" [ style = bold] - "fence1_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] --"fence1_monitor_0 overcloud-controller-2" -> "fence1_start_0 overcloud-controller-1" [ style = bold] -+"fence1_monitor_0 overcloud-controller-2" -> "fence1_start_0 overcloud-controller-0" [ style = bold] - "fence1_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] --"fence1_monitor_60000 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] --"fence1_start_0 overcloud-controller-1" -> "fence1_monitor_60000 overcloud-controller-1" [ style = bold] --"fence1_start_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] --"foo_monitor_0 overcloud-controller-0" -> "foo_start_0 overcloud-controller-0" [ style = bold] --"foo_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] --"foo_monitor_0 overcloud-controller-1" -> "foo_start_0 overcloud-controller-0" [ style = bold] --"foo_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] --"foo_monitor_0 overcloud-controller-2" -> "foo_start_0 overcloud-controller-0" [ style = bold] --"foo_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] --"foo_start_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"fence1_monitor_60000 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"fence1_start_0 overcloud-controller-0" -> "fence1_monitor_60000 overcloud-controller-0" [ style = bold] -+"fence1_start_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] - "overcloud-novacompute-0_stop_0 overcloud-controller-0" -> "all_stopped" [ style = bold] - "overcloud-novacompute-0_stop_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] - "stonith 'reboot' overcloud-novacompute-0" -> "stonith_complete" [ style = bold] - "stonith 'reboot' overcloud-novacompute-0" [ style=bold color="green" fontcolor="black"] - "stonith_complete" -> "all_stopped" [ style = bold] --"stonith_complete" -> "foo_start_0 overcloud-controller-0" [ style = bold] - "stonith_complete" [ style=bold color="green" fontcolor="orange"] - } -diff --git a/pengine/test10/remote-fence-unclean-3.exp b/pengine/test10/remote-fence-unclean-3.exp -index 14e1b0b..2e341bd 100644 ---- a/pengine/test10/remote-fence-unclean-3.exp -+++ b/pengine/test10/remote-fence-unclean-3.exp -@@ -1,71 +1,22 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - -- -+ - - - - -- -+ - - - -- -+ - -- -+ - -- -+ - - - -@@ -73,44 +24,44 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -@@ -122,9 +73,9 @@ - - - -- -+ - -- -+ - - - -@@ -133,19 +84,19 @@ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - - - -@@ -156,7 +107,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-fence-unclean-3.scores b/pengine/test10/remote-fence-unclean-3.scores -index 0284218..24bdcf9 100644 ---- a/pengine/test10/remote-fence-unclean-3.scores -+++ b/pengine/test10/remote-fence-unclean-3.scores -@@ -872,10 +872,6 @@ native_color: fence1 allocation score on overcloud-controller-0: 0 - native_color: fence1 allocation score on overcloud-controller-1: 0 - native_color: fence1 allocation score on overcloud-controller-2: 0 - native_color: fence1 allocation score on overcloud-novacompute-0: -INFINITY --native_color: foo allocation score on overcloud-controller-0: 0 --native_color: foo allocation score on overcloud-controller-1: 0 --native_color: foo allocation score on overcloud-controller-2: 0 --native_color: foo allocation score on overcloud-novacompute-0: 0 - native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY - native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY - native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -diff --git a/pengine/test10/remote-fence-unclean-3.summary b/pengine/test10/remote-fence-unclean-3.summary -index cc60ebe..ec24500 100644 ---- a/pengine/test10/remote-fence-unclean-3.summary -+++ b/pengine/test10/remote-fence-unclean-3.summary -@@ -4,7 +4,6 @@ Online: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ] - RemoteOFFLINE: [ overcloud-novacompute-0 ] - 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 ] - -- foo (ocf::heartbeat:Dummy): Stopped - fence1 (stonith:fence_xvm): Stopped - overcloud-novacompute-0 (ocf::pacemaker:remote): FAILED overcloud-controller-0 - Docker container set: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -@@ -36,14 +35,10 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bund - - Transition Summary: - * Fence overcloud-novacompute-0 -- * Start foo (overcloud-controller-0) -- * Start fence1 (overcloud-controller-1) -+ * Start fence1 (overcloud-controller-0) - * Stop overcloud-novacompute-0 (overcloud-controller-0) - - Executing cluster transition: -- * Resource action: foo monitor on overcloud-controller-2 -- * Resource action: foo monitor on overcloud-controller-1 -- * Resource action: foo monitor on overcloud-controller-0 - * Resource action: fence1 monitor on overcloud-controller-2 - * Resource action: fence1 monitor on overcloud-controller-1 - * Resource action: fence1 monitor on overcloud-controller-0 -@@ -51,17 +46,15 @@ Executing cluster transition: - * Fencing overcloud-novacompute-0 (reboot) - * Pseudo action: stonith_complete - * Pseudo action: all_stopped -- * Resource action: foo start on overcloud-controller-0 -- * Resource action: fence1 start on overcloud-controller-1 -- * Resource action: fence1 monitor=60000 on overcloud-controller-1 -+ * Resource action: fence1 start on overcloud-controller-0 -+ * Resource action: fence1 monitor=60000 on overcloud-controller-0 - - Revised cluster status: - Online: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ] - RemoteOFFLINE: [ overcloud-novacompute-0 ] - 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 ] - -- foo (ocf::heartbeat:Dummy): Started overcloud-controller-0 -- fence1 (stonith:fence_xvm): Started overcloud-controller-1 -+ fence1 (stonith:fence_xvm): Started overcloud-controller-0 - overcloud-novacompute-0 (ocf::pacemaker:remote): Stopped - Docker container set: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] - rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started overcloud-controller-0 --- -1.8.3.1 - diff --git a/SOURCES/085-remote-fence-test2.patch b/SOURCES/085-remote-fence-test2.patch deleted file mode 100644 index 03d2304..0000000 --- a/SOURCES/085-remote-fence-test2.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 25647ff86dd24aff9e6de0f091656db309ed0c02 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 6 Jul 2017 17:04:02 -0500 -Subject: [PATCH] Test: pengine: update remote-fence-unclean-3 test for 1.1.17 - merge - ---- - pengine/test10/remote-fence-unclean-3.scores | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/pengine/test10/remote-fence-unclean-3.scores b/pengine/test10/remote-fence-unclean-3.scores -index 24bdcf9..77d71d6 100644 ---- a/pengine/test10/remote-fence-unclean-3.scores -+++ b/pengine/test10/remote-fence-unclean-3.scores -@@ -872,6 +872,9 @@ native_color: fence1 allocation score on overcloud-controller-0: 0 - native_color: fence1 allocation score on overcloud-controller-1: 0 - native_color: fence1 allocation score on overcloud-controller-2: 0 - native_color: fence1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: fence1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: fence1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: fence1 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY - native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY - native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -@@ -1109,6 +1112,9 @@ native_color: overcloud-novacompute-0 allocation score on overcloud-controller-0 - native_color: overcloud-novacompute-0 allocation score on overcloud-controller-1: -INFINITY - native_color: overcloud-novacompute-0 allocation score on overcloud-controller-2: -INFINITY - native_color: overcloud-novacompute-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: overcloud-novacompute-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: overcloud-novacompute-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: overcloud-novacompute-0 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on overcloud-controller-0: INFINITY - native_color: rabbitmq-bundle-0 allocation score on overcloud-controller-1: 0 - native_color: rabbitmq-bundle-0 allocation score on overcloud-controller-2: 0 --- -1.8.3.1 - diff --git a/SOURCES/086-nested-containers.patch b/SOURCES/086-nested-containers.patch deleted file mode 100644 index 70d3097..0000000 --- a/SOURCES/086-nested-containers.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 786f44f9ab2731c8fc7d534689d5925cd6d3d98e Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 18 Jul 2017 14:31:45 +1000 -Subject: [PATCH] Fix: PE: Ensure nested container connections run on the same - host - ---- - pengine/container.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/pengine/container.c b/pengine/container.c -index f742660..280a61a 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -100,11 +100,22 @@ container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - - for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ pe_node_t *docker_host = tuple->docker->allocated_to; - - CRM_ASSERT(tuple); - if(tuple->ip) { - tuple->ip->cmds->allocate(tuple->ip, prefer, data_set); - } -+ -+ if(tuple->remote && is_remote_node(docker_host)) { -+ /* We need 'nested' connection resources to be on the same -+ * host because pacemaker-remoted only supports a single -+ * active connection -+ */ -+ rsc_colocation_new("child-remote-with-docker-remote", NULL, -+ INFINITY, tuple->remote, docker_host->details->remote_rsc, NULL, NULL, data_set); -+ } -+ - if(tuple->remote) { - tuple->remote->cmds->allocate(tuple->remote, prefer, data_set); - } --- -1.8.3.1 - diff --git a/SOURCES/087-nested-containers-test.patch b/SOURCES/087-nested-containers-test.patch deleted file mode 100644 index 211ce27..0000000 --- a/SOURCES/087-nested-containers-test.patch +++ /dev/null @@ -1,1461 +0,0 @@ -From 345bf572da5969da1a3d77940fb3b5f5b2cef771 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 18 Jul 2017 14:35:44 +1000 -Subject: [PATCH] Test: PE: Ensure nested container connections run on the same - host - ---- - pengine/regression.sh | 2 +- - pengine/test10/bundle-nested-colocation.dot | 72 ++++ - pengine/test10/bundle-nested-colocation.exp | 385 ++++++++++++++++++++ - pengine/test10/bundle-nested-colocation.scores | 401 +++++++++++++++++++++ - pengine/test10/bundle-nested-colocation.summary | 75 ++++ - pengine/test10/bundle-nested-colocation.xml | 455 ++++++++++++++++++++++++ - 6 files changed, 1389 insertions(+), 1 deletion(-) - create mode 100644 pengine/test10/bundle-nested-colocation.dot - create mode 100644 pengine/test10/bundle-nested-colocation.exp - create mode 100644 pengine/test10/bundle-nested-colocation.scores - create mode 100644 pengine/test10/bundle-nested-colocation.summary - create mode 100644 pengine/test10/bundle-nested-colocation.xml - -diff --git a/pengine/regression.sh b/pengine/regression.sh -index d89d93c..d1a8a3f 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -28,7 +28,6 @@ echo "" - - info Performing the following tests from $io_dir - create_mode="false" -- - echo "" - - do_test simple1 "Offline " -@@ -810,6 +809,7 @@ do_test bundle-order-partial-stop "Bundle startup ordering when some dependancie - do_test bundle-order-startup-clone "Prevent startup because bundle isn't promoted" - do_test bundle-order-startup-clone-2 "Bundle startup with clones" - do_test bundle-order-stop-clone "Stop bundle because clone is stopping" -+do_test bundle-nested-colocation "Colocation of nested connection resources" - - echo "" - do_test whitebox-fail1 "Fail whitebox container rsc." -diff --git a/pengine/test10/bundle-nested-colocation.dot b/pengine/test10/bundle-nested-colocation.dot -new file mode 100644 -index 0000000..a84f857 ---- /dev/null -+++ b/pengine/test10/bundle-nested-colocation.dot -@@ -0,0 +1,72 @@ -+digraph "g" { -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-0_monitor_60000 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-0_start_0 overcloud-controller-0" -> "rabbitmq-bundle-0_monitor_60000 overcloud-controller-0" [ style = bold] -+"rabbitmq-bundle-0_start_0 overcloud-controller-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-0_start_0 overcloud-controller-0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-0_start_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-1_monitor_60000 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-1_start_0 overcloud-controller-1" -> "rabbitmq-bundle-1_monitor_60000 overcloud-controller-1" [ style = bold] -+"rabbitmq-bundle-1_start_0 overcloud-controller-1" -> "rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq-bundle-1_start_0 overcloud-controller-1" -> "rabbitmq:1_start_0 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq-bundle-1_start_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-2_monitor_60000 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-2_start_0 overcloud-controller-2" -> "rabbitmq-bundle-2_monitor_60000 overcloud-controller-2" [ style = bold] -+"rabbitmq-bundle-2_start_0 overcloud-controller-2" -> "rabbitmq:2_monitor_10000 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq-bundle-2_start_0 overcloud-controller-2" -> "rabbitmq:2_start_0 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq-bundle-2_start_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq:1_start_0 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq:2_start_0 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-docker-0_monitor_60000 overcloud-rabbit-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq-bundle-0_start_0 overcloud-controller-0" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq-bundle-docker-0_monitor_60000 overcloud-rabbit-0" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-0_stop_0 overcloud-rabbit-0" -> "all_stopped" [ style = bold] -+"rabbitmq-bundle-docker-0_stop_0 overcloud-rabbit-0" -> "rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" [ style = bold] -+"rabbitmq-bundle-docker-0_stop_0 overcloud-rabbit-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-1_monitor_60000 overcloud-rabbit-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle-1_start_0 overcloud-controller-1" [ style = bold] -+"rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle-docker-1_monitor_60000 overcloud-rabbit-1" [ style = bold] -+"rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq:1_start_0 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-1_stop_0 overcloud-rabbit-1" -> "all_stopped" [ style = bold] -+"rabbitmq-bundle-docker-1_stop_0 overcloud-rabbit-1" -> "rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" [ style = bold] -+"rabbitmq-bundle-docker-1_stop_0 overcloud-rabbit-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-2_monitor_60000 overcloud-rabbit-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle-2_start_0 overcloud-controller-2" [ style = bold] -+"rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle-docker-2_monitor_60000 overcloud-rabbit-2" [ style = bold] -+"rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq:2_start_0 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-2_stop_0 overcloud-rabbit-2" -> "all_stopped" [ style = bold] -+"rabbitmq-bundle-docker-2_stop_0 overcloud-rabbit-2" -> "rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" [ style = bold] -+"rabbitmq-bundle-docker-2_stop_0 overcloud-rabbit-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" [ style = bold] -+"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" [ style = bold] -+"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" [ style = bold] -+"rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:1_start_0 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq:0_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:1_start_0 rabbitmq-bundle-1" -> "rabbitmq-bundle-clone_running_0" [ style = bold] -+"rabbitmq:1_start_0 rabbitmq-bundle-1" -> "rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq:1_start_0 rabbitmq-bundle-1" -> "rabbitmq:2_start_0 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq:1_start_0 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:2_monitor_10000 rabbitmq-bundle-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:2_start_0 rabbitmq-bundle-2" -> "rabbitmq-bundle-clone_running_0" [ style = bold] -+"rabbitmq:2_start_0 rabbitmq-bundle-2" -> "rabbitmq:2_monitor_10000 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq:2_start_0 rabbitmq-bundle-2" [ style=bold color="green" fontcolor="black"] -+} -diff --git a/pengine/test10/bundle-nested-colocation.exp b/pengine/test10/bundle-nested-colocation.exp -new file mode 100644 -index 0000000..3daf7d6 ---- /dev/null -+++ b/pengine/test10/bundle-nested-colocation.exp -@@ -0,0 +1,385 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-nested-colocation.scores b/pengine/test10/bundle-nested-colocation.scores -new file mode 100644 -index 0000000..c79e0ff ---- /dev/null -+++ b/pengine/test10/bundle-nested-colocation.scores -@@ -0,0 +1,401 @@ -+Allocation scores: -+Using the original execution date of: 2017-07-14 08:50:25Z -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-controller-0: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-controller-1: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-controller-2: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-galera-0: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-galera-1: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-galera-2: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-rabbit-0: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-rabbit-1: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-rabbit-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 overcloud-controller-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on overcloud-controller-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on overcloud-controller-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on overcloud-galera-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on overcloud-galera-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on overcloud-galera-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on overcloud-rabbit-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on overcloud-rabbit-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on overcloud-rabbit-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-controller-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-controller-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-controller-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-galera-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-galera-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-galera-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-rabbit-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-rabbit-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on overcloud-rabbit-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY -+clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-controller-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-controller-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-controller-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-galera-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-galera-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-galera-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-rabbit-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-rabbit-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on overcloud-rabbit-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY -+container_color: galera-bundle allocation score on overcloud-controller-0: -INFINITY -+container_color: galera-bundle allocation score on overcloud-controller-1: -INFINITY -+container_color: galera-bundle allocation score on overcloud-controller-2: -INFINITY -+container_color: galera-bundle allocation score on overcloud-galera-0: 0 -+container_color: galera-bundle allocation score on overcloud-galera-1: 0 -+container_color: galera-bundle allocation score on overcloud-galera-2: 0 -+container_color: galera-bundle allocation score on overcloud-rabbit-0: -INFINITY -+container_color: galera-bundle allocation score on overcloud-rabbit-1: -INFINITY -+container_color: galera-bundle allocation score on overcloud-rabbit-2: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on overcloud-controller-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on overcloud-controller-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on overcloud-controller-2: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on overcloud-galera-0: INFINITY -+container_color: galera-bundle-docker-0 allocation score on overcloud-galera-1: 0 -+container_color: galera-bundle-docker-0 allocation score on overcloud-galera-2: 0 -+container_color: galera-bundle-docker-0 allocation score on overcloud-rabbit-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on overcloud-rabbit-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on overcloud-rabbit-2: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on overcloud-controller-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on overcloud-controller-2: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on overcloud-galera-0: 0 -+container_color: galera-bundle-docker-1 allocation score on overcloud-galera-1: INFINITY -+container_color: galera-bundle-docker-1 allocation score on overcloud-galera-2: 0 -+container_color: galera-bundle-docker-1 allocation score on overcloud-rabbit-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on overcloud-rabbit-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on overcloud-rabbit-2: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on overcloud-controller-2: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on overcloud-galera-0: 0 -+container_color: galera-bundle-docker-2 allocation score on overcloud-galera-1: 0 -+container_color: galera-bundle-docker-2 allocation score on overcloud-galera-2: INFINITY -+container_color: galera-bundle-docker-2 allocation score on overcloud-rabbit-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on overcloud-rabbit-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on overcloud-rabbit-2: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle allocation score on overcloud-controller-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on overcloud-controller-1: -INFINITY -+container_color: rabbitmq-bundle allocation score on overcloud-controller-2: -INFINITY -+container_color: rabbitmq-bundle allocation score on overcloud-galera-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on overcloud-galera-1: -INFINITY -+container_color: rabbitmq-bundle allocation score on overcloud-galera-2: -INFINITY -+container_color: rabbitmq-bundle allocation score on overcloud-rabbit-0: 1 -+container_color: rabbitmq-bundle allocation score on overcloud-rabbit-1: 1 -+container_color: rabbitmq-bundle allocation score on overcloud-rabbit-2: 1 -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq-bundle-0 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq-bundle-0 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq-bundle-0 allocation score on overcloud-galera-0: 0 -+container_color: rabbitmq-bundle-0 allocation score on overcloud-galera-1: 0 -+container_color: rabbitmq-bundle-0 allocation score on overcloud-galera-2: 0 -+container_color: rabbitmq-bundle-0 allocation score on overcloud-rabbit-0: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on overcloud-rabbit-1: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on overcloud-rabbit-2: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq-bundle-1 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq-bundle-1 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq-bundle-1 allocation score on overcloud-galera-0: 0 -+container_color: rabbitmq-bundle-1 allocation score on overcloud-galera-1: 0 -+container_color: rabbitmq-bundle-1 allocation score on overcloud-galera-2: 0 -+container_color: rabbitmq-bundle-1 allocation score on overcloud-rabbit-0: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on overcloud-rabbit-1: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on overcloud-rabbit-2: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq-bundle-2 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq-bundle-2 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq-bundle-2 allocation score on overcloud-galera-0: 0 -+container_color: rabbitmq-bundle-2 allocation score on overcloud-galera-1: 0 -+container_color: rabbitmq-bundle-2 allocation score on overcloud-galera-2: 0 -+container_color: rabbitmq-bundle-2 allocation score on overcloud-rabbit-0: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on overcloud-rabbit-1: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on overcloud-rabbit-2: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-clone allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-galera-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-galera-1: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-galera-2: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-rabbit-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-rabbit-1: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-rabbit-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 overcloud-controller-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-1: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-2: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-galera-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-galera-1: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-galera-2: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-rabbit-0: INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-rabbit-1: 1 -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-rabbit-2: 1 -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-1: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-2: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-galera-0: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-galera-1: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-galera-2: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-rabbit-0: 1 -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-rabbit-1: INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-rabbit-2: 1 -+container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-2: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-galera-0: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-galera-1: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-galera-2: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-rabbit-0: 1 -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-rabbit-1: 1 -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-rabbit-2: INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq:0 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq:0 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq:0 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq:0 allocation score on overcloud-galera-0: 0 -+container_color: rabbitmq:0 allocation score on overcloud-galera-1: 0 -+container_color: rabbitmq:0 allocation score on overcloud-galera-2: 0 -+container_color: rabbitmq:0 allocation score on overcloud-rabbit-0: 0 -+container_color: rabbitmq:0 allocation score on overcloud-rabbit-1: 0 -+container_color: rabbitmq:0 allocation score on overcloud-rabbit-2: 0 -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq:1 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq:1 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq:1 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq:1 allocation score on overcloud-galera-0: 0 -+container_color: rabbitmq:1 allocation score on overcloud-galera-1: 0 -+container_color: rabbitmq:1 allocation score on overcloud-galera-2: 0 -+container_color: rabbitmq:1 allocation score on overcloud-rabbit-0: 0 -+container_color: rabbitmq:1 allocation score on overcloud-rabbit-1: 0 -+container_color: rabbitmq:1 allocation score on overcloud-rabbit-2: 0 -+container_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq:2 allocation score on overcloud-controller-0: 0 -+container_color: rabbitmq:2 allocation score on overcloud-controller-1: 0 -+container_color: rabbitmq:2 allocation score on overcloud-controller-2: 0 -+container_color: rabbitmq:2 allocation score on overcloud-galera-0: 0 -+container_color: rabbitmq:2 allocation score on overcloud-galera-1: 0 -+container_color: rabbitmq:2 allocation score on overcloud-galera-2: 0 -+container_color: rabbitmq:2 allocation score on overcloud-rabbit-0: 0 -+container_color: rabbitmq:2 allocation score on overcloud-rabbit-1: 0 -+container_color: rabbitmq:2 allocation score on overcloud-rabbit-2: 0 -+container_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq:2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on overcloud-controller-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on overcloud-controller-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on overcloud-controller-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on overcloud-galera-0: INFINITY -+native_color: galera-bundle-docker-0 allocation score on overcloud-galera-1: 0 -+native_color: galera-bundle-docker-0 allocation score on overcloud-galera-2: 0 -+native_color: galera-bundle-docker-0 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on overcloud-rabbit-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-controller-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-controller-2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-galera-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-galera-1: INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-galera-2: 0 -+native_color: galera-bundle-docker-1 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-rabbit-2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-controller-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-galera-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-galera-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-galera-2: INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-rabbit-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: overcloud-rabbit-0 allocation score on overcloud-controller-0: INFINITY -+native_color: overcloud-rabbit-0 allocation score on overcloud-controller-1: 0 -+native_color: overcloud-rabbit-0 allocation score on overcloud-controller-2: 0 -+native_color: overcloud-rabbit-0 allocation score on overcloud-galera-0: 0 -+native_color: overcloud-rabbit-0 allocation score on overcloud-galera-1: 0 -+native_color: overcloud-rabbit-0 allocation score on overcloud-galera-2: 0 -+native_color: overcloud-rabbit-0 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: overcloud-rabbit-0 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: overcloud-rabbit-0 allocation score on overcloud-rabbit-2: -INFINITY -+native_color: overcloud-rabbit-1 allocation score on overcloud-controller-0: 0 -+native_color: overcloud-rabbit-1 allocation score on overcloud-controller-1: INFINITY -+native_color: overcloud-rabbit-1 allocation score on overcloud-controller-2: 0 -+native_color: overcloud-rabbit-1 allocation score on overcloud-galera-0: 0 -+native_color: overcloud-rabbit-1 allocation score on overcloud-galera-1: 0 -+native_color: overcloud-rabbit-1 allocation score on overcloud-galera-2: 0 -+native_color: overcloud-rabbit-1 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: overcloud-rabbit-1 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: overcloud-rabbit-1 allocation score on overcloud-rabbit-2: -INFINITY -+native_color: overcloud-rabbit-2 allocation score on overcloud-controller-0: 0 -+native_color: overcloud-rabbit-2 allocation score on overcloud-controller-1: 0 -+native_color: overcloud-rabbit-2 allocation score on overcloud-controller-2: INFINITY -+native_color: overcloud-rabbit-2 allocation score on overcloud-galera-0: 0 -+native_color: overcloud-rabbit-2 allocation score on overcloud-galera-1: 0 -+native_color: overcloud-rabbit-2 allocation score on overcloud-galera-2: 0 -+native_color: overcloud-rabbit-2 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: overcloud-rabbit-2 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: overcloud-rabbit-2 allocation score on overcloud-rabbit-2: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on overcloud-controller-0: 0 -+native_color: rabbitmq-bundle-0 allocation score on overcloud-controller-1: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on overcloud-controller-2: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on overcloud-galera-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on overcloud-galera-1: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on overcloud-galera-2: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on overcloud-rabbit-2: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on overcloud-controller-1: 0 -+native_color: rabbitmq-bundle-1 allocation score on overcloud-controller-2: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on overcloud-galera-0: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on overcloud-galera-1: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on overcloud-galera-2: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on overcloud-rabbit-2: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on overcloud-controller-1: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on overcloud-controller-2: 0 -+native_color: rabbitmq-bundle-2 allocation score on overcloud-galera-0: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on overcloud-galera-1: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on overcloud-galera-2: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on overcloud-rabbit-2: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-1: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-2: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-galera-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-galera-1: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-galera-2: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-rabbit-0: INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-rabbit-1: -9999 -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-rabbit-2: -9999 -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-1: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-2: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-galera-0: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-galera-1: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-galera-2: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-rabbit-1: INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-rabbit-2: -9999 -+native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-2: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-galera-0: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-galera-1: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-galera-2: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-rabbit-2: INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-controller-1: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-controller-2: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-galera-0: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-galera-1: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-galera-2: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: rabbitmq:0 allocation score on overcloud-rabbit-2: -INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-controller-1: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-controller-2: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-galera-0: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-galera-1: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-galera-2: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: rabbitmq:1 allocation score on overcloud-rabbit-2: -INFINITY -+native_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY -+native_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-controller-0: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-controller-1: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-controller-2: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-galera-0: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-galera-1: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-galera-2: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-rabbit-0: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-rabbit-1: -INFINITY -+native_color: rabbitmq:2 allocation score on overcloud-rabbit-2: -INFINITY -+native_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq:2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY -diff --git a/pengine/test10/bundle-nested-colocation.summary b/pengine/test10/bundle-nested-colocation.summary -new file mode 100644 -index 0000000..9755e5f ---- /dev/null -+++ b/pengine/test10/bundle-nested-colocation.summary -@@ -0,0 +1,75 @@ -+Using the original execution date of: 2017-07-14 08:50:25Z -+ -+Current cluster status: -+Online: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 overcloud-galera-0 overcloud-galera-1 overcloud-galera-2 ] -+RemoteOnline: [ overcloud-rabbit-0 overcloud-rabbit-1 overcloud-rabbit-2 ] -+ -+ overcloud-rabbit-0 (ocf::pacemaker:remote): Started overcloud-controller-0 -+ overcloud-rabbit-1 (ocf::pacemaker:remote): Started overcloud-controller-1 -+ overcloud-rabbit-2 (ocf::pacemaker:remote): Started overcloud-controller-2 -+ Docker container set: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Stopped overcloud-rabbit-0 -+ rabbitmq-bundle-1 (ocf::heartbeat:rabbitmq-cluster): Stopped overcloud-rabbit-1 -+ rabbitmq-bundle-2 (ocf::heartbeat:rabbitmq-cluster): Stopped overcloud-rabbit-2 -+ Docker container set: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-docker-0 (ocf::heartbeat:docker): Started overcloud-galera-0 -+ galera-bundle-docker-1 (ocf::heartbeat:docker): Started overcloud-galera-1 -+ galera-bundle-docker-2 (ocf::heartbeat:docker): Started overcloud-galera-2 -+ -+Transition Summary: -+ * Restart rabbitmq-bundle-docker-0 (Started overcloud-rabbit-0) -+ * Start rabbitmq-bundle-0 (overcloud-controller-0) -+ * Start rabbitmq:0 (rabbitmq-bundle-0) -+ * Restart rabbitmq-bundle-docker-1 (Started overcloud-rabbit-1) -+ * Start rabbitmq-bundle-1 (overcloud-controller-1) -+ * Start rabbitmq:1 (rabbitmq-bundle-1) -+ * Restart rabbitmq-bundle-docker-2 (Started overcloud-rabbit-2) -+ * Start rabbitmq-bundle-2 (overcloud-controller-2) -+ * Start rabbitmq:2 (rabbitmq-bundle-2) -+ -+Executing cluster transition: -+ * Resource action: rabbitmq-bundle-docker-0 stop on overcloud-rabbit-0 -+ * Resource action: rabbitmq-bundle-docker-1 stop on overcloud-rabbit-1 -+ * Resource action: rabbitmq-bundle-docker-2 stop on overcloud-rabbit-2 -+ * Pseudo action: rabbitmq-bundle_start_0 -+ * Pseudo action: all_stopped -+ * Resource action: rabbitmq-bundle-docker-0 start on overcloud-rabbit-0 -+ * Resource action: rabbitmq-bundle-docker-0 monitor=60000 on overcloud-rabbit-0 -+ * Resource action: rabbitmq-bundle-0 start on overcloud-controller-0 -+ * Resource action: rabbitmq-bundle-docker-1 start on overcloud-rabbit-1 -+ * Resource action: rabbitmq-bundle-docker-1 monitor=60000 on overcloud-rabbit-1 -+ * Resource action: rabbitmq-bundle-1 start on overcloud-controller-1 -+ * Resource action: rabbitmq-bundle-docker-2 start on overcloud-rabbit-2 -+ * Resource action: rabbitmq-bundle-docker-2 monitor=60000 on overcloud-rabbit-2 -+ * Resource action: rabbitmq-bundle-2 start on overcloud-controller-2 -+ * Pseudo action: rabbitmq-bundle-clone_start_0 -+ * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 -+ * Resource action: rabbitmq-bundle-0 monitor=60000 on overcloud-controller-0 -+ * Resource action: rabbitmq:1 start on rabbitmq-bundle-1 -+ * Resource action: rabbitmq-bundle-1 monitor=60000 on overcloud-controller-1 -+ * Resource action: rabbitmq:2 start on rabbitmq-bundle-2 -+ * Resource action: rabbitmq-bundle-2 monitor=60000 on overcloud-controller-2 -+ * Pseudo action: rabbitmq-bundle-clone_running_0 -+ * Pseudo action: rabbitmq-bundle_running_0 -+ * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 -+ * Resource action: rabbitmq:1 monitor=10000 on rabbitmq-bundle-1 -+ * Resource action: rabbitmq:2 monitor=10000 on rabbitmq-bundle-2 -+Using the original execution date of: 2017-07-14 08:50:25Z -+ -+Revised cluster status: -+Online: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 overcloud-galera-0 overcloud-galera-1 overcloud-galera-2 ] -+RemoteOnline: [ overcloud-rabbit-0 overcloud-rabbit-1 overcloud-rabbit-2 ] -+Containers: [ rabbitmq-bundle-0:rabbitmq-bundle-docker-0 rabbitmq-bundle-1:rabbitmq-bundle-docker-1 rabbitmq-bundle-2:rabbitmq-bundle-docker-2 ] -+ -+ overcloud-rabbit-0 (ocf::pacemaker:remote): Started overcloud-controller-0 -+ overcloud-rabbit-1 (ocf::pacemaker:remote): Started overcloud-controller-1 -+ overcloud-rabbit-2 (ocf::pacemaker:remote): Started overcloud-controller-2 -+ Docker container set: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started overcloud-rabbit-0 -+ rabbitmq-bundle-1 (ocf::heartbeat:rabbitmq-cluster): Started overcloud-rabbit-1 -+ rabbitmq-bundle-2 (ocf::heartbeat:rabbitmq-cluster): Started overcloud-rabbit-2 -+ Docker container set: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] -+ galera-bundle-docker-0 (ocf::heartbeat:docker): Started overcloud-galera-0 -+ galera-bundle-docker-1 (ocf::heartbeat:docker): Started overcloud-galera-1 -+ galera-bundle-docker-2 (ocf::heartbeat:docker): Started overcloud-galera-2 -+ -diff --git a/pengine/test10/bundle-nested-colocation.xml b/pengine/test10/bundle-nested-colocation.xml -new file mode 100644 -index 0000000..d8f6139 ---- /dev/null -+++ b/pengine/test10/bundle-nested-colocation.xml -@@ -0,0 +1,455 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.8.3.1 - diff --git a/SOURCES/088-str-table.patch b/SOURCES/088-str-table.patch deleted file mode 100644 index 084bb22..0000000 --- a/SOURCES/088-str-table.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 19760e5b97136de3474743db8f2ae86380658f82 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 12 Jul 2017 15:53:20 -0500 -Subject: [PATCH] Refactor: libcrmcommon,etc.: convenience functions for string - tables - -A simple hash table of dynamically allocated strings is the most common type in -the code base. This adds convenience functions for regular and case-insensitive -table creation, which makes the code less ugly, hopefully without sacrificing -readability. - -As a side effect, this gets rid of a lot of usage of g_hash_destroy_str() when -we only need free(). ---- - include/crm/common/util.h | 32 ++++++++++++++++++++++++++++++++ - include/crm/crm.h | 5 ----- - lib/common/strings.c | 20 ++++++++++++++++++++ - 3 files changed, 52 insertions(+), 5 deletions(-) - -diff --git a/include/crm/common/util.h b/include/crm/common/util.h -index 904b40c..04f7c31 100644 ---- a/include/crm/common/util.h -+++ b/include/crm/common/util.h -@@ -30,6 +30,7 @@ - # include - # include - # include -+# include - - # include - -@@ -60,8 +61,11 @@ int crm_parse_int(const char *text, const char *default_text); - char * crm_strip_trailing_newline(char *str); - gboolean crm_str_eq(const char *a, const char *b, gboolean use_case); - gboolean safe_str_neq(const char *a, const char *b); -+guint crm_strcase_hash(gconstpointer v); -+guint g_str_hash_traditional(gconstpointer v); - - # define safe_str_eq(a, b) crm_str_eq(a, b, FALSE) -+# define crm_str_hash g_str_hash_traditional - - /* used with hash tables where case does not matter */ - static inline gboolean -@@ -70,6 +74,34 @@ crm_strcase_equal(gconstpointer a, gconstpointer b) - return crm_str_eq((const char *) a, (const char *) b, FALSE); - } - -+/*! -+ * \brief Create hash table with dynamically allocated string keys/values -+ * -+ * \return Newly hash table -+ * \note It is the caller's responsibility to free the result, using -+ * g_hash_table_destroy(). -+ */ -+static inline GHashTable * -+crm_str_table_new() -+{ -+ return g_hash_table_new_full(crm_str_hash, g_str_equal, free, free); -+} -+ -+/*! -+ * \brief Create hash table with case-insensitive dynamically allocated string keys/values -+ * -+ * \return Newly hash table -+ * \note It is the caller's responsibility to free the result, using -+ * g_hash_table_destroy(). -+ */ -+static inline GHashTable * -+crm_strcase_table_new() -+{ -+ return g_hash_table_new_full(crm_strcase_hash, crm_strcase_equal, free, free); -+} -+ -+GHashTable *crm_str_table_dup(GHashTable *old_table); -+ - # define crm_atoi(text, default_text) crm_parse_int(text, default_text) - - /* public I/O functions (from io.c) */ -diff --git a/include/crm/crm.h b/include/crm/crm.h -index d03bcf2..0da6bfe 100644 ---- a/include/crm/crm.h -+++ b/include/crm/crm.h -@@ -208,11 +208,6 @@ typedef GList *GListPtr; - # include - # include - --# define crm_str_hash g_str_hash_traditional -- --guint crm_strcase_hash(gconstpointer v); --guint g_str_hash_traditional(gconstpointer v); -- - static inline const char *crm_action_str(const char *task, int interval) { - if(safe_str_eq(task, RSC_STATUS) && !interval) { - return "probe"; -diff --git a/lib/common/strings.c b/lib/common/strings.c -index 3df41f6..c624b4b 100644 ---- a/lib/common/strings.c -+++ b/lib/common/strings.c -@@ -288,6 +288,26 @@ crm_strcase_hash(gconstpointer v) - return h; - } - -+static void -+copy_str_table_entry(gpointer key, gpointer value, gpointer user_data) -+{ -+ if (key && value && user_data) { -+ g_hash_table_insert((GHashTable*)user_data, strdup(key), strdup(value)); -+ } -+} -+ -+GHashTable * -+crm_str_table_dup(GHashTable *old_table) -+{ -+ GHashTable *new_table = NULL; -+ -+ if (old_table) { -+ new_table = crm_str_table_new(); -+ g_hash_table_foreach(old_table, copy_str_table_entry, new_table); -+ } -+ return new_table; -+} -+ - char * - add_list_element(char *list, const char *value) - { --- -1.8.3.1 - diff --git a/SOURCES/089-unfencing.patch b/SOURCES/089-unfencing.patch deleted file mode 100644 index 75a680e..0000000 --- a/SOURCES/089-unfencing.patch +++ /dev/null @@ -1,45472 +0,0 @@ -From fc69905f116e41a724fdde160c83111d22ae8b2e Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 25 Jul 2017 09:24:57 +1000 -Subject: [PATCH 01/12] Log: PE: Ignore optional unfencing events and report - the fencing type - ---- - pengine/allocate.c | 10 +++++++--- - pengine/test10/594.summary | 2 +- - pengine/test10/829.summary | 2 +- - pengine/test10/bug-5186-partial-migrate.summary | 2 +- - pengine/test10/bug-cl-5247.summary | 2 +- - pengine/test10/bug-lf-2508.summary | 2 +- - pengine/test10/bug-lf-2551.summary | 2 +- - pengine/test10/bug-lf-2606.summary | 2 +- - pengine/test10/bug-rh-1097457.summary | 2 +- - pengine/test10/concurrent-fencing.summary | 6 +++--- - pengine/test10/guest-node-host-dies.summary | 6 +++--- - pengine/test10/interleave-pseudo-stop.summary | 2 +- - pengine/test10/master-7.summary | 2 +- - pengine/test10/master-8.summary | 2 +- - pengine/test10/migrate-fencing.summary | 2 +- - pengine/test10/rec-node-11.summary | 2 +- - pengine/test10/rec-node-12.summary | 2 +- - pengine/test10/rec-node-13.summary | 2 +- - pengine/test10/rec-node-14.summary | 6 +++--- - pengine/test10/rec-node-15.summary | 2 +- - pengine/test10/rec-node-2.summary | 2 +- - pengine/test10/rec-node-4.summary | 2 +- - pengine/test10/rec-node-6.summary | 2 +- - pengine/test10/rec-node-7.summary | 2 +- - pengine/test10/rec-rsc-5.summary | 2 +- - pengine/test10/remote-fence-before-reconnect.summary | 2 +- - pengine/test10/remote-fence-unclean-3.summary | 2 +- - pengine/test10/remote-fence-unclean.summary | 2 +- - pengine/test10/remote-fence-unclean2.summary | 2 +- - pengine/test10/remote-partial-migrate2.summary | 2 +- - pengine/test10/remote-recover-all.summary | 6 +++--- - pengine/test10/remote-recover-connection.summary | 2 +- - pengine/test10/remote-recover-fail.summary | 2 +- - pengine/test10/remote-recover-no-resources.summary | 4 ++-- - pengine/test10/remote-recover-unknown.summary | 6 +++--- - pengine/test10/remote-recovery.summary | 2 +- - pengine/test10/remote-unclean2.summary | 2 +- - pengine/test10/start-then-stop-with-unfence.summary | 3 +-- - pengine/test10/stonith-0.summary | 4 ++-- - pengine/test10/stonith-1.summary | 2 +- - pengine/test10/stonith-2.summary | 2 +- - pengine/test10/stonith-3.summary | 2 +- - pengine/test10/stonith-4.summary | 8 ++++---- - pengine/test10/stop-failure-no-quorum.summary | 2 +- - pengine/test10/stop-failure-with-fencing.summary | 2 +- - pengine/test10/systemhealth1.summary | 4 ++-- - pengine/test10/systemhealth2.summary | 2 +- - pengine/test10/systemhealth3.summary | 2 +- - pengine/test10/systemhealthm1.summary | 4 ++-- - pengine/test10/systemhealthm2.summary | 2 +- - pengine/test10/systemhealthm3.summary | 2 +- - pengine/test10/systemhealthn1.summary | 4 ++-- - pengine/test10/systemhealthn2.summary | 2 +- - pengine/test10/systemhealthn3.summary | 2 +- - pengine/test10/systemhealtho1.summary | 4 ++-- - pengine/test10/systemhealtho2.summary | 2 +- - pengine/test10/systemhealtho3.summary | 2 +- - pengine/test10/systemhealthp1.summary | 4 ++-- - pengine/test10/systemhealthp2.summary | 2 +- - pengine/test10/systemhealthp3.summary | 2 +- - pengine/test10/ticket-clone-21.summary | 4 ++-- - pengine/test10/ticket-clone-9.summary | 4 ++-- - pengine/test10/ticket-group-21.summary | 2 +- - pengine/test10/ticket-group-9.summary | 2 +- - pengine/test10/ticket-master-21.summary | 2 +- - pengine/test10/ticket-master-9.summary | 2 +- - pengine/test10/ticket-primitive-21.summary | 2 +- - pengine/test10/ticket-primitive-9.summary | 2 +- - pengine/test10/unfence-definition.summary | 8 +++----- - pengine/test10/unfence-parameters.summary | 9 ++++----- - pengine/test10/unfence-startup.summary | 7 ++----- - pengine/test10/whitebox-fail1.summary | 2 +- - pengine/test10/whitebox-fail2.summary | 2 +- - pengine/test10/whitebox-imply-stop-on-fence.summary | 6 +++--- - pengine/test10/whitebox-ms-ordering.summary | 4 ++-- - pengine/test10/whitebox-unexpectedly-running.summary | 2 +- - 76 files changed, 113 insertions(+), 116 deletions(-) - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 3a883ad..8ea2ea1 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -2419,11 +2419,13 @@ LogNodeActions(pe_working_set_t * data_set, gboolean terminal) - - for (gIter = data_set->actions; gIter != NULL; gIter = gIter->next) { - char *node_name = NULL; -- const char *task = NULL; -+ char *task = NULL; - action_t *action = (action_t *) gIter->data; - - if (action->rsc != NULL) { - continue; -+ } else if (is_set(action->flags, pe_action_optional)) { -+ continue; - } - - if (is_container_remote_node(action->node)) { -@@ -2433,9 +2435,10 @@ LogNodeActions(pe_working_set_t * data_set, gboolean terminal) - } - - if (safe_str_eq(action->task, CRM_OP_SHUTDOWN)) { -- task = "Shutdown"; -+ task = strdup("Shutdown"); - } else if (safe_str_eq(action->task, CRM_OP_FENCE)) { -- task = "Fence"; -+ const char *op = g_hash_table_lookup(action->meta, "stonith_action"); -+ task = crm_strdup_printf("Fence (%s)", op); - } - - if(task == NULL) { -@@ -2447,6 +2450,7 @@ LogNodeActions(pe_working_set_t * data_set, gboolean terminal) - } - - free(node_name); -+ free(task); - } - } - -diff --git a/pengine/test10/594.summary b/pengine/test10/594.summary -index d9fe8c1..ef2a02c 100644 ---- a/pengine/test10/594.summary -+++ b/pengine/test10/594.summary -@@ -13,7 +13,7 @@ Online: [ hadev1 hadev2 ] - child_DoFencing:2 (stonith:ssh): Started hadev1 - - Transition Summary: -- * Fence hadev3 -+ * Fence (reboot) hadev3 - * Shutdown hadev2 - * Move DcIPaddr (Started hadev2 -> hadev1) - * Move rsc_hadev2 (Started hadev2 -> hadev1) -diff --git a/pengine/test10/829.summary b/pengine/test10/829.summary -index a9d25e0..556699f 100644 ---- a/pengine/test10/829.summary -+++ b/pengine/test10/829.summary -@@ -15,7 +15,7 @@ Online: [ c001n01 c001n03 c001n08 ] - child_DoFencing:3 (stonith:ssh): Started c001n08 - - Transition Summary: -- * Fence c001n02 -+ * Fence (reboot) c001n02 - * Move rsc_c001n02 (Started c001n02 -> c001n01) - * Stop child_DoFencing:0 (c001n02) - -diff --git a/pengine/test10/bug-5186-partial-migrate.summary b/pengine/test10/bug-5186-partial-migrate.summary -index 63ed2d7..a32e81d 100644 ---- a/pengine/test10/bug-5186-partial-migrate.summary -+++ b/pengine/test10/bug-5186-partial-migrate.summary -@@ -25,7 +25,7 @@ Online: [ bl460g1n6 bl460g1n8 ] - Started: [ bl460g1n6 bl460g1n8 ] - - Transition Summary: -- * Fence bl460g1n7 -+ * Fence (reboot) bl460g1n7 - * Move prmDummy (Started bl460g1n7 -> bl460g1n6) - * Move prmVM2 (Started bl460g1n7 -> bl460g1n8) - * Move prmStonith8-1 (Started bl460g1n7 -> bl460g1n6) -diff --git a/pengine/test10/bug-cl-5247.summary b/pengine/test10/bug-cl-5247.summary -index 8ea3ff0..f70a9ea 100644 ---- a/pengine/test10/bug-cl-5247.summary -+++ b/pengine/test10/bug-cl-5247.summary -@@ -18,7 +18,7 @@ Containers: [ pgsr01:prmDB1 ] - Stopped: [ bl460g8n3 bl460g8n4 ] - - Transition Summary: -- * Fence pgsr02 (resource: prmDB2) -+ * Fence (off) pgsr02 (resource: prmDB2) - * Stop prmDB2 (bl460g8n4) - * Restart prmStonith1-2 (Started bl460g8n4) - * Restart prmStonith2-2 (Started bl460g8n3) -diff --git a/pengine/test10/bug-lf-2508.summary b/pengine/test10/bug-lf-2508.summary -index 7b436d4..7931d19 100644 ---- a/pengine/test10/bug-lf-2508.summary -+++ b/pengine/test10/bug-lf-2508.summary -@@ -35,7 +35,7 @@ Online: [ srv01 srv03 srv04 ] - Stopped: [ srv04 ] - - Transition Summary: -- * Fence srv02 -+ * Fence (reboot) srv02 - * Start Dummy01 (srv01) - * Move Dummy02 (Started srv02 -> srv04) - * Stop prmStonith1-1:1 (srv02) -diff --git a/pengine/test10/bug-lf-2551.summary b/pengine/test10/bug-lf-2551.summary -index ffb7c6d..ef2e54a 100644 ---- a/pengine/test10/bug-lf-2551.summary -+++ b/pengine/test10/bug-lf-2551.summary -@@ -81,7 +81,7 @@ Online: [ hex-0 hex-7 hex-8 ] - vm-64 (ocf::heartbeat:Xen): Stopped - - Transition Summary: -- * Fence hex-9 -+ * Fence (reboot) hex-9 - * Move fencing-sbd (Started hex-9 -> hex-0) - * Move dummy1 (Started hex-9 -> hex-0) - * Stop dlm:3 (hex-9) -diff --git a/pengine/test10/bug-lf-2606.summary b/pengine/test10/bug-lf-2606.summary -index ab93bb3..f30a053 100644 ---- a/pengine/test10/bug-lf-2606.summary -+++ b/pengine/test10/bug-lf-2606.summary -@@ -12,7 +12,7 @@ Online: [ node1 ] - Slaves: [ node1 ] - - Transition Summary: -- * Fence node2 -+ * Fence (reboot) node2 - * Stop rsc1 (node2) - * Move rsc2 (Started node2 -> node1) - * Demote rsc3:1 (Master -> Stopped node2) -diff --git a/pengine/test10/bug-rh-1097457.summary b/pengine/test10/bug-rh-1097457.summary -index 8fe474a..1c355c0 100644 ---- a/pengine/test10/bug-rh-1097457.summary -+++ b/pengine/test10/bug-rh-1097457.summary -@@ -32,7 +32,7 @@ Containers: [ lamaVM1:VM1 lamaVM2:VM2 lamaVM3:VM3 ] - Started: [ lamaVM1 lamaVM2 lamaVM3 ] - - Transition Summary: -- * Fence lamaVM2 (resource: VM2) -+ * Fence (reboot) lamaVM2 (resource: VM2) - * Recover VM2 (Started lama3) - * Recover FSlun3 (Started lamaVM2 -> lama2) - * Restart FAKE4 (Started lamaVM2) -diff --git a/pengine/test10/concurrent-fencing.summary b/pengine/test10/concurrent-fencing.summary -index a274c3b..1e4a817 100644 ---- a/pengine/test10/concurrent-fencing.summary -+++ b/pengine/test10/concurrent-fencing.summary -@@ -8,9 +8,9 @@ Node node3 (uuid3): UNCLEAN (offline) - lsb_dummy (lsb:/usr/lib/heartbeat/cts/LSBDummy): Stopped - - Transition Summary: -- * Fence node3 -- * Fence node2 -- * Fence node1 -+ * Fence (reboot) node3 -+ * Fence (reboot) node2 -+ * Fence (reboot) node1 - - Executing cluster transition: - * Fencing node3 (reboot) -diff --git a/pengine/test10/guest-node-host-dies.summary b/pengine/test10/guest-node-host-dies.summary -index 717c43d..9f85613 100644 ---- a/pengine/test10/guest-node-host-dies.summary -+++ b/pengine/test10/guest-node-host-dies.summary -@@ -11,9 +11,9 @@ Online: [ rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] - Stopped: [ rhel7-1 rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] - - Transition Summary: -- * Fence rhel7-1 -- * Fence lxc2 (resource: container2) -- * Fence lxc1 (resource: container1) -+ * Fence (reboot) rhel7-1 -+ * Fence (reboot) lxc2 (resource: container2) -+ * Fence (reboot) lxc1 (resource: container1) - * Restart Fencing (Started rhel7-4) - * Move rsc_rhel7-1 (Started rhel7-1 -> rhel7-5) - * Recover container1 (Started rhel7-1 -> rhel7-2) -diff --git a/pengine/test10/interleave-pseudo-stop.summary b/pengine/test10/interleave-pseudo-stop.summary -index cf30da0..12be956 100644 ---- a/pengine/test10/interleave-pseudo-stop.summary -+++ b/pengine/test10/interleave-pseudo-stop.summary -@@ -17,7 +17,7 @@ Online: [ node2 ] - Started: [ node2 ] - - Transition Summary: -- * Fence node1 -+ * Fence (reboot) node1 - * Stop stonithclone:1 (node1) - * Stop evmsclone:1 (node1) - * Stop imagestoreclone:1 (node1) -diff --git a/pengine/test10/master-7.summary b/pengine/test10/master-7.summary -index 348b4ee..2889efb 100644 ---- a/pengine/test10/master-7.summary -+++ b/pengine/test10/master-7.summary -@@ -29,7 +29,7 @@ Online: [ c001n02 c001n03 c001n08 ] - ocf_msdummy:7 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n08 - - Transition Summary: -- * Fence c001n01 -+ * Fence (reboot) c001n01 - * Move DcIPaddr (Started c001n01 -> c001n03) - * Move ocf_192.168.100.181 (Started c001n03 -> c001n02) - * Move heartbeat_192.168.100.182 (Started c001n03 -> c001n02) -diff --git a/pengine/test10/master-8.summary b/pengine/test10/master-8.summary -index b77c884..5968a25 100644 ---- a/pengine/test10/master-8.summary -+++ b/pengine/test10/master-8.summary -@@ -29,7 +29,7 @@ Online: [ c001n02 c001n03 c001n08 ] - ocf_msdummy:7 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n08 - - Transition Summary: -- * Fence c001n01 -+ * Fence (reboot) c001n01 - * Move DcIPaddr (Started c001n01 -> c001n03) - * Move ocf_192.168.100.181 (Started c001n03 -> c001n02) - * Move heartbeat_192.168.100.182 (Started c001n03 -> c001n02) -diff --git a/pengine/test10/migrate-fencing.summary b/pengine/test10/migrate-fencing.summary -index 831e49a..842c65d 100644 ---- a/pengine/test10/migrate-fencing.summary -+++ b/pengine/test10/migrate-fencing.summary -@@ -22,7 +22,7 @@ Online: [ pcmk-1 pcmk-2 pcmk-3 ] - Slaves: [ pcmk-1 pcmk-2 pcmk-3 ] - - Transition Summary: -- * Fence pcmk-4 -+ * Fence (reboot) pcmk-4 - * Stop FencingChild:0 (pcmk-4) - * Move r192.168.101.181 (Started pcmk-4 -> pcmk-1) - * Move r192.168.101.182 (Started pcmk-4 -> pcmk-1) -diff --git a/pengine/test10/rec-node-11.summary b/pengine/test10/rec-node-11.summary -index eb967dd..22f5af7 100644 ---- a/pengine/test10/rec-node-11.summary -+++ b/pengine/test10/rec-node-11.summary -@@ -10,7 +10,7 @@ Online: [ node2 ] - rsc3 (heartbeat:apache): Started node2 - - Transition Summary: -- * Fence node1 -+ * Fence (reboot) node1 - * Start stonith-1 (node2) - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -diff --git a/pengine/test10/rec-node-12.summary b/pengine/test10/rec-node-12.summary -index 26f9b13..6316fdb 100644 ---- a/pengine/test10/rec-node-12.summary -+++ b/pengine/test10/rec-node-12.summary -@@ -15,7 +15,7 @@ Online: [ c001n01 c001n03 c001n08 ] - child_DoFencing:3 (stonith:ssh): Stopped - - Transition Summary: -- * Fence c001n02 -+ * Fence (reboot) c001n02 - * Start DcIPaddr (c001n08) - * Start rsc_c001n08 (c001n08) - * Start rsc_c001n02 (c001n01) -diff --git a/pengine/test10/rec-node-13.summary b/pengine/test10/rec-node-13.summary -index e273a79..c222ad8 100644 ---- a/pengine/test10/rec-node-13.summary -+++ b/pengine/test10/rec-node-13.summary -@@ -34,7 +34,7 @@ OFFLINE: [ c001n03 c001n05 ] - ocf_msdummy:11 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n07 - - Transition Summary: -- * Fence c001n04 -+ * Fence (reboot) c001n04 - * Stop ocf_msdummy:6 (c001n04) - - Executing cluster transition: -diff --git a/pengine/test10/rec-node-14.summary b/pengine/test10/rec-node-14.summary -index 532f3d9..f503a92 100644 ---- a/pengine/test10/rec-node-14.summary -+++ b/pengine/test10/rec-node-14.summary -@@ -8,9 +8,9 @@ Node node3 (uuid3): UNCLEAN (offline) - lsb_dummy (lsb:/usr/lib/heartbeat/cts/LSBDummy): Stopped - - Transition Summary: -- * Fence node3 -- * Fence node2 -- * Fence node1 -+ * Fence (reboot) node3 -+ * Fence (reboot) node2 -+ * Fence (reboot) node1 - - Executing cluster transition: - * Fencing node1 (reboot) -diff --git a/pengine/test10/rec-node-15.summary b/pengine/test10/rec-node-15.summary -index 8d88680..2f706d2 100644 ---- a/pengine/test10/rec-node-15.summary -+++ b/pengine/test10/rec-node-15.summary -@@ -21,7 +21,7 @@ Online: [ sapcl01 ] - oralsnr_25 (ocf::heartbeat:oralsnr): Stopped - - Transition Summary: -- * Fence sapcl03 -+ * Fence (reboot) sapcl03 - * Start stonith-1 (sapcl01) - * Move IPaddr_192_168_1_102 (Started sapcl02 -> sapcl01) - * Move LVM_12 (Started sapcl02 -> sapcl01) -diff --git a/pengine/test10/rec-node-2.summary b/pengine/test10/rec-node-2.summary -index 5c8db02..0e0183f 100644 ---- a/pengine/test10/rec-node-2.summary -+++ b/pengine/test10/rec-node-2.summary -@@ -14,7 +14,7 @@ Online: [ node2 ] - rsc6 (heartbeat:apache): Stopped - - Transition Summary: -- * Fence node1 -+ * Fence (reboot) node1 - * Start stonith-1 (node2) - * Start rsc1 (node2) - * Start rsc2 (node2) -diff --git a/pengine/test10/rec-node-4.summary b/pengine/test10/rec-node-4.summary -index 761573f..0a2606e 100644 ---- a/pengine/test10/rec-node-4.summary -+++ b/pengine/test10/rec-node-4.summary -@@ -8,7 +8,7 @@ Online: [ node2 ] - rsc2 (heartbeat:apache): Started node1 (UNCLEAN) - - Transition Summary: -- * Fence node1 -+ * Fence (reboot) node1 - * Start stonith-1 (node2) - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -diff --git a/pengine/test10/rec-node-6.summary b/pengine/test10/rec-node-6.summary -index fb294fb..530c7d2 100644 ---- a/pengine/test10/rec-node-6.summary -+++ b/pengine/test10/rec-node-6.summary -@@ -8,7 +8,7 @@ Online: [ node2 ] - rsc2 (heartbeat:apache): Started node1 - - Transition Summary: -- * Fence node1 -+ * Fence (reboot) node1 - * Start stonith-1 (node2) - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -diff --git a/pengine/test10/rec-node-7.summary b/pengine/test10/rec-node-7.summary -index 761573f..0a2606e 100644 ---- a/pengine/test10/rec-node-7.summary -+++ b/pengine/test10/rec-node-7.summary -@@ -8,7 +8,7 @@ Online: [ node2 ] - rsc2 (heartbeat:apache): Started node1 (UNCLEAN) - - Transition Summary: -- * Fence node1 -+ * Fence (reboot) node1 - * Start stonith-1 (node2) - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -diff --git a/pengine/test10/rec-rsc-5.summary b/pengine/test10/rec-rsc-5.summary -index 7bcb1a3..c3e658a 100644 ---- a/pengine/test10/rec-rsc-5.summary -+++ b/pengine/test10/rec-rsc-5.summary -@@ -8,7 +8,7 @@ Online: [ node1 ] - rsc2 (heartbeat:apache): Started node2 - - Transition Summary: -- * Fence node2 -+ * Fence (reboot) node2 - * Start stonith-1 (node1) - * Recover rsc1 (Started node2 -> node1) - * Move rsc2 (Started node2 -> node1) -diff --git a/pengine/test10/remote-fence-before-reconnect.summary b/pengine/test10/remote-fence-before-reconnect.summary -index 520f5cf..2ce3315 100644 ---- a/pengine/test10/remote-fence-before-reconnect.summary -+++ b/pengine/test10/remote-fence-before-reconnect.summary -@@ -12,7 +12,7 @@ Online: [ c7auto1 c7auto2 c7auto3 ] - fake5 (ocf::heartbeat:Dummy): Started c7auto3 - - Transition Summary: -- * Fence c7auto4 -+ * Fence (reboot) c7auto4 - * Stop c7auto4 (c7auto1) - * Move fake2 (Started c7auto4 -> c7auto1) - -diff --git a/pengine/test10/remote-fence-unclean-3.summary b/pengine/test10/remote-fence-unclean-3.summary -index ec24500..9296add 100644 ---- a/pengine/test10/remote-fence-unclean-3.summary -+++ b/pengine/test10/remote-fence-unclean-3.summary -@@ -34,7 +34,7 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bund - openstack-cinder-backup-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-1 - - Transition Summary: -- * Fence overcloud-novacompute-0 -+ * Fence (reboot) overcloud-novacompute-0 - * Start fence1 (overcloud-controller-0) - * Stop overcloud-novacompute-0 (overcloud-controller-0) - -diff --git a/pengine/test10/remote-fence-unclean.summary b/pengine/test10/remote-fence-unclean.summary -index 06940fc..667549b 100644 ---- a/pengine/test10/remote-fence-unclean.summary -+++ b/pengine/test10/remote-fence-unclean.summary -@@ -11,7 +11,7 @@ Online: [ 18builder 18node1 18node2 ] - FAKE4 (ocf::heartbeat:Dummy): Started 18node1 - - Transition Summary: -- * Fence remote1 -+ * Fence (reboot) remote1 - * Recover remote1 (Started 18node1) - * Move FAKE2 (Started remote1 -> 18builder) - * Move FAKE3 (Started 18builder -> 18node1) -diff --git a/pengine/test10/remote-fence-unclean2.summary b/pengine/test10/remote-fence-unclean2.summary -index 96f5d69..0844c29 100644 ---- a/pengine/test10/remote-fence-unclean2.summary -+++ b/pengine/test10/remote-fence-unclean2.summary -@@ -10,7 +10,7 @@ OFFLINE: [ rhel7-alt3 ] - fake (ocf::heartbeat:Dummy): Started rhel7-alt4 (UNCLEAN) - - Transition Summary: -- * Fence rhel7-alt4 -+ * Fence (reboot) rhel7-alt4 - * Stop fake (rhel7-alt4) - - Executing cluster transition: -diff --git a/pengine/test10/remote-partial-migrate2.summary b/pengine/test10/remote-partial-migrate2.summary -index 197bd8c..b8b9b4c 100644 ---- a/pengine/test10/remote-partial-migrate2.summary -+++ b/pengine/test10/remote-partial-migrate2.summary -@@ -63,7 +63,7 @@ RemoteOFFLINE: [ pcmk_remote4 ] - FAKE50 (ocf::heartbeat:Dummy): Started pcmk_remote5 - - Transition Summary: -- * Fence pcmk4 -+ * Fence (reboot) pcmk4 - * Migrate pcmk_remote2 (Started pcmk3 -> pcmk1) - * Start pcmk_remote4 (pcmk2) - * Migrate pcmk_remote5 (Started pcmk1 -> pcmk2) -diff --git a/pengine/test10/remote-recover-all.summary b/pengine/test10/remote-recover-all.summary -index 3f29f70..5e4f51d 100644 ---- a/pengine/test10/remote-recover-all.summary -+++ b/pengine/test10/remote-recover-all.summary -@@ -38,9 +38,9 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - - Transition Summary: -- * Fence messaging-1 -- * Fence galera-2 -- * Fence controller-1 -+ * Fence (reboot) messaging-1 -+ * Fence (reboot) galera-2 -+ * Fence (reboot) controller-1 - * Stop messaging-1 (controller-1) - * Move galera-0 (Started controller-1 -> controller-2) - * Stop galera-2 (controller-1) -diff --git a/pengine/test10/remote-recover-connection.summary b/pengine/test10/remote-recover-connection.summary -index 43507af..79ea7da 100644 ---- a/pengine/test10/remote-recover-connection.summary -+++ b/pengine/test10/remote-recover-connection.summary -@@ -38,7 +38,7 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - - Transition Summary: -- * Fence controller-1 -+ * Fence (reboot) controller-1 - * Move messaging-1 (Started controller-1 -> controller-2) - * Move galera-0 (Started controller-1 -> controller-2) - * Move galera-2 (Started controller-1 -> controller-2) -diff --git a/pengine/test10/remote-recover-fail.summary b/pengine/test10/remote-recover-fail.summary -index ec2d701..313c8ac 100644 ---- a/pengine/test10/remote-recover-fail.summary -+++ b/pengine/test10/remote-recover-fail.summary -@@ -14,7 +14,7 @@ OFFLINE: [ rhel7-auto1 ] - FAKE6 (ocf::heartbeat:Dummy): Started rhel7-auto4 (UNCLEAN) - - Transition Summary: -- * Fence rhel7-auto4 -+ * Fence (reboot) rhel7-auto4 - * Recover rhel7-auto4 (Started rhel7-auto2) - * Start FAKE1 (rhel7-auto2) - * Move FAKE2 (Started rhel7-auto4 -> rhel7-auto3) -diff --git a/pengine/test10/remote-recover-no-resources.summary b/pengine/test10/remote-recover-no-resources.summary -index 48355a4..bd27773 100644 ---- a/pengine/test10/remote-recover-no-resources.summary -+++ b/pengine/test10/remote-recover-no-resources.summary -@@ -38,8 +38,8 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - - Transition Summary: -- * Fence messaging-1 -- * Fence controller-1 -+ * Fence (reboot) messaging-1 -+ * Fence (reboot) controller-1 - * Stop messaging-1 (controller-1) - * Move galera-0 (Started controller-1 -> controller-2) - * Stop galera-2 (controller-1) -diff --git a/pengine/test10/remote-recover-unknown.summary b/pengine/test10/remote-recover-unknown.summary -index 212af4e..8a3d560 100644 ---- a/pengine/test10/remote-recover-unknown.summary -+++ b/pengine/test10/remote-recover-unknown.summary -@@ -38,9 +38,9 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - - Transition Summary: -- * Fence messaging-1 -- * Fence galera-2 -- * Fence controller-1 -+ * Fence (reboot) messaging-1 -+ * Fence (reboot) galera-2 -+ * Fence (reboot) controller-1 - * Stop messaging-1 (controller-1) - * Move galera-0 (Started controller-1 -> controller-2) - * Stop galera-2 (controller-1) -diff --git a/pengine/test10/remote-recovery.summary b/pengine/test10/remote-recovery.summary -index 43507af..79ea7da 100644 ---- a/pengine/test10/remote-recovery.summary -+++ b/pengine/test10/remote-recovery.summary -@@ -38,7 +38,7 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - - Transition Summary: -- * Fence controller-1 -+ * Fence (reboot) controller-1 - * Move messaging-1 (Started controller-1 -> controller-2) - * Move galera-0 (Started controller-1 -> controller-2) - * Move galera-2 (Started controller-1 -> controller-2) -diff --git a/pengine/test10/remote-unclean2.summary b/pengine/test10/remote-unclean2.summary -index ad4af90..877eb4d 100644 ---- a/pengine/test10/remote-unclean2.summary -+++ b/pengine/test10/remote-unclean2.summary -@@ -7,7 +7,7 @@ Online: [ rhel7-auto1 rhel7-auto2 rhel7-auto3 ] - rhel7-auto4 (ocf::pacemaker:remote): FAILED rhel7-auto1 - - Transition Summary: -- * Fence rhel7-auto4 -+ * Fence (reboot) rhel7-auto4 - * Recover rhel7-auto4 (Started rhel7-auto1) - - Executing cluster transition: -diff --git a/pengine/test10/start-then-stop-with-unfence.summary b/pengine/test10/start-then-stop-with-unfence.summary -index 4430cc0..ae54afc 100644 ---- a/pengine/test10/start-then-stop-with-unfence.summary -+++ b/pengine/test10/start-then-stop-with-unfence.summary -@@ -11,8 +11,7 @@ Online: [ rhel7-node1.example.com rhel7-node2.example.com ] - Stopped: [ rhel7-node1.example.com ] - - Transition Summary: -- * Fence rhel7-node2.example.com -- * Fence rhel7-node1.example.com -+ * Fence (on) rhel7-node1.example.com - * Start mpath-node1 (rhel7-node1.example.com) - * Move ip1 (Started rhel7-node2.example.com -> rhel7-node1.example.com) - * Start jrummy:1 (rhel7-node1.example.com) -diff --git a/pengine/test10/stonith-0.summary b/pengine/test10/stonith-0.summary -index 24008a1..ee8ae15 100644 ---- a/pengine/test10/stonith-0.summary -+++ b/pengine/test10/stonith-0.summary -@@ -37,8 +37,8 @@ Online: [ c001n02 c001n04 c001n06 c001n07 c001n08 ] - ocf_msdummy:13 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n06 - - Transition Summary: -- * Fence c001n05 -- * Fence c001n03 -+ * Fence (reboot) c001n05 -+ * Fence (reboot) c001n03 - * Move ocf_192.168.100.181 (Started c001n03 -> c001n02) - * Move heartbeat_192.168.100.182 (Started c001n03 -> c001n02) - * Recover ocf_192.168.100.183 (Started c001n03 -> c001n02) -diff --git a/pengine/test10/stonith-1.summary b/pengine/test10/stonith-1.summary -index 8556021..b68aca7 100644 ---- a/pengine/test10/stonith-1.summary -+++ b/pengine/test10/stonith-1.summary -@@ -28,7 +28,7 @@ Online: [ sles-1 sles-2 sles-4 ] - ocf_msdummy:7 (ocf::heartbeat:Stateful): Stopped - - Transition Summary: -- * Fence sles-3 -+ * Fence (reboot) sles-3 - * Start r192.168.100.183 (sles-1) - * Move migrator (Started sles-3 -> sles-4) - * Move rsc_sles-3 (Started sles-3 -> sles-4) -diff --git a/pengine/test10/stonith-2.summary b/pengine/test10/stonith-2.summary -index 0f7cb99..eef35c4 100644 ---- a/pengine/test10/stonith-2.summary -+++ b/pengine/test10/stonith-2.summary -@@ -33,7 +33,7 @@ Online: [ sles-1 sles-2 sles-3 sles-4 sles-6 ] - ocf_msdummy:11 (ocf::heartbeat:Stateful): Slave sles-3 - - Transition Summary: -- * Fence sles-5 -+ * Fence (reboot) sles-5 - * Start rsc_sles-5 (sles-6) - - Executing cluster transition: -diff --git a/pengine/test10/stonith-3.summary b/pengine/test10/stonith-3.summary -index cb25cc3..398b6bc 100644 ---- a/pengine/test10/stonith-3.summary -+++ b/pengine/test10/stonith-3.summary -@@ -8,7 +8,7 @@ Online: [ rh5node2 ] - Stopped: [ rh5node1 rh5node2 ] - - Transition Summary: -- * Fence rh5node1 -+ * Fence (reboot) rh5node1 - * Start prmIpPostgreSQLDB (rh5node2) - * Start prmStonith:0 (rh5node2) - -diff --git a/pengine/test10/stonith-4.summary b/pengine/test10/stonith-4.summary -index dc7cd89..6e3e396 100644 ---- a/pengine/test10/stonith-4.summary -+++ b/pengine/test10/stonith-4.summary -@@ -14,10 +14,10 @@ OFFLINE: [ pcmk-4 pcmk-6 ] - Fencing (stonith:fence_xvm): Stopped - - Transition Summary: -- * Fence pcmk-8 -- * Fence pcmk-7 -- * Fence pcmk-5 -- * Fence pcmk-10 -+ * Fence (reboot) pcmk-8 -+ * Fence (reboot) pcmk-7 -+ * Fence (reboot) pcmk-5 -+ * Fence (reboot) pcmk-10 - * Start Fencing (pcmk-1 - blocked) - - Executing cluster transition: -diff --git a/pengine/test10/stop-failure-no-quorum.summary b/pengine/test10/stop-failure-no-quorum.summary -index d864f1a..0248126 100644 ---- a/pengine/test10/stop-failure-no-quorum.summary -+++ b/pengine/test10/stop-failure-no-quorum.summary -@@ -15,7 +15,7 @@ Online: [ pcmk-1 ] - Fencing (stonith:fence_xvm): Stopped - - Transition Summary: -- * Fence pcmk-2 -+ * Fence (reboot) pcmk-2 - * Start dlm:0 (pcmk-1 - blocked) - * Stop clvm:0 (pcmk-2) - * Start clvm:2 (pcmk-1 - blocked) -diff --git a/pengine/test10/stop-failure-with-fencing.summary b/pengine/test10/stop-failure-with-fencing.summary -index e01b6c4..e6c296b 100644 ---- a/pengine/test10/stop-failure-with-fencing.summary -+++ b/pengine/test10/stop-failure-with-fencing.summary -@@ -14,7 +14,7 @@ Online: [ pcmk-1 ] - Fencing (stonith:fence_xvm): Stopped - - Transition Summary: -- * Fence pcmk-2 -+ * Fence (reboot) pcmk-2 - * Start dlm:0 (pcmk-1 - blocked) - * Stop clvm:0 (pcmk-2) - * Start clvm:1 (pcmk-1 - blocked) -diff --git a/pengine/test10/systemhealth1.summary b/pengine/test10/systemhealth1.summary -index 37b0b49..7301c6c 100644 ---- a/pengine/test10/systemhealth1.summary -+++ b/pengine/test10/systemhealth1.summary -@@ -8,8 +8,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -- * Fence hs21c -+ * Fence (reboot) hs21d -+ * Fence (reboot) hs21c - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealth2.summary b/pengine/test10/systemhealth2.summary -index a37ce18..c83a7e2 100644 ---- a/pengine/test10/systemhealth2.summary -+++ b/pengine/test10/systemhealth2.summary -@@ -8,7 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -+ * Fence (reboot) hs21d - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealth3.summary b/pengine/test10/systemhealth3.summary -index a37ce18..c83a7e2 100644 ---- a/pengine/test10/systemhealth3.summary -+++ b/pengine/test10/systemhealth3.summary -@@ -8,7 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -+ * Fence (reboot) hs21d - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealthm1.summary b/pengine/test10/systemhealthm1.summary -index 37b0b49..7301c6c 100644 ---- a/pengine/test10/systemhealthm1.summary -+++ b/pengine/test10/systemhealthm1.summary -@@ -8,8 +8,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -- * Fence hs21c -+ * Fence (reboot) hs21d -+ * Fence (reboot) hs21c - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealthm2.summary b/pengine/test10/systemhealthm2.summary -index a37ce18..c83a7e2 100644 ---- a/pengine/test10/systemhealthm2.summary -+++ b/pengine/test10/systemhealthm2.summary -@@ -8,7 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -+ * Fence (reboot) hs21d - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealthm3.summary b/pengine/test10/systemhealthm3.summary -index b10d3f2..fbcdec5 100644 ---- a/pengine/test10/systemhealthm3.summary -+++ b/pengine/test10/systemhealthm3.summary -@@ -8,7 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -+ * Fence (reboot) hs21d - - Executing cluster transition: - * Resource action: stonith-1 monitor on hs21c -diff --git a/pengine/test10/systemhealthn1.summary b/pengine/test10/systemhealthn1.summary -index 37b0b49..7301c6c 100644 ---- a/pengine/test10/systemhealthn1.summary -+++ b/pengine/test10/systemhealthn1.summary -@@ -8,8 +8,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -- * Fence hs21c -+ * Fence (reboot) hs21d -+ * Fence (reboot) hs21c - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealthn2.summary b/pengine/test10/systemhealthn2.summary -index a37ce18..c83a7e2 100644 ---- a/pengine/test10/systemhealthn2.summary -+++ b/pengine/test10/systemhealthn2.summary -@@ -8,7 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -+ * Fence (reboot) hs21d - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealthn3.summary b/pengine/test10/systemhealthn3.summary -index a37ce18..c83a7e2 100644 ---- a/pengine/test10/systemhealthn3.summary -+++ b/pengine/test10/systemhealthn3.summary -@@ -8,7 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -+ * Fence (reboot) hs21d - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealtho1.summary b/pengine/test10/systemhealtho1.summary -index 37b0b49..7301c6c 100644 ---- a/pengine/test10/systemhealtho1.summary -+++ b/pengine/test10/systemhealtho1.summary -@@ -8,8 +8,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -- * Fence hs21c -+ * Fence (reboot) hs21d -+ * Fence (reboot) hs21c - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealtho2.summary b/pengine/test10/systemhealtho2.summary -index b10d3f2..fbcdec5 100644 ---- a/pengine/test10/systemhealtho2.summary -+++ b/pengine/test10/systemhealtho2.summary -@@ -8,7 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -+ * Fence (reboot) hs21d - - Executing cluster transition: - * Resource action: stonith-1 monitor on hs21c -diff --git a/pengine/test10/systemhealtho3.summary b/pengine/test10/systemhealtho3.summary -index b10d3f2..fbcdec5 100644 ---- a/pengine/test10/systemhealtho3.summary -+++ b/pengine/test10/systemhealtho3.summary -@@ -8,7 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -+ * Fence (reboot) hs21d - - Executing cluster transition: - * Resource action: stonith-1 monitor on hs21c -diff --git a/pengine/test10/systemhealthp1.summary b/pengine/test10/systemhealthp1.summary -index 37b0b49..7301c6c 100644 ---- a/pengine/test10/systemhealthp1.summary -+++ b/pengine/test10/systemhealthp1.summary -@@ -8,8 +8,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -- * Fence hs21c -+ * Fence (reboot) hs21d -+ * Fence (reboot) hs21c - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealthp2.summary b/pengine/test10/systemhealthp2.summary -index 6605e12..ea9465b 100644 ---- a/pengine/test10/systemhealthp2.summary -+++ b/pengine/test10/systemhealthp2.summary -@@ -8,7 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -+ * Fence (reboot) hs21d - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) - -diff --git a/pengine/test10/systemhealthp3.summary b/pengine/test10/systemhealthp3.summary -index b10d3f2..fbcdec5 100644 ---- a/pengine/test10/systemhealthp3.summary -+++ b/pengine/test10/systemhealthp3.summary -@@ -8,7 +8,7 @@ Online: [ hs21c ] - nfs_1 (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Fence hs21d -+ * Fence (reboot) hs21d - - Executing cluster transition: - * Resource action: stonith-1 monitor on hs21c -diff --git a/pengine/test10/ticket-clone-21.summary b/pengine/test10/ticket-clone-21.summary -index 50df628..573f8c1 100644 ---- a/pengine/test10/ticket-clone-21.summary -+++ b/pengine/test10/ticket-clone-21.summary -@@ -7,8 +7,8 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Fence node2 -- * Fence node1 -+ * Fence (reboot) node2 -+ * Fence (reboot) node1 - * Stop rsc_stonith (node1) - * Stop rsc1:0 (node1) - * Stop rsc1:1 (node2) -diff --git a/pengine/test10/ticket-clone-9.summary b/pengine/test10/ticket-clone-9.summary -index 50df628..573f8c1 100644 ---- a/pengine/test10/ticket-clone-9.summary -+++ b/pengine/test10/ticket-clone-9.summary -@@ -7,8 +7,8 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Fence node2 -- * Fence node1 -+ * Fence (reboot) node2 -+ * Fence (reboot) node1 - * Stop rsc_stonith (node1) - * Stop rsc1:0 (node1) - * Stop rsc1:1 (node2) -diff --git a/pengine/test10/ticket-group-21.summary b/pengine/test10/ticket-group-21.summary -index eab14a9..ff809ae 100644 ---- a/pengine/test10/ticket-group-21.summary -+++ b/pengine/test10/ticket-group-21.summary -@@ -8,7 +8,7 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Fence node2 -+ * Fence (reboot) node2 - * Stop rsc1 (node2) - * Stop rsc2 (node2) - -diff --git a/pengine/test10/ticket-group-9.summary b/pengine/test10/ticket-group-9.summary -index eab14a9..ff809ae 100644 ---- a/pengine/test10/ticket-group-9.summary -+++ b/pengine/test10/ticket-group-9.summary -@@ -8,7 +8,7 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Fence node2 -+ * Fence (reboot) node2 - * Stop rsc1 (node2) - * Stop rsc2 (node2) - -diff --git a/pengine/test10/ticket-master-21.summary b/pengine/test10/ticket-master-21.summary -index a107a38..c196c9d 100644 ---- a/pengine/test10/ticket-master-21.summary -+++ b/pengine/test10/ticket-master-21.summary -@@ -8,7 +8,7 @@ Online: [ node1 node2 ] - Slaves: [ node2 ] - - Transition Summary: -- * Fence node1 -+ * Fence (reboot) node1 - * Move rsc_stonith (Started node1 -> node2) - * Demote rsc1:0 (Master -> Stopped node1) - -diff --git a/pengine/test10/ticket-master-9.summary b/pengine/test10/ticket-master-9.summary -index a107a38..c196c9d 100644 ---- a/pengine/test10/ticket-master-9.summary -+++ b/pengine/test10/ticket-master-9.summary -@@ -8,7 +8,7 @@ Online: [ node1 node2 ] - Slaves: [ node2 ] - - Transition Summary: -- * Fence node1 -+ * Fence (reboot) node1 - * Move rsc_stonith (Started node1 -> node2) - * Demote rsc1:0 (Master -> Stopped node1) - -diff --git a/pengine/test10/ticket-primitive-21.summary b/pengine/test10/ticket-primitive-21.summary -index 918b743..08a4860 100644 ---- a/pengine/test10/ticket-primitive-21.summary -+++ b/pengine/test10/ticket-primitive-21.summary -@@ -6,7 +6,7 @@ Online: [ node1 node2 ] - rsc1 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Fence node2 -+ * Fence (reboot) node2 - * Stop rsc1 (node2) - - Executing cluster transition: -diff --git a/pengine/test10/ticket-primitive-9.summary b/pengine/test10/ticket-primitive-9.summary -index 918b743..08a4860 100644 ---- a/pengine/test10/ticket-primitive-9.summary -+++ b/pengine/test10/ticket-primitive-9.summary -@@ -6,7 +6,7 @@ Online: [ node1 node2 ] - rsc1 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Fence node2 -+ * Fence (reboot) node2 - * Stop rsc1 (node2) - - Executing cluster transition: -diff --git a/pengine/test10/unfence-definition.summary b/pengine/test10/unfence-definition.summary -index 03506a3..9477a02 100644 ---- a/pengine/test10/unfence-definition.summary -+++ b/pengine/test10/unfence-definition.summary -@@ -12,11 +12,9 @@ Online: [ virt-1 virt-2 virt-3 ] - Stopped: [ virt-2 virt-3 virt-4 ] - - Transition Summary: -- * Fence virt-4 -- * Fence virt-4 -- * Fence virt-3 -- * Fence virt-2 -- * Fence virt-1 -+ * Fence (reboot) virt-4 -+ * Fence (on) virt-3 -+ * Fence (on) virt-1 - * Restart fencing (Started virt-1) - * Restart dlm:0 (Started virt-1) - * Start dlm:2 (virt-3) -diff --git a/pengine/test10/unfence-parameters.summary b/pengine/test10/unfence-parameters.summary -index 5cc4a4b..a713cd5 100644 ---- a/pengine/test10/unfence-parameters.summary -+++ b/pengine/test10/unfence-parameters.summary -@@ -12,11 +12,10 @@ Online: [ virt-1 virt-2 virt-3 ] - Stopped: [ virt-2 virt-3 virt-4 ] - - Transition Summary: -- * Fence virt-4 -- * Fence virt-4 -- * Fence virt-3 -- * Fence virt-2 -- * Fence virt-1 -+ * Fence (reboot) virt-4 -+ * Fence (on) virt-3 -+ * Fence (on) virt-2 -+ * Fence (on) virt-1 - * Restart fencing (Started virt-1) - * Restart dlm:0 (Started virt-1) - * Restart dlm:1 (Started virt-2) -diff --git a/pengine/test10/unfence-startup.summary b/pengine/test10/unfence-startup.summary -index 6cd38ad..c3f1be4 100644 ---- a/pengine/test10/unfence-startup.summary -+++ b/pengine/test10/unfence-startup.summary -@@ -12,11 +12,8 @@ Online: [ virt-1 virt-2 virt-3 ] - Stopped: [ virt-2 virt-3 virt-4 ] - - Transition Summary: -- * Fence virt-4 -- * Fence virt-4 -- * Fence virt-3 -- * Fence virt-2 -- * Fence virt-1 -+ * Fence (reboot) virt-4 -+ * Fence (on) virt-3 - * Start dlm:2 (virt-3) - * Start clvmd:1 (virt-2) - * Start clvmd:2 (virt-3) -diff --git a/pengine/test10/whitebox-fail1.summary b/pengine/test10/whitebox-fail1.summary -index 5f70a66..57d72ba 100644 ---- a/pengine/test10/whitebox-fail1.summary -+++ b/pengine/test10/whitebox-fail1.summary -@@ -14,7 +14,7 @@ Containers: [ lxc2:container2 ] - D (ocf::pacemaker:Dummy): Started 18node1 - - Transition Summary: -- * Fence lxc1 (resource: container1) -+ * Fence (reboot) lxc1 (resource: container1) - * Recover container1 (Started 18node2) - * Recover M:4 (Started lxc1) - * Recover B (Started lxc1) -diff --git a/pengine/test10/whitebox-fail2.summary b/pengine/test10/whitebox-fail2.summary -index 2922f16..bf12683 100644 ---- a/pengine/test10/whitebox-fail2.summary -+++ b/pengine/test10/whitebox-fail2.summary -@@ -14,7 +14,7 @@ Containers: [ lxc2:container2 ] - D (ocf::pacemaker:Dummy): Started 18node1 - - Transition Summary: -- * Fence lxc1 (resource: container1) -+ * Fence (reboot) lxc1 (resource: container1) - * Recover container1 (Started 18node2) - * Recover M:4 (Started lxc1) - * Recover B (Started lxc1) -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.summary b/pengine/test10/whitebox-imply-stop-on-fence.summary -index 31cc4a5..2fb20a6 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.summary -+++ b/pengine/test10/whitebox-imply-stop-on-fence.summary -@@ -25,9 +25,9 @@ Containers: [ lxc-01_kiff-02:R-lxc-01_kiff-02 lxc-02_kiff-02:R-lxc-02_kiff-02 ] - vm-fs (ocf::heartbeat:Filesystem): FAILED lxc-01_kiff-01 - - Transition Summary: -- * Fence lxc-02_kiff-01 (resource: R-lxc-02_kiff-01) -- * Fence lxc-01_kiff-01 (resource: R-lxc-01_kiff-01) -- * Fence kiff-01 -+ * Fence (reboot) lxc-02_kiff-01 (resource: R-lxc-02_kiff-01) -+ * Fence (reboot) lxc-01_kiff-01 (resource: R-lxc-01_kiff-01) -+ * Fence (reboot) kiff-01 - * Move fence-kiff-02 (Started kiff-01 -> kiff-02) - * Stop dlm:0 (kiff-01) - * Stop clvmd:0 (kiff-01) -diff --git a/pengine/test10/whitebox-ms-ordering.summary b/pengine/test10/whitebox-ms-ordering.summary -index fcdef66..2230d0f 100644 ---- a/pengine/test10/whitebox-ms-ordering.summary -+++ b/pengine/test10/whitebox-ms-ordering.summary -@@ -9,8 +9,8 @@ Online: [ 18node1 18node2 18node3 ] - Stopped: [ 18node1 18node2 18node3 ] - - Transition Summary: -- * Fence lxc2 (resource: container2) -- * Fence lxc1 (resource: container1) -+ * Fence (reboot) lxc2 (resource: container2) -+ * Fence (reboot) lxc1 (resource: container1) - * Start container1 (18node1) - * Start container2 (18node1) - * Recover lxc-ms:0 (Master lxc1) -diff --git a/pengine/test10/whitebox-unexpectedly-running.summary b/pengine/test10/whitebox-unexpectedly-running.summary -index ed0a5bd..eabeb4d 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.summary -+++ b/pengine/test10/whitebox-unexpectedly-running.summary -@@ -5,7 +5,7 @@ Online: [ 18builder ] - FAKE (ocf::pacemaker:Dummy): FAILED 18builder - - Transition Summary: -- * Fence remote1 (resource: FAKE) -+ * Fence (reboot) remote1 (resource: FAKE) - * Recover FAKE (Started 18builder) - * Start remote1 (18builder) - --- -1.8.3.1 - - -From 7f8ba3076f180aae699df78609b0573e56a7c379 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 26 Jul 2017 10:34:48 +1000 -Subject: [PATCH 02/12] Support unfencing of remote nodes - ---- - crmd/te_callbacks.c | 21 +- - include/crm/msg_xml.h | 1 + - include/crm/pengine/internal.h | 2 +- - lib/pengine/utils.c | 291 +++++++++++++++------ - pengine/allocate.c | 4 +- - pengine/native.c | 39 ++- - pengine/test10/594.scores | 1 + - pengine/test10/594.summary | 1 + - pengine/test10/829.scores | 1 + - pengine/test10/829.summary | 1 + - pengine/test10/bug-5186-partial-migrate.scores | 1 + - pengine/test10/bug-5186-partial-migrate.summary | 1 + - pengine/test10/bug-cl-5247.scores | 1 + - pengine/test10/bug-cl-5247.summary | 1 + - pengine/test10/bug-lf-2508.scores | 1 + - pengine/test10/bug-lf-2508.summary | 1 + - pengine/test10/bug-lf-2551.scores | 1 + - pengine/test10/bug-lf-2551.summary | 1 + - pengine/test10/bug-lf-2606.scores | 1 + - pengine/test10/bug-lf-2606.summary | 1 + - pengine/test10/bug-rh-1097457.scores | 1 + - pengine/test10/bug-rh-1097457.summary | 1 + - pengine/test10/concurrent-fencing.scores | 3 + - pengine/test10/concurrent-fencing.summary | 3 + - pengine/test10/guest-node-host-dies.scores | 3 + - pengine/test10/guest-node-host-dies.summary | 3 + - pengine/test10/interleave-pseudo-stop.scores | 1 + - pengine/test10/interleave-pseudo-stop.summary | 1 + - pengine/test10/master-7.scores | 1 + - pengine/test10/master-7.summary | 1 + - pengine/test10/master-8.scores | 1 + - pengine/test10/master-8.summary | 1 + - pengine/test10/migrate-fencing.scores | 1 + - pengine/test10/migrate-fencing.summary | 1 + - pengine/test10/rec-node-11.scores | 1 + - pengine/test10/rec-node-11.summary | 1 + - pengine/test10/rec-node-12.scores | 1 + - pengine/test10/rec-node-12.summary | 1 + - pengine/test10/rec-node-13.scores | 1 + - pengine/test10/rec-node-13.summary | 1 + - pengine/test10/rec-node-14.scores | 3 + - pengine/test10/rec-node-14.summary | 3 + - pengine/test10/rec-node-15.scores | 1 + - pengine/test10/rec-node-15.summary | 1 + - pengine/test10/rec-node-2.scores | 1 + - pengine/test10/rec-node-2.summary | 1 + - pengine/test10/rec-node-4.scores | 1 + - pengine/test10/rec-node-4.summary | 1 + - pengine/test10/rec-node-6.scores | 1 + - pengine/test10/rec-node-6.summary | 1 + - pengine/test10/rec-node-7.scores | 1 + - pengine/test10/rec-node-7.summary | 1 + - pengine/test10/rec-rsc-5.scores | 1 + - pengine/test10/rec-rsc-5.summary | 1 + - .../test10/remote-fence-before-reconnect.scores | 1 + - .../test10/remote-fence-before-reconnect.summary | 1 + - pengine/test10/remote-fence-unclean-3.scores | 1 + - pengine/test10/remote-fence-unclean-3.summary | 1 + - pengine/test10/remote-fence-unclean.scores | 1 + - pengine/test10/remote-fence-unclean.summary | 1 + - pengine/test10/remote-fence-unclean2.scores | 1 + - pengine/test10/remote-fence-unclean2.summary | 1 + - pengine/test10/remote-partial-migrate2.scores | 1 + - pengine/test10/remote-partial-migrate2.summary | 1 + - pengine/test10/remote-recover-all.scores | 3 + - pengine/test10/remote-recover-all.summary | 3 + - pengine/test10/remote-recover-connection.scores | 1 + - pengine/test10/remote-recover-connection.summary | 1 + - pengine/test10/remote-recover-fail.scores | 1 + - pengine/test10/remote-recover-fail.summary | 1 + - pengine/test10/remote-recover-no-resources.scores | 2 + - pengine/test10/remote-recover-no-resources.summary | 2 + - pengine/test10/remote-recover-unknown.scores | 3 + - pengine/test10/remote-recover-unknown.summary | 3 + - pengine/test10/remote-recovery.scores | 1 + - pengine/test10/remote-recovery.summary | 1 + - pengine/test10/remote-unclean2.scores | 1 + - pengine/test10/remote-unclean2.summary | 1 + - pengine/test10/start-then-stop-with-unfence.dot | 2 - - pengine/test10/start-then-stop-with-unfence.exp | 16 +- - pengine/test10/start-then-stop-with-unfence.scores | 1 + - .../test10/start-then-stop-with-unfence.summary | 9 +- - pengine/test10/start-then-stop-with-unfence.xml | 1 + - pengine/test10/stonith-0.scores | 2 + - pengine/test10/stonith-0.summary | 2 + - pengine/test10/stonith-1.scores | 1 + - pengine/test10/stonith-1.summary | 1 + - pengine/test10/stonith-2.scores | 1 + - pengine/test10/stonith-2.summary | 1 + - pengine/test10/stonith-3.scores | 1 + - pengine/test10/stonith-3.summary | 1 + - pengine/test10/stonith-4.scores | 4 + - pengine/test10/stonith-4.summary | 4 + - pengine/test10/stop-failure-no-quorum.scores | 1 + - pengine/test10/stop-failure-no-quorum.summary | 1 + - pengine/test10/stop-failure-with-fencing.scores | 1 + - pengine/test10/stop-failure-with-fencing.summary | 1 + - pengine/test10/systemhealth1.scores | 2 + - pengine/test10/systemhealth1.summary | 2 + - pengine/test10/systemhealth2.scores | 1 + - pengine/test10/systemhealth2.summary | 1 + - pengine/test10/systemhealth3.scores | 1 + - pengine/test10/systemhealth3.summary | 1 + - pengine/test10/systemhealthm1.scores | 2 + - pengine/test10/systemhealthm1.summary | 2 + - pengine/test10/systemhealthm2.scores | 1 + - pengine/test10/systemhealthm2.summary | 1 + - pengine/test10/systemhealthm3.scores | 1 + - pengine/test10/systemhealthm3.summary | 1 + - pengine/test10/systemhealthn1.scores | 2 + - pengine/test10/systemhealthn1.summary | 2 + - pengine/test10/systemhealthn2.scores | 1 + - pengine/test10/systemhealthn2.summary | 1 + - pengine/test10/systemhealthn3.scores | 1 + - pengine/test10/systemhealthn3.summary | 1 + - pengine/test10/systemhealtho1.scores | 2 + - pengine/test10/systemhealtho1.summary | 2 + - pengine/test10/systemhealtho2.scores | 1 + - pengine/test10/systemhealtho2.summary | 1 + - pengine/test10/systemhealtho3.scores | 1 + - pengine/test10/systemhealtho3.summary | 1 + - pengine/test10/systemhealthp1.scores | 2 + - pengine/test10/systemhealthp1.summary | 2 + - pengine/test10/systemhealthp2.scores | 1 + - pengine/test10/systemhealthp2.summary | 1 + - pengine/test10/systemhealthp3.scores | 1 + - pengine/test10/systemhealthp3.summary | 1 + - pengine/test10/ticket-clone-21.scores | 2 + - pengine/test10/ticket-clone-21.summary | 2 + - pengine/test10/ticket-clone-9.scores | 2 + - pengine/test10/ticket-clone-9.summary | 2 + - pengine/test10/ticket-group-21.scores | 1 + - pengine/test10/ticket-group-21.summary | 1 + - pengine/test10/ticket-group-9.scores | 1 + - pengine/test10/ticket-group-9.summary | 1 + - pengine/test10/ticket-master-21.scores | 1 + - pengine/test10/ticket-master-21.summary | 1 + - pengine/test10/ticket-master-9.scores | 1 + - pengine/test10/ticket-master-9.summary | 1 + - pengine/test10/ticket-primitive-21.scores | 1 + - pengine/test10/ticket-primitive-21.summary | 1 + - pengine/test10/ticket-primitive-9.scores | 1 + - pengine/test10/ticket-primitive-9.summary | 1 + - pengine/test10/unfence-definition.dot | 5 +- - pengine/test10/unfence-definition.exp | 31 +-- - pengine/test10/unfence-definition.scores | 3 + - pengine/test10/unfence-definition.summary | 13 +- - pengine/test10/unfence-definition.xml | 10 + - pengine/test10/unfence-parameters.dot | 7 +- - pengine/test10/unfence-parameters.exp | 42 ++- - pengine/test10/unfence-parameters.scores | 4 + - pengine/test10/unfence-parameters.summary | 14 +- - pengine/test10/unfence-parameters.xml | 10 + - pengine/test10/unfence-startup.dot | 5 +- - pengine/test10/unfence-startup.exp | 29 +- - pengine/test10/unfence-startup.scores | 2 + - pengine/test10/unfence-startup.summary | 10 +- - pengine/test10/unfence-startup.xml | 10 + - pengine/test10/whitebox-fail1.scores | 1 + - pengine/test10/whitebox-fail1.summary | 1 + - pengine/test10/whitebox-fail2.scores | 1 + - pengine/test10/whitebox-fail2.summary | 1 + - pengine/test10/whitebox-imply-stop-on-fence.scores | 3 + - .../test10/whitebox-imply-stop-on-fence.summary | 3 + - pengine/test10/whitebox-ms-ordering.scores | 2 + - pengine/test10/whitebox-ms-ordering.summary | 2 + - .../test10/whitebox-unexpectedly-running.scores | 1 + - .../test10/whitebox-unexpectedly-running.summary | 1 + - 168 files changed, 580 insertions(+), 194 deletions(-) - -diff --git a/crmd/te_callbacks.c b/crmd/te_callbacks.c -index 3c63aa6..b5c857d 100644 ---- a/crmd/te_callbacks.c -+++ b/crmd/te_callbacks.c -@@ -788,16 +788,31 @@ tengine_stonith_callback(stonith_t * stonith, stonith_callback_data_t * data) - } - - stop_te_timer(action->timer); -- - if (rc == pcmk_ok) { - const char *target = crm_element_value(action->xml, XML_LRM_ATTR_TARGET); - const char *uuid = crm_element_value(action->xml, XML_LRM_ATTR_TARGET_UUID); - const char *op = crm_meta_value(action->params, "stonith_action"); - -- crm_debug("Stonith operation %d for %s passed", call_id, target); -+ crm_info("Stonith operation %d for %s passed", call_id, target); - if (action->confirmed == FALSE) { - te_action_confirmed(action); -- if (action->sent_update == FALSE && safe_str_neq("on", op)) { -+ if (safe_str_eq("on", op)) { -+ const char *key = NULL; -+ const char *value = NULL; -+ -+ key = XML_NODE_IS_UNFENCED; -+ value = crm_meta_value(action->params, key); -+ update_attrd(target, key, value, NULL, FALSE); -+ -+ key = "digests-all"; -+ value = crm_meta_value(action->params, key); -+ update_attrd(target, key, value, NULL, FALSE); -+ -+ key = "digests-secure"; -+ value = crm_meta_value(action->params, key); -+ update_attrd(target, key, value, NULL, FALSE); -+ -+ } else if (action->sent_update == FALSE) { - send_stonith_update(action, target, uuid); - action->sent_update = TRUE; - } -diff --git a/include/crm/msg_xml.h b/include/crm/msg_xml.h -index a764e1d..8cf22f3 100644 ---- a/include/crm/msg_xml.h -+++ b/include/crm/msg_xml.h -@@ -262,6 +262,7 @@ - # define XML_NODE_IS_PEER "crmd" - # define XML_NODE_IS_REMOTE "remote_node" - # define XML_NODE_IS_FENCED "node_fenced" -+# define XML_NODE_IS_UNFENCED "node_unfenced" - # define XML_NODE_IS_MAINTENANCE "node_in_maintenance" - - # define XML_CIB_ATTR_SHUTDOWN "shutdown" -diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h -index 1b6afd1..3e10a30 100644 ---- a/include/crm/pengine/internal.h -+++ b/include/crm/pengine/internal.h -@@ -273,7 +273,7 @@ typedef struct op_digest_cache_s { - op_digest_cache_t *rsc_action_digest_cmp(resource_t * rsc, xmlNode * xml_op, node_t * node, - pe_working_set_t * data_set); - --action_t *pe_fence_op(node_t * node, const char *op, bool optional, pe_working_set_t * data_set); -+action_t *pe_fence_op(node_t * node, const char *op, bool optional, const char *reason, pe_working_set_t * data_set); - void trigger_unfencing( - resource_t * rsc, node_t *node, const char *reason, action_t *dependency, pe_working_set_t * data_set); - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 7c29e7b..90da95a 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -1916,7 +1733,7 @@ filter_parameters(xmlNode * param_set, const char *param_string, bool need_prese - return; - } - -- if (param_set) { -+ if (param_set && param_string) { - xmlAttrPtr xIter = param_set->properties; - - while (xIter) { -@@ -1982,104 +1814,162 @@ bool fix_remote_addr(resource_t * rsc) - return TRUE; - } - -+static op_digest_cache_t * -+rsc_action_digest(resource_t * rsc, const char *task, const char *key, -+ node_t * node, xmlNode * xml_op, pe_working_set_t * data_set) -+{ -+ op_digest_cache_t *data = NULL; -+ -+ data = g_hash_table_lookup(node->details->digest_cache, key); -+ if (data == NULL) { -+ GHashTable *local_rsc_params = crm_str_table_new(); -+ action_t *action = custom_action(rsc, strdup(key), task, node, TRUE, FALSE, data_set); -+ //xmlNode *local_versioned_params = create_xml_node(NULL, XML_TAG_RSC_VER_ATTRS); -+ -+ const char *op_version; -+ //const char *ra_version = NULL; -+ const char *restart_list = NULL; -+ const char *secure_list = " passwd password "; -+ -+ data = calloc(1, sizeof(op_digest_cache_t)); -+ CRM_ASSERT(data != NULL); -+ -+ get_rsc_attributes(local_rsc_params, rsc, node, data_set); -+ //pe_get_versioned_attributes(local_versioned_params, rsc, node, data_set); -+ -+ data->params_all = create_xml_node(NULL, XML_TAG_PARAMS); -+ if (fix_remote_addr(rsc)) { -+ // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside -+ crm_xml_add(data->params_all, "addr", node->details->uname); -+ crm_trace("Fixing addr for %s on %s", rsc->id, node->details->uname); -+ } -+ -+ g_hash_table_foreach(local_rsc_params, hash2field, data->params_all); -+ g_hash_table_foreach(action->extra, hash2field, data->params_all); -+ g_hash_table_foreach(rsc->parameters, hash2field, data->params_all); -+ g_hash_table_foreach(action->meta, hash2metafield, data->params_all); -+ -+ if(xml_op) { -+ secure_list = crm_element_value(xml_op, XML_LRM_ATTR_OP_SECURE); -+ restart_list = crm_element_value(xml_op, XML_LRM_ATTR_OP_RESTART); -+ -+ op_version = crm_element_value(xml_op, XML_ATTR_CRM_VERSION); -+ //ra_version = crm_element_value(xml_op, XML_ATTR_RA_VERSION); -+ -+ } else { -+ op_version = CRM_FEATURE_SET; -+ } -+ -+ //append_versioned_params(local_versioned_params, ra_version, data->params_all); -+ //append_versioned_params(rsc->versioned_parameters, ra_version, data->params_all); -+ //append_versioned_params(action->versioned_parameters, ra_version, data->params_all); -+ -+ filter_action_parameters(data->params_all, op_version); -+ -+ g_hash_table_destroy(local_rsc_params); -+ pe_free_action(action); -+ -+ data->digest_all_calc = calculate_operation_digest(data->params_all, op_version); -+ -+ if (is_set(data_set->flags, pe_flag_sanitized)) { -+ data->params_secure = copy_xml(data->params_all); -+ if(secure_list) { -+ filter_parameters(data->params_secure, secure_list, FALSE); -+ } -+ data->digest_secure_calc = calculate_operation_digest(data->params_secure, op_version); -+ } -+ -+ if(crm_element_value(xml_op, XML_LRM_ATTR_RESTART_DIGEST) != NULL) { -+ data->params_restart = copy_xml(data->params_all); -+ if (restart_list) { -+ filter_parameters(data->params_restart, restart_list, TRUE); -+ } -+ data->digest_restart_calc = calculate_operation_digest(data->params_restart, op_version); -+ } -+ -+ g_hash_table_insert(node->details->digest_cache, strdup(key), data); -+ } -+ -+ return data; -+} -+ - op_digest_cache_t * - rsc_action_digest_cmp(resource_t * rsc, xmlNode * xml_op, node_t * node, - pe_working_set_t * data_set) - { - op_digest_cache_t *data = NULL; - -- GHashTable *local_rsc_params = NULL; -- -- action_t *action = NULL; - char *key = NULL; -- - int interval = 0; -- const char *op_id = ID(xml_op); -+ - const char *interval_s = crm_element_value(xml_op, XML_LRM_ATTR_INTERVAL); - const char *task = crm_element_value(xml_op, XML_LRM_ATTR_TASK); -+ - const char *digest_all; - const char *digest_restart; -- const char *secure_list; -- const char *restart_list; -- const char *op_version; - - CRM_ASSERT(node != NULL); - -- data = g_hash_table_lookup(node->details->digest_cache, op_id); -- if (data) { -- return data; -- } -- -- data = calloc(1, sizeof(op_digest_cache_t)); -- CRM_ASSERT(data != NULL); -- - digest_all = crm_element_value(xml_op, XML_LRM_ATTR_OP_DIGEST); - digest_restart = crm_element_value(xml_op, XML_LRM_ATTR_RESTART_DIGEST); - -- secure_list = crm_element_value(xml_op, XML_LRM_ATTR_OP_SECURE); -- restart_list = crm_element_value(xml_op, XML_LRM_ATTR_OP_RESTART); -- -- op_version = crm_element_value(xml_op, XML_ATTR_CRM_VERSION); -- -- /* key is freed in custom_action */ - interval = crm_parse_int(interval_s, "0"); - key = generate_op_key(rsc->id, task, interval); -- action = custom_action(rsc, key, task, node, TRUE, FALSE, data_set); -- key = NULL; -- -- local_rsc_params = g_hash_table_new_full(crm_str_hash, g_str_equal, -- g_hash_destroy_str, g_hash_destroy_str); -- get_rsc_attributes(local_rsc_params, rsc, node, data_set); -- data->params_all = create_xml_node(NULL, XML_TAG_PARAMS); -+ data = rsc_action_digest(rsc, task, key, node, xml_op, data_set); - -- if (fix_remote_addr(rsc)) { -- // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside -- crm_xml_add(data->params_all, "addr", node->details->uname); -- crm_trace("Fixing addr for %s on %s", rsc->id, node->details->uname); -- } -+ data->rc = RSC_DIGEST_MATCH; -+ if (digest_restart && data->digest_restart_calc && strcmp(data->digest_restart_calc, digest_restart) != 0) { -+ data->rc = RSC_DIGEST_RESTART; - -- g_hash_table_foreach(local_rsc_params, hash2field, data->params_all); -- g_hash_table_foreach(action->extra, hash2field, data->params_all); -- g_hash_table_foreach(rsc->parameters, hash2field, data->params_all); -- g_hash_table_foreach(action->meta, hash2metafield, data->params_all); -- filter_action_parameters(data->params_all, op_version); -+ } else if (digest_all == NULL) { -+ /* it is unknown what the previous op digest was */ -+ data->rc = RSC_DIGEST_UNKNOWN; - -- data->digest_all_calc = calculate_operation_digest(data->params_all, op_version); -+ } else if (strcmp(digest_all, data->digest_all_calc) != 0) { -+ data->rc = RSC_DIGEST_ALL; -+ } - -- if (secure_list && is_set(data_set->flags, pe_flag_sanitized)) { -- data->params_secure = copy_xml(data->params_all); -+ free(key); -+ return data; -+} - -- if (secure_list) { -- filter_parameters(data->params_secure, secure_list, FALSE); -- } -- data->digest_secure_calc = calculate_operation_digest(data->params_secure, op_version); -- } -+#define STONITH_DIGEST_TASK "stonith-on" - -- if (digest_restart) { -- data->params_restart = copy_xml(data->params_all); -+static op_digest_cache_t * -+fencing_action_digest_cmp(resource_t * rsc, node_t * node, pe_working_set_t * data_set) -+{ -+ char *key = generate_op_key(rsc->id, STONITH_DIGEST_TASK, 0); -+ op_digest_cache_t *data = rsc_action_digest(rsc, STONITH_DIGEST_TASK, key, node, NULL, data_set); - -- if (restart_list) { -- filter_parameters(data->params_restart, restart_list, TRUE); -- } -- data->digest_restart_calc = calculate_operation_digest(data->params_restart, op_version); -- } -+ const char *digest_all = g_hash_table_lookup(node->details->attrs, "digests-all"); -+ const char *digest_secure = g_hash_table_lookup(node->details->attrs, "digests-secure"); - -- data->rc = RSC_DIGEST_MATCH; -- if (digest_restart && strcmp(data->digest_restart_calc, digest_restart) != 0) { -- data->rc = RSC_DIGEST_RESTART; -+ /* No restarts for fencing device changes */ - -- } else if (digest_all == NULL) { -+ data->rc = RSC_DIGEST_ALL; -+ if (digest_all == NULL) { - /* it is unknown what the previous op digest was */ - data->rc = RSC_DIGEST_UNKNOWN; - -- } else if (strcmp(digest_all, data->digest_all_calc) != 0) { -- data->rc = RSC_DIGEST_ALL; -+ } else if (strcmp(digest_all, data->digest_all_calc) == 0) { -+ data->rc = RSC_DIGEST_MATCH; -+ -+ } else if(digest_secure && data->digest_secure_calc) { -+ char *search = crm_strdup_printf("%s:%s:%s", rsc->id, (const char*)g_hash_table_lookup(rsc->meta, XML_ATTR_TYPE), data->digest_secure_calc); -+ -+ if(strstr(digest_secure, search)) { -+ fprintf(stdout, "Only 'private' parameters to %s for unfencing %s changed\n", -+ rsc->id, node->details->uname); -+ data->rc = RSC_DIGEST_MATCH; -+ } - } - -- g_hash_table_insert(node->details->digest_cache, strdup(op_id), data); -- g_hash_table_destroy(local_rsc_params); -- pe_free_action(action); -+ if (data->rc == RSC_DIGEST_ALL && is_set(data_set->flags, pe_flag_sanitized) && data->digest_secure_calc) { -+ fprintf(stdout, "Parameters to %s for unfencing %s changed, try '%s:%s:%s'\n", -+ rsc->id, node->details->uname, rsc->id, (const char*)g_hash_table_lookup(rsc->meta, XML_ATTR_TYPE), data->digest_secure_calc); -+ } - -+ free(key); - return data; - } - -@@ -2117,35 +2007,113 @@ set_bit_recursive(resource_t * rsc, unsigned long long flag) - } - } - -+static GListPtr -+find_unfencing_devices(GListPtr candidates, GListPtr matches) -+{ -+ for (GListPtr gIter = candidates; gIter != NULL; gIter = gIter->next) { -+ resource_t *candidate = gIter->data; -+ const char *provides = g_hash_table_lookup(candidate->meta, XML_RSC_ATTR_PROVIDES); -+ const char *requires = g_hash_table_lookup(candidate->meta, XML_RSC_ATTR_REQUIRES); -+ -+ if(candidate->children) { -+ matches = find_unfencing_devices(candidate->children, matches); -+ } else if (is_not_set(candidate->flags, pe_rsc_fence_device)) { -+ continue; -+ -+ } else if (crm_str_eq(provides, "unfencing", FALSE) || crm_str_eq(requires, "unfencing", FALSE)) { -+ matches = g_list_prepend(matches, candidate); -+ } -+ } -+ return matches; -+} -+ -+ -+#define STONITH_DIGEST_TASK "stonith-on" -+ - action_t * --pe_fence_op(node_t * node, const char *op, bool optional, pe_working_set_t * data_set) -+pe_fence_op(node_t * node, const char *op, bool optional, const char *reason, pe_working_set_t * data_set) - { -- char *key = NULL; -+ char *op_key = NULL; - action_t *stonith_op = NULL; - - if(op == NULL) { - op = data_set->stonith_action; - } - -- key = crm_strdup_printf("%s-%s-%s", CRM_OP_FENCE, node->details->uname, op); -+ op_key = crm_strdup_printf("%s-%s-%s", CRM_OP_FENCE, node->details->uname, op); - - if(data_set->singletons) { -- stonith_op = g_hash_table_lookup(data_set->singletons, key); -+ stonith_op = g_hash_table_lookup(data_set->singletons, op_key); - } - - if(stonith_op == NULL) { -- stonith_op = custom_action(NULL, key, CRM_OP_FENCE, node, optional, TRUE, data_set); -+ stonith_op = custom_action(NULL, op_key, CRM_OP_FENCE, node, TRUE, TRUE, data_set); - - add_hash_param(stonith_op->meta, XML_LRM_ATTR_TARGET, node->details->uname); - add_hash_param(stonith_op->meta, XML_LRM_ATTR_TARGET_UUID, node->details->id); - add_hash_param(stonith_op->meta, "stonith_action", op); -+ -+ if(is_remote_node(node) && is_set(data_set->flags, pe_flag_enable_unfencing)) { -+ /* Extra work to detect device changes on remotes -+ * -+ * We may do this for all nodes in the future, but for now -+ * the check_action_definition() based stuff works fine. -+ * -+ * Use "stonith-on" to avoid creating cache entries for -+ * operations check_action_definition() would look for. -+ */ -+ long max = 1024; -+ long digests_all_offset = 0; -+ long digests_secure_offset = 0; -+ -+ char *digests_all = malloc(max); -+ char *digests_secure = malloc(max); -+ GListPtr matches = find_unfencing_devices(data_set->resources, NULL); -+ -+ for (GListPtr gIter = matches; gIter != NULL; gIter = gIter->next) { -+ resource_t *match = gIter->data; -+ op_digest_cache_t *data = fencing_action_digest_cmp(match, node, data_set); -+ -+ if(data->rc == RSC_DIGEST_ALL) { -+ optional = FALSE; -+ crm_notice("Unfencing %s (remote): because the definition of %s changed", node->details->uname, match->id); -+ if (is_set(data_set->flags, pe_flag_sanitized)) { -+ /* Extra detail for those running from the commandline */ -+ fprintf(stdout, " notice: Unfencing %s (remote): because the definition of %s changed\n", node->details->uname, match->id); -+ } -+ -+ } -+ -+ digests_all_offset += snprintf( -+ digests_all+digests_all_offset, max-digests_all_offset, -+ "%s:%s:%s,", match->id, (const char*)g_hash_table_lookup(match->meta, XML_ATTR_TYPE), data->digest_all_calc); -+ -+ digests_secure_offset += snprintf( -+ digests_secure+digests_secure_offset, max-digests_secure_offset, -+ "%s:%s:%s,", match->id, (const char*)g_hash_table_lookup(match->meta, XML_ATTR_TYPE), data->digest_secure_calc); -+ } -+ add_hash_param(stonith_op->meta, strdup("digests-all"), digests_all); -+ add_hash_param(stonith_op->meta, strdup("digests-secure"), digests_secure); -+ } -+ - } else { -- free(key); -+ free(op_key); - } - -- if(optional == FALSE) { -- crm_trace("%s is no longer optional", stonith_op->uuid); -+ if(optional == FALSE && is_set(stonith_op->flags, pe_action_optional)) { -+ const char *kind = "Fencing "; -+ - pe_clear_action_bit(stonith_op, pe_action_optional); -+ -+ if(safe_str_eq(op, "on")) { -+ kind = "Unfencing"; -+ } -+ -+ crm_notice("%s %s: %s", kind, node->details->uname, reason); -+ if (is_set(data_set->flags, pe_flag_sanitized)) { -+ /* Extra detail for those running from the commandline */ -+ fprintf(stdout, " notice: %s %s: %s\n", kind, node->details->uname, reason); -+ } - } - - return stonith_op; -@@ -2167,9 +2135,8 @@ trigger_unfencing( - && node->details->online - && node->details->unclean == FALSE - && node->details->shutdown == FALSE) { -- action_t *unfence = pe_fence_op(node, "on", FALSE, data_set); -+ action_t *unfence = pe_fence_op(node, "on", FALSE, reason, data_set); - -- crm_notice("Unfencing %s: %s", node->details->uname, reason); - if(dependency) { - order_actions(unfence, dependency, pe_order_optional); - } -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 8ea2ea1..fd9c4f9 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -1406,7 +1406,7 @@ fence_guest(pe_node_t *node, pe_action_t *done, pe_working_set_t *data_set) - /* Create a fence pseudo-event, so we have an event to order actions - * against, and crmd can always detect it. - */ -- stonith_op = pe_fence_op(node, fence_action, FALSE, data_set); -+ stonith_op = pe_fence_op(node, fence_action, FALSE, "guest is unclean", data_set); - update_action_flags(stonith_op, pe_action_pseudo | pe_action_runnable, - __FUNCTION__, __LINE__); - -@@ -1488,7 +1488,7 @@ stage6(pe_working_set_t * data_set) - - pe_warn("Scheduling Node %s for STONITH", node->details->uname); - -- stonith_op = pe_fence_op(node, NULL, FALSE, data_set); -+ stonith_op = pe_fence_op(node, NULL, FALSE, "node is unclean", data_set); - - stonith_constraints(node, stonith_op, data_set); - -diff --git a/pengine/native.c b/pengine/native.c -index dd5ff18..bc59405 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -1355,7 +1355,7 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - - g_hash_table_iter_init(&iter, rsc->allowed_nodes); - while (g_hash_table_iter_next(&iter, NULL, (void **)&node)) { -- action_t *unfence = pe_fence_op(node, "on", TRUE, data_set); -+ action_t *unfence = pe_fence_op(node, "on", TRUE, __FUNCTION__, data_set); - - crm_debug("Ordering any stops of %s before %s, and any starts after", - rsc->id, unfence->uuid); -@@ -2455,6 +2455,16 @@ StopRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * d - if (is_set(data_set->flags, pe_flag_remove_after_stop)) { - DeleteRsc(rsc, current, optional, data_set); - } -+ -+ if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { -+ action_t *unfence = pe_fence_op(current, "on", TRUE, __FUNCTION__, data_set); -+ const char *unfenced = g_hash_table_lookup(current->details->attrs, XML_NODE_IS_UNFENCED); -+ -+ order_actions(stop, unfence, pe_order_implies_first); -+ if (unfenced == NULL || safe_str_eq("0", unfenced)) { -+ pe_proc_err("Stopping %s until %s can be unfenced", rsc->id, current->details->uname); -+ } -+ } - } - - return TRUE; -@@ -2468,9 +2478,25 @@ StartRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * - CRM_ASSERT(rsc); - pe_rsc_trace(rsc, "%s on %s %d", rsc->id, next ? next->details->uname : "N/A", optional); - start = start_action(rsc, next, TRUE); -+ -+ if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { -+ action_t *unfence = pe_fence_op(next, "on", TRUE, __FUNCTION__, data_set); -+ const char *unfenced = g_hash_table_lookup(next->details->attrs, XML_NODE_IS_UNFENCED); -+ -+ order_actions(unfence, start, pe_order_implies_then); -+ -+ if (unfenced == NULL || safe_str_eq("0", unfenced)) { -+ char *reason = crm_strdup_printf("Required by %s", rsc->id); -+ trigger_unfencing(NULL, next, reason, NULL, data_set); -+ free(reason); -+ } -+ } -+ - if (is_set(start->flags, pe_action_runnable) && optional == FALSE) { - update_action_flags(start, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); - } -+ -+ - return TRUE; - } - -@@ -2820,14 +2846,9 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - * probed, we know the state of all resources that require - * unfencing and that unfencing occurred. - */ -- if(is_set(rsc->flags, pe_rsc_fence_device) && is_set(data_set->flags, pe_flag_enable_unfencing)) { -- trigger_unfencing(NULL, node, "node discovery", probe, data_set); -- probe->priority = INFINITY; /* Ensure this runs if unfencing succeeds */ -- -- } else if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { -- action_t *unfence = pe_fence_op(node, "on", TRUE, data_set); -- -- order_actions(probe, unfence, pe_order_optional); -+ if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { -+ action_t *unfence = pe_fence_op(node, "on", TRUE, __FUNCTION__, data_set); -+ order_actions(unfence, probe, pe_order_optional); - } - - /* -diff --git a/pengine/test10/594.scores b/pengine/test10/594.scores -index 972b89b..430550c 100644 ---- a/pengine/test10/594.scores -+++ b/pengine/test10/594.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing hadev3: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on hadev1: 0 - clone_color: DoFencing allocation score on hadev2: 0 -diff --git a/pengine/test10/594.summary b/pengine/test10/594.summary -index ef2a02c..6cd78d3 100644 ---- a/pengine/test10/594.summary -+++ b/pengine/test10/594.summary -@@ -12,6 +12,7 @@ Online: [ hadev1 hadev2 ] - child_DoFencing:1 (stonith:ssh): Started hadev1 - child_DoFencing:2 (stonith:ssh): Started hadev1 - -+ notice: Fencing hadev3: node is unclean - Transition Summary: - * Fence (reboot) hadev3 - * Shutdown hadev2 -diff --git a/pengine/test10/829.scores b/pengine/test10/829.scores -index f0652ff..71a372b 100644 ---- a/pengine/test10/829.scores -+++ b/pengine/test10/829.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing c001n02: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on c001n01: 0 - clone_color: DoFencing allocation score on c001n02: 0 -diff --git a/pengine/test10/829.summary b/pengine/test10/829.summary -index 556699f..8649ed8 100644 ---- a/pengine/test10/829.summary -+++ b/pengine/test10/829.summary -@@ -14,6 +14,7 @@ Online: [ c001n01 c001n03 c001n08 ] - child_DoFencing:2 (stonith:ssh): Started c001n01 - child_DoFencing:3 (stonith:ssh): Started c001n08 - -+ notice: Fencing c001n02: node is unclean - Transition Summary: - * Fence (reboot) c001n02 - * Move rsc_c001n02 (Started c001n02 -> c001n01) -diff --git a/pengine/test10/bug-5186-partial-migrate.scores b/pengine/test10/bug-5186-partial-migrate.scores -index 8b29529..dd59f34 100644 ---- a/pengine/test10/bug-5186-partial-migrate.scores -+++ b/pengine/test10/bug-5186-partial-migrate.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing bl460g1n7: node is unclean - Allocation scores: - clone_color: clnDiskd1 allocation score on bl460g1n6: 200 - clone_color: clnDiskd1 allocation score on bl460g1n7: 0 -diff --git a/pengine/test10/bug-5186-partial-migrate.summary b/pengine/test10/bug-5186-partial-migrate.summary -index a32e81d..5c8231d 100644 ---- a/pengine/test10/bug-5186-partial-migrate.summary -+++ b/pengine/test10/bug-5186-partial-migrate.summary -@@ -24,6 +24,7 @@ Online: [ bl460g1n6 bl460g1n8 ] - prmPing (ocf::pacemaker:ping): Started bl460g1n7 (UNCLEAN) - Started: [ bl460g1n6 bl460g1n8 ] - -+ notice: Fencing bl460g1n7: node is unclean - Transition Summary: - * Fence (reboot) bl460g1n7 - * Move prmDummy (Started bl460g1n7 -> bl460g1n6) -diff --git a/pengine/test10/bug-cl-5247.scores b/pengine/test10/bug-cl-5247.scores -index e9e4709..f1ded69 100644 ---- a/pengine/test10/bug-cl-5247.scores -+++ b/pengine/test10/bug-cl-5247.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing pgsr02: guest is unclean - Allocation scores: - Using the original execution date of: 2015-08-12 02:53:40Z - clone_color: msPostgresql allocation score on bl460g8n3: -INFINITY -diff --git a/pengine/test10/bug-cl-5247.summary b/pengine/test10/bug-cl-5247.summary -index f70a9ea..755e647 100644 ---- a/pengine/test10/bug-cl-5247.summary -+++ b/pengine/test10/bug-cl-5247.summary -@@ -17,6 +17,7 @@ Containers: [ pgsr01:prmDB1 ] - Masters: [ pgsr01 ] - Stopped: [ bl460g8n3 bl460g8n4 ] - -+ notice: Fencing pgsr02: guest is unclean - Transition Summary: - * Fence (off) pgsr02 (resource: prmDB2) - * Stop prmDB2 (bl460g8n4) -diff --git a/pengine/test10/bug-lf-2508.scores b/pengine/test10/bug-lf-2508.scores -index 3c3ce16..200d548 100644 ---- a/pengine/test10/bug-lf-2508.scores -+++ b/pengine/test10/bug-lf-2508.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing srv02: node is unclean - Allocation scores: - clone_color: clnStonith1 allocation score on srv01: -INFINITY - clone_color: clnStonith1 allocation score on srv02: 0 -diff --git a/pengine/test10/bug-lf-2508.summary b/pengine/test10/bug-lf-2508.summary -index 7931d19..18080cb 100644 ---- a/pengine/test10/bug-lf-2508.summary -+++ b/pengine/test10/bug-lf-2508.summary -@@ -34,6 +34,7 @@ Online: [ srv01 srv03 srv04 ] - Started: [ srv01 srv03 ] - Stopped: [ srv04 ] - -+ notice: Fencing srv02: node is unclean - Transition Summary: - * Fence (reboot) srv02 - * Start Dummy01 (srv01) -diff --git a/pengine/test10/bug-lf-2551.scores b/pengine/test10/bug-lf-2551.scores -index 2b0aa12..64cbca0 100644 ---- a/pengine/test10/bug-lf-2551.scores -+++ b/pengine/test10/bug-lf-2551.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing hex-9: node is unclean - Allocation scores: - clone_color: base-clone allocation score on hex-0: 14 - clone_color: base-clone allocation score on hex-7: 16 -diff --git a/pengine/test10/bug-lf-2551.summary b/pengine/test10/bug-lf-2551.summary -index ef2e54a..4fa553c 100644 ---- a/pengine/test10/bug-lf-2551.summary -+++ b/pengine/test10/bug-lf-2551.summary -@@ -80,6 +80,7 @@ Online: [ hex-0 hex-7 hex-8 ] - vm-63 (ocf::heartbeat:Xen): Stopped - vm-64 (ocf::heartbeat:Xen): Stopped - -+ notice: Fencing hex-9: node is unclean - Transition Summary: - * Fence (reboot) hex-9 - * Move fencing-sbd (Started hex-9 -> hex-0) -diff --git a/pengine/test10/bug-lf-2606.scores b/pengine/test10/bug-lf-2606.scores -index 6a9d522..b1e6a02 100644 ---- a/pengine/test10/bug-lf-2606.scores -+++ b/pengine/test10/bug-lf-2606.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node2: node is unclean - Allocation scores: - clone_color: ms3 allocation score on node1: 0 - clone_color: ms3 allocation score on node2: 0 -diff --git a/pengine/test10/bug-lf-2606.summary b/pengine/test10/bug-lf-2606.summary -index f30a053..e6cfa89 100644 ---- a/pengine/test10/bug-lf-2606.summary -+++ b/pengine/test10/bug-lf-2606.summary -@@ -11,6 +11,7 @@ Online: [ node1 ] - Masters: [ node2 ] - Slaves: [ node1 ] - -+ notice: Fencing node2: node is unclean - Transition Summary: - * Fence (reboot) node2 - * Stop rsc1 (node2) -diff --git a/pengine/test10/bug-rh-1097457.scores b/pengine/test10/bug-rh-1097457.scores -index 7729421..2fe2859 100644 ---- a/pengine/test10/bug-rh-1097457.scores -+++ b/pengine/test10/bug-rh-1097457.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing lamaVM2: guest is unclean - Allocation scores: - clone_color: FAKE6-clone allocation score on lama2: -INFINITY - clone_color: FAKE6-clone allocation score on lama3: -INFINITY -diff --git a/pengine/test10/bug-rh-1097457.summary b/pengine/test10/bug-rh-1097457.summary -index 1c355c0..19aa39d 100644 ---- a/pengine/test10/bug-rh-1097457.summary -+++ b/pengine/test10/bug-rh-1097457.summary -@@ -31,6 +31,7 @@ Containers: [ lamaVM1:VM1 lamaVM2:VM2 lamaVM3:VM3 ] - Clone Set: FAKE6-clone [FAKE6] - Started: [ lamaVM1 lamaVM2 lamaVM3 ] - -+ notice: Fencing lamaVM2: guest is unclean - Transition Summary: - * Fence (reboot) lamaVM2 (resource: VM2) - * Recover VM2 (Started lama3) -diff --git a/pengine/test10/concurrent-fencing.scores b/pengine/test10/concurrent-fencing.scores -index 0322231..1be723e 100644 ---- a/pengine/test10/concurrent-fencing.scores -+++ b/pengine/test10/concurrent-fencing.scores -@@ -1,3 +1,6 @@ -+ notice: Fencing node1: node is unclean -+ notice: Fencing node2: node is unclean -+ notice: Fencing node3: node is unclean - Allocation scores: - native_color: lsb_dummy allocation score on node1: 0 - native_color: lsb_dummy allocation score on node2: 0 -diff --git a/pengine/test10/concurrent-fencing.summary b/pengine/test10/concurrent-fencing.summary -index 1e4a817..3f54c2c 100644 ---- a/pengine/test10/concurrent-fencing.summary -+++ b/pengine/test10/concurrent-fencing.summary -@@ -7,6 +7,9 @@ Node node3 (uuid3): UNCLEAN (offline) - stonith-1 (stonith:dummy): Stopped - lsb_dummy (lsb:/usr/lib/heartbeat/cts/LSBDummy): Stopped - -+ notice: Fencing node1: node is unclean -+ notice: Fencing node2: node is unclean -+ notice: Fencing node3: node is unclean - Transition Summary: - * Fence (reboot) node3 - * Fence (reboot) node2 -diff --git a/pengine/test10/guest-node-host-dies.scores b/pengine/test10/guest-node-host-dies.scores -index 0d7ad3f..663d236 100644 ---- a/pengine/test10/guest-node-host-dies.scores -+++ b/pengine/test10/guest-node-host-dies.scores -@@ -1,3 +1,6 @@ -+ notice: Fencing lxc1: guest is unclean -+ notice: Fencing lxc2: guest is unclean -+ notice: Fencing rhel7-1: node is unclean - Allocation scores: - clone_color: lxc-ms-master allocation score on lxc1: INFINITY - clone_color: lxc-ms-master allocation score on lxc2: INFINITY -diff --git a/pengine/test10/guest-node-host-dies.summary b/pengine/test10/guest-node-host-dies.summary -index 9f85613..679deb6 100644 ---- a/pengine/test10/guest-node-host-dies.summary -+++ b/pengine/test10/guest-node-host-dies.summary -@@ -10,6 +10,9 @@ Online: [ rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] - Master/Slave Set: lxc-ms-master [lxc-ms] - Stopped: [ rhel7-1 rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] - -+ notice: Fencing lxc1: guest is unclean -+ notice: Fencing lxc2: guest is unclean -+ notice: Fencing rhel7-1: node is unclean - Transition Summary: - * Fence (reboot) rhel7-1 - * Fence (reboot) lxc2 (resource: container2) -diff --git a/pengine/test10/interleave-pseudo-stop.scores b/pengine/test10/interleave-pseudo-stop.scores -index 014f4de..625ba18 100644 ---- a/pengine/test10/interleave-pseudo-stop.scores -+++ b/pengine/test10/interleave-pseudo-stop.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node1: node is unclean - Allocation scores: - clone_color: configstoreclone:0 allocation score on node1: 0 - clone_color: configstoreclone:0 allocation score on node2: 1 -diff --git a/pengine/test10/interleave-pseudo-stop.summary b/pengine/test10/interleave-pseudo-stop.summary -index 12be956..8c22b2f 100644 ---- a/pengine/test10/interleave-pseudo-stop.summary -+++ b/pengine/test10/interleave-pseudo-stop.summary -@@ -16,6 +16,7 @@ Online: [ node2 ] - configstoreclone (ocf::heartbeat:Filesystem): Started node1 (UNCLEAN) - Started: [ node2 ] - -+ notice: Fencing node1: node is unclean - Transition Summary: - * Fence (reboot) node1 - * Stop stonithclone:1 (node1) -diff --git a/pengine/test10/master-7.scores b/pengine/test10/master-7.scores -index 37fc6cd..7569625 100644 ---- a/pengine/test10/master-7.scores -+++ b/pengine/test10/master-7.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing c001n01: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on c001n01: 0 - clone_color: DoFencing allocation score on c001n02: 0 -diff --git a/pengine/test10/master-7.summary b/pengine/test10/master-7.summary -index 2889efb..d76051e 100644 ---- a/pengine/test10/master-7.summary -+++ b/pengine/test10/master-7.summary -@@ -28,6 +28,7 @@ Online: [ c001n02 c001n03 c001n08 ] - ocf_msdummy:6 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n02 - ocf_msdummy:7 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n08 - -+ notice: Fencing c001n01: node is unclean - Transition Summary: - * Fence (reboot) c001n01 - * Move DcIPaddr (Started c001n01 -> c001n03) -diff --git a/pengine/test10/master-8.scores b/pengine/test10/master-8.scores -index c9d1cc9..880d7fb 100644 ---- a/pengine/test10/master-8.scores -+++ b/pengine/test10/master-8.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing c001n01: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on c001n01: 0 - clone_color: DoFencing allocation score on c001n02: 0 -diff --git a/pengine/test10/master-8.summary b/pengine/test10/master-8.summary -index 5968a25..7d0b840 100644 ---- a/pengine/test10/master-8.summary -+++ b/pengine/test10/master-8.summary -@@ -28,6 +28,7 @@ Online: [ c001n02 c001n03 c001n08 ] - ocf_msdummy:6 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n02 - ocf_msdummy:7 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n08 - -+ notice: Fencing c001n01: node is unclean - Transition Summary: - * Fence (reboot) c001n01 - * Move DcIPaddr (Started c001n01 -> c001n03) -diff --git a/pengine/test10/migrate-fencing.scores b/pengine/test10/migrate-fencing.scores -index 3febd69..37d42b4 100644 ---- a/pengine/test10/migrate-fencing.scores -+++ b/pengine/test10/migrate-fencing.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing pcmk-4: node is unclean - Allocation scores: - clone_color: Connectivity allocation score on pcmk-1: 0 - clone_color: Connectivity allocation score on pcmk-2: 0 -diff --git a/pengine/test10/migrate-fencing.summary b/pengine/test10/migrate-fencing.summary -index 842c65d..fdb905e 100644 ---- a/pengine/test10/migrate-fencing.summary -+++ b/pengine/test10/migrate-fencing.summary -@@ -21,6 +21,7 @@ Online: [ pcmk-1 pcmk-2 pcmk-3 ] - Masters: [ pcmk-4 ] - Slaves: [ pcmk-1 pcmk-2 pcmk-3 ] - -+ notice: Fencing pcmk-4: node is unclean - Transition Summary: - * Fence (reboot) pcmk-4 - * Stop FencingChild:0 (pcmk-4) -diff --git a/pengine/test10/rec-node-11.scores b/pengine/test10/rec-node-11.scores -index 482deeb..86c2bf5 100644 ---- a/pengine/test10/rec-node-11.scores -+++ b/pengine/test10/rec-node-11.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node1: node is unclean - Allocation scores: - group_color: group1 allocation score on node1: 0 - group_color: group1 allocation score on node2: 0 -diff --git a/pengine/test10/rec-node-11.summary b/pengine/test10/rec-node-11.summary -index 22f5af7..f45f0a8 100644 ---- a/pengine/test10/rec-node-11.summary -+++ b/pengine/test10/rec-node-11.summary -@@ -9,6 +9,7 @@ Online: [ node2 ] - rsc2 (heartbeat:apache): Started node1 - rsc3 (heartbeat:apache): Started node2 - -+ notice: Fencing node1: node is unclean - Transition Summary: - * Fence (reboot) node1 - * Start stonith-1 (node2) -diff --git a/pengine/test10/rec-node-12.scores b/pengine/test10/rec-node-12.scores -index 153c232..4fd9ff5 100644 ---- a/pengine/test10/rec-node-12.scores -+++ b/pengine/test10/rec-node-12.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing c001n02: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on c001n01: 0 - clone_color: DoFencing allocation score on c001n02: 0 -diff --git a/pengine/test10/rec-node-12.summary b/pengine/test10/rec-node-12.summary -index 6316fdb..562cae9 100644 ---- a/pengine/test10/rec-node-12.summary -+++ b/pengine/test10/rec-node-12.summary -@@ -14,6 +14,7 @@ Online: [ c001n01 c001n03 c001n08 ] - child_DoFencing:2 (stonith:ssh): Stopped - child_DoFencing:3 (stonith:ssh): Stopped - -+ notice: Fencing c001n02: node is unclean - Transition Summary: - * Fence (reboot) c001n02 - * Start DcIPaddr (c001n08) -diff --git a/pengine/test10/rec-node-13.scores b/pengine/test10/rec-node-13.scores -index dda1134..bdb5004 100644 ---- a/pengine/test10/rec-node-13.scores -+++ b/pengine/test10/rec-node-13.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing c001n04: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on c001n02: 0 - clone_color: DoFencing allocation score on c001n03: 0 -diff --git a/pengine/test10/rec-node-13.summary b/pengine/test10/rec-node-13.summary -index c222ad8..d3b4d65 100644 ---- a/pengine/test10/rec-node-13.summary -+++ b/pengine/test10/rec-node-13.summary -@@ -33,6 +33,7 @@ OFFLINE: [ c001n03 c001n05 ] - ocf_msdummy:10 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n06 - ocf_msdummy:11 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n07 - -+ notice: Fencing c001n04: node is unclean - Transition Summary: - * Fence (reboot) c001n04 - * Stop ocf_msdummy:6 (c001n04) -diff --git a/pengine/test10/rec-node-14.scores b/pengine/test10/rec-node-14.scores -index 0322231..1be723e 100644 ---- a/pengine/test10/rec-node-14.scores -+++ b/pengine/test10/rec-node-14.scores -@@ -1,3 +1,6 @@ -+ notice: Fencing node1: node is unclean -+ notice: Fencing node2: node is unclean -+ notice: Fencing node3: node is unclean - Allocation scores: - native_color: lsb_dummy allocation score on node1: 0 - native_color: lsb_dummy allocation score on node2: 0 -diff --git a/pengine/test10/rec-node-14.summary b/pengine/test10/rec-node-14.summary -index f503a92..a707aee 100644 ---- a/pengine/test10/rec-node-14.summary -+++ b/pengine/test10/rec-node-14.summary -@@ -7,6 +7,9 @@ Node node3 (uuid3): UNCLEAN (offline) - stonith-1 (stonith:dummy): Stopped - lsb_dummy (lsb:/usr/lib/heartbeat/cts/LSBDummy): Stopped - -+ notice: Fencing node1: node is unclean -+ notice: Fencing node2: node is unclean -+ notice: Fencing node3: node is unclean - Transition Summary: - * Fence (reboot) node3 - * Fence (reboot) node2 -diff --git a/pengine/test10/rec-node-15.scores b/pengine/test10/rec-node-15.scores -index 03dc6e6..d8b9617 100644 ---- a/pengine/test10/rec-node-15.scores -+++ b/pengine/test10/rec-node-15.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing sapcl03: node is unclean - Allocation scores: - group_color: Filesystem_13 allocation score on sapcl01: 0 - group_color: Filesystem_13 allocation score on sapcl02: 0 -diff --git a/pengine/test10/rec-node-15.summary b/pengine/test10/rec-node-15.summary -index 2f706d2..863bfd4 100644 ---- a/pengine/test10/rec-node-15.summary -+++ b/pengine/test10/rec-node-15.summary -@@ -20,6 +20,7 @@ Online: [ sapcl01 ] - oracle_24 (ocf::heartbeat:oracle): Stopped - oralsnr_25 (ocf::heartbeat:oralsnr): Stopped - -+ notice: Fencing sapcl03: node is unclean - Transition Summary: - * Fence (reboot) sapcl03 - * Start stonith-1 (sapcl01) -diff --git a/pengine/test10/rec-node-2.scores b/pengine/test10/rec-node-2.scores -index 68e176f..6efa92d 100644 ---- a/pengine/test10/rec-node-2.scores -+++ b/pengine/test10/rec-node-2.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node1: node is unclean - Allocation scores: - group_color: group1 allocation score on node1: 0 - group_color: group1 allocation score on node2: 0 -diff --git a/pengine/test10/rec-node-2.summary b/pengine/test10/rec-node-2.summary -index 0e0183f..ecf6562 100644 ---- a/pengine/test10/rec-node-2.summary -+++ b/pengine/test10/rec-node-2.summary -@@ -13,6 +13,7 @@ Online: [ node2 ] - rsc5 (heartbeat:apache): Stopped - rsc6 (heartbeat:apache): Stopped - -+ notice: Fencing node1: node is unclean - Transition Summary: - * Fence (reboot) node1 - * Start stonith-1 (node2) -diff --git a/pengine/test10/rec-node-4.scores b/pengine/test10/rec-node-4.scores -index 1d008ec..e25a30f 100644 ---- a/pengine/test10/rec-node-4.scores -+++ b/pengine/test10/rec-node-4.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node1: node is unclean - Allocation scores: - native_color: rsc1 allocation score on node1: -INFINITY - native_color: rsc1 allocation score on node2: 0 -diff --git a/pengine/test10/rec-node-4.summary b/pengine/test10/rec-node-4.summary -index 0a2606e..f46a3bb 100644 ---- a/pengine/test10/rec-node-4.summary -+++ b/pengine/test10/rec-node-4.summary -@@ -7,6 +7,7 @@ Online: [ node2 ] - rsc1 (heartbeat:apache): Started node1 (UNCLEAN) - rsc2 (heartbeat:apache): Started node1 (UNCLEAN) - -+ notice: Fencing node1: node is unclean - Transition Summary: - * Fence (reboot) node1 - * Start stonith-1 (node2) -diff --git a/pengine/test10/rec-node-6.scores b/pengine/test10/rec-node-6.scores -index 1d008ec..e25a30f 100644 ---- a/pengine/test10/rec-node-6.scores -+++ b/pengine/test10/rec-node-6.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node1: node is unclean - Allocation scores: - native_color: rsc1 allocation score on node1: -INFINITY - native_color: rsc1 allocation score on node2: 0 -diff --git a/pengine/test10/rec-node-6.summary b/pengine/test10/rec-node-6.summary -index 530c7d2..37257fe 100644 ---- a/pengine/test10/rec-node-6.summary -+++ b/pengine/test10/rec-node-6.summary -@@ -7,6 +7,7 @@ Online: [ node2 ] - rsc1 (heartbeat:apache): Started node1 - rsc2 (heartbeat:apache): Started node1 - -+ notice: Fencing node1: node is unclean - Transition Summary: - * Fence (reboot) node1 - * Start stonith-1 (node2) -diff --git a/pengine/test10/rec-node-7.scores b/pengine/test10/rec-node-7.scores -index 1d008ec..e25a30f 100644 ---- a/pengine/test10/rec-node-7.scores -+++ b/pengine/test10/rec-node-7.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node1: node is unclean - Allocation scores: - native_color: rsc1 allocation score on node1: -INFINITY - native_color: rsc1 allocation score on node2: 0 -diff --git a/pengine/test10/rec-node-7.summary b/pengine/test10/rec-node-7.summary -index 0a2606e..f46a3bb 100644 ---- a/pengine/test10/rec-node-7.summary -+++ b/pengine/test10/rec-node-7.summary -@@ -7,6 +7,7 @@ Online: [ node2 ] - rsc1 (heartbeat:apache): Started node1 (UNCLEAN) - rsc2 (heartbeat:apache): Started node1 (UNCLEAN) - -+ notice: Fencing node1: node is unclean - Transition Summary: - * Fence (reboot) node1 - * Start stonith-1 (node2) -diff --git a/pengine/test10/rec-rsc-5.scores b/pengine/test10/rec-rsc-5.scores -index 1c640ae..ebaedbd 100644 ---- a/pengine/test10/rec-rsc-5.scores -+++ b/pengine/test10/rec-rsc-5.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node2: node is unclean - Allocation scores: - native_color: rsc1 allocation score on node1: 0 - native_color: rsc1 allocation score on node2: -INFINITY -diff --git a/pengine/test10/rec-rsc-5.summary b/pengine/test10/rec-rsc-5.summary -index c3e658a..6bc4010 100644 ---- a/pengine/test10/rec-rsc-5.summary -+++ b/pengine/test10/rec-rsc-5.summary -@@ -7,6 +7,7 @@ Online: [ node1 ] - rsc1 (heartbeat:apache): FAILED node2 - rsc2 (heartbeat:apache): Started node2 - -+ notice: Fencing node2: node is unclean - Transition Summary: - * Fence (reboot) node2 - * Start stonith-1 (node1) -diff --git a/pengine/test10/remote-fence-before-reconnect.scores b/pengine/test10/remote-fence-before-reconnect.scores -index fb46919..9423693 100644 ---- a/pengine/test10/remote-fence-before-reconnect.scores -+++ b/pengine/test10/remote-fence-before-reconnect.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing c7auto4: node is unclean - Allocation scores: - native_color: c7auto4 allocation score on c7auto1: -INFINITY - native_color: c7auto4 allocation score on c7auto2: -INFINITY -diff --git a/pengine/test10/remote-fence-before-reconnect.summary b/pengine/test10/remote-fence-before-reconnect.summary -index 2ce3315..f477884 100644 ---- a/pengine/test10/remote-fence-before-reconnect.summary -+++ b/pengine/test10/remote-fence-before-reconnect.summary -@@ -11,6 +11,7 @@ Online: [ c7auto1 c7auto2 c7auto3 ] - fake4 (ocf::heartbeat:Dummy): Started c7auto2 - fake5 (ocf::heartbeat:Dummy): Started c7auto3 - -+ notice: Fencing c7auto4: node is unclean - Transition Summary: - * Fence (reboot) c7auto4 - * Stop c7auto4 (c7auto1) -diff --git a/pengine/test10/remote-fence-unclean-3.scores b/pengine/test10/remote-fence-unclean-3.scores -index 77d71d6..283a599 100644 ---- a/pengine/test10/remote-fence-unclean-3.scores -+++ b/pengine/test10/remote-fence-unclean-3.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing overcloud-novacompute-0: node is unclean - Allocation scores: - clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 - clone_color: galera-bundle-master allocation score on galera-bundle-1: 0 -diff --git a/pengine/test10/remote-fence-unclean-3.summary b/pengine/test10/remote-fence-unclean-3.summary -index 9296add..ec5d304 100644 ---- a/pengine/test10/remote-fence-unclean-3.summary -+++ b/pengine/test10/remote-fence-unclean-3.summary -@@ -33,6 +33,7 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bund - Docker container: openstack-cinder-backup [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-backup:latest] - openstack-cinder-backup-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-1 - -+ notice: Fencing overcloud-novacompute-0: node is unclean - Transition Summary: - * Fence (reboot) overcloud-novacompute-0 - * Start fence1 (overcloud-controller-0) -diff --git a/pengine/test10/remote-fence-unclean.scores b/pengine/test10/remote-fence-unclean.scores -index 8d29662..038ca2e 100644 ---- a/pengine/test10/remote-fence-unclean.scores -+++ b/pengine/test10/remote-fence-unclean.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing remote1: node is unclean - Allocation scores: - native_color: FAKE1 allocation score on 18builder: 0 - native_color: FAKE1 allocation score on 18node1: 0 -diff --git a/pengine/test10/remote-fence-unclean.summary b/pengine/test10/remote-fence-unclean.summary -index 667549b..8f37909 100644 ---- a/pengine/test10/remote-fence-unclean.summary -+++ b/pengine/test10/remote-fence-unclean.summary -@@ -10,6 +10,7 @@ Online: [ 18builder 18node1 18node2 ] - FAKE3 (ocf::heartbeat:Dummy): Started 18builder - FAKE4 (ocf::heartbeat:Dummy): Started 18node1 - -+ notice: Fencing remote1: node is unclean - Transition Summary: - * Fence (reboot) remote1 - * Recover remote1 (Started 18node1) -diff --git a/pengine/test10/remote-fence-unclean2.scores b/pengine/test10/remote-fence-unclean2.scores -index 10fc7fd..937d0eb 100644 ---- a/pengine/test10/remote-fence-unclean2.scores -+++ b/pengine/test10/remote-fence-unclean2.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing rhel7-alt4: node is unclean - Allocation scores: - native_color: fake allocation score on rhel7-alt1: 0 - native_color: fake allocation score on rhel7-alt2: 0 -diff --git a/pengine/test10/remote-fence-unclean2.summary b/pengine/test10/remote-fence-unclean2.summary -index 0844c29..060d55e 100644 ---- a/pengine/test10/remote-fence-unclean2.summary -+++ b/pengine/test10/remote-fence-unclean2.summary -@@ -9,6 +9,7 @@ OFFLINE: [ rhel7-alt3 ] - rhel7-alt4 (ocf::pacemaker:remote): Stopped - fake (ocf::heartbeat:Dummy): Started rhel7-alt4 (UNCLEAN) - -+ notice: Fencing rhel7-alt4: node is unclean - Transition Summary: - * Fence (reboot) rhel7-alt4 - * Stop fake (rhel7-alt4) -diff --git a/pengine/test10/remote-partial-migrate2.scores b/pengine/test10/remote-partial-migrate2.scores -index 6965507..ce095b1 100644 ---- a/pengine/test10/remote-partial-migrate2.scores -+++ b/pengine/test10/remote-partial-migrate2.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing pcmk4: node is unclean - Allocation scores: - native_color: FAKE1 allocation score on pcmk1: -INFINITY - native_color: FAKE1 allocation score on pcmk2: 0 -diff --git a/pengine/test10/remote-partial-migrate2.summary b/pengine/test10/remote-partial-migrate2.summary -index b8b9b4c..c9f9592 100644 ---- a/pengine/test10/remote-partial-migrate2.summary -+++ b/pengine/test10/remote-partial-migrate2.summary -@@ -62,6 +62,7 @@ RemoteOFFLINE: [ pcmk_remote4 ] - FAKE49 (ocf::heartbeat:Dummy): Started pcmk_remote3 - FAKE50 (ocf::heartbeat:Dummy): Started pcmk_remote5 - -+ notice: Fencing pcmk4: node is unclean - Transition Summary: - * Fence (reboot) pcmk4 - * Migrate pcmk_remote2 (Started pcmk3 -> pcmk1) -diff --git a/pengine/test10/remote-recover-all.scores b/pengine/test10/remote-recover-all.scores -index 43cac62..947f228 100644 ---- a/pengine/test10/remote-recover-all.scores -+++ b/pengine/test10/remote-recover-all.scores -@@ -1,3 +1,6 @@ -+ notice: Fencing controller-1: node is unclean -+ notice: Fencing galera-2: node is unclean -+ notice: Fencing messaging-1: node is unclean - Allocation scores: - Using the original execution date of: 2017-05-03 13:33:24Z - clone_color: galera-master allocation score on controller-0: -INFINITY -diff --git a/pengine/test10/remote-recover-all.summary b/pengine/test10/remote-recover-all.summary -index 5e4f51d..6868533 100644 ---- a/pengine/test10/remote-recover-all.summary -+++ b/pengine/test10/remote-recover-all.summary -@@ -37,6 +37,9 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - -+ notice: Fencing controller-1: node is unclean -+ notice: Fencing galera-2: node is unclean -+ notice: Fencing messaging-1: node is unclean - Transition Summary: - * Fence (reboot) messaging-1 - * Fence (reboot) galera-2 -diff --git a/pengine/test10/remote-recover-connection.scores b/pengine/test10/remote-recover-connection.scores -index 56a18eb..3d3beae 100644 ---- a/pengine/test10/remote-recover-connection.scores -+++ b/pengine/test10/remote-recover-connection.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing controller-1: node is unclean - Allocation scores: - Using the original execution date of: 2017-05-03 13:33:24Z - clone_color: galera-master allocation score on controller-0: -INFINITY -diff --git a/pengine/test10/remote-recover-connection.summary b/pengine/test10/remote-recover-connection.summary -index 79ea7da..f21b2b5 100644 ---- a/pengine/test10/remote-recover-connection.summary -+++ b/pengine/test10/remote-recover-connection.summary -@@ -37,6 +37,7 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - -+ notice: Fencing controller-1: node is unclean - Transition Summary: - * Fence (reboot) controller-1 - * Move messaging-1 (Started controller-1 -> controller-2) -diff --git a/pengine/test10/remote-recover-fail.scores b/pengine/test10/remote-recover-fail.scores -index 8fc7805..02a0643 100644 ---- a/pengine/test10/remote-recover-fail.scores -+++ b/pengine/test10/remote-recover-fail.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing rhel7-auto4: node is unclean - Allocation scores: - native_color: FAKE1 allocation score on rhel7-auto1: 0 - native_color: FAKE1 allocation score on rhel7-auto2: 0 -diff --git a/pengine/test10/remote-recover-fail.summary b/pengine/test10/remote-recover-fail.summary -index 313c8ac..fd518eb 100644 ---- a/pengine/test10/remote-recover-fail.summary -+++ b/pengine/test10/remote-recover-fail.summary -@@ -13,6 +13,7 @@ OFFLINE: [ rhel7-auto1 ] - FAKE5 (ocf::heartbeat:Dummy): Started rhel7-auto3 - FAKE6 (ocf::heartbeat:Dummy): Started rhel7-auto4 (UNCLEAN) - -+ notice: Fencing rhel7-auto4: node is unclean - Transition Summary: - * Fence (reboot) rhel7-auto4 - * Recover rhel7-auto4 (Started rhel7-auto2) -diff --git a/pengine/test10/remote-recover-no-resources.scores b/pengine/test10/remote-recover-no-resources.scores -index e918fc6..36a1ff4 100644 ---- a/pengine/test10/remote-recover-no-resources.scores -+++ b/pengine/test10/remote-recover-no-resources.scores -@@ -1,3 +1,5 @@ -+ notice: Fencing controller-1: node is unclean -+ notice: Fencing messaging-1: node is unclean - Allocation scores: - Using the original execution date of: 2017-05-03 13:33:24Z - clone_color: galera-master allocation score on controller-0: -INFINITY -diff --git a/pengine/test10/remote-recover-no-resources.summary b/pengine/test10/remote-recover-no-resources.summary -index bd27773..c3cd6a8 100644 ---- a/pengine/test10/remote-recover-no-resources.summary -+++ b/pengine/test10/remote-recover-no-resources.summary -@@ -37,6 +37,8 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - -+ notice: Fencing controller-1: node is unclean -+ notice: Fencing messaging-1: node is unclean - Transition Summary: - * Fence (reboot) messaging-1 - * Fence (reboot) controller-1 -diff --git a/pengine/test10/remote-recover-unknown.scores b/pengine/test10/remote-recover-unknown.scores -index e918fc6..d7d7713 100644 ---- a/pengine/test10/remote-recover-unknown.scores -+++ b/pengine/test10/remote-recover-unknown.scores -@@ -1,3 +1,6 @@ -+ notice: Fencing controller-1: node is unclean -+ notice: Fencing galera-2: node is unclean -+ notice: Fencing messaging-1: node is unclean - Allocation scores: - Using the original execution date of: 2017-05-03 13:33:24Z - clone_color: galera-master allocation score on controller-0: -INFINITY -diff --git a/pengine/test10/remote-recover-unknown.summary b/pengine/test10/remote-recover-unknown.summary -index 8a3d560..5b03065 100644 ---- a/pengine/test10/remote-recover-unknown.summary -+++ b/pengine/test10/remote-recover-unknown.summary -@@ -37,6 +37,9 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - -+ notice: Fencing controller-1: node is unclean -+ notice: Fencing galera-2: node is unclean -+ notice: Fencing messaging-1: node is unclean - Transition Summary: - * Fence (reboot) messaging-1 - * Fence (reboot) galera-2 -diff --git a/pengine/test10/remote-recovery.scores b/pengine/test10/remote-recovery.scores -index 56a18eb..3d3beae 100644 ---- a/pengine/test10/remote-recovery.scores -+++ b/pengine/test10/remote-recovery.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing controller-1: node is unclean - Allocation scores: - Using the original execution date of: 2017-05-03 13:33:24Z - clone_color: galera-master allocation score on controller-0: -INFINITY -diff --git a/pengine/test10/remote-recovery.summary b/pengine/test10/remote-recovery.summary -index 79ea7da..f21b2b5 100644 ---- a/pengine/test10/remote-recovery.summary -+++ b/pengine/test10/remote-recovery.summary -@@ -37,6 +37,7 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - -+ notice: Fencing controller-1: node is unclean - Transition Summary: - * Fence (reboot) controller-1 - * Move messaging-1 (Started controller-1 -> controller-2) -diff --git a/pengine/test10/remote-unclean2.scores b/pengine/test10/remote-unclean2.scores -index 72a5953..2c2c9a5 100644 ---- a/pengine/test10/remote-unclean2.scores -+++ b/pengine/test10/remote-unclean2.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing rhel7-auto4: node is unclean - Allocation scores: - native_color: rhel7-auto4 allocation score on rhel7-auto1: 0 - native_color: rhel7-auto4 allocation score on rhel7-auto2: 0 -diff --git a/pengine/test10/remote-unclean2.summary b/pengine/test10/remote-unclean2.summary -index 877eb4d..06047d1 100644 ---- a/pengine/test10/remote-unclean2.summary -+++ b/pengine/test10/remote-unclean2.summary -@@ -6,6 +6,7 @@ Online: [ rhel7-auto1 rhel7-auto2 rhel7-auto3 ] - shooter (stonith:fence_xvm): Started rhel7-auto2 - rhel7-auto4 (ocf::pacemaker:remote): FAILED rhel7-auto1 - -+ notice: Fencing rhel7-auto4: node is unclean - Transition Summary: - * Fence (reboot) rhel7-auto4 - * Recover rhel7-auto4 (Started rhel7-auto1) -diff --git a/pengine/test10/start-then-stop-with-unfence.dot b/pengine/test10/start-then-stop-with-unfence.dot -index d8f7a71..6e9569b 100644 ---- a/pengine/test10/start-then-stop-with-unfence.dot -+++ b/pengine/test10/start-then-stop-with-unfence.dot -@@ -23,7 +23,5 @@ 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-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 359f25b..75cb356 100644 ---- a/pengine/test10/start-then-stop-with-unfence.exp -+++ b/pengine/test10/start-then-stop-with-unfence.exp -@@ -1,16 +1,12 @@ - -- -+ - - - - - - -- -- -- -- -- -+ - - - -@@ -38,18 +34,14 @@ - - - -- -+ - - - - - - -- -- -- -- -- -+ - - - -diff --git a/pengine/test10/start-then-stop-with-unfence.scores b/pengine/test10/start-then-stop-with-unfence.scores -index d353bef..a53e9f2 100644 ---- a/pengine/test10/start-then-stop-with-unfence.scores -+++ b/pengine/test10/start-then-stop-with-unfence.scores -@@ -1,3 +1,4 @@ -+ notice: Unfencing rhel7-node1.example.com: Required by ip1 - Allocation scores: - clone_color: jrummy-clone allocation score on rhel7-node1.example.com: 500 - clone_color: jrummy-clone allocation score on rhel7-node2.example.com: 500 -diff --git a/pengine/test10/start-then-stop-with-unfence.summary b/pengine/test10/start-then-stop-with-unfence.summary -index ae54afc..bb376f5 100644 ---- a/pengine/test10/start-then-stop-with-unfence.summary -+++ b/pengine/test10/start-then-stop-with-unfence.summary -@@ -10,6 +10,7 @@ Online: [ rhel7-node1.example.com rhel7-node2.example.com ] - Started: [ rhel7-node2.example.com ] - Stopped: [ rhel7-node1.example.com ] - -+ notice: Unfencing rhel7-node1.example.com: Required by ip1 - Transition Summary: - * Fence (on) rhel7-node1.example.com - * Start mpath-node1 (rhel7-node1.example.com) -@@ -17,17 +18,17 @@ Transition Summary: - * Start jrummy:1 (rhel7-node1.example.com) - - Executing cluster transition: -- * Pseudo action: jrummy-clone_start_0 -- * Fencing rhel7-node1.example.com (on) - * 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: jrummy start on rhel7-node1.example.com - * Pseudo action: jrummy-clone_running_0 -- * Resource action: mpath-node1 start on rhel7-node1.example.com -+ * Resource action: mpath-node1 monitor=60000 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/start-then-stop-with-unfence.xml b/pengine/test10/start-then-stop-with-unfence.xml -index 499022e..b856250 100644 ---- a/pengine/test10/start-then-stop-with-unfence.xml -+++ b/pengine/test10/start-then-stop-with-unfence.xml -@@ -95,6 +95,7 @@ - - - -+ - - - -diff --git a/pengine/test10/stonith-0.scores b/pengine/test10/stonith-0.scores -index 7aab8cd..db3ddb9 100644 ---- a/pengine/test10/stonith-0.scores -+++ b/pengine/test10/stonith-0.scores -@@ -1,3 +1,5 @@ -+ notice: Fencing c001n03: node is unclean -+ notice: Fencing c001n05: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on c001n02: 0 - clone_color: DoFencing allocation score on c001n03: 0 -diff --git a/pengine/test10/stonith-0.summary b/pengine/test10/stonith-0.summary -index ee8ae15..6983a90 100644 ---- a/pengine/test10/stonith-0.summary -+++ b/pengine/test10/stonith-0.summary -@@ -36,6 +36,8 @@ Online: [ c001n02 c001n04 c001n06 c001n07 c001n08 ] - ocf_msdummy:12 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n06 - ocf_msdummy:13 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n06 - -+ notice: Fencing c001n03: node is unclean -+ notice: Fencing c001n05: node is unclean - Transition Summary: - * Fence (reboot) c001n05 - * Fence (reboot) c001n03 -diff --git a/pengine/test10/stonith-1.scores b/pengine/test10/stonith-1.scores -index 7422355..196b9f5 100644 ---- a/pengine/test10/stonith-1.scores -+++ b/pengine/test10/stonith-1.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing sles-3: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on sles-1: 0 - clone_color: DoFencing allocation score on sles-2: 0 -diff --git a/pengine/test10/stonith-1.summary b/pengine/test10/stonith-1.summary -index b68aca7..111bcbe 100644 ---- a/pengine/test10/stonith-1.summary -+++ b/pengine/test10/stonith-1.summary -@@ -27,6 +27,7 @@ Online: [ sles-1 sles-2 sles-4 ] - ocf_msdummy:6 (ocf::heartbeat:Stateful): Stopped - ocf_msdummy:7 (ocf::heartbeat:Stateful): Stopped - -+ notice: Fencing sles-3: node is unclean - Transition Summary: - * Fence (reboot) sles-3 - * Start r192.168.100.183 (sles-1) -diff --git a/pengine/test10/stonith-2.scores b/pengine/test10/stonith-2.scores -index e1dd011..8c11561 100644 ---- a/pengine/test10/stonith-2.scores -+++ b/pengine/test10/stonith-2.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing sles-5: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on sles-1: 0 - clone_color: DoFencing allocation score on sles-2: 0 -diff --git a/pengine/test10/stonith-2.summary b/pengine/test10/stonith-2.summary -index eef35c4..c8e1d70 100644 ---- a/pengine/test10/stonith-2.summary -+++ b/pengine/test10/stonith-2.summary -@@ -32,6 +32,7 @@ Online: [ sles-1 sles-2 sles-3 sles-4 sles-6 ] - ocf_msdummy:10 (ocf::heartbeat:Stateful): Slave sles-2 - ocf_msdummy:11 (ocf::heartbeat:Stateful): Slave sles-3 - -+ notice: Fencing sles-5: node is unclean - Transition Summary: - * Fence (reboot) sles-5 - * Start rsc_sles-5 (sles-6) -diff --git a/pengine/test10/stonith-3.scores b/pengine/test10/stonith-3.scores -index a1bd3d9..eef30fc 100644 ---- a/pengine/test10/stonith-3.scores -+++ b/pengine/test10/stonith-3.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing rh5node1: node is unclean - Allocation scores: - clone_color: clnStonith allocation score on rh5node1: 0 - clone_color: clnStonith allocation score on rh5node2: 0 -diff --git a/pengine/test10/stonith-3.summary b/pengine/test10/stonith-3.summary -index 398b6bc..015dd77 100644 ---- a/pengine/test10/stonith-3.summary -+++ b/pengine/test10/stonith-3.summary -@@ -7,6 +7,7 @@ Online: [ rh5node2 ] - Clone Set: clnStonith [grpStonith] - Stopped: [ rh5node1 rh5node2 ] - -+ notice: Fencing rh5node1: node is unclean - Transition Summary: - * Fence (reboot) rh5node1 - * Start prmIpPostgreSQLDB (rh5node2) -diff --git a/pengine/test10/stonith-4.scores b/pengine/test10/stonith-4.scores -index ac6fe0b..0bf1cf5 100644 ---- a/pengine/test10/stonith-4.scores -+++ b/pengine/test10/stonith-4.scores -@@ -1,3 +1,7 @@ -+ notice: Fencing pcmk-10: node is unclean -+ notice: Fencing pcmk-5: node is unclean -+ notice: Fencing pcmk-7: node is unclean -+ notice: Fencing pcmk-8: node is unclean - Allocation scores: - native_color: Fencing allocation score on pcmk-10: 0 - native_color: Fencing allocation score on pcmk-11: 0 -diff --git a/pengine/test10/stonith-4.summary b/pengine/test10/stonith-4.summary -index 6e3e396..0c9b5bd 100644 ---- a/pengine/test10/stonith-4.summary -+++ b/pengine/test10/stonith-4.summary -@@ -13,6 +13,10 @@ OFFLINE: [ pcmk-4 pcmk-6 ] - - Fencing (stonith:fence_xvm): Stopped - -+ notice: Fencing pcmk-10: node is unclean -+ notice: Fencing pcmk-5: node is unclean -+ notice: Fencing pcmk-7: node is unclean -+ notice: Fencing pcmk-8: node is unclean - Transition Summary: - * Fence (reboot) pcmk-8 - * Fence (reboot) pcmk-7 -diff --git a/pengine/test10/stop-failure-no-quorum.scores b/pengine/test10/stop-failure-no-quorum.scores -index df30423..c1893b6 100644 ---- a/pengine/test10/stop-failure-no-quorum.scores -+++ b/pengine/test10/stop-failure-no-quorum.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing pcmk-2: node is unclean - Allocation scores: - clone_color: clvm-clone allocation score on pcmk-1: 0 - clone_color: clvm-clone allocation score on pcmk-2: -INFINITY -diff --git a/pengine/test10/stop-failure-no-quorum.summary b/pengine/test10/stop-failure-no-quorum.summary -index 0248126..d91edc1 100644 ---- a/pengine/test10/stop-failure-no-quorum.summary -+++ b/pengine/test10/stop-failure-no-quorum.summary -@@ -14,6 +14,7 @@ Online: [ pcmk-1 ] - ClusterIP (ocf::heartbeat:IPaddr2): Stopped - Fencing (stonith:fence_xvm): Stopped - -+ notice: Fencing pcmk-2: node is unclean - Transition Summary: - * Fence (reboot) pcmk-2 - * Start dlm:0 (pcmk-1 - blocked) -diff --git a/pengine/test10/stop-failure-with-fencing.scores b/pengine/test10/stop-failure-with-fencing.scores -index cf62806..0dc0813 100644 ---- a/pengine/test10/stop-failure-with-fencing.scores -+++ b/pengine/test10/stop-failure-with-fencing.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing pcmk-2: node is unclean - Allocation scores: - clone_color: clvm-clone allocation score on pcmk-1: 0 - clone_color: clvm-clone allocation score on pcmk-2: -INFINITY -diff --git a/pengine/test10/stop-failure-with-fencing.summary b/pengine/test10/stop-failure-with-fencing.summary -index e6c296b..79e6105 100644 ---- a/pengine/test10/stop-failure-with-fencing.summary -+++ b/pengine/test10/stop-failure-with-fencing.summary -@@ -13,6 +13,7 @@ Online: [ pcmk-1 ] - ClusterIP (ocf::heartbeat:IPaddr2): Stopped - Fencing (stonith:fence_xvm): Stopped - -+ notice: Fencing pcmk-2: node is unclean - Transition Summary: - * Fence (reboot) pcmk-2 - * Start dlm:0 (pcmk-1 - blocked) -diff --git a/pengine/test10/systemhealth1.scores b/pengine/test10/systemhealth1.scores -index 8a59654..c55f6e2 100644 ---- a/pengine/test10/systemhealth1.scores -+++ b/pengine/test10/systemhealth1.scores -@@ -1,3 +1,5 @@ -+ notice: Fencing hs21c: node is unclean -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealth1.summary b/pengine/test10/systemhealth1.summary -index 7301c6c..335b94a 100644 ---- a/pengine/test10/systemhealth1.summary -+++ b/pengine/test10/systemhealth1.summary -@@ -7,6 +7,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21c: node is unclean -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - * Fence (reboot) hs21c -diff --git a/pengine/test10/systemhealth2.scores b/pengine/test10/systemhealth2.scores -index 8a59654..b20bd49 100644 ---- a/pengine/test10/systemhealth2.scores -+++ b/pengine/test10/systemhealth2.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealth2.summary b/pengine/test10/systemhealth2.summary -index c83a7e2..b04d5a1 100644 ---- a/pengine/test10/systemhealth2.summary -+++ b/pengine/test10/systemhealth2.summary -@@ -7,6 +7,7 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - * Start stonith-1 (hs21c) -diff --git a/pengine/test10/systemhealth3.scores b/pengine/test10/systemhealth3.scores -index 8a59654..b20bd49 100644 ---- a/pengine/test10/systemhealth3.scores -+++ b/pengine/test10/systemhealth3.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealth3.summary b/pengine/test10/systemhealth3.summary -index c83a7e2..b04d5a1 100644 ---- a/pengine/test10/systemhealth3.summary -+++ b/pengine/test10/systemhealth3.summary -@@ -7,6 +7,7 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - * Start stonith-1 (hs21c) -diff --git a/pengine/test10/systemhealthm1.scores b/pengine/test10/systemhealthm1.scores -index 8a59654..c55f6e2 100644 ---- a/pengine/test10/systemhealthm1.scores -+++ b/pengine/test10/systemhealthm1.scores -@@ -1,3 +1,5 @@ -+ notice: Fencing hs21c: node is unclean -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthm1.summary b/pengine/test10/systemhealthm1.summary -index 7301c6c..335b94a 100644 ---- a/pengine/test10/systemhealthm1.summary -+++ b/pengine/test10/systemhealthm1.summary -@@ -7,6 +7,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21c: node is unclean -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - * Fence (reboot) hs21c -diff --git a/pengine/test10/systemhealthm2.scores b/pengine/test10/systemhealthm2.scores -index 8a59654..b20bd49 100644 ---- a/pengine/test10/systemhealthm2.scores -+++ b/pengine/test10/systemhealthm2.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthm2.summary b/pengine/test10/systemhealthm2.summary -index c83a7e2..b04d5a1 100644 ---- a/pengine/test10/systemhealthm2.summary -+++ b/pengine/test10/systemhealthm2.summary -@@ -7,6 +7,7 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - * Start stonith-1 (hs21c) -diff --git a/pengine/test10/systemhealthm3.scores b/pengine/test10/systemhealthm3.scores -index 7e8804e..00b8d64 100644 ---- a/pengine/test10/systemhealthm3.scores -+++ b/pengine/test10/systemhealthm3.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: -INFINITY - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthm3.summary b/pengine/test10/systemhealthm3.summary -index fbcdec5..55d5cf7 100644 ---- a/pengine/test10/systemhealthm3.summary -+++ b/pengine/test10/systemhealthm3.summary -@@ -7,6 +7,7 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - -diff --git a/pengine/test10/systemhealthn1.scores b/pengine/test10/systemhealthn1.scores -index 8a59654..c55f6e2 100644 ---- a/pengine/test10/systemhealthn1.scores -+++ b/pengine/test10/systemhealthn1.scores -@@ -1,3 +1,5 @@ -+ notice: Fencing hs21c: node is unclean -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthn1.summary b/pengine/test10/systemhealthn1.summary -index 7301c6c..335b94a 100644 ---- a/pengine/test10/systemhealthn1.summary -+++ b/pengine/test10/systemhealthn1.summary -@@ -7,6 +7,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21c: node is unclean -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - * Fence (reboot) hs21c -diff --git a/pengine/test10/systemhealthn2.scores b/pengine/test10/systemhealthn2.scores -index 8a59654..b20bd49 100644 ---- a/pengine/test10/systemhealthn2.scores -+++ b/pengine/test10/systemhealthn2.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthn2.summary b/pengine/test10/systemhealthn2.summary -index c83a7e2..b04d5a1 100644 ---- a/pengine/test10/systemhealthn2.summary -+++ b/pengine/test10/systemhealthn2.summary -@@ -7,6 +7,7 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - * Start stonith-1 (hs21c) -diff --git a/pengine/test10/systemhealthn3.scores b/pengine/test10/systemhealthn3.scores -index 8a59654..b20bd49 100644 ---- a/pengine/test10/systemhealthn3.scores -+++ b/pengine/test10/systemhealthn3.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthn3.summary b/pengine/test10/systemhealthn3.summary -index c83a7e2..b04d5a1 100644 ---- a/pengine/test10/systemhealthn3.summary -+++ b/pengine/test10/systemhealthn3.summary -@@ -7,6 +7,7 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - * Start stonith-1 (hs21c) -diff --git a/pengine/test10/systemhealtho1.scores b/pengine/test10/systemhealtho1.scores -index 8a59654..c55f6e2 100644 ---- a/pengine/test10/systemhealtho1.scores -+++ b/pengine/test10/systemhealtho1.scores -@@ -1,3 +1,5 @@ -+ notice: Fencing hs21c: node is unclean -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealtho1.summary b/pengine/test10/systemhealtho1.summary -index 7301c6c..335b94a 100644 ---- a/pengine/test10/systemhealtho1.summary -+++ b/pengine/test10/systemhealtho1.summary -@@ -7,6 +7,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21c: node is unclean -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - * Fence (reboot) hs21c -diff --git a/pengine/test10/systemhealtho2.scores b/pengine/test10/systemhealtho2.scores -index 7e8804e..00b8d64 100644 ---- a/pengine/test10/systemhealtho2.scores -+++ b/pengine/test10/systemhealtho2.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: -INFINITY - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealtho2.summary b/pengine/test10/systemhealtho2.summary -index fbcdec5..55d5cf7 100644 ---- a/pengine/test10/systemhealtho2.summary -+++ b/pengine/test10/systemhealtho2.summary -@@ -7,6 +7,7 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - -diff --git a/pengine/test10/systemhealtho3.scores b/pengine/test10/systemhealtho3.scores -index 7e8804e..00b8d64 100644 ---- a/pengine/test10/systemhealtho3.scores -+++ b/pengine/test10/systemhealtho3.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: -INFINITY - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealtho3.summary b/pengine/test10/systemhealtho3.summary -index fbcdec5..55d5cf7 100644 ---- a/pengine/test10/systemhealtho3.summary -+++ b/pengine/test10/systemhealtho3.summary -@@ -7,6 +7,7 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - -diff --git a/pengine/test10/systemhealthp1.scores b/pengine/test10/systemhealthp1.scores -index 8a59654..c55f6e2 100644 ---- a/pengine/test10/systemhealthp1.scores -+++ b/pengine/test10/systemhealthp1.scores -@@ -1,3 +1,5 @@ -+ notice: Fencing hs21c: node is unclean -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthp1.summary b/pengine/test10/systemhealthp1.summary -index 7301c6c..335b94a 100644 ---- a/pengine/test10/systemhealthp1.summary -+++ b/pengine/test10/systemhealthp1.summary -@@ -7,6 +7,8 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21c: node is unclean -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - * Fence (reboot) hs21c -diff --git a/pengine/test10/systemhealthp2.scores b/pengine/test10/systemhealthp2.scores -index 20a08f2..7ca75bf 100644 ---- a/pengine/test10/systemhealthp2.scores -+++ b/pengine/test10/systemhealthp2.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 0 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthp2.summary b/pengine/test10/systemhealthp2.summary -index ea9465b..6c44a74 100644 ---- a/pengine/test10/systemhealthp2.summary -+++ b/pengine/test10/systemhealthp2.summary -@@ -7,6 +7,7 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - * Start apache_1 (hs21c) -diff --git a/pengine/test10/systemhealthp3.scores b/pengine/test10/systemhealthp3.scores -index 7e8804e..00b8d64 100644 ---- a/pengine/test10/systemhealthp3.scores -+++ b/pengine/test10/systemhealthp3.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: -INFINITY - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthp3.summary b/pengine/test10/systemhealthp3.summary -index fbcdec5..55d5cf7 100644 ---- a/pengine/test10/systemhealthp3.summary -+++ b/pengine/test10/systemhealthp3.summary -@@ -7,6 +7,7 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -+ notice: Fencing hs21d: node is unclean - Transition Summary: - * Fence (reboot) hs21d - -diff --git a/pengine/test10/ticket-clone-21.scores b/pengine/test10/ticket-clone-21.scores -index 89e2d0f..e0fc0d8 100644 ---- a/pengine/test10/ticket-clone-21.scores -+++ b/pengine/test10/ticket-clone-21.scores -@@ -1,3 +1,5 @@ -+ notice: Fencing node1: node is unclean -+ notice: Fencing node2: node is unclean - Allocation scores: - clone_color: clone1 allocation score on node1: 0 - clone_color: clone1 allocation score on node2: 0 -diff --git a/pengine/test10/ticket-clone-21.summary b/pengine/test10/ticket-clone-21.summary -index 573f8c1..13d2887 100644 ---- a/pengine/test10/ticket-clone-21.summary -+++ b/pengine/test10/ticket-clone-21.summary -@@ -6,6 +6,8 @@ Online: [ node1 node2 ] - Clone Set: clone1 [rsc1] - Started: [ node1 node2 ] - -+ notice: Fencing node1: node is unclean -+ notice: Fencing node2: node is unclean - Transition Summary: - * Fence (reboot) node2 - * Fence (reboot) node1 -diff --git a/pengine/test10/ticket-clone-9.scores b/pengine/test10/ticket-clone-9.scores -index 89e2d0f..e0fc0d8 100644 ---- a/pengine/test10/ticket-clone-9.scores -+++ b/pengine/test10/ticket-clone-9.scores -@@ -1,3 +1,5 @@ -+ notice: Fencing node1: node is unclean -+ notice: Fencing node2: node is unclean - Allocation scores: - clone_color: clone1 allocation score on node1: 0 - clone_color: clone1 allocation score on node2: 0 -diff --git a/pengine/test10/ticket-clone-9.summary b/pengine/test10/ticket-clone-9.summary -index 573f8c1..13d2887 100644 ---- a/pengine/test10/ticket-clone-9.summary -+++ b/pengine/test10/ticket-clone-9.summary -@@ -6,6 +6,8 @@ Online: [ node1 node2 ] - Clone Set: clone1 [rsc1] - Started: [ node1 node2 ] - -+ notice: Fencing node1: node is unclean -+ notice: Fencing node2: node is unclean - Transition Summary: - * Fence (reboot) node2 - * Fence (reboot) node1 -diff --git a/pengine/test10/ticket-group-21.scores b/pengine/test10/ticket-group-21.scores -index e5b8167..8f01379 100644 ---- a/pengine/test10/ticket-group-21.scores -+++ b/pengine/test10/ticket-group-21.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node2: node is unclean - Allocation scores: - group_color: group1 allocation score on node1: 0 - group_color: group1 allocation score on node2: 0 -diff --git a/pengine/test10/ticket-group-21.summary b/pengine/test10/ticket-group-21.summary -index ff809ae..80fb33f 100644 ---- a/pengine/test10/ticket-group-21.summary -+++ b/pengine/test10/ticket-group-21.summary -@@ -7,6 +7,7 @@ Online: [ node1 node2 ] - rsc1 (ocf::pacemaker:Dummy): Started node2 - rsc2 (ocf::pacemaker:Dummy): Started node2 - -+ notice: Fencing node2: node is unclean - Transition Summary: - * Fence (reboot) node2 - * Stop rsc1 (node2) -diff --git a/pengine/test10/ticket-group-9.scores b/pengine/test10/ticket-group-9.scores -index e5b8167..8f01379 100644 ---- a/pengine/test10/ticket-group-9.scores -+++ b/pengine/test10/ticket-group-9.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node2: node is unclean - Allocation scores: - group_color: group1 allocation score on node1: 0 - group_color: group1 allocation score on node2: 0 -diff --git a/pengine/test10/ticket-group-9.summary b/pengine/test10/ticket-group-9.summary -index ff809ae..80fb33f 100644 ---- a/pengine/test10/ticket-group-9.summary -+++ b/pengine/test10/ticket-group-9.summary -@@ -7,6 +7,7 @@ Online: [ node1 node2 ] - rsc1 (ocf::pacemaker:Dummy): Started node2 - rsc2 (ocf::pacemaker:Dummy): Started node2 - -+ notice: Fencing node2: node is unclean - Transition Summary: - * Fence (reboot) node2 - * Stop rsc1 (node2) -diff --git a/pengine/test10/ticket-master-21.scores b/pengine/test10/ticket-master-21.scores -index dc79d67..89eac5e 100644 ---- a/pengine/test10/ticket-master-21.scores -+++ b/pengine/test10/ticket-master-21.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node1: node is unclean - Allocation scores: - clone_color: ms1 allocation score on node1: 0 - clone_color: ms1 allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-21.summary b/pengine/test10/ticket-master-21.summary -index c196c9d..dc2f5db 100644 ---- a/pengine/test10/ticket-master-21.summary -+++ b/pengine/test10/ticket-master-21.summary -@@ -7,6 +7,7 @@ Online: [ node1 node2 ] - Masters: [ node1 ] - Slaves: [ node2 ] - -+ notice: Fencing node1: node is unclean - Transition Summary: - * Fence (reboot) node1 - * Move rsc_stonith (Started node1 -> node2) -diff --git a/pengine/test10/ticket-master-9.scores b/pengine/test10/ticket-master-9.scores -index dc79d67..89eac5e 100644 ---- a/pengine/test10/ticket-master-9.scores -+++ b/pengine/test10/ticket-master-9.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node1: node is unclean - Allocation scores: - clone_color: ms1 allocation score on node1: 0 - clone_color: ms1 allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-9.summary b/pengine/test10/ticket-master-9.summary -index c196c9d..dc2f5db 100644 ---- a/pengine/test10/ticket-master-9.summary -+++ b/pengine/test10/ticket-master-9.summary -@@ -7,6 +7,7 @@ Online: [ node1 node2 ] - Masters: [ node1 ] - Slaves: [ node2 ] - -+ notice: Fencing node1: node is unclean - Transition Summary: - * Fence (reboot) node1 - * Move rsc_stonith (Started node1 -> node2) -diff --git a/pengine/test10/ticket-primitive-21.scores b/pengine/test10/ticket-primitive-21.scores -index ed3f3cd..d1147ca 100644 ---- a/pengine/test10/ticket-primitive-21.scores -+++ b/pengine/test10/ticket-primitive-21.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node2: node is unclean - Allocation scores: - native_color: rsc1 allocation score on node1: -INFINITY - native_color: rsc1 allocation score on node2: -INFINITY -diff --git a/pengine/test10/ticket-primitive-21.summary b/pengine/test10/ticket-primitive-21.summary -index 08a4860..d3d02fe 100644 ---- a/pengine/test10/ticket-primitive-21.summary -+++ b/pengine/test10/ticket-primitive-21.summary -@@ -5,6 +5,7 @@ Online: [ node1 node2 ] - rsc_stonith (stonith:null): Started node1 - rsc1 (ocf::pacemaker:Dummy): Started node2 - -+ notice: Fencing node2: node is unclean - Transition Summary: - * Fence (reboot) node2 - * Stop rsc1 (node2) -diff --git a/pengine/test10/ticket-primitive-9.scores b/pengine/test10/ticket-primitive-9.scores -index ed3f3cd..d1147ca 100644 ---- a/pengine/test10/ticket-primitive-9.scores -+++ b/pengine/test10/ticket-primitive-9.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing node2: node is unclean - Allocation scores: - native_color: rsc1 allocation score on node1: -INFINITY - native_color: rsc1 allocation score on node2: -INFINITY -diff --git a/pengine/test10/ticket-primitive-9.summary b/pengine/test10/ticket-primitive-9.summary -index 08a4860..d3d02fe 100644 ---- a/pengine/test10/ticket-primitive-9.summary -+++ b/pengine/test10/ticket-primitive-9.summary -@@ -5,6 +5,7 @@ Online: [ node1 node2 ] - rsc_stonith (stonith:null): Started node1 - rsc1 (ocf::pacemaker:Dummy): Started node2 - -+ notice: Fencing node2: node is unclean - Transition Summary: - * Fence (reboot) node2 - * Stop rsc1 (node2) -diff --git a/pengine/test10/unfence-definition.dot b/pengine/test10/unfence-definition.dot -index a9e7e6b..c16bdb5 100644 ---- a/pengine/test10/unfence-definition.dot -+++ b/pengine/test10/unfence-definition.dot -@@ -19,7 +19,6 @@ digraph "g" { - "clvmd:1_start_0 virt-2" -> "clvmd:2_start_0 virt-3" [ style = bold] - "clvmd:1_start_0 virt-2" [ style=bold color="green" fontcolor="black"] - "clvmd:2_monitor_0 virt-3" -> "clvmd-clone_start_0" [ style = bold] --"clvmd:2_monitor_0 virt-3" -> "stonith 'on' virt-3" [ style = bold] - "clvmd:2_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] - "clvmd:2_start_0 virt-3" -> "clvmd-clone_running_0" [ style = bold] - "clvmd:2_start_0 virt-3" [ style=bold color="green" fontcolor="black"] -@@ -44,7 +43,6 @@ digraph "g" { - "dlm-clone_stopped_0" -> "dlm-clone_start_0" [ style = bold] - "dlm-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] - "dlm:2_monitor_0 virt-3" -> "dlm-clone_start_0" [ style = bold] --"dlm:2_monitor_0 virt-3" -> "stonith 'on' virt-3" [ style = bold] - "dlm:2_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] - "dlm:2_start_0 virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] - "dlm:2_start_0 virt-3" -> "dlm-clone_running_0" [ style = bold] -@@ -70,9 +68,10 @@ digraph "g" { - "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" [ 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 46d5883..f9ad4c1 100644 ---- a/pengine/test10/unfence-definition.exp -+++ b/pengine/test10/unfence-definition.exp -@@ -21,18 +21,14 @@ - - - -- -+ - - - - - - -- -- -- -- -- -+ - - - -@@ -124,7 +120,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -284,7 +284,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -380,19 +384,12 @@ - - - -- -- -- -- -- -- -- -- -+ - - - - -- -+ - - - -diff --git a/pengine/test10/unfence-definition.scores b/pengine/test10/unfence-definition.scores -index d9fa9bb..3d5aa9f 100644 ---- a/pengine/test10/unfence-definition.scores -+++ b/pengine/test10/unfence-definition.scores -@@ -1,3 +1,6 @@ -+ notice: Fencing virt-4: node is unclean -+ notice: Unfencing virt-1: Device definition changed -+ notice: Unfencing virt-3: Required by dlm:2 - Allocation scores: - clone_color: clvmd-clone allocation score on virt-1: 0 - clone_color: clvmd-clone allocation score on virt-2: 0 -diff --git a/pengine/test10/unfence-definition.summary b/pengine/test10/unfence-definition.summary -index 9477a02..a31cc20 100644 ---- a/pengine/test10/unfence-definition.summary -+++ b/pengine/test10/unfence-definition.summary -@@ -11,6 +11,9 @@ Online: [ virt-1 virt-2 virt-3 ] - Started: [ virt-1 ] - Stopped: [ virt-2 virt-3 virt-4 ] - -+ notice: Unfencing virt-1: Device definition changed -+ notice: Unfencing virt-3: Required by dlm:2 -+ notice: Fencing virt-4: node is unclean - Transition Summary: - * Fence (reboot) virt-4 - * Fence (on) virt-3 -@@ -23,18 +26,18 @@ Transition Summary: - * Start clvmd:2 (virt-3) - - Executing cluster transition: -- * Resource action: dlm monitor on virt-3 -+ * Resource action: fencing monitor on virt-3 -+ * Resource action: fencing stop on virt-1 - * Resource action: clvmd monitor on virt-2 -- * Resource action: clvmd monitor on virt-3 - * 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 stop on virt-1 -+ * Resource action: fencing delete on virt-1 -+ * Resource action: dlm monitor on virt-3 - * Resource action: clvmd stop on virt-1 -+ * Resource action: clvmd monitor on virt-3 - * Pseudo action: clvmd-clone_stopped_0 -- * Resource action: fencing delete on virt-1 - * Pseudo action: dlm-clone_stop_0 - * Resource action: dlm stop on virt-1 - * Pseudo action: dlm-clone_stopped_0 -diff --git a/pengine/test10/unfence-definition.xml b/pengine/test10/unfence-definition.xml -index 5d77931..cb189cd 100644 ---- a/pengine/test10/unfence-definition.xml -+++ b/pengine/test10/unfence-definition.xml -@@ -41,6 +41,11 @@ -
    - - -+ -+ -+ -+ -+ - - - -@@ -56,6 +61,11 @@ - - - -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/unfence-parameters.dot b/pengine/test10/unfence-parameters.dot -index c96d314..dee850e 100644 ---- a/pengine/test10/unfence-parameters.dot -+++ b/pengine/test10/unfence-parameters.dot -@@ -14,13 +14,11 @@ digraph "g" { - "clvmd-clone_stopped_0" -> "dlm-clone_stop_0" [ style = bold] - "clvmd-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] - "clvmd:1_monitor_0 virt-2" -> "clvmd-clone_start_0" [ style = bold] --"clvmd:1_monitor_0 virt-2" -> "stonith 'on' virt-2" [ style = bold] - "clvmd:1_monitor_0 virt-2" [ style=bold color="green" fontcolor="black"] - "clvmd:1_start_0 virt-2" -> "clvmd-clone_running_0" [ style = bold] - "clvmd:1_start_0 virt-2" -> "clvmd:2_start_0 virt-3" [ style = bold] - "clvmd:1_start_0 virt-2" [ style=bold color="green" fontcolor="black"] - "clvmd:2_monitor_0 virt-3" -> "clvmd-clone_start_0" [ style = bold] --"clvmd:2_monitor_0 virt-3" -> "stonith 'on' virt-3" [ style = bold] - "clvmd:2_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] - "clvmd:2_start_0 virt-3" -> "clvmd-clone_running_0" [ style = bold] - "clvmd:2_start_0 virt-3" -> "clvmd:3_start_0 " [ style = dashed] -@@ -50,7 +48,6 @@ digraph "g" { - "dlm-clone_stopped_0" -> "dlm-clone_start_0" [ style = bold] - "dlm-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] - "dlm:2_monitor_0 virt-3" -> "dlm-clone_start_0" [ style = bold] --"dlm:2_monitor_0 virt-3" -> "stonith 'on' virt-3" [ style = bold] - "dlm:2_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] - "dlm:2_start_0 virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] - "dlm:2_start_0 virt-3" -> "dlm-clone_running_0" [ style = bold] -@@ -85,12 +82,14 @@ digraph "g" { - "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" [ style=bold color="green" fontcolor="black"] -+"stonith 'on' virt-2" -> "clvmd:1_monitor_0 virt-2" [ style = bold] - "stonith 'on' virt-2" -> "clvmd:1_start_0 virt-2" [ style = bold] - "stonith 'on' virt-2" -> "dlm_start_0 virt-2" [ style = bold] - "stonith 'on' virt-2" [ 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 ffc20c0..54c242a 100644 ---- a/pengine/test10/unfence-parameters.exp -+++ b/pengine/test10/unfence-parameters.exp -@@ -12,18 +12,14 @@ - - - -- -+ - - - - - - -- -- -- -- -- -+ - - - -@@ -152,7 +148,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -290,7 +290,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -324,7 +328,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -420,26 +428,16 @@ - - - -- -- -- -- -- -- -- -- -+ - - - - -- -+ - - - - -- -- -- - - - -@@ -447,7 +445,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/unfence-parameters.scores b/pengine/test10/unfence-parameters.scores -index d9fa9bb..5089910 100644 ---- a/pengine/test10/unfence-parameters.scores -+++ b/pengine/test10/unfence-parameters.scores -@@ -1,3 +1,7 @@ -+ notice: Fencing virt-4: node is unclean -+ notice: Unfencing virt-1: Device parameters changed (reload) -+ notice: Unfencing virt-2: Device parameters changed (reload) -+ notice: Unfencing virt-3: Device parameters changed (reload) - Allocation scores: - clone_color: clvmd-clone allocation score on virt-1: 0 - clone_color: clvmd-clone allocation score on virt-2: 0 -diff --git a/pengine/test10/unfence-parameters.summary b/pengine/test10/unfence-parameters.summary -index a713cd5..8effc63 100644 ---- a/pengine/test10/unfence-parameters.summary -+++ b/pengine/test10/unfence-parameters.summary -@@ -11,6 +11,10 @@ Online: [ virt-1 virt-2 virt-3 ] - Started: [ virt-1 ] - Stopped: [ virt-2 virt-3 virt-4 ] - -+ notice: Unfencing virt-1: Device parameters changed (reload) -+ notice: Unfencing virt-2: Device parameters changed (reload) -+ notice: Unfencing virt-3: Device parameters changed (reload) -+ notice: Fencing virt-4: node is unclean - Transition Summary: - * Fence (reboot) virt-4 - * Fence (on) virt-3 -@@ -25,23 +29,23 @@ Transition Summary: - * Start clvmd:2 (virt-3) - - Executing cluster transition: -- * Resource action: dlm monitor on virt-3 -- * Resource action: clvmd monitor on virt-2 -- * Resource action: clvmd monitor on virt-3 -+ * Resource action: fencing monitor on virt-3 - * 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 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 - * Pseudo action: clvmd-clone_stopped_0 -- * Resource action: fencing stop on virt-1 - * Pseudo action: dlm-clone_stop_0 - * Resource action: dlm stop on virt-2 - * Fencing virt-2 (on) - * Resource action: dlm stop on virt-1 - * Pseudo action: dlm-clone_stopped_0 - * Pseudo action: dlm-clone_start_0 -+ * Resource action: clvmd monitor on virt-2 - * Fencing virt-1 (on) - * Pseudo action: all_stopped - * Resource action: fencing start on virt-1 -diff --git a/pengine/test10/unfence-parameters.xml b/pengine/test10/unfence-parameters.xml -index f660100..26588bf 100644 ---- a/pengine/test10/unfence-parameters.xml -+++ b/pengine/test10/unfence-parameters.xml -@@ -41,6 +41,11 @@ - - - -+ -+ -+ -+ -+ - - - -@@ -56,6 +61,11 @@ - - - -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/unfence-startup.dot b/pengine/test10/unfence-startup.dot -index 20f1367..d496956 100644 ---- a/pengine/test10/unfence-startup.dot -+++ b/pengine/test10/unfence-startup.dot -@@ -11,7 +11,6 @@ digraph "g" { - "clvmd:1_start_0 virt-2" -> "clvmd:2_start_0 virt-3" [ style = bold] - "clvmd:1_start_0 virt-2" [ style=bold color="green" fontcolor="black"] - "clvmd:2_monitor_0 virt-3" -> "clvmd-clone_start_0" [ style = bold] --"clvmd:2_monitor_0 virt-3" -> "stonith 'on' virt-3" [ style = bold] - "clvmd:2_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] - "clvmd:2_start_0 virt-3" -> "clvmd-clone_running_0" [ style = bold] - "clvmd:2_start_0 virt-3" [ style=bold color="green" fontcolor="black"] -@@ -21,15 +20,15 @@ digraph "g" { - "dlm-clone_start_0" -> "dlm:2_start_0 virt-3" [ style = bold] - "dlm-clone_start_0" [ style=bold color="green" fontcolor="orange"] - "dlm:2_monitor_0 virt-3" -> "dlm-clone_start_0" [ style = bold] --"dlm:2_monitor_0 virt-3" -> "stonith 'on' virt-3" [ style = bold] - "dlm:2_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] - "dlm:2_start_0 virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] - "dlm:2_start_0 virt-3" -> "dlm-clone_running_0" [ style = bold] - "dlm:2_start_0 virt-3" [ style=bold color="green" fontcolor="black"] - "fencing_monitor_0 virt-3" [ 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-startup.exp b/pengine/test10/unfence-startup.exp -index a13ffca..70c1686 100644 ---- a/pengine/test10/unfence-startup.exp -+++ b/pengine/test10/unfence-startup.exp -@@ -1,16 +1,12 @@ - -- -+ - - - - - - -- -- -- -- -- -+ - - - -@@ -38,7 +34,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -124,7 +124,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -191,14 +195,7 @@ - - - -- -- -- -- -- -- -- -- -+ - - - -diff --git a/pengine/test10/unfence-startup.scores b/pengine/test10/unfence-startup.scores -index d9fa9bb..0172a9d 100644 ---- a/pengine/test10/unfence-startup.scores -+++ b/pengine/test10/unfence-startup.scores -@@ -1,3 +1,5 @@ -+ notice: Fencing virt-4: node is unclean -+ notice: Unfencing virt-3: Required by dlm:2 - Allocation scores: - clone_color: clvmd-clone allocation score on virt-1: 0 - clone_color: clvmd-clone allocation score on virt-2: 0 -diff --git a/pengine/test10/unfence-startup.summary b/pengine/test10/unfence-startup.summary -index c3f1be4..6a49f42 100644 ---- a/pengine/test10/unfence-startup.summary -+++ b/pengine/test10/unfence-startup.summary -@@ -11,6 +11,8 @@ Online: [ virt-1 virt-2 virt-3 ] - Started: [ virt-1 ] - Stopped: [ virt-2 virt-3 virt-4 ] - -+ notice: Unfencing virt-3: Required by dlm:2 -+ notice: Fencing virt-4: node is unclean - Transition Summary: - * Fence (reboot) virt-4 - * Fence (on) virt-3 -@@ -19,15 +21,15 @@ Transition Summary: - * Start clvmd:2 (virt-3) - - Executing cluster transition: -- * Resource action: dlm monitor on virt-3 -- * Pseudo action: dlm-clone_start_0 -+ * Resource action: fencing monitor on virt-3 - * Resource action: clvmd monitor on virt-2 -- * Resource action: clvmd monitor on virt-3 - * 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 - * Resource action: dlm start on virt-3 - * Pseudo action: dlm-clone_running_0 - * Pseudo action: clvmd-clone_start_0 -diff --git a/pengine/test10/unfence-startup.xml b/pengine/test10/unfence-startup.xml -index 83e9ffe..28637e3 100644 ---- a/pengine/test10/unfence-startup.xml -+++ b/pengine/test10/unfence-startup.xml -@@ -41,6 +41,11 @@ - - - -+ -+ -+ -+ -+ - - - -@@ -56,6 +61,11 @@ - - - -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-fail1.scores b/pengine/test10/whitebox-fail1.scores -index 4fbbf29..02192a9 100644 ---- a/pengine/test10/whitebox-fail1.scores -+++ b/pengine/test10/whitebox-fail1.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing lxc1: guest is unclean - Allocation scores: - clone_color: M-clone allocation score on 18node1: 0 - clone_color: M-clone allocation score on 18node2: 0 -diff --git a/pengine/test10/whitebox-fail1.summary b/pengine/test10/whitebox-fail1.summary -index 57d72ba..c7b5e19 100644 ---- a/pengine/test10/whitebox-fail1.summary -+++ b/pengine/test10/whitebox-fail1.summary -@@ -13,6 +13,7 @@ Containers: [ lxc2:container2 ] - C (ocf::pacemaker:Dummy): Started lxc2 - D (ocf::pacemaker:Dummy): Started 18node1 - -+ notice: Fencing lxc1: guest is unclean - Transition Summary: - * Fence (reboot) lxc1 (resource: container1) - * Recover container1 (Started 18node2) -diff --git a/pengine/test10/whitebox-fail2.scores b/pengine/test10/whitebox-fail2.scores -index 4fbbf29..02192a9 100644 ---- a/pengine/test10/whitebox-fail2.scores -+++ b/pengine/test10/whitebox-fail2.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing lxc1: guest is unclean - Allocation scores: - clone_color: M-clone allocation score on 18node1: 0 - clone_color: M-clone allocation score on 18node2: 0 -diff --git a/pengine/test10/whitebox-fail2.summary b/pengine/test10/whitebox-fail2.summary -index bf12683..73e968e 100644 ---- a/pengine/test10/whitebox-fail2.summary -+++ b/pengine/test10/whitebox-fail2.summary -@@ -13,6 +13,7 @@ Containers: [ lxc2:container2 ] - C (ocf::pacemaker:Dummy): Started lxc2 - D (ocf::pacemaker:Dummy): Started 18node1 - -+ notice: Fencing lxc1: guest is unclean - Transition Summary: - * Fence (reboot) lxc1 (resource: container1) - * Recover container1 (Started 18node2) -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.scores b/pengine/test10/whitebox-imply-stop-on-fence.scores -index e50f077..5c3e325 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.scores -+++ b/pengine/test10/whitebox-imply-stop-on-fence.scores -@@ -1,3 +1,6 @@ -+ notice: Fencing kiff-01: node is unclean -+ notice: Fencing lxc-01_kiff-01: guest is unclean -+ notice: Fencing lxc-02_kiff-01: guest is unclean - Allocation scores: - clone_color: clvmd-clone allocation score on kiff-01: 0 - clone_color: clvmd-clone allocation score on kiff-02: 0 -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.summary b/pengine/test10/whitebox-imply-stop-on-fence.summary -index 2fb20a6..a74bb72 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.summary -+++ b/pengine/test10/whitebox-imply-stop-on-fence.summary -@@ -24,6 +24,9 @@ Containers: [ lxc-01_kiff-02:R-lxc-01_kiff-02 lxc-02_kiff-02:R-lxc-02_kiff-02 ] - R-lxc-02_kiff-02 (ocf::heartbeat:VirtualDomain): Started kiff-02 - vm-fs (ocf::heartbeat:Filesystem): FAILED lxc-01_kiff-01 - -+ notice: Fencing kiff-01: node is unclean -+ notice: Fencing lxc-01_kiff-01: guest is unclean -+ notice: Fencing lxc-02_kiff-01: guest is unclean - Transition Summary: - * Fence (reboot) lxc-02_kiff-01 (resource: R-lxc-02_kiff-01) - * Fence (reboot) lxc-01_kiff-01 (resource: R-lxc-01_kiff-01) -diff --git a/pengine/test10/whitebox-ms-ordering.scores b/pengine/test10/whitebox-ms-ordering.scores -index f0e51f5..72e6d25 100644 ---- a/pengine/test10/whitebox-ms-ordering.scores -+++ b/pengine/test10/whitebox-ms-ordering.scores -@@ -1,3 +1,5 @@ -+ notice: Fencing lxc1: guest is unclean -+ notice: Fencing lxc2: guest is unclean - Allocation scores: - clone_color: lxc-ms-master allocation score on 18node1: 0 - clone_color: lxc-ms-master allocation score on 18node2: 0 -diff --git a/pengine/test10/whitebox-ms-ordering.summary b/pengine/test10/whitebox-ms-ordering.summary -index 2230d0f..41436f8 100644 ---- a/pengine/test10/whitebox-ms-ordering.summary -+++ b/pengine/test10/whitebox-ms-ordering.summary -@@ -8,6 +8,8 @@ Online: [ 18node1 18node2 18node3 ] - Master/Slave Set: lxc-ms-master [lxc-ms] - Stopped: [ 18node1 18node2 18node3 ] - -+ notice: Fencing lxc1: guest is unclean -+ notice: Fencing lxc2: guest is unclean - Transition Summary: - * Fence (reboot) lxc2 (resource: container2) - * Fence (reboot) lxc1 (resource: container1) -diff --git a/pengine/test10/whitebox-unexpectedly-running.scores b/pengine/test10/whitebox-unexpectedly-running.scores -index 7f8a1d9..eb8a6f9 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.scores -+++ b/pengine/test10/whitebox-unexpectedly-running.scores -@@ -1,3 +1,4 @@ -+ notice: Fencing remote1: guest is unclean - Allocation scores: - native_color: FAKE allocation score on 18builder: 0 - native_color: FAKE allocation score on remote1: -INFINITY -diff --git a/pengine/test10/whitebox-unexpectedly-running.summary b/pengine/test10/whitebox-unexpectedly-running.summary -index eabeb4d..3888aa2 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.summary -+++ b/pengine/test10/whitebox-unexpectedly-running.summary -@@ -4,6 +4,7 @@ Online: [ 18builder ] - - FAKE (ocf::pacemaker:Dummy): FAILED 18builder - -+ notice: Fencing remote1: guest is unclean - Transition Summary: - * Fence (reboot) remote1 (resource: FAKE) - * Recover FAKE (Started 18builder) --- -1.8.3.1 - - -From 736725733cc23897b4f18d59db24747077092ed6 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 26 Jul 2017 13:51:15 +1000 -Subject: [PATCH 03/12] Fix: Correctly compare remote unfencing digests - ---- - lib/pengine/utils.c | 17 ++++++++++++----- - 1 file changed, 12 insertions(+), 5 deletions(-) - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 90da95a..5d2a1b9 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -2112,20 +1944,24 @@ fencing_action_digest_cmp(resource_t * rsc, node_t * node, pe_working_set_t * da - const char *digest_all = g_hash_table_lookup(node->details->attrs, "digests-all"); - const char *digest_secure = g_hash_table_lookup(node->details->attrs, "digests-secure"); - -- /* No restarts for fencing device changes */ -+ /* No 'reloads' for fencing device changes -+ * -+ * We use the resource id + agent + digest so that we can detect -+ * changes to the agent and/or the parameters used -+ */ -+ char *search_all = crm_strdup_printf("%s:%s:%s", rsc->id, (const char*)g_hash_table_lookup(rsc->meta, XML_ATTR_TYPE), data->digest_secure_calc); -+ char *search_secure = crm_strdup_printf("%s:%s:%s", rsc->id, (const char*)g_hash_table_lookup(rsc->meta, XML_ATTR_TYPE), data->digest_secure_calc); - - data->rc = RSC_DIGEST_ALL; - if (digest_all == NULL) { - /* it is unknown what the previous op digest was */ - data->rc = RSC_DIGEST_UNKNOWN; - -- } else if (strcmp(digest_all, data->digest_all_calc) == 0) { -+ } else if (strstr(digest_all, search_all)) { - data->rc = RSC_DIGEST_MATCH; - - } else if(digest_secure && data->digest_secure_calc) { -- char *search = crm_strdup_printf("%s:%s:%s", rsc->id, (const char*)g_hash_table_lookup(rsc->meta, XML_ATTR_TYPE), data->digest_secure_calc); -- -- if(strstr(digest_secure, search)) { -+ if(strstr(digest_secure, search_secure)) { - fprintf(stdout, "Only 'private' parameters to %s for unfencing %s changed\n", - rsc->id, node->details->uname); - data->rc = RSC_DIGEST_MATCH; -@@ -2137,7 +1974,11 @@ fencing_action_digest_cmp(resource_t * rsc, node_t * node, pe_working_set_t * da - rsc->id, node->details->uname, rsc->id, (const char*)g_hash_table_lookup(rsc->meta, XML_ATTR_TYPE), data->digest_secure_calc); - } - -+ - free(key); -+ free(search_all); -+ free(search_secure); -+ - return data; - } - --- -1.8.3.1 - - -From e0dbe6cf3ef982f6644cc4d4e81381bdf184b0d6 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 26 Jul 2017 13:47:58 +1000 -Subject: [PATCH 04/12] Log: Mechanism for recording why an action is required - ---- - include/crm/pengine/internal.h | 3 + - include/crm/pengine/status.h | 1 + - lib/pengine/unpack.c | 2 + - lib/pengine/utils.c | 30 +- - pengine/allocate.c | 8 +- - pengine/native.c | 8 +- - pengine/test10/594.exp | 113 ++++--- - pengine/test10/594.scores | 1 - - pengine/test10/594.summary | 5 +- - pengine/test10/797.exp | 134 ++++---- - pengine/test10/829.exp | 115 ++++--- - pengine/test10/829.scores | 1 - - pengine/test10/829.summary | 5 +- - pengine/test10/bug-5186-partial-migrate.exp | 178 +++++------ - pengine/test10/bug-5186-partial-migrate.scores | 1 - - pengine/test10/bug-5186-partial-migrate.summary | 5 +- - pengine/test10/bug-cl-5212.exp | 52 ++-- - pengine/test10/bug-cl-5247.scores | 1 - - pengine/test10/bug-cl-5247.summary | 3 +- - pengine/test10/bug-lf-2508.exp | 243 ++++++++------- - pengine/test10/bug-lf-2508.scores | 1 - - pengine/test10/bug-lf-2508.summary | 11 +- - pengine/test10/bug-lf-2551.exp | 325 ++++++++++---------- - pengine/test10/bug-lf-2551.scores | 1 - - pengine/test10/bug-lf-2551.summary | 7 +- - pengine/test10/bug-lf-2606.exp | 91 +++--- - pengine/test10/bug-lf-2606.scores | 1 - - pengine/test10/bug-lf-2606.summary | 5 +- - pengine/test10/bug-rh-1097457.scores | 1 - - pengine/test10/bug-rh-1097457.summary | 3 +- - pengine/test10/concurrent-fencing.exp | 72 ++--- - pengine/test10/concurrent-fencing.scores | 3 - - pengine/test10/concurrent-fencing.summary | 9 +- - pengine/test10/guest-node-host-dies.exp | 300 +++++++++--------- - pengine/test10/guest-node-host-dies.scores | 3 - - pengine/test10/guest-node-host-dies.summary | 9 +- - pengine/test10/interleave-pseudo-stop.exp | 191 ++++++------ - pengine/test10/interleave-pseudo-stop.scores | 1 - - pengine/test10/interleave-pseudo-stop.summary | 5 +- - pengine/test10/master-7.exp | 263 ++++++++-------- - pengine/test10/master-7.scores | 1 - - pengine/test10/master-7.summary | 9 +- - pengine/test10/master-8.exp | 295 +++++++++--------- - pengine/test10/master-8.scores | 1 - - pengine/test10/master-8.summary | 9 +- - pengine/test10/migrate-fencing.exp | 291 +++++++++--------- - pengine/test10/migrate-fencing.scores | 1 - - pengine/test10/migrate-fencing.summary | 15 +- - pengine/test10/rec-node-10.exp | 6 +- - pengine/test10/rec-node-11.exp | 127 ++++---- - pengine/test10/rec-node-11.scores | 1 - - pengine/test10/rec-node-11.summary | 5 +- - pengine/test10/rec-node-12.scores | 1 - - pengine/test10/rec-node-12.summary | 3 +- - pengine/test10/rec-node-13.exp | 51 ++-- - pengine/test10/rec-node-13.scores | 1 - - pengine/test10/rec-node-13.summary | 5 +- - pengine/test10/rec-node-14.exp | 61 ++-- - pengine/test10/rec-node-14.scores | 3 - - pengine/test10/rec-node-14.summary | 9 +- - pengine/test10/rec-node-15.exp | 207 +++++++------ - pengine/test10/rec-node-15.scores | 1 - - pengine/test10/rec-node-15.summary | 19 +- - pengine/test10/rec-node-2.scores | 1 - - pengine/test10/rec-node-2.summary | 3 +- - pengine/test10/rec-node-4.exp | 77 +++-- - pengine/test10/rec-node-4.scores | 1 - - pengine/test10/rec-node-4.summary | 5 +- - pengine/test10/rec-node-5.exp | 12 +- - pengine/test10/rec-node-6.exp | 77 +++-- - pengine/test10/rec-node-6.scores | 1 - - pengine/test10/rec-node-6.summary | 5 +- - pengine/test10/rec-node-7.exp | 77 +++-- - pengine/test10/rec-node-7.scores | 1 - - pengine/test10/rec-node-7.summary | 5 +- - pengine/test10/rec-node-8.exp | 8 +- - pengine/test10/rec-rsc-5.exp | 77 +++-- - pengine/test10/rec-rsc-5.scores | 1 - - pengine/test10/rec-rsc-5.summary | 5 +- - pengine/test10/remote-fence-before-reconnect.exp | 54 ++-- - .../test10/remote-fence-before-reconnect.scores | 1 - - .../test10/remote-fence-before-reconnect.summary | 5 +- - pengine/test10/remote-fence-unclean-3.exp | 34 +-- - pengine/test10/remote-fence-unclean-3.scores | 1 - - pengine/test10/remote-fence-unclean-3.summary | 3 +- - pengine/test10/remote-fence-unclean.exp | 90 +++--- - pengine/test10/remote-fence-unclean.scores | 1 - - pengine/test10/remote-fence-unclean.summary | 13 +- - pengine/test10/remote-fence-unclean2.exp | 38 +-- - pengine/test10/remote-fence-unclean2.scores | 1 - - pengine/test10/remote-fence-unclean2.summary | 5 +- - pengine/test10/remote-partial-migrate2.exp | 336 ++++++++++----------- - pengine/test10/remote-partial-migrate2.scores | 1 - - pengine/test10/remote-partial-migrate2.summary | 3 +- - pengine/test10/remote-recover-all.exp | 318 +++++++++---------- - pengine/test10/remote-recover-all.scores | 3 - - pengine/test10/remote-recover-all.summary | 9 +- - pengine/test10/remote-recover-connection.exp | 248 +++++++-------- - pengine/test10/remote-recover-connection.scores | 1 - - pengine/test10/remote-recover-connection.summary | 5 +- - pengine/test10/remote-recover-fail.exp | 88 +++--- - pengine/test10/remote-recover-fail.scores | 1 - - pengine/test10/remote-recover-fail.summary | 9 +- - pengine/test10/remote-recover-no-resources.exp | 276 ++++++++--------- - pengine/test10/remote-recover-no-resources.scores | 2 - - pengine/test10/remote-recover-no-resources.summary | 6 +- - pengine/test10/remote-recover-unknown.exp | 288 +++++++++--------- - pengine/test10/remote-recover-unknown.scores | 3 - - pengine/test10/remote-recover-unknown.summary | 27 +- - pengine/test10/remote-recover.exp | 16 +- - pengine/test10/remote-recovery.exp | 248 +++++++-------- - pengine/test10/remote-recovery.scores | 1 - - pengine/test10/remote-recovery.summary | 5 +- - pengine/test10/remote-unclean2.exp | 44 +-- - pengine/test10/remote-unclean2.scores | 1 - - pengine/test10/remote-unclean2.summary | 3 +- - pengine/test10/start-then-stop-with-unfence.scores | 1 - - .../test10/start-then-stop-with-unfence.summary | 3 +- - pengine/test10/stonith-0.exp | 222 +++++++------- - pengine/test10/stonith-0.scores | 2 - - pengine/test10/stonith-0.summary | 8 +- - pengine/test10/stonith-1.exp | 237 ++++++++------- - pengine/test10/stonith-1.scores | 1 - - pengine/test10/stonith-1.summary | 11 +- - pengine/test10/stonith-2.exp | 41 ++- - pengine/test10/stonith-2.scores | 1 - - pengine/test10/stonith-2.summary | 3 +- - pengine/test10/stonith-3.scores | 1 - - pengine/test10/stonith-3.summary | 3 +- - pengine/test10/stonith-4.exp | 68 ++--- - pengine/test10/stonith-4.scores | 4 - - pengine/test10/stonith-4.summary | 12 +- - pengine/test10/stop-failure-no-quorum.exp | 50 +-- - pengine/test10/stop-failure-no-quorum.scores | 1 - - pengine/test10/stop-failure-no-quorum.summary | 5 +- - pengine/test10/stop-failure-with-fencing.exp | 52 ++-- - pengine/test10/stop-failure-with-fencing.scores | 1 - - pengine/test10/stop-failure-with-fencing.summary | 5 +- - pengine/test10/systemhealth1.scores | 2 - - pengine/test10/systemhealth1.summary | 6 +- - pengine/test10/systemhealth2.scores | 1 - - pengine/test10/systemhealth2.summary | 3 +- - pengine/test10/systemhealth3.scores | 1 - - pengine/test10/systemhealth3.summary | 3 +- - pengine/test10/systemhealthm1.scores | 2 - - pengine/test10/systemhealthm1.summary | 6 +- - pengine/test10/systemhealthm2.scores | 1 - - pengine/test10/systemhealthm2.summary | 3 +- - pengine/test10/systemhealthm3.scores | 1 - - pengine/test10/systemhealthm3.summary | 3 +- - pengine/test10/systemhealthn1.scores | 2 - - pengine/test10/systemhealthn1.summary | 6 +- - pengine/test10/systemhealthn2.scores | 1 - - pengine/test10/systemhealthn2.summary | 3 +- - pengine/test10/systemhealthn3.scores | 1 - - pengine/test10/systemhealthn3.summary | 3 +- - pengine/test10/systemhealtho1.scores | 2 - - pengine/test10/systemhealtho1.summary | 6 +- - pengine/test10/systemhealtho2.scores | 1 - - pengine/test10/systemhealtho2.summary | 3 +- - pengine/test10/systemhealtho3.scores | 1 - - pengine/test10/systemhealtho3.summary | 3 +- - pengine/test10/systemhealthp1.scores | 2 - - pengine/test10/systemhealthp1.summary | 6 +- - pengine/test10/systemhealthp2.scores | 1 - - pengine/test10/systemhealthp2.summary | 3 +- - pengine/test10/systemhealthp3.scores | 1 - - pengine/test10/systemhealthp3.summary | 3 +- - pengine/test10/ticket-clone-21.exp | 97 +++--- - pengine/test10/ticket-clone-21.scores | 2 - - pengine/test10/ticket-clone-21.summary | 8 +- - pengine/test10/ticket-clone-9.exp | 97 +++--- - pengine/test10/ticket-clone-9.scores | 2 - - pengine/test10/ticket-clone-9.summary | 8 +- - pengine/test10/ticket-group-21.exp | 63 ++-- - pengine/test10/ticket-group-21.scores | 1 - - pengine/test10/ticket-group-21.summary | 5 +- - pengine/test10/ticket-group-9.exp | 63 ++-- - pengine/test10/ticket-group-9.scores | 1 - - pengine/test10/ticket-group-9.summary | 5 +- - pengine/test10/ticket-master-21.exp | 77 +++-- - pengine/test10/ticket-master-21.scores | 1 - - pengine/test10/ticket-master-21.summary | 5 +- - pengine/test10/ticket-master-9.exp | 77 +++-- - pengine/test10/ticket-master-9.scores | 1 - - pengine/test10/ticket-master-9.summary | 5 +- - pengine/test10/ticket-primitive-21.exp | 39 ++- - pengine/test10/ticket-primitive-21.scores | 1 - - pengine/test10/ticket-primitive-21.summary | 5 +- - pengine/test10/ticket-primitive-9.exp | 39 ++- - pengine/test10/ticket-primitive-9.scores | 1 - - pengine/test10/ticket-primitive-9.summary | 5 +- - pengine/test10/unfence-definition.scores | 3 - - pengine/test10/unfence-definition.summary | 9 +- - pengine/test10/unfence-parameters.scores | 4 - - pengine/test10/unfence-parameters.summary | 12 +- - pengine/test10/unfence-startup.scores | 2 - - pengine/test10/unfence-startup.summary | 6 +- - pengine/test10/unrunnable-1.exp | 28 +- - pengine/test10/whitebox-fail1.scores | 1 - - pengine/test10/whitebox-fail1.summary | 3 +- - pengine/test10/whitebox-fail2.scores | 1 - - pengine/test10/whitebox-fail2.summary | 3 +- - pengine/test10/whitebox-imply-stop-on-fence.exp | 212 ++++++------- - pengine/test10/whitebox-imply-stop-on-fence.scores | 3 - - .../test10/whitebox-imply-stop-on-fence.summary | 9 +- - pengine/test10/whitebox-ms-ordering.scores | 2 - - pengine/test10/whitebox-ms-ordering.summary | 6 +- - .../test10/whitebox-unexpectedly-running.scores | 1 - - .../test10/whitebox-unexpectedly-running.summary | 3 +- - 210 files changed, 3715 insertions(+), 3945 deletions(-) - -diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h -index 3e10a30..99e2055 100644 ---- a/include/crm/pengine/internal.h -+++ b/include/crm/pengine/internal.h -@@ -277,6 +277,9 @@ action_t *pe_fence_op(node_t * node, const char *op, bool optional, const char * - void trigger_unfencing( - resource_t * rsc, node_t *node, const char *reason, action_t *dependency, pe_working_set_t * data_set); - -+void pe_action_required_worker(pe_action_t *action, const char *reason, const char *function, long line); -+#define pe_action_required(action, reason) pe_action_required_worker(action, reason, __FUNCTION__, __LINE__) -+ - void set_bit_recursive(resource_t * rsc, unsigned long long flag); - void clear_bit_recursive(resource_t * rsc, unsigned long long flag); - -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index cfb7d97..d9e8354 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -323,6 +323,7 @@ struct pe_action_s { - - char *task; - char *uuid; -+ char *reason; - char *cancel_task; - - enum pe_action_flags flags; -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 629c557..299f9f6 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -121,6 +121,7 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - reason); - } - node->details->unclean = TRUE; -+ pe_fence_op(node, NULL, TRUE, reason, data_set); - - } else if (node->details->unclean) { - crm_trace("Cluster node %s %s because %s", -@@ -134,6 +135,7 @@ pe_fence_node(pe_working_set_t * data_set, node_t * node, const char *reason) - pe_can_fence(data_set, node)? "will be fenced" : "is unclean", - reason); - node->details->unclean = TRUE; -+ pe_fence_op(node, NULL, TRUE, reason, data_set); - } - } - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 5d2a1b9..a53be6a 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -1207,6 +1207,7 @@ pe_free_action(action_t * action) - g_hash_table_destroy(action->meta); - } - free(action->cancel_task); -+ free(action->reason); - free(action->task); - free(action->uuid); - free(action->node); -@@ -2088,7 +2089,6 @@ pe_fence_op(node_t * node, const char *op, bool optional, const char *reason, pe - /* Extra detail for those running from the commandline */ - fprintf(stdout, " notice: Unfencing %s (remote): because the definition of %s changed\n", node->details->uname, match->id); - } -- - } - - digests_all_offset += snprintf( -@@ -2107,20 +2107,10 @@ pe_fence_op(node_t * node, const char *op, bool optional, const char *reason, pe - free(op_key); - } - -- if(optional == FALSE && is_set(stonith_op->flags, pe_action_optional)) { -- const char *kind = "Fencing "; -- -- pe_clear_action_bit(stonith_op, pe_action_optional); -- -- if(safe_str_eq(op, "on")) { -- kind = "Unfencing"; -- } -- -- crm_notice("%s %s: %s", kind, node->details->uname, reason); -- if (is_set(data_set->flags, pe_flag_sanitized)) { -- /* Extra detail for those running from the commandline */ -- fprintf(stdout, " notice: %s %s: %s\n", kind, node->details->uname, reason); -- } -+ if(optional == FALSE && pe_can_fence(data_set, node)) { -+ pe_action_required(stonith_op, reason); -+ } else if(reason && stonith_op->reason == NULL) { -+ stonith_op->reason = strdup(reason); - } - - return stonith_op; -@@ -2196,3 +2186,13 @@ add_tag_ref(GHashTable * tags, const char * tag_name, const char * obj_ref) - - return TRUE; - } -+ -+void pe_action_required_worker(pe_action_t *action, const char *reason, const char *function, long line) -+{ -+ if(is_set(action->flags, pe_action_optional)) { -+ action->flags = crm_clear_bit(function, line, action->uuid, action->flags, pe_action_optional); -+ if(action->reason == NULL) { -+ action->reason = strdup(reason); -+ } -+ } -+} -diff --git a/pengine/allocate.c b/pengine/allocate.c -index fd9c4f9..ef26245 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -1486,9 +1486,8 @@ stage6(pe_working_set_t * data_set) - if (node->details->unclean - && need_stonith && pe_can_fence(data_set, node)) { - -- pe_warn("Scheduling Node %s for STONITH", node->details->uname); -- - stonith_op = pe_fence_op(node, NULL, FALSE, "node is unclean", data_set); -+ pe_warn("Scheduling Node %s for STONITH", node->details->uname); - - stonith_constraints(node, stonith_op, data_set); - -@@ -2434,6 +2433,7 @@ LogNodeActions(pe_working_set_t * data_set, gboolean terminal) - node_name = crm_strdup_printf("%s", action->node->details->uname); - } - -+ - if (safe_str_eq(action->task, CRM_OP_SHUTDOWN)) { - task = strdup("Shutdown"); - } else if (safe_str_eq(action->task, CRM_OP_FENCE)) { -@@ -2443,8 +2443,12 @@ LogNodeActions(pe_working_set_t * data_set, gboolean terminal) - - if(task == NULL) { - /* Nothing to report */ -+ } else if(terminal && action->reason) { -+ printf(" * %s %s '%s'\n", task, node_name, action->reason); - } else if(terminal) { - printf(" * %s %s\n", task, node_name); -+ } else if(action->reason) { -+ crm_notice(" * %s %s '%s'\n", task, node_name, action->reason); - } else { - crm_notice(" * %s %s\n", task, node_name); - } -diff --git a/pengine/native.c b/pengine/native.c -index bc59405..16c9d5a 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -1355,7 +1355,7 @@ native_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) - - g_hash_table_iter_init(&iter, rsc->allowed_nodes); - while (g_hash_table_iter_next(&iter, NULL, (void **)&node)) { -- action_t *unfence = pe_fence_op(node, "on", TRUE, __FUNCTION__, data_set); -+ action_t *unfence = pe_fence_op(node, "on", TRUE, NULL, data_set); - - crm_debug("Ordering any stops of %s before %s, and any starts after", - rsc->id, unfence->uuid); -@@ -2457,7 +2457,7 @@ 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, __FUNCTION__, data_set); -+ action_t *unfence = pe_fence_op(current, "on", TRUE, NULL, data_set); - const char *unfenced = g_hash_table_lookup(current->details->attrs, XML_NODE_IS_UNFENCED); - - order_actions(stop, unfence, pe_order_implies_first); -@@ -2480,7 +2480,7 @@ StartRsc(resource_t * rsc, node_t * next, gboolean optional, pe_working_set_t * - start = start_action(rsc, next, TRUE); - - if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { -- action_t *unfence = pe_fence_op(next, "on", TRUE, __FUNCTION__, data_set); -+ action_t *unfence = pe_fence_op(next, "on", TRUE, NULL, data_set); - const char *unfenced = g_hash_table_lookup(next->details->attrs, XML_NODE_IS_UNFENCED); - - order_actions(unfence, start, pe_order_implies_then); -@@ -2847,7 +2847,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - * unfencing and that unfencing occurred. - */ - if(is_set(rsc->flags, pe_rsc_needs_unfencing)) { -- action_t *unfence = pe_fence_op(node, "on", TRUE, __FUNCTION__, data_set); -+ action_t *unfence = pe_fence_op(node, "on", TRUE, NULL, data_set); - order_actions(unfence, probe, pe_order_optional); - } - -diff --git a/pengine/test10/594.exp b/pengine/test10/594.exp -index 5d58ab4..400a5e7 100644 ---- a/pengine/test10/594.exp -+++ b/pengine/test10/594.exp -@@ -1,52 +1,52 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -64,52 +64,52 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -118,23 +118,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -143,20 +143,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -165,25 +165,25 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -191,18 +191,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -211,51 +200,61 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/594.scores b/pengine/test10/594.scores -index 430550c..972b89b 100644 ---- a/pengine/test10/594.scores -+++ b/pengine/test10/594.scores -@@ -1,4 +1,3 @@ -- notice: Fencing hadev3: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on hadev1: 0 - clone_color: DoFencing allocation score on hadev2: 0 -diff --git a/pengine/test10/594.summary b/pengine/test10/594.summary -index 6cd78d3..44ed113 100644 ---- a/pengine/test10/594.summary -+++ b/pengine/test10/594.summary -@@ -12,10 +12,9 @@ Online: [ hadev1 hadev2 ] - child_DoFencing:1 (stonith:ssh): Started hadev1 - child_DoFencing:2 (stonith:ssh): Started hadev1 - -- notice: Fencing hadev3: node is unclean - Transition Summary: -- * Fence (reboot) hadev3 - * Shutdown hadev2 -+ * Fence (reboot) hadev3 'peer is no longer part of the cluster' - * Move DcIPaddr (Started hadev2 -> hadev1) - * Move rsc_hadev2 (Started hadev2 -> hadev1) - * Stop child_DoFencing:0 (hadev2) -@@ -29,13 +28,13 @@ Executing cluster transition: - * Resource action: child_DoFencing:2 monitor on hadev2 - * Pseudo action: DoFencing_stop_0 - * Fencing hadev3 (reboot) -- * Pseudo action: stonith_complete - * 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 - * Cluster action: do_shutdown on hadev2 -+ * Pseudo action: stonith_complete - * Pseudo action: all_stopped - * Resource action: DcIPaddr start on hadev1 - * Resource action: rsc_hadev2 start on hadev1 -diff --git a/pengine/test10/797.exp b/pengine/test10/797.exp -index 51f64cb..4b83374 100644 ---- a/pengine/test10/797.exp -+++ b/pengine/test10/797.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -10,7 +10,7 @@ - - - -- -+ - - - -@@ -19,49 +19,49 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -79,23 +79,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -104,7 +104,7 @@ - - - -- -+ - - - -@@ -113,20 +113,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -144,20 +144,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -166,78 +166,78 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -255,7 +255,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -273,28 +273,28 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -302,46 +302,46 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -350,46 +350,46 @@ - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/829.exp b/pengine/test10/829.exp -index 115a39f..d1f85fa 100644 ---- a/pengine/test10/829.exp -+++ b/pengine/test10/829.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -10,7 +10,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,66 +37,66 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -105,7 +105,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -123,7 +123,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -141,7 +141,7 @@ - - - -- -+ - - - -@@ -150,7 +150,7 @@ - - - -- -+ - - - -@@ -159,25 +159,25 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -186,7 +186,7 @@ - - - -- -+ - - - -@@ -195,7 +195,7 @@ - - - -- -+ - - - -@@ -204,7 +204,7 @@ - - - -- -+ - - - -@@ -213,7 +213,7 @@ - - - -- -+ - - - -@@ -222,7 +222,7 @@ - - - -- -+ - - - -@@ -231,71 +231,70 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/829.scores b/pengine/test10/829.scores -index 71a372b..f0652ff 100644 ---- a/pengine/test10/829.scores -+++ b/pengine/test10/829.scores -@@ -1,4 +1,3 @@ -- notice: Fencing c001n02: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on c001n01: 0 - clone_color: DoFencing allocation score on c001n02: 0 -diff --git a/pengine/test10/829.summary b/pengine/test10/829.summary -index 8649ed8..9e66733 100644 ---- a/pengine/test10/829.summary -+++ b/pengine/test10/829.summary -@@ -14,9 +14,8 @@ Online: [ c001n01 c001n03 c001n08 ] - child_DoFencing:2 (stonith:ssh): Started c001n01 - child_DoFencing:3 (stonith:ssh): Started c001n08 - -- notice: Fencing c001n02: node is unclean - Transition Summary: -- * Fence (reboot) c001n02 -+ * Fence (reboot) c001n02 'peer is no longer part of the cluster' - * Move rsc_c001n02 (Started c001n02 -> c001n01) - * Stop child_DoFencing:0 (c001n02) - -@@ -39,9 +38,9 @@ Executing cluster transition: - * Resource action: child_DoFencing:3 monitor on c001n03 - * Resource action: child_DoFencing:3 monitor on c001n01 - * Fencing c001n02 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: rsc_c001n02_stop_0 - * Pseudo action: DoFencing_stop_0 -+ * Pseudo action: stonith_complete - * Resource action: rsc_c001n02 start on c001n01 - * Pseudo action: child_DoFencing:0_stop_0 - * Pseudo action: DoFencing_stopped_0 -diff --git a/pengine/test10/bug-5186-partial-migrate.exp b/pengine/test10/bug-5186-partial-migrate.exp -index bba083e..d9e806f 100644 ---- a/pengine/test10/bug-5186-partial-migrate.exp -+++ b/pengine/test10/bug-5186-partial-migrate.exp -@@ -1,79 +1,79 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -82,25 +82,25 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -108,305 +108,305 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/bug-5186-partial-migrate.scores b/pengine/test10/bug-5186-partial-migrate.scores -index dd59f34..8b29529 100644 ---- a/pengine/test10/bug-5186-partial-migrate.scores -+++ b/pengine/test10/bug-5186-partial-migrate.scores -@@ -1,4 +1,3 @@ -- notice: Fencing bl460g1n7: node is unclean - Allocation scores: - clone_color: clnDiskd1 allocation score on bl460g1n6: 200 - clone_color: clnDiskd1 allocation score on bl460g1n7: 0 -diff --git a/pengine/test10/bug-5186-partial-migrate.summary b/pengine/test10/bug-5186-partial-migrate.summary -index 5c8231d..c2685d8 100644 ---- a/pengine/test10/bug-5186-partial-migrate.summary -+++ b/pengine/test10/bug-5186-partial-migrate.summary -@@ -24,9 +24,8 @@ Online: [ bl460g1n6 bl460g1n8 ] - prmPing (ocf::pacemaker:ping): Started bl460g1n7 (UNCLEAN) - Started: [ bl460g1n6 bl460g1n8 ] - -- notice: Fencing bl460g1n7: node is unclean - Transition Summary: -- * Fence (reboot) bl460g1n7 -+ * Fence (reboot) bl460g1n7 'prmDummy is thought to be active there' - * Move prmDummy (Started bl460g1n7 -> bl460g1n6) - * Move prmVM2 (Started bl460g1n7 -> bl460g1n8) - * Move prmStonith8-1 (Started bl460g1n7 -> bl460g1n6) -@@ -40,13 +39,13 @@ Executing cluster transition: - * Pseudo action: grpStonith8_stop_0 - * Pseudo action: prmStonith8-2_stop_0 - * Fencing bl460g1n7 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: prmDummy_stop_0 - * Pseudo action: prmVM2_stop_0 - * Pseudo action: prmStonith8-1_stop_0 - * Pseudo action: clnDiskd1_stop_0 - * Pseudo action: clnDiskd2_stop_0 - * Pseudo action: clnPing_stop_0 -+ * Pseudo action: stonith_complete - * Resource action: prmDummy start on bl460g1n6 - * Resource action: prmVM2 start on bl460g1n8 - * Pseudo action: grpStonith8_stopped_0 -diff --git a/pengine/test10/bug-cl-5212.exp b/pengine/test10/bug-cl-5212.exp -index 6d0a2f4..344711b 100644 ---- a/pengine/test10/bug-cl-5212.exp -+++ b/pengine/test10/bug-cl-5212.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -9,7 +9,7 @@ - - - -- -+ - - - -@@ -17,7 +17,7 @@ - - - -- -+ - - - -@@ -25,7 +25,7 @@ - - - -- -+ - - - -@@ -33,7 +33,7 @@ - - - -- -+ - - - -@@ -41,78 +41,78 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -120,43 +120,43 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -diff --git a/pengine/test10/bug-cl-5247.scores b/pengine/test10/bug-cl-5247.scores -index f1ded69..e9e4709 100644 ---- a/pengine/test10/bug-cl-5247.scores -+++ b/pengine/test10/bug-cl-5247.scores -@@ -1,4 +1,3 @@ -- notice: Fencing pgsr02: guest is unclean - Allocation scores: - Using the original execution date of: 2015-08-12 02:53:40Z - clone_color: msPostgresql allocation score on bl460g8n3: -INFINITY -diff --git a/pengine/test10/bug-cl-5247.summary b/pengine/test10/bug-cl-5247.summary -index 755e647..fc97e8d 100644 ---- a/pengine/test10/bug-cl-5247.summary -+++ b/pengine/test10/bug-cl-5247.summary -@@ -17,9 +17,8 @@ Containers: [ pgsr01:prmDB1 ] - Masters: [ pgsr01 ] - Stopped: [ bl460g8n3 bl460g8n4 ] - -- notice: Fencing pgsr02: guest is unclean - Transition Summary: -- * Fence (off) pgsr02 (resource: prmDB2) -+ * Fence (off) pgsr02 (resource: prmDB2) 'guest is unclean' - * Stop prmDB2 (bl460g8n4) - * Restart prmStonith1-2 (Started bl460g8n4) - * Restart prmStonith2-2 (Started bl460g8n3) -diff --git a/pengine/test10/bug-lf-2508.exp b/pengine/test10/bug-lf-2508.exp -index bf70378..925afbc 100644 ---- a/pengine/test10/bug-lf-2508.exp -+++ b/pengine/test10/bug-lf-2508.exp -@@ -1,22 +1,22 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -24,317 +24,317 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -343,232 +343,231 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/bug-lf-2508.scores b/pengine/test10/bug-lf-2508.scores -index 200d548..3c3ce16 100644 ---- a/pengine/test10/bug-lf-2508.scores -+++ b/pengine/test10/bug-lf-2508.scores -@@ -1,4 +1,3 @@ -- notice: Fencing srv02: node is unclean - Allocation scores: - clone_color: clnStonith1 allocation score on srv01: -INFINITY - clone_color: clnStonith1 allocation score on srv02: 0 -diff --git a/pengine/test10/bug-lf-2508.summary b/pengine/test10/bug-lf-2508.summary -index 18080cb..ddaf1c3 100644 ---- a/pengine/test10/bug-lf-2508.summary -+++ b/pengine/test10/bug-lf-2508.summary -@@ -34,9 +34,8 @@ Online: [ srv01 srv03 srv04 ] - Started: [ srv01 srv03 ] - Stopped: [ srv04 ] - -- notice: Fencing srv02: node is unclean - Transition Summary: -- * Fence (reboot) srv02 -+ * Fence (reboot) srv02 'peer is no longer part of the cluster' - * Start Dummy01 (srv01) - * Move Dummy02 (Started srv02 -> srv04) - * Stop prmStonith1-1:1 (srv02) -@@ -51,15 +50,13 @@ Executing cluster transition: - * Pseudo action: Group01_start_0 - * Resource action: prmStonith3-1:1 monitor=3600000 on srv01 - * Fencing srv02 (reboot) -- * Pseudo action: stonith_complete -- * Resource action: Dummy01 start on srv01 - * Pseudo action: Group02_stop_0 - * Pseudo action: Dummy02_stop_0 - * Pseudo action: clnStonith1_stop_0 - * Pseudo action: clnStonith3_stop_0 - * Pseudo action: clnStonith4_stop_0 -- * Pseudo action: Group01_running_0 -- * Resource action: Dummy01 monitor=10000 on srv01 -+ * Pseudo action: stonith_complete -+ * Resource action: Dummy01 start on srv01 - * Pseudo action: Group02_stopped_0 - * Pseudo action: Group02_start_0 - * Resource action: Dummy02 start on srv04 -@@ -69,6 +66,8 @@ Executing cluster transition: - * Pseudo action: prmStonith3-3:1_stop_0 - * Pseudo action: grpStonith4:1_stop_0 - * Pseudo action: prmStonith4-3:1_stop_0 -+ * Pseudo action: Group01_running_0 -+ * Resource action: Dummy01 monitor=10000 on srv01 - * Pseudo action: Group02_running_0 - * Resource action: Dummy02 monitor=10000 on srv04 - * Pseudo action: prmStonith1-1:1_stop_0 -diff --git a/pengine/test10/bug-lf-2551.exp b/pengine/test10/bug-lf-2551.exp -index f5b8236..a14ec5e 100644 ---- a/pengine/test10/bug-lf-2551.exp -+++ b/pengine/test10/bug-lf-2551.exp -@@ -1,20 +1,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -22,7 +22,7 @@ - - - -- -+ - - - -@@ -31,7 +31,7 @@ - - - -- -+ - - - -@@ -40,646 +40,645 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/bug-lf-2551.scores b/pengine/test10/bug-lf-2551.scores -index 64cbca0..2b0aa12 100644 ---- a/pengine/test10/bug-lf-2551.scores -+++ b/pengine/test10/bug-lf-2551.scores -@@ -1,4 +1,3 @@ -- notice: Fencing hex-9: node is unclean - Allocation scores: - clone_color: base-clone allocation score on hex-0: 14 - clone_color: base-clone allocation score on hex-7: 16 -diff --git a/pengine/test10/bug-lf-2551.summary b/pengine/test10/bug-lf-2551.summary -index 4fa553c..1b57ea7 100644 ---- a/pengine/test10/bug-lf-2551.summary -+++ b/pengine/test10/bug-lf-2551.summary -@@ -80,9 +80,8 @@ Online: [ hex-0 hex-7 hex-8 ] - vm-63 (ocf::heartbeat:Xen): Stopped - vm-64 (ocf::heartbeat:Xen): Stopped - -- notice: Fencing hex-9: node is unclean - Transition Summary: -- * Fence (reboot) hex-9 -+ * Fence (reboot) hex-9 'peer is no longer part of the cluster' - * Move fencing-sbd (Started hex-9 -> hex-0) - * Move dummy1 (Started hex-9 -> hex-0) - * Stop dlm:3 (hex-9) -@@ -112,11 +111,10 @@ Executing cluster transition: - * Pseudo action: fencing-sbd_stop_0 - * Resource action: dummy1 monitor=300000 on hex-8 - * Resource action: dummy1 monitor=300000 on hex-7 -- * Fencing hex-9 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: load_stopped_hex-8 - * Pseudo action: load_stopped_hex-7 - * Pseudo action: load_stopped_hex-0 -+ * Fencing hex-9 (reboot) - * Resource action: fencing-sbd start on hex-0 - * Pseudo action: dummy1_stop_0 - * Pseudo action: vm-03_stop_0 -@@ -135,6 +133,7 @@ Executing cluster transition: - * Pseudo action: vm-53_stop_0 - * Pseudo action: vm-57_stop_0 - * Pseudo action: vm-61_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: load_stopped_hex-9 - * Resource action: dummy1 start on hex-0 - * Pseudo action: base-clone_stop_0 -diff --git a/pengine/test10/bug-lf-2606.exp b/pengine/test10/bug-lf-2606.exp -index 55f138b..b14069e 100644 ---- a/pengine/test10/bug-lf-2606.exp -+++ b/pengine/test10/bug-lf-2606.exp -@@ -1,108 +1,108 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -110,77 +110,76 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/bug-lf-2606.scores b/pengine/test10/bug-lf-2606.scores -index b1e6a02..6a9d522 100644 ---- a/pengine/test10/bug-lf-2606.scores -+++ b/pengine/test10/bug-lf-2606.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node2: node is unclean - Allocation scores: - clone_color: ms3 allocation score on node1: 0 - clone_color: ms3 allocation score on node2: 0 -diff --git a/pengine/test10/bug-lf-2606.summary b/pengine/test10/bug-lf-2606.summary -index e6cfa89..7e889c9 100644 ---- a/pengine/test10/bug-lf-2606.summary -+++ b/pengine/test10/bug-lf-2606.summary -@@ -11,9 +11,8 @@ Online: [ node1 ] - Masters: [ node2 ] - Slaves: [ node1 ] - -- notice: Fencing node2: node is unclean - Transition Summary: -- * Fence (reboot) node2 -+ * Fence (reboot) node2 'rsc1 failed there' - * Stop rsc1 (node2) - * Move rsc2 (Started node2 -> node1) - * Demote rsc3:1 (Master -> Stopped node2) -@@ -21,12 +20,12 @@ Transition Summary: - Executing cluster transition: - * Pseudo action: ms3_demote_0 - * Fencing node2 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: rsc1_stop_0 - * Pseudo action: rsc2_stop_0 - * Pseudo action: rsc3:1_demote_0 - * Pseudo action: ms3_demoted_0 - * Pseudo action: ms3_stop_0 -+ * Pseudo action: stonith_complete - * Resource action: rsc2 start on node1 - * Pseudo action: rsc3:1_stop_0 - * Pseudo action: ms3_stopped_0 -diff --git a/pengine/test10/bug-rh-1097457.scores b/pengine/test10/bug-rh-1097457.scores -index 2fe2859..7729421 100644 ---- a/pengine/test10/bug-rh-1097457.scores -+++ b/pengine/test10/bug-rh-1097457.scores -@@ -1,4 +1,3 @@ -- notice: Fencing lamaVM2: guest is unclean - Allocation scores: - clone_color: FAKE6-clone allocation score on lama2: -INFINITY - clone_color: FAKE6-clone allocation score on lama3: -INFINITY -diff --git a/pengine/test10/bug-rh-1097457.summary b/pengine/test10/bug-rh-1097457.summary -index 19aa39d..29dd018 100644 ---- a/pengine/test10/bug-rh-1097457.summary -+++ b/pengine/test10/bug-rh-1097457.summary -@@ -31,9 +31,8 @@ Containers: [ lamaVM1:VM1 lamaVM2:VM2 lamaVM3:VM3 ] - Clone Set: FAKE6-clone [FAKE6] - Started: [ lamaVM1 lamaVM2 lamaVM3 ] - -- notice: Fencing lamaVM2: guest is unclean - Transition Summary: -- * Fence (reboot) lamaVM2 (resource: VM2) -+ * Fence (reboot) lamaVM2 (resource: VM2) 'guest is unclean' - * Recover VM2 (Started lama3) - * Recover FSlun3 (Started lamaVM2 -> lama2) - * Restart FAKE4 (Started lamaVM2) -diff --git a/pengine/test10/concurrent-fencing.exp b/pengine/test10/concurrent-fencing.exp -index 354111a..c916c1b 100644 ---- a/pengine/test10/concurrent-fencing.exp -+++ b/pengine/test10/concurrent-fencing.exp -@@ -1,39 +1,40 @@ - - - -- -- -- -- -- -- -+ -+ -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -- -- -- -- -- -+ -+ -+ - - - -- -- -- -- -+ - - - - - -- -- -+ -+ - -- -+ - - - -@@ -41,32 +42,31 @@ - - - -- -- -- -+ -+ -+ -+ -+ -+ - - - -- -- -- -- -+ - - -- -+ - - - - - -- -- -- -+ -+ -+ -+ -+ -+ - -- -- -- -- -- -+ - - -diff --git a/pengine/test10/concurrent-fencing.scores b/pengine/test10/concurrent-fencing.scores -index 1be723e..0322231 100644 ---- a/pengine/test10/concurrent-fencing.scores -+++ b/pengine/test10/concurrent-fencing.scores -@@ -1,6 +1,3 @@ -- notice: Fencing node1: node is unclean -- notice: Fencing node2: node is unclean -- notice: Fencing node3: node is unclean - Allocation scores: - native_color: lsb_dummy allocation score on node1: 0 - native_color: lsb_dummy allocation score on node2: 0 -diff --git a/pengine/test10/concurrent-fencing.summary b/pengine/test10/concurrent-fencing.summary -index 3f54c2c..46d3323 100644 ---- a/pengine/test10/concurrent-fencing.summary -+++ b/pengine/test10/concurrent-fencing.summary -@@ -7,13 +7,10 @@ Node node3 (uuid3): UNCLEAN (offline) - stonith-1 (stonith:dummy): Stopped - lsb_dummy (lsb:/usr/lib/heartbeat/cts/LSBDummy): Stopped - -- notice: Fencing node1: node is unclean -- notice: Fencing node2: node is unclean -- notice: Fencing node3: node is unclean - Transition Summary: -- * Fence (reboot) node3 -- * Fence (reboot) node2 -- * Fence (reboot) node1 -+ * Fence (reboot) node3 'peer is no longer part of the cluster' -+ * Fence (reboot) node2 'peer is no longer part of the cluster' -+ * Fence (reboot) node1 'peer is no longer part of the cluster' - - Executing cluster transition: - * Fencing node3 (reboot) -diff --git a/pengine/test10/guest-node-host-dies.exp b/pengine/test10/guest-node-host-dies.exp -index 73a0264..235813d 100644 ---- a/pengine/test10/guest-node-host-dies.exp -+++ b/pengine/test10/guest-node-host-dies.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -10,296 +10,296 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -307,168 +307,168 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -477,7 +477,7 @@ - - - -- -+ - - - -@@ -486,7 +486,7 @@ - - - -- -+ - - - -@@ -495,69 +495,69 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -566,7 +566,7 @@ - - - -- -+ - - - -@@ -575,7 +575,7 @@ - - - -- -+ - - - -@@ -584,20 +584,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -606,13 +593,13 @@ - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -621,62 +608,75 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/guest-node-host-dies.scores b/pengine/test10/guest-node-host-dies.scores -index 663d236..0d7ad3f 100644 ---- a/pengine/test10/guest-node-host-dies.scores -+++ b/pengine/test10/guest-node-host-dies.scores -@@ -1,6 +1,3 @@ -- notice: Fencing lxc1: guest is unclean -- notice: Fencing lxc2: guest is unclean -- notice: Fencing rhel7-1: node is unclean - Allocation scores: - clone_color: lxc-ms-master allocation score on lxc1: INFINITY - clone_color: lxc-ms-master allocation score on lxc2: INFINITY -diff --git a/pengine/test10/guest-node-host-dies.summary b/pengine/test10/guest-node-host-dies.summary -index 679deb6..d22fe3d 100644 ---- a/pengine/test10/guest-node-host-dies.summary -+++ b/pengine/test10/guest-node-host-dies.summary -@@ -10,13 +10,10 @@ Online: [ rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] - Master/Slave Set: lxc-ms-master [lxc-ms] - Stopped: [ rhel7-1 rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] - -- notice: Fencing lxc1: guest is unclean -- notice: Fencing lxc2: guest is unclean -- notice: Fencing rhel7-1: node is unclean - Transition Summary: -- * Fence (reboot) rhel7-1 -- * Fence (reboot) lxc2 (resource: container2) -- * Fence (reboot) lxc1 (resource: container1) -+ * 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 (Started rhel7-4) - * Move rsc_rhel7-1 (Started rhel7-1 -> rhel7-5) - * Recover container1 (Started rhel7-1 -> rhel7-2) -diff --git a/pengine/test10/interleave-pseudo-stop.exp b/pengine/test10/interleave-pseudo-stop.exp -index 7a6b7ed..63217e8 100644 ---- a/pengine/test10/interleave-pseudo-stop.exp -+++ b/pengine/test10/interleave-pseudo-stop.exp -@@ -1,43 +1,43 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -50,7 +50,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -@@ -93,40 +93,40 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -135,28 +135,28 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -165,7 +165,7 @@ - - - -- -+ - - - -@@ -173,37 +173,37 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -@@ -216,7 +216,7 @@ - - - -- -+ - - - -@@ -229,7 +229,7 @@ - - - -- -+ - - - -@@ -259,34 +259,34 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -295,28 +295,28 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -325,7 +325,7 @@ - - - -- -+ - - - -@@ -333,31 +333,31 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - -@@ -370,7 +370,7 @@ - - - -- -+ - - - -@@ -383,7 +383,7 @@ - - - -- -+ - - - -@@ -413,34 +413,34 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -449,28 +449,28 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -479,7 +479,7 @@ - - - -- -+ - - - -@@ -487,87 +487,76 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -@@ -580,5 +569,15 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/interleave-pseudo-stop.scores b/pengine/test10/interleave-pseudo-stop.scores -index 625ba18..014f4de 100644 ---- a/pengine/test10/interleave-pseudo-stop.scores -+++ b/pengine/test10/interleave-pseudo-stop.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node1: node is unclean - Allocation scores: - clone_color: configstoreclone:0 allocation score on node1: 0 - clone_color: configstoreclone:0 allocation score on node2: 1 -diff --git a/pengine/test10/interleave-pseudo-stop.summary b/pengine/test10/interleave-pseudo-stop.summary -index 8c22b2f..01ce0ec 100644 ---- a/pengine/test10/interleave-pseudo-stop.summary -+++ b/pengine/test10/interleave-pseudo-stop.summary -@@ -16,9 +16,8 @@ Online: [ node2 ] - configstoreclone (ocf::heartbeat:Filesystem): Started node1 (UNCLEAN) - Started: [ node2 ] - -- notice: Fencing node1: node is unclean - Transition Summary: -- * Fence (reboot) node1 -+ * Fence (reboot) node1 'peer is no longer part of the cluster' - * Stop stonithclone:1 (node1) - * Stop evmsclone:1 (node1) - * Stop imagestoreclone:1 (node1) -@@ -29,7 +28,6 @@ Executing cluster transition: - * Pseudo action: imagestorecloneset_pre_notify_stop_0 - * Pseudo action: configstorecloneset_pre_notify_stop_0 - * Fencing node1 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: stonithcloneset_stop_0 - * Resource action: evmsclone:1 notify on node2 - * Pseudo action: evmsclone:0_post_notify_stop_0 -@@ -42,6 +40,7 @@ Executing cluster transition: - * Pseudo action: configstoreclone:0_post_notify_stop_0 - * Pseudo action: configstorecloneset_confirmed-pre_notify_stop_0 - * Pseudo action: configstorecloneset_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: stonithclone:0_stop_0 - * Pseudo action: stonithcloneset_stopped_0 - * Pseudo action: imagestoreclone:0_stop_0 -diff --git a/pengine/test10/master-7.exp b/pengine/test10/master-7.exp -index be05853..971949d 100644 ---- a/pengine/test10/master-7.exp -+++ b/pengine/test10/master-7.exp -@@ -1,69 +1,69 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -71,88 +71,88 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -161,13 +161,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -176,22 +176,22 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -200,93 +200,93 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -295,63 +295,63 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -360,7 +360,7 @@ - - - -- -+ - - - -@@ -369,7 +369,7 @@ - - - -- -+ - - - -@@ -378,7 +378,7 @@ - - - -- -+ - - - -@@ -387,91 +387,91 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -480,7 +480,7 @@ - - - -- -+ - - - -@@ -489,7 +489,7 @@ - - - -- -+ - - - -@@ -498,7 +498,7 @@ - - - -- -+ - - - -@@ -507,7 +507,7 @@ - - - -- -+ - - - -@@ -516,7 +516,7 @@ - - - -- -+ - - - -@@ -525,7 +525,7 @@ - - - -- -+ - - - -@@ -534,7 +534,7 @@ - - - -- -+ - - - -@@ -543,7 +543,7 @@ - - - -- -+ - - - -@@ -552,22 +552,22 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -575,98 +575,97 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/master-7.scores b/pengine/test10/master-7.scores -index 7569625..37fc6cd 100644 ---- a/pengine/test10/master-7.scores -+++ b/pengine/test10/master-7.scores -@@ -1,4 +1,3 @@ -- notice: Fencing c001n01: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on c001n01: 0 - clone_color: DoFencing allocation score on c001n02: 0 -diff --git a/pengine/test10/master-7.summary b/pengine/test10/master-7.summary -index d76051e..4c58184 100644 ---- a/pengine/test10/master-7.summary -+++ b/pengine/test10/master-7.summary -@@ -28,9 +28,8 @@ Online: [ c001n02 c001n03 c001n08 ] - ocf_msdummy:6 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n02 - ocf_msdummy:7 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n08 - -- notice: Fencing c001n01: node is unclean - Transition Summary: -- * Fence (reboot) c001n01 -+ * Fence (reboot) c001n01 'peer is no longer part of the cluster' - * Move DcIPaddr (Started c001n01 -> c001n03) - * Move ocf_192.168.100.181 (Started c001n03 -> c001n02) - * Move heartbeat_192.168.100.182 (Started c001n03 -> c001n02) -@@ -60,18 +59,17 @@ Executing cluster transition: - * Resource action: ocf_msdummy:7 monitor on c001n02 - * Pseudo action: master_rsc_1_demote_0 - * Fencing c001n01 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: DcIPaddr_stop_0 - * Resource action: heartbeat_192.168.100.182 stop on c001n03 -- * Resource action: lsb_dummy start on c001n08 - * Pseudo action: rsc_c001n01_stop_0 - * Pseudo action: DoFencing_stop_0 - * Pseudo action: ocf_msdummy:0_demote_0 - * Pseudo action: master_rsc_1_demoted_0 - * Pseudo action: master_rsc_1_stop_0 -+ * Pseudo action: stonith_complete - * Resource action: DcIPaddr start on c001n03 - * Resource action: ocf_192.168.100.181 stop on c001n03 -- * Resource action: lsb_dummy monitor=5000 on c001n08 -+ * Resource action: lsb_dummy start on c001n08 - * Resource action: rsc_c001n01 start on c001n03 - * Pseudo action: child_DoFencing:0_stop_0 - * Pseudo action: DoFencing_stopped_0 -@@ -85,6 +83,7 @@ Executing cluster transition: - * Resource action: ocf_192.168.100.181 start on c001n02 - * Resource action: heartbeat_192.168.100.182 start on c001n02 - * Resource action: ocf_192.168.100.183 start on c001n02 -+ * Resource action: lsb_dummy monitor=5000 on c001n08 - * Resource action: rsc_c001n01 monitor=5000 on c001n03 - * Pseudo action: group-1_running_0 - * Resource action: ocf_192.168.100.181 monitor=5000 on c001n02 -diff --git a/pengine/test10/master-8.exp b/pengine/test10/master-8.exp -index 6843922..e680354 100644 ---- a/pengine/test10/master-8.exp -+++ b/pengine/test10/master-8.exp -@@ -1,69 +1,69 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -71,88 +71,88 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -161,13 +161,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -176,22 +176,22 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -200,93 +200,93 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -295,63 +295,63 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -360,7 +360,7 @@ - - - -- -+ - - - -@@ -369,7 +369,7 @@ - - - -- -+ - - - -@@ -378,7 +378,7 @@ - - - -- -+ - - - -@@ -387,102 +387,102 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -491,7 +491,7 @@ - - - -- -+ - - - -@@ -500,7 +500,7 @@ - - - -- -+ - - - -@@ -509,7 +509,7 @@ - - - -- -+ - - - -@@ -518,7 +518,7 @@ - - - -- -+ - - - -@@ -527,7 +527,7 @@ - - - -- -+ - - - -@@ -536,7 +536,7 @@ - - - -- -+ - - - -@@ -545,7 +545,7 @@ - - - -- -+ - - - -@@ -554,7 +554,7 @@ - - - -- -+ - - - -@@ -563,7 +563,7 @@ - - - -- -+ - - - -@@ -572,22 +572,22 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -595,152 +595,151 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/master-8.scores b/pengine/test10/master-8.scores -index 880d7fb..c9d1cc9 100644 ---- a/pengine/test10/master-8.scores -+++ b/pengine/test10/master-8.scores -@@ -1,4 +1,3 @@ -- notice: Fencing c001n01: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on c001n01: 0 - clone_color: DoFencing allocation score on c001n02: 0 -diff --git a/pengine/test10/master-8.summary b/pengine/test10/master-8.summary -index 7d0b840..e8d90d2 100644 ---- a/pengine/test10/master-8.summary -+++ b/pengine/test10/master-8.summary -@@ -28,9 +28,8 @@ Online: [ c001n02 c001n03 c001n08 ] - ocf_msdummy:6 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n02 - ocf_msdummy:7 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n08 - -- notice: Fencing c001n01: node is unclean - Transition Summary: -- * Fence (reboot) c001n01 -+ * Fence (reboot) c001n01 'peer is no longer part of the cluster' - * Move DcIPaddr (Started c001n01 -> c001n03) - * Move ocf_192.168.100.181 (Started c001n03 -> c001n02) - * Move heartbeat_192.168.100.182 (Started c001n03 -> c001n02) -@@ -61,18 +60,17 @@ Executing cluster transition: - * Resource action: ocf_msdummy:7 monitor on c001n02 - * Pseudo action: master_rsc_1_demote_0 - * Fencing c001n01 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: DcIPaddr_stop_0 - * Resource action: heartbeat_192.168.100.182 stop on c001n03 -- * Resource action: lsb_dummy start on c001n08 - * Pseudo action: rsc_c001n01_stop_0 - * Pseudo action: DoFencing_stop_0 - * Pseudo action: ocf_msdummy:0_demote_0 - * Pseudo action: master_rsc_1_demoted_0 - * Pseudo action: master_rsc_1_stop_0 -+ * Pseudo action: stonith_complete - * Resource action: DcIPaddr start on c001n03 - * Resource action: ocf_192.168.100.181 stop on c001n03 -- * Resource action: lsb_dummy monitor=5000 on c001n08 -+ * Resource action: lsb_dummy start on c001n08 - * Resource action: rsc_c001n01 start on c001n03 - * Pseudo action: child_DoFencing:0_stop_0 - * Pseudo action: DoFencing_stopped_0 -@@ -86,6 +84,7 @@ Executing cluster transition: - * Resource action: ocf_192.168.100.181 start on c001n02 - * Resource action: heartbeat_192.168.100.182 start on c001n02 - * Resource action: ocf_192.168.100.183 start on c001n02 -+ * Resource action: lsb_dummy monitor=5000 on c001n08 - * Resource action: rsc_c001n01 monitor=5000 on c001n03 - * Resource action: ocf_msdummy:0 start on c001n03 - * Pseudo action: master_rsc_1_running_0 -diff --git a/pengine/test10/migrate-fencing.exp b/pengine/test10/migrate-fencing.exp -index a670395..5ef64d7 100644 ---- a/pengine/test10/migrate-fencing.exp -+++ b/pengine/test10/migrate-fencing.exp -@@ -1,533 +1,533 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -536,7 +536,7 @@ - - - -- -+ - - - -@@ -545,149 +545,148 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/migrate-fencing.scores b/pengine/test10/migrate-fencing.scores -index 37d42b4..3febd69 100644 ---- a/pengine/test10/migrate-fencing.scores -+++ b/pengine/test10/migrate-fencing.scores -@@ -1,4 +1,3 @@ -- notice: Fencing pcmk-4: node is unclean - Allocation scores: - clone_color: Connectivity allocation score on pcmk-1: 0 - clone_color: Connectivity allocation score on pcmk-2: 0 -diff --git a/pengine/test10/migrate-fencing.summary b/pengine/test10/migrate-fencing.summary -index fdb905e..7468fe2 100644 ---- a/pengine/test10/migrate-fencing.summary -+++ b/pengine/test10/migrate-fencing.summary -@@ -21,9 +21,8 @@ Online: [ pcmk-1 pcmk-2 pcmk-3 ] - Masters: [ pcmk-4 ] - Slaves: [ pcmk-1 pcmk-2 pcmk-3 ] - -- notice: Fencing pcmk-4: node is unclean - Transition Summary: -- * Fence (reboot) pcmk-4 -+ * Fence (reboot) pcmk-4 'termination was requested' - * Stop FencingChild:0 (pcmk-4) - * Move r192.168.101.181 (Started pcmk-4 -> pcmk-1) - * Move r192.168.101.182 (Started pcmk-4 -> pcmk-1) -@@ -39,27 +38,27 @@ Executing cluster transition: - * Resource action: stateful-1:3 monitor=15000 on pcmk-3 - * Resource action: stateful-1:2 monitor=15000 on pcmk-2 - * Fencing pcmk-4 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: Fencing_stop_0 - * Pseudo action: rsc_pcmk-4_stop_0 - * Pseudo action: lsb-dummy_stop_0 -- * Resource action: migrator migrate_to on pcmk-1 - * Pseudo action: Connectivity_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: FencingChild:0_stop_0 - * Pseudo action: Fencing_stopped_0 - * Pseudo action: group-1_stop_0 - * Pseudo action: r192.168.101.183_stop_0 - * Resource action: rsc_pcmk-4 start on pcmk-2 -- * Resource action: migrator migrate_from on pcmk-3 -- * Resource action: migrator stop on pcmk-1 -+ * Resource action: migrator migrate_to on pcmk-1 - * Pseudo action: ping-1:0_stop_0 - * Pseudo action: Connectivity_stopped_0 - * Pseudo action: r192.168.101.182_stop_0 - * Resource action: rsc_pcmk-4 monitor=5000 on pcmk-2 -- * Pseudo action: migrator_start_0 -+ * Resource action: migrator migrate_from on pcmk-3 -+ * Resource action: migrator stop on pcmk-1 - * Pseudo action: r192.168.101.181_stop_0 -- * Resource action: migrator monitor=10000 on pcmk-3 -+ * Pseudo action: migrator_start_0 - * Pseudo action: group-1_stopped_0 -+ * Resource action: migrator monitor=10000 on pcmk-3 - * Pseudo action: master-1_demote_0 - * Pseudo action: stateful-1:0_demote_0 - * Pseudo action: master-1_demoted_0 -diff --git a/pengine/test10/rec-node-10.exp b/pengine/test10/rec-node-10.exp -index 309764a..a0606d9 100644 ---- a/pengine/test10/rec-node-10.exp -+++ b/pengine/test10/rec-node-10.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -10,7 +10,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-11.exp b/pengine/test10/rec-node-11.exp -index 473c1a7..6c7efcc 100644 ---- a/pengine/test10/rec-node-11.exp -+++ b/pengine/test10/rec-node-11.exp -@@ -1,23 +1,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -26,113 +26,113 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -141,50 +141,50 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -193,76 +193,75 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/rec-node-11.scores b/pengine/test10/rec-node-11.scores -index 86c2bf5..482deeb 100644 ---- a/pengine/test10/rec-node-11.scores -+++ b/pengine/test10/rec-node-11.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node1: node is unclean - Allocation scores: - group_color: group1 allocation score on node1: 0 - group_color: group1 allocation score on node2: 0 -diff --git a/pengine/test10/rec-node-11.summary b/pengine/test10/rec-node-11.summary -index f45f0a8..e884ffa 100644 ---- a/pengine/test10/rec-node-11.summary -+++ b/pengine/test10/rec-node-11.summary -@@ -9,9 +9,8 @@ Online: [ node2 ] - rsc2 (heartbeat:apache): Started node1 - rsc3 (heartbeat:apache): Started node2 - -- notice: Fencing node1: node is unclean - Transition Summary: -- * Fence (reboot) node1 -+ * Fence (reboot) node1 'peer process is no longer available' - * Start stonith-1 (node2) - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -@@ -22,9 +21,9 @@ Executing cluster transition: - * Resource action: rsc1 monitor on node2 - * Resource action: rsc2 monitor on node2 - * Fencing node1 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: group1_stop_0 - * Pseudo action: rsc2_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: rsc1_stop_0 - * Pseudo action: group1_stopped_0 - * Resource action: rsc3 stop on node2 -diff --git a/pengine/test10/rec-node-12.scores b/pengine/test10/rec-node-12.scores -index 4fd9ff5..153c232 100644 ---- a/pengine/test10/rec-node-12.scores -+++ b/pengine/test10/rec-node-12.scores -@@ -1,4 +1,3 @@ -- notice: Fencing c001n02: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on c001n01: 0 - clone_color: DoFencing allocation score on c001n02: 0 -diff --git a/pengine/test10/rec-node-12.summary b/pengine/test10/rec-node-12.summary -index 562cae9..8b2d4e6 100644 ---- a/pengine/test10/rec-node-12.summary -+++ b/pengine/test10/rec-node-12.summary -@@ -14,9 +14,8 @@ Online: [ c001n01 c001n03 c001n08 ] - child_DoFencing:2 (stonith:ssh): Stopped - child_DoFencing:3 (stonith:ssh): Stopped - -- notice: Fencing c001n02: node is unclean - Transition Summary: -- * Fence (reboot) c001n02 -+ * Fence (reboot) c001n02 'node is unclean' - * Start DcIPaddr (c001n08) - * Start rsc_c001n08 (c001n08) - * Start rsc_c001n02 (c001n01) -diff --git a/pengine/test10/rec-node-13.exp b/pengine/test10/rec-node-13.exp -index 3b25e9f..a289600 100644 ---- a/pengine/test10/rec-node-13.exp -+++ b/pengine/test10/rec-node-13.exp -@@ -1,83 +1,82 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/rec-node-13.scores b/pengine/test10/rec-node-13.scores -index bdb5004..dda1134 100644 ---- a/pengine/test10/rec-node-13.scores -+++ b/pengine/test10/rec-node-13.scores -@@ -1,4 +1,3 @@ -- notice: Fencing c001n04: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on c001n02: 0 - clone_color: DoFencing allocation score on c001n03: 0 -diff --git a/pengine/test10/rec-node-13.summary b/pengine/test10/rec-node-13.summary -index d3b4d65..9873757 100644 ---- a/pengine/test10/rec-node-13.summary -+++ b/pengine/test10/rec-node-13.summary -@@ -33,15 +33,14 @@ OFFLINE: [ c001n03 c001n05 ] - ocf_msdummy:10 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n06 - ocf_msdummy:11 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n07 - -- notice: Fencing c001n04: node is unclean - Transition Summary: -- * Fence (reboot) c001n04 -+ * Fence (reboot) c001n04 'ocf_msdummy:6 failed there' - * Stop ocf_msdummy:6 (c001n04) - - Executing cluster transition: - * Fencing c001n04 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: master_rsc_1_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: ocf_msdummy:6_stop_0 - * Pseudo action: master_rsc_1_stopped_0 - * Pseudo action: all_stopped -diff --git a/pengine/test10/rec-node-14.exp b/pengine/test10/rec-node-14.exp -index 30dbcdb..308ab7e 100644 ---- a/pengine/test10/rec-node-14.exp -+++ b/pengine/test10/rec-node-14.exp -@@ -1,68 +1,67 @@ - - - -- -- -- -- -- -- -+ -+ -+ - - - -- -+ - - - - - -- -- -- -- -- -- -+ -+ -+ - - - -- -+ - - - - - -- -- -+ -+ - -- -+ - - - -- -+ -+ -+ -+ -+ - - - -- -- -- -+ -+ -+ -+ -+ -+ - - - -- -+ - - - - - -- -- -- -+ -+ -+ -+ -+ -+ - -- -- -- -- -- -+ - - -- -diff --git a/pengine/test10/rec-node-14.scores b/pengine/test10/rec-node-14.scores -index 1be723e..0322231 100644 ---- a/pengine/test10/rec-node-14.scores -+++ b/pengine/test10/rec-node-14.scores -@@ -1,6 +1,3 @@ -- notice: Fencing node1: node is unclean -- notice: Fencing node2: node is unclean -- notice: Fencing node3: node is unclean - Allocation scores: - native_color: lsb_dummy allocation score on node1: 0 - native_color: lsb_dummy allocation score on node2: 0 -diff --git a/pengine/test10/rec-node-14.summary b/pengine/test10/rec-node-14.summary -index a707aee..b5f105e 100644 ---- a/pengine/test10/rec-node-14.summary -+++ b/pengine/test10/rec-node-14.summary -@@ -7,13 +7,10 @@ Node node3 (uuid3): UNCLEAN (offline) - stonith-1 (stonith:dummy): Stopped - lsb_dummy (lsb:/usr/lib/heartbeat/cts/LSBDummy): Stopped - -- notice: Fencing node1: node is unclean -- notice: Fencing node2: node is unclean -- notice: Fencing node3: node is unclean - Transition Summary: -- * Fence (reboot) node3 -- * Fence (reboot) node2 -- * Fence (reboot) node1 -+ * Fence (reboot) node3 'peer is no longer part of the cluster' -+ * Fence (reboot) node2 'peer is no longer part of the cluster' -+ * Fence (reboot) node1 'peer is no longer part of the cluster' - - Executing cluster transition: - * Fencing node1 (reboot) -diff --git a/pengine/test10/rec-node-15.exp b/pengine/test10/rec-node-15.exp -index 3810636..3cd3e81 100644 ---- a/pengine/test10/rec-node-15.exp -+++ b/pengine/test10/rec-node-15.exp -@@ -1,26 +1,26 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -38,28 +38,28 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -67,214 +67,214 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -282,204 +282,203 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/rec-node-15.scores b/pengine/test10/rec-node-15.scores -index d8b9617..03dc6e6 100644 ---- a/pengine/test10/rec-node-15.scores -+++ b/pengine/test10/rec-node-15.scores -@@ -1,4 +1,3 @@ -- notice: Fencing sapcl03: node is unclean - Allocation scores: - group_color: Filesystem_13 allocation score on sapcl01: 0 - group_color: Filesystem_13 allocation score on sapcl02: 0 -diff --git a/pengine/test10/rec-node-15.summary b/pengine/test10/rec-node-15.summary -index 863bfd4..760942c 100644 ---- a/pengine/test10/rec-node-15.summary -+++ b/pengine/test10/rec-node-15.summary -@@ -20,9 +20,8 @@ Online: [ sapcl01 ] - oracle_24 (ocf::heartbeat:oracle): Stopped - oralsnr_25 (ocf::heartbeat:oralsnr): Stopped - -- notice: Fencing sapcl03: node is unclean - Transition Summary: -- * Fence (reboot) sapcl03 -+ * Fence (reboot) sapcl03 'peer is no longer part of the cluster' - * Start stonith-1 (sapcl01) - * Move IPaddr_192_168_1_102 (Started sapcl02 -> sapcl01) - * Move LVM_12 (Started sapcl02 -> sapcl01) -@@ -40,20 +39,14 @@ Executing cluster transition: - * Resource action: Filesystem_13 stop on sapcl02 - * Pseudo action: oracle_start_0 - * Fencing sapcl03 (reboot) -- * Pseudo action: stonith_complete - * Resource action: LVM_12 stop on sapcl02 -+ * Pseudo action: stonith_complete -+ * Resource action: IPaddr_192_168_1_102 stop on sapcl02 - * Resource action: IPaddr_192_168_1_104 start on sapcl01 - * Resource action: LVM_22 start on sapcl01 - * Resource action: Filesystem_23 start on sapcl01 - * Resource action: oracle_24 start on sapcl01 - * Resource action: oralsnr_25 start on sapcl01 -- * Resource action: IPaddr_192_168_1_102 stop on sapcl02 -- * Pseudo action: oracle_running_0 -- * Resource action: IPaddr_192_168_1_104 monitor=5000 on sapcl01 -- * Resource action: LVM_22 monitor=120000 on sapcl01 -- * Resource action: Filesystem_23 monitor=120000 on sapcl01 -- * Resource action: oracle_24 monitor=120000 on sapcl01 -- * Resource action: oralsnr_25 monitor=120000 on sapcl01 - * Pseudo action: all_stopped - * Resource action: stonith-1 start on sapcl01 - * Pseudo action: app02_stopped_0 -@@ -61,6 +54,12 @@ Executing cluster transition: - * Resource action: IPaddr_192_168_1_102 start on sapcl01 - * Resource action: LVM_12 start on sapcl01 - * Resource action: Filesystem_13 start on sapcl01 -+ * Pseudo action: oracle_running_0 -+ * Resource action: IPaddr_192_168_1_104 monitor=5000 on sapcl01 -+ * Resource action: LVM_22 monitor=120000 on sapcl01 -+ * Resource action: Filesystem_23 monitor=120000 on sapcl01 -+ * Resource action: oracle_24 monitor=120000 on sapcl01 -+ * Resource action: oralsnr_25 monitor=120000 on sapcl01 - * Pseudo action: app02_running_0 - * Resource action: IPaddr_192_168_1_102 monitor=5000 on sapcl01 - * Resource action: LVM_12 monitor=120000 on sapcl01 -diff --git a/pengine/test10/rec-node-2.scores b/pengine/test10/rec-node-2.scores -index 6efa92d..68e176f 100644 ---- a/pengine/test10/rec-node-2.scores -+++ b/pengine/test10/rec-node-2.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node1: node is unclean - Allocation scores: - group_color: group1 allocation score on node1: 0 - group_color: group1 allocation score on node2: 0 -diff --git a/pengine/test10/rec-node-2.summary b/pengine/test10/rec-node-2.summary -index ecf6562..4106abf 100644 ---- a/pengine/test10/rec-node-2.summary -+++ b/pengine/test10/rec-node-2.summary -@@ -13,9 +13,8 @@ Online: [ node2 ] - rsc5 (heartbeat:apache): Stopped - rsc6 (heartbeat:apache): Stopped - -- notice: Fencing node1: node is unclean - Transition Summary: -- * Fence (reboot) node1 -+ * Fence (reboot) node1 'node is unclean' - * Start stonith-1 (node2) - * Start rsc1 (node2) - * Start rsc2 (node2) -diff --git a/pengine/test10/rec-node-4.exp b/pengine/test10/rec-node-4.exp -index 00f975e..2aaa34b 100644 ---- a/pengine/test10/rec-node-4.exp -+++ b/pengine/test10/rec-node-4.exp -@@ -1,23 +1,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -26,41 +26,41 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -69,41 +69,41 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -112,44 +112,43 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/rec-node-4.scores b/pengine/test10/rec-node-4.scores -index e25a30f..1d008ec 100644 ---- a/pengine/test10/rec-node-4.scores -+++ b/pengine/test10/rec-node-4.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node1: node is unclean - Allocation scores: - native_color: rsc1 allocation score on node1: -INFINITY - native_color: rsc1 allocation score on node2: 0 -diff --git a/pengine/test10/rec-node-4.summary b/pengine/test10/rec-node-4.summary -index f46a3bb..4a39615 100644 ---- a/pengine/test10/rec-node-4.summary -+++ b/pengine/test10/rec-node-4.summary -@@ -7,9 +7,8 @@ Online: [ node2 ] - rsc1 (heartbeat:apache): Started node1 (UNCLEAN) - rsc2 (heartbeat:apache): Started node1 (UNCLEAN) - -- notice: Fencing node1: node is unclean - Transition Summary: -- * Fence (reboot) node1 -+ * Fence (reboot) node1 'peer is no longer part of the cluster' - * Start stonith-1 (node2) - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -@@ -19,9 +18,9 @@ Executing cluster transition: - * Resource action: rsc1 monitor on node2 - * Resource action: rsc2 monitor on node2 - * Fencing node1 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: rsc1_stop_0 - * Pseudo action: rsc2_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: all_stopped - * Resource action: stonith-1 start on node2 - * Resource action: rsc1 start on node2 -diff --git a/pengine/test10/rec-node-5.exp b/pengine/test10/rec-node-5.exp -index abae4db..7099236 100644 ---- a/pengine/test10/rec-node-5.exp -+++ b/pengine/test10/rec-node-5.exp -@@ -1,20 +1,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -23,20 +23,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -diff --git a/pengine/test10/rec-node-6.exp b/pengine/test10/rec-node-6.exp -index 00f975e..2aaa34b 100644 ---- a/pengine/test10/rec-node-6.exp -+++ b/pengine/test10/rec-node-6.exp -@@ -1,23 +1,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -26,41 +26,41 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -69,41 +69,41 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -112,44 +112,43 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/rec-node-6.scores b/pengine/test10/rec-node-6.scores -index e25a30f..1d008ec 100644 ---- a/pengine/test10/rec-node-6.scores -+++ b/pengine/test10/rec-node-6.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node1: node is unclean - Allocation scores: - native_color: rsc1 allocation score on node1: -INFINITY - native_color: rsc1 allocation score on node2: 0 -diff --git a/pengine/test10/rec-node-6.summary b/pengine/test10/rec-node-6.summary -index 37257fe..6cb8d01 100644 ---- a/pengine/test10/rec-node-6.summary -+++ b/pengine/test10/rec-node-6.summary -@@ -7,9 +7,8 @@ Online: [ node2 ] - rsc1 (heartbeat:apache): Started node1 - rsc2 (heartbeat:apache): Started node1 - -- notice: Fencing node1: node is unclean - Transition Summary: -- * Fence (reboot) node1 -+ * Fence (reboot) node1 'peer process is no longer available' - * Start stonith-1 (node2) - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -@@ -19,9 +18,9 @@ Executing cluster transition: - * Resource action: rsc1 monitor on node2 - * Resource action: rsc2 monitor on node2 - * Fencing node1 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: rsc1_stop_0 - * Pseudo action: rsc2_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: all_stopped - * Resource action: stonith-1 start on node2 - * Resource action: rsc1 start on node2 -diff --git a/pengine/test10/rec-node-7.exp b/pengine/test10/rec-node-7.exp -index 00f975e..2aaa34b 100644 ---- a/pengine/test10/rec-node-7.exp -+++ b/pengine/test10/rec-node-7.exp -@@ -1,23 +1,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -26,41 +26,41 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -69,41 +69,41 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -112,44 +112,43 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/rec-node-7.scores b/pengine/test10/rec-node-7.scores -index e25a30f..1d008ec 100644 ---- a/pengine/test10/rec-node-7.scores -+++ b/pengine/test10/rec-node-7.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node1: node is unclean - Allocation scores: - native_color: rsc1 allocation score on node1: -INFINITY - native_color: rsc1 allocation score on node2: 0 -diff --git a/pengine/test10/rec-node-7.summary b/pengine/test10/rec-node-7.summary -index f46a3bb..4a39615 100644 ---- a/pengine/test10/rec-node-7.summary -+++ b/pengine/test10/rec-node-7.summary -@@ -7,9 +7,8 @@ Online: [ node2 ] - rsc1 (heartbeat:apache): Started node1 (UNCLEAN) - rsc2 (heartbeat:apache): Started node1 (UNCLEAN) - -- notice: Fencing node1: node is unclean - Transition Summary: -- * Fence (reboot) node1 -+ * Fence (reboot) node1 'peer is no longer part of the cluster' - * Start stonith-1 (node2) - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -@@ -19,9 +18,9 @@ Executing cluster transition: - * Resource action: rsc1 monitor on node2 - * Resource action: rsc2 monitor on node2 - * Fencing node1 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: rsc1_stop_0 - * Pseudo action: rsc2_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: all_stopped - * Resource action: stonith-1 start on node2 - * Resource action: rsc1 start on node2 -diff --git a/pengine/test10/rec-node-8.exp b/pengine/test10/rec-node-8.exp -index 78a972c..334e62a 100644 ---- a/pengine/test10/rec-node-8.exp -+++ b/pengine/test10/rec-node-8.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -10,7 +10,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/rec-rsc-5.exp b/pengine/test10/rec-rsc-5.exp -index a690d68..b1f151b 100644 ---- a/pengine/test10/rec-rsc-5.exp -+++ b/pengine/test10/rec-rsc-5.exp -@@ -1,23 +1,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -26,41 +26,41 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -69,41 +69,41 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -112,44 +112,43 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/rec-rsc-5.scores b/pengine/test10/rec-rsc-5.scores -index ebaedbd..1c640ae 100644 ---- a/pengine/test10/rec-rsc-5.scores -+++ b/pengine/test10/rec-rsc-5.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node2: node is unclean - Allocation scores: - native_color: rsc1 allocation score on node1: 0 - native_color: rsc1 allocation score on node2: -INFINITY -diff --git a/pengine/test10/rec-rsc-5.summary b/pengine/test10/rec-rsc-5.summary -index 6bc4010..28e29b5 100644 ---- a/pengine/test10/rec-rsc-5.summary -+++ b/pengine/test10/rec-rsc-5.summary -@@ -7,9 +7,8 @@ Online: [ node1 ] - rsc1 (heartbeat:apache): FAILED node2 - rsc2 (heartbeat:apache): Started node2 - -- notice: Fencing node2: node is unclean - Transition Summary: -- * Fence (reboot) node2 -+ * Fence (reboot) node2 'rsc1 failed there' - * Start stonith-1 (node1) - * Recover rsc1 (Started node2 -> node1) - * Move rsc2 (Started node2 -> node1) -@@ -19,9 +18,9 @@ Executing cluster transition: - * Resource action: rsc1 monitor on node1 - * Resource action: rsc2 monitor on node1 - * Fencing node2 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: rsc1_stop_0 - * Pseudo action: rsc2_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: all_stopped - * Resource action: stonith-1 start on node1 - * Resource action: rsc1 start on node1 -diff --git a/pengine/test10/remote-fence-before-reconnect.exp b/pengine/test10/remote-fence-before-reconnect.exp -index 54c9106..736f64f 100644 ---- a/pengine/test10/remote-fence-before-reconnect.exp -+++ b/pengine/test10/remote-fence-before-reconnect.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -11,90 +11,90 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/remote-fence-before-reconnect.scores b/pengine/test10/remote-fence-before-reconnect.scores -index 9423693..fb46919 100644 ---- a/pengine/test10/remote-fence-before-reconnect.scores -+++ b/pengine/test10/remote-fence-before-reconnect.scores -@@ -1,4 +1,3 @@ -- notice: Fencing c7auto4: node is unclean - Allocation scores: - native_color: c7auto4 allocation score on c7auto1: -INFINITY - native_color: c7auto4 allocation score on c7auto2: -INFINITY -diff --git a/pengine/test10/remote-fence-before-reconnect.summary b/pengine/test10/remote-fence-before-reconnect.summary -index f477884..7a22551 100644 ---- a/pengine/test10/remote-fence-before-reconnect.summary -+++ b/pengine/test10/remote-fence-before-reconnect.summary -@@ -11,16 +11,15 @@ Online: [ c7auto1 c7auto2 c7auto3 ] - fake4 (ocf::heartbeat:Dummy): Started c7auto2 - fake5 (ocf::heartbeat:Dummy): Started c7auto3 - -- notice: Fencing c7auto4: node is unclean - Transition Summary: -- * Fence (reboot) c7auto4 -+ * Fence (reboot) c7auto4 'remote connection is unrecoverable' - * Stop c7auto4 (c7auto1) - * Move fake2 (Started c7auto4 -> c7auto1) - - Executing cluster transition: - * Fencing c7auto4 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: fake2_stop_0 -+ * Pseudo action: stonith_complete - * Resource action: c7auto4 stop on c7auto1 - * Resource action: fake2 start on c7auto1 - * Pseudo action: all_stopped -diff --git a/pengine/test10/remote-fence-unclean-3.exp b/pengine/test10/remote-fence-unclean-3.exp -index 2e341bd..5bf7eb3 100644 ---- a/pengine/test10/remote-fence-unclean-3.exp -+++ b/pengine/test10/remote-fence-unclean-3.exp -@@ -1,20 +1,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -75,27 +75,27 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-fence-unclean-3.scores b/pengine/test10/remote-fence-unclean-3.scores -index 283a599..77d71d6 100644 ---- a/pengine/test10/remote-fence-unclean-3.scores -+++ b/pengine/test10/remote-fence-unclean-3.scores -@@ -1,4 +1,3 @@ -- notice: Fencing overcloud-novacompute-0: node is unclean - Allocation scores: - clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 - clone_color: galera-bundle-master allocation score on galera-bundle-1: 0 -diff --git a/pengine/test10/remote-fence-unclean-3.summary b/pengine/test10/remote-fence-unclean-3.summary -index ec5d304..6d15598 100644 ---- a/pengine/test10/remote-fence-unclean-3.summary -+++ b/pengine/test10/remote-fence-unclean-3.summary -@@ -33,9 +33,8 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bund - Docker container: openstack-cinder-backup [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-backup:latest] - openstack-cinder-backup-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-1 - -- notice: Fencing overcloud-novacompute-0: node is unclean - Transition Summary: -- * Fence (reboot) overcloud-novacompute-0 -+ * Fence (reboot) overcloud-novacompute-0 'the connection is unrecoverable' - * Start fence1 (overcloud-controller-0) - * Stop overcloud-novacompute-0 (overcloud-controller-0) - -diff --git a/pengine/test10/remote-fence-unclean.exp b/pengine/test10/remote-fence-unclean.exp -index d2c3617..3a07384 100644 ---- a/pengine/test10/remote-fence-unclean.exp -+++ b/pengine/test10/remote-fence-unclean.exp -@@ -1,23 +1,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -27,7 +27,7 @@ - - - -- -+ - - - -@@ -40,83 +40,83 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -125,36 +125,36 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -163,49 +163,49 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/remote-fence-unclean.scores b/pengine/test10/remote-fence-unclean.scores -index 038ca2e..8d29662 100644 ---- a/pengine/test10/remote-fence-unclean.scores -+++ b/pengine/test10/remote-fence-unclean.scores -@@ -1,4 +1,3 @@ -- notice: Fencing remote1: node is unclean - Allocation scores: - native_color: FAKE1 allocation score on 18builder: 0 - native_color: FAKE1 allocation score on 18node1: 0 -diff --git a/pengine/test10/remote-fence-unclean.summary b/pengine/test10/remote-fence-unclean.summary -index 8f37909..9830b96 100644 ---- a/pengine/test10/remote-fence-unclean.summary -+++ b/pengine/test10/remote-fence-unclean.summary -@@ -10,9 +10,8 @@ Online: [ 18builder 18node1 18node2 ] - FAKE3 (ocf::heartbeat:Dummy): Started 18builder - FAKE4 (ocf::heartbeat:Dummy): Started 18node1 - -- notice: Fencing remote1: node is unclean - Transition Summary: -- * Fence (reboot) remote1 -+ * Fence (reboot) remote1 'remote connection is unrecoverable' - * Recover remote1 (Started 18node1) - * Move FAKE2 (Started remote1 -> 18builder) - * Move FAKE3 (Started 18builder -> 18node1) -@@ -22,18 +21,18 @@ Executing cluster transition: - * Resource action: FAKE3 stop on 18builder - * Resource action: FAKE4 stop on 18node1 - * Fencing remote1 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: FAKE2_stop_0 -- * Resource action: FAKE3 start on 18node1 -- * Resource action: FAKE4 start on 18node2 -+ * Pseudo action: stonith_complete - * Resource action: remote1 stop on 18node1 - * Resource action: FAKE2 start on 18builder -- * Resource action: FAKE3 monitor=60000 on 18node1 -- * Resource action: FAKE4 monitor=60000 on 18node2 -+ * Resource action: FAKE3 start on 18node1 -+ * Resource action: FAKE4 start on 18node2 - * Pseudo action: all_stopped - * Resource action: remote1 start on 18node1 - * Resource action: remote1 monitor=60000 on 18node1 - * Resource action: FAKE2 monitor=60000 on 18builder -+ * Resource action: FAKE3 monitor=60000 on 18node1 -+ * Resource action: FAKE4 monitor=60000 on 18node2 - - Revised cluster status: - Online: [ 18builder 18node1 18node2 ] -diff --git a/pengine/test10/remote-fence-unclean2.exp b/pengine/test10/remote-fence-unclean2.exp -index c28832b..c9c45ae 100644 ---- a/pengine/test10/remote-fence-unclean2.exp -+++ b/pengine/test10/remote-fence-unclean2.exp -@@ -1,52 +1,52 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/remote-fence-unclean2.scores b/pengine/test10/remote-fence-unclean2.scores -index 937d0eb..10fc7fd 100644 ---- a/pengine/test10/remote-fence-unclean2.scores -+++ b/pengine/test10/remote-fence-unclean2.scores -@@ -1,4 +1,3 @@ -- notice: Fencing rhel7-alt4: node is unclean - Allocation scores: - native_color: fake allocation score on rhel7-alt1: 0 - native_color: fake allocation score on rhel7-alt2: 0 -diff --git a/pengine/test10/remote-fence-unclean2.summary b/pengine/test10/remote-fence-unclean2.summary -index 060d55e..bf7f907 100644 ---- a/pengine/test10/remote-fence-unclean2.summary -+++ b/pengine/test10/remote-fence-unclean2.summary -@@ -9,15 +9,14 @@ OFFLINE: [ rhel7-alt3 ] - rhel7-alt4 (ocf::pacemaker:remote): Stopped - fake (ocf::heartbeat:Dummy): Started rhel7-alt4 (UNCLEAN) - -- notice: Fencing rhel7-alt4: node is unclean - Transition Summary: -- * Fence (reboot) rhel7-alt4 -+ * Fence (reboot) rhel7-alt4 'fake is active there (fencing will be revoked if remote connection can be re-established elsewhere)' - * Stop fake (rhel7-alt4) - - Executing cluster transition: - * Fencing rhel7-alt4 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: fake_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: all_stopped - - Revised cluster status: -diff --git a/pengine/test10/remote-partial-migrate2.exp b/pengine/test10/remote-partial-migrate2.exp -index 54d1ded..abf281f 100644 ---- a/pengine/test10/remote-partial-migrate2.exp -+++ b/pengine/test10/remote-partial-migrate2.exp -@@ -1,195 +1,195 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -198,42 +198,42 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -242,36 +242,36 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -280,36 +280,36 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -318,42 +318,42 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -362,42 +362,42 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -406,36 +406,36 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -444,36 +444,36 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -482,42 +482,42 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -526,36 +526,36 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -564,42 +564,42 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -608,90 +608,90 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -700,36 +700,36 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -738,42 +738,42 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -782,88 +782,88 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/remote-partial-migrate2.scores b/pengine/test10/remote-partial-migrate2.scores -index ce095b1..6965507 100644 ---- a/pengine/test10/remote-partial-migrate2.scores -+++ b/pengine/test10/remote-partial-migrate2.scores -@@ -1,4 +1,3 @@ -- notice: Fencing pcmk4: node is unclean - Allocation scores: - native_color: FAKE1 allocation score on pcmk1: -INFINITY - native_color: FAKE1 allocation score on pcmk2: 0 -diff --git a/pengine/test10/remote-partial-migrate2.summary b/pengine/test10/remote-partial-migrate2.summary -index c9f9592..17fee27 100644 ---- a/pengine/test10/remote-partial-migrate2.summary -+++ b/pengine/test10/remote-partial-migrate2.summary -@@ -62,9 +62,8 @@ RemoteOFFLINE: [ pcmk_remote4 ] - FAKE49 (ocf::heartbeat:Dummy): Started pcmk_remote3 - FAKE50 (ocf::heartbeat:Dummy): Started pcmk_remote5 - -- notice: Fencing pcmk4: node is unclean - Transition Summary: -- * Fence (reboot) pcmk4 -+ * Fence (reboot) pcmk4 'peer is no longer part of the cluster' - * Migrate pcmk_remote2 (Started pcmk3 -> pcmk1) - * Start pcmk_remote4 (pcmk2) - * Migrate pcmk_remote5 (Started pcmk1 -> pcmk2) -diff --git a/pengine/test10/remote-recover-all.exp b/pengine/test10/remote-recover-all.exp -index 6c1164c..b0af5c4 100644 ---- a/pengine/test10/remote-recover-all.exp -+++ b/pengine/test10/remote-recover-all.exp -@@ -1,72 +1,72 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - -@@ -122,116 +122,116 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -239,76 +239,76 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - -@@ -321,23 +321,23 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - -@@ -350,68 +350,68 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -423,7 +423,7 @@ - - - -- -+ - - - -@@ -431,211 +431,211 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -644,36 +644,36 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -682,65 +682,65 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -748,7 +748,7 @@ - - - -- -+ - - - -@@ -757,13 +757,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -772,91 +772,91 @@ - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/remote-recover-all.scores b/pengine/test10/remote-recover-all.scores -index 947f228..43cac62 100644 ---- a/pengine/test10/remote-recover-all.scores -+++ b/pengine/test10/remote-recover-all.scores -@@ -1,6 +1,3 @@ -- notice: Fencing controller-1: node is unclean -- notice: Fencing galera-2: node is unclean -- notice: Fencing messaging-1: node is unclean - Allocation scores: - Using the original execution date of: 2017-05-03 13:33:24Z - clone_color: galera-master allocation score on controller-0: -INFINITY -diff --git a/pengine/test10/remote-recover-all.summary b/pengine/test10/remote-recover-all.summary -index 6868533..35f3d58 100644 ---- a/pengine/test10/remote-recover-all.summary -+++ b/pengine/test10/remote-recover-all.summary -@@ -37,13 +37,10 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - -- notice: Fencing controller-1: node is unclean -- notice: Fencing galera-2: node is unclean -- notice: Fencing messaging-1: node is unclean - Transition Summary: -- * Fence (reboot) messaging-1 -- * Fence (reboot) galera-2 -- * Fence (reboot) controller-1 -+ * Fence (reboot) messaging-1 'resources are active and the connection is unrecoverable' -+ * Fence (reboot) galera-2 'resources are active and the connection is unrecoverable' -+ * Fence (reboot) controller-1 'peer is no longer part of the cluster' - * Stop messaging-1 (controller-1) - * Move galera-0 (Started controller-1 -> controller-2) - * Stop galera-2 (controller-1) -diff --git a/pengine/test10/remote-recover-connection.exp b/pengine/test10/remote-recover-connection.exp -index 62860f0..cf74efb 100644 ---- a/pengine/test10/remote-recover-connection.exp -+++ b/pengine/test10/remote-recover-connection.exp -@@ -1,163 +1,163 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -187,22 +187,22 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - -@@ -215,7 +215,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -244,7 +244,7 @@ - - - -- -+ - - - -@@ -257,7 +257,7 @@ - - - -- -+ - - - -@@ -266,13 +266,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -284,28 +284,28 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -317,7 +317,7 @@ - - - -- -+ - - - -@@ -325,211 +325,211 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -538,33 +538,33 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -573,59 +573,59 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -633,76 +633,76 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/remote-recover-connection.scores b/pengine/test10/remote-recover-connection.scores -index 3d3beae..56a18eb 100644 ---- a/pengine/test10/remote-recover-connection.scores -+++ b/pengine/test10/remote-recover-connection.scores -@@ -1,4 +1,3 @@ -- notice: Fencing controller-1: node is unclean - Allocation scores: - Using the original execution date of: 2017-05-03 13:33:24Z - clone_color: galera-master allocation score on controller-0: -INFINITY -diff --git a/pengine/test10/remote-recover-connection.summary b/pengine/test10/remote-recover-connection.summary -index f21b2b5..e0a9d0e 100644 ---- a/pengine/test10/remote-recover-connection.summary -+++ b/pengine/test10/remote-recover-connection.summary -@@ -37,9 +37,8 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - -- notice: Fencing controller-1: node is unclean - Transition Summary: -- * Fence (reboot) controller-1 -+ * Fence (reboot) controller-1 'peer is no longer part of the cluster' - * Move messaging-1 (Started controller-1 -> controller-2) - * Move galera-0 (Started controller-1 -> controller-2) - * Move galera-2 (Started controller-1 -> controller-2) -@@ -62,7 +61,6 @@ 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: stonith_complete - * Pseudo action: messaging-1_stop_0 - * Pseudo action: galera-0_stop_0 - * Pseudo action: galera-2_stop_0 -@@ -73,6 +71,7 @@ Executing cluster transition: - * Pseudo action: redis-master_stop_0 - * 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 -diff --git a/pengine/test10/remote-recover-fail.exp b/pengine/test10/remote-recover-fail.exp -index be45b88..bd014ae 100644 ---- a/pengine/test10/remote-recover-fail.exp -+++ b/pengine/test10/remote-recover-fail.exp -@@ -1,20 +1,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -24,7 +24,7 @@ - - - -- -+ - - - -@@ -40,83 +40,83 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -125,7 +125,7 @@ - - - -- -+ - - - -@@ -134,71 +134,60 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -207,14 +196,25 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/remote-recover-fail.scores b/pengine/test10/remote-recover-fail.scores -index 02a0643..8fc7805 100644 ---- a/pengine/test10/remote-recover-fail.scores -+++ b/pengine/test10/remote-recover-fail.scores -@@ -1,4 +1,3 @@ -- notice: Fencing rhel7-auto4: node is unclean - Allocation scores: - native_color: FAKE1 allocation score on rhel7-auto1: 0 - native_color: FAKE1 allocation score on rhel7-auto2: 0 -diff --git a/pengine/test10/remote-recover-fail.summary b/pengine/test10/remote-recover-fail.summary -index fd518eb..302b716 100644 ---- a/pengine/test10/remote-recover-fail.summary -+++ b/pengine/test10/remote-recover-fail.summary -@@ -13,9 +13,8 @@ OFFLINE: [ rhel7-auto1 ] - FAKE5 (ocf::heartbeat:Dummy): Started rhel7-auto3 - FAKE6 (ocf::heartbeat:Dummy): Started rhel7-auto4 (UNCLEAN) - -- notice: Fencing rhel7-auto4: node is unclean - Transition Summary: -- * Fence (reboot) rhel7-auto4 -+ * Fence (reboot) rhel7-auto4 'FAKE2 is thought to be active there' - * Recover rhel7-auto4 (Started rhel7-auto2) - * Start FAKE1 (rhel7-auto2) - * Move FAKE2 (Started rhel7-auto4 -> rhel7-auto3) -@@ -25,16 +24,16 @@ Executing cluster transition: - * Resource action: FAKE3 monitor=10000 on rhel7-auto2 - * Resource action: FAKE4 monitor=10000 on rhel7-auto3 - * Fencing rhel7-auto4 (reboot) -- * Pseudo action: stonith_complete -- * Resource action: FAKE1 start on rhel7-auto2 - * Pseudo action: FAKE2_stop_0 - * Pseudo action: FAKE6_stop_0 -+ * Pseudo action: stonith_complete - * Resource action: rhel7-auto4 stop on rhel7-auto2 -- * Resource action: FAKE1 monitor=10000 on rhel7-auto2 -+ * Resource action: FAKE1 start on rhel7-auto2 - * Resource action: FAKE2 start on rhel7-auto3 - * Resource action: FAKE6 start on rhel7-auto2 - * Pseudo action: all_stopped - * Resource action: rhel7-auto4 start on rhel7-auto2 -+ * Resource action: FAKE1 monitor=10000 on rhel7-auto2 - * Resource action: FAKE2 monitor=10000 on rhel7-auto3 - * Resource action: FAKE6 monitor=10000 on rhel7-auto2 - * Resource action: rhel7-auto4 monitor=60000 on rhel7-auto2 -diff --git a/pengine/test10/remote-recover-no-resources.exp b/pengine/test10/remote-recover-no-resources.exp -index ba9b17b..987acfd 100644 ---- a/pengine/test10/remote-recover-no-resources.exp -+++ b/pengine/test10/remote-recover-no-resources.exp -@@ -1,69 +1,69 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -119,107 +119,107 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - -@@ -232,23 +232,23 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - -@@ -261,68 +261,68 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -334,7 +334,7 @@ - - - -- -+ - - - -@@ -342,211 +342,211 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -555,36 +555,36 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -593,65 +593,65 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -659,7 +659,7 @@ - - - -- -+ - - - -@@ -668,88 +668,88 @@ - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/remote-recover-no-resources.scores b/pengine/test10/remote-recover-no-resources.scores -index 36a1ff4..e918fc6 100644 ---- a/pengine/test10/remote-recover-no-resources.scores -+++ b/pengine/test10/remote-recover-no-resources.scores -@@ -1,5 +1,3 @@ -- notice: Fencing controller-1: node is unclean -- notice: Fencing messaging-1: node is unclean - Allocation scores: - Using the original execution date of: 2017-05-03 13:33:24Z - clone_color: galera-master allocation score on controller-0: -INFINITY -diff --git a/pengine/test10/remote-recover-no-resources.summary b/pengine/test10/remote-recover-no-resources.summary -index c3cd6a8..19b5181 100644 ---- a/pengine/test10/remote-recover-no-resources.summary -+++ b/pengine/test10/remote-recover-no-resources.summary -@@ -37,11 +37,9 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - -- notice: Fencing controller-1: node is unclean -- notice: Fencing messaging-1: node is unclean - Transition Summary: -- * Fence (reboot) messaging-1 -- * Fence (reboot) controller-1 -+ * Fence (reboot) messaging-1 'resources are active and the connection is unrecoverable' -+ * Fence (reboot) controller-1 'peer is no longer part of the cluster' - * Stop messaging-1 (controller-1) - * Move galera-0 (Started controller-1 -> controller-2) - * Stop galera-2 (controller-1) -diff --git a/pengine/test10/remote-recover-unknown.exp b/pengine/test10/remote-recover-unknown.exp -index d63cf81..b8d51be 100644 ---- a/pengine/test10/remote-recover-unknown.exp -+++ b/pengine/test10/remote-recover-unknown.exp -@@ -1,69 +1,69 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -119,107 +119,107 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - -@@ -232,23 +232,23 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - -@@ -261,68 +261,68 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -334,7 +334,7 @@ - - - -- -+ - - - -@@ -342,211 +342,211 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -555,36 +555,36 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -593,65 +593,65 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -659,112 +659,112 @@ - - - -- -- -+ -+ - -- -+ - - - - - -- -+ - - - - - -- -- -+ -+ - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/remote-recover-unknown.scores b/pengine/test10/remote-recover-unknown.scores -index d7d7713..e918fc6 100644 ---- a/pengine/test10/remote-recover-unknown.scores -+++ b/pengine/test10/remote-recover-unknown.scores -@@ -1,6 +1,3 @@ -- notice: Fencing controller-1: node is unclean -- notice: Fencing galera-2: node is unclean -- notice: Fencing messaging-1: node is unclean - Allocation scores: - Using the original execution date of: 2017-05-03 13:33:24Z - clone_color: galera-master allocation score on controller-0: -INFINITY -diff --git a/pengine/test10/remote-recover-unknown.summary b/pengine/test10/remote-recover-unknown.summary -index 5b03065..772a699 100644 ---- a/pengine/test10/remote-recover-unknown.summary -+++ b/pengine/test10/remote-recover-unknown.summary -@@ -37,13 +37,10 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - -- notice: Fencing controller-1: node is unclean -- notice: Fencing galera-2: node is unclean -- notice: Fencing messaging-1: node is unclean - Transition Summary: -- * Fence (reboot) messaging-1 -- * Fence (reboot) galera-2 -- * Fence (reboot) controller-1 -+ * Fence (reboot) galera-2 'resources are in an unknown state and the connection is unrecoverable' -+ * Fence (reboot) messaging-1 'resources are active and the connection is unrecoverable' -+ * Fence (reboot) controller-1 'peer is no longer part of the cluster' - * Stop messaging-1 (controller-1) - * Move galera-0 (Started controller-1 -> controller-2) - * Stop galera-2 (controller-1) -@@ -72,33 +69,33 @@ Executing cluster transition: - * Pseudo action: redis-master_stop_0 - * Pseudo action: haproxy-clone_stop_0 - * Fencing galera-2 (reboot) -- * Pseudo action: redis_stop_0 -- * Pseudo action: redis-master_stopped_0 -- * Pseudo action: haproxy_stop_0 -- * 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 - * Resource action: galera monitor=10000 on galera-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 -+ * 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 - * Pseudo action: rabbitmq_stop_0 - * Pseudo action: rabbitmq-clone_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 -+ * Pseudo action: messaging-1_stop_0 - * Resource action: redis notify on controller-0 - * Resource action: redis notify on controller-2 - * Pseudo action: redis-master_confirmed-post_notify_stopped_0 - * Resource action: ip-172.17.1.14 start on controller-2 - * Resource action: ip-172.17.1.17 start on controller-2 - * Resource action: ip-172.17.4.11 start on controller-2 -- * Pseudo action: messaging-1_stop_0 - * Pseudo action: redis_notified_0 - * Resource action: ip-172.17.1.14 monitor=10000 on controller-2 - * Resource action: ip-172.17.1.17 monitor=10000 on controller-2 -diff --git a/pengine/test10/remote-recover.exp b/pengine/test10/remote-recover.exp -index 918db8d..1fab2f1 100644 ---- a/pengine/test10/remote-recover.exp -+++ b/pengine/test10/remote-recover.exp -@@ -1,20 +1,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -23,20 +23,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -45,14 +45,14 @@ - - - -- -+ - - - - - - -- -+ - - - -diff --git a/pengine/test10/remote-recovery.exp b/pengine/test10/remote-recovery.exp -index 62860f0..cf74efb 100644 ---- a/pengine/test10/remote-recovery.exp -+++ b/pengine/test10/remote-recovery.exp -@@ -1,163 +1,163 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -187,22 +187,22 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - -@@ -215,7 +215,7 @@ - - - -- -+ - - - -@@ -228,7 +228,7 @@ - - - -- -+ - - - -@@ -244,7 +244,7 @@ - - - -- -+ - - - -@@ -257,7 +257,7 @@ - - - -- -+ - - - -@@ -266,13 +266,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -284,28 +284,28 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -317,7 +317,7 @@ - - - -- -+ - - - -@@ -325,211 +325,211 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -538,33 +538,33 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -573,59 +573,59 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -633,76 +633,76 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/remote-recovery.scores b/pengine/test10/remote-recovery.scores -index 3d3beae..56a18eb 100644 ---- a/pengine/test10/remote-recovery.scores -+++ b/pengine/test10/remote-recovery.scores -@@ -1,4 +1,3 @@ -- notice: Fencing controller-1: node is unclean - Allocation scores: - Using the original execution date of: 2017-05-03 13:33:24Z - clone_color: galera-master allocation score on controller-0: -INFINITY -diff --git a/pengine/test10/remote-recovery.summary b/pengine/test10/remote-recovery.summary -index f21b2b5..e0a9d0e 100644 ---- a/pengine/test10/remote-recovery.summary -+++ b/pengine/test10/remote-recovery.summary -@@ -37,9 +37,8 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - stonith-fence_ipmilan-525400b4f6bd (stonith:fence_ipmilan): Started controller-0 - stonith-fence_ipmilan-5254005bdbb5 (stonith:fence_ipmilan): Started controller-1 (UNCLEAN) - -- notice: Fencing controller-1: node is unclean - Transition Summary: -- * Fence (reboot) controller-1 -+ * Fence (reboot) controller-1 'peer is no longer part of the cluster' - * Move messaging-1 (Started controller-1 -> controller-2) - * Move galera-0 (Started controller-1 -> controller-2) - * Move galera-2 (Started controller-1 -> controller-2) -@@ -62,7 +61,6 @@ 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: stonith_complete - * Pseudo action: messaging-1_stop_0 - * Pseudo action: galera-0_stop_0 - * Pseudo action: galera-2_stop_0 -@@ -73,6 +71,7 @@ Executing cluster transition: - * Pseudo action: redis-master_stop_0 - * 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 -diff --git a/pengine/test10/remote-unclean2.exp b/pengine/test10/remote-unclean2.exp -index 045e976..ca0b3ba 100644 ---- a/pengine/test10/remote-unclean2.exp -+++ b/pengine/test10/remote-unclean2.exp -@@ -1,23 +1,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -36,46 +36,46 @@ - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/remote-unclean2.scores b/pengine/test10/remote-unclean2.scores -index 2c2c9a5..72a5953 100644 ---- a/pengine/test10/remote-unclean2.scores -+++ b/pengine/test10/remote-unclean2.scores -@@ -1,4 +1,3 @@ -- notice: Fencing rhel7-auto4: node is unclean - Allocation scores: - native_color: rhel7-auto4 allocation score on rhel7-auto1: 0 - native_color: rhel7-auto4 allocation score on rhel7-auto2: 0 -diff --git a/pengine/test10/remote-unclean2.summary b/pengine/test10/remote-unclean2.summary -index 06047d1..1408c09 100644 ---- a/pengine/test10/remote-unclean2.summary -+++ b/pengine/test10/remote-unclean2.summary -@@ -6,9 +6,8 @@ Online: [ rhel7-auto1 rhel7-auto2 rhel7-auto3 ] - shooter (stonith:fence_xvm): Started rhel7-auto2 - rhel7-auto4 (ocf::pacemaker:remote): FAILED rhel7-auto1 - -- notice: Fencing rhel7-auto4: node is unclean - Transition Summary: -- * Fence (reboot) rhel7-auto4 -+ * Fence (reboot) rhel7-auto4 'remote connection is unrecoverable' - * Recover rhel7-auto4 (Started rhel7-auto1) - - Executing cluster transition: -diff --git a/pengine/test10/start-then-stop-with-unfence.scores b/pengine/test10/start-then-stop-with-unfence.scores -index a53e9f2..d353bef 100644 ---- a/pengine/test10/start-then-stop-with-unfence.scores -+++ b/pengine/test10/start-then-stop-with-unfence.scores -@@ -1,4 +1,3 @@ -- notice: Unfencing rhel7-node1.example.com: Required by ip1 - Allocation scores: - clone_color: jrummy-clone allocation score on rhel7-node1.example.com: 500 - clone_color: jrummy-clone allocation score on rhel7-node2.example.com: 500 -diff --git a/pengine/test10/start-then-stop-with-unfence.summary b/pengine/test10/start-then-stop-with-unfence.summary -index bb376f5..5e127f7 100644 ---- a/pengine/test10/start-then-stop-with-unfence.summary -+++ b/pengine/test10/start-then-stop-with-unfence.summary -@@ -10,9 +10,8 @@ Online: [ rhel7-node1.example.com rhel7-node2.example.com ] - Started: [ rhel7-node2.example.com ] - Stopped: [ rhel7-node1.example.com ] - -- notice: Unfencing rhel7-node1.example.com: Required by ip1 - Transition Summary: -- * Fence (on) rhel7-node1.example.com -+ * Fence (on) rhel7-node1.example.com 'Required by ip1' - * Start mpath-node1 (rhel7-node1.example.com) - * Move ip1 (Started rhel7-node2.example.com -> rhel7-node1.example.com) - * Start jrummy:1 (rhel7-node1.example.com) -diff --git a/pengine/test10/stonith-0.exp b/pengine/test10/stonith-0.exp -index 2a830b7..c409992 100644 ---- a/pengine/test10/stonith-0.exp -+++ b/pengine/test10/stonith-0.exp -@@ -1,153 +1,153 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -156,13 +156,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -171,22 +171,22 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -194,172 +194,172 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -368,72 +368,72 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ -+ -+ -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - -diff --git a/pengine/test10/stonith-0.scores b/pengine/test10/stonith-0.scores -index db3ddb9..7aab8cd 100644 ---- a/pengine/test10/stonith-0.scores -+++ b/pengine/test10/stonith-0.scores -@@ -1,5 +1,3 @@ -- notice: Fencing c001n03: node is unclean -- notice: Fencing c001n05: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on c001n02: 0 - clone_color: DoFencing allocation score on c001n03: 0 -diff --git a/pengine/test10/stonith-0.summary b/pengine/test10/stonith-0.summary -index 6983a90..1062520 100644 ---- a/pengine/test10/stonith-0.summary -+++ b/pengine/test10/stonith-0.summary -@@ -36,11 +36,9 @@ Online: [ c001n02 c001n04 c001n06 c001n07 c001n08 ] - ocf_msdummy:12 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n06 - ocf_msdummy:13 (ocf::heartbeat:/usr/lib/heartbeat/cts/OCFMSDummy): Slave c001n06 - -- notice: Fencing c001n03: node is unclean -- notice: Fencing c001n05: node is unclean - Transition Summary: -- * Fence (reboot) c001n05 -- * Fence (reboot) c001n03 -+ * Fence (reboot) c001n05 'ocf_192.168.100.183 failed there' -+ * Fence (reboot) c001n03 'ocf_192.168.100.183 failed there' - * Move ocf_192.168.100.181 (Started c001n03 -> c001n02) - * Move heartbeat_192.168.100.182 (Started c001n03 -> c001n02) - * Recover ocf_192.168.100.183 (Started c001n03 -> c001n02) -@@ -51,12 +49,12 @@ Executing cluster transition: - * Resource action: child_DoFencing:4 monitor=20000 on c001n08 - * Fencing c001n05 (reboot) - * Fencing c001n03 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: group-1_stop_0 - * Pseudo action: ocf_192.168.100.183_stop_0 - * Pseudo action: ocf_192.168.100.183_stop_0 - * Pseudo action: rsc_c001n05_stop_0 - * Pseudo action: rsc_c001n07_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: heartbeat_192.168.100.182_stop_0 - * Resource action: rsc_c001n05 start on c001n07 - * Resource action: rsc_c001n07 start on c001n07 -diff --git a/pengine/test10/stonith-1.exp b/pengine/test10/stonith-1.exp -index f7499ad..2ccd1ef 100644 ---- a/pengine/test10/stonith-1.exp -+++ b/pengine/test10/stonith-1.exp -@@ -1,22 +1,22 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -24,7 +24,7 @@ - - - -- -+ - - - -@@ -35,36 +35,36 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -73,48 +73,48 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -123,48 +123,48 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -173,63 +173,63 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -237,362 +237,361 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/stonith-1.scores b/pengine/test10/stonith-1.scores -index 196b9f5..7422355 100644 ---- a/pengine/test10/stonith-1.scores -+++ b/pengine/test10/stonith-1.scores -@@ -1,4 +1,3 @@ -- notice: Fencing sles-3: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on sles-1: 0 - clone_color: DoFencing allocation score on sles-2: 0 -diff --git a/pengine/test10/stonith-1.summary b/pengine/test10/stonith-1.summary -index 111bcbe..03c8a39 100644 ---- a/pengine/test10/stonith-1.summary -+++ b/pengine/test10/stonith-1.summary -@@ -27,9 +27,8 @@ Online: [ sles-1 sles-2 sles-4 ] - ocf_msdummy:6 (ocf::heartbeat:Stateful): Stopped - ocf_msdummy:7 (ocf::heartbeat:Stateful): Stopped - -- notice: Fencing sles-3: node is unclean - Transition Summary: -- * Fence (reboot) sles-3 -+ * Fence (reboot) sles-3 'peer is no longer part of the cluster' - * Start r192.168.100.183 (sles-1) - * Move migrator (Started sles-3 -> sles-4) - * Move rsc_sles-3 (Started sles-3 -> sles-4) -@@ -49,16 +48,14 @@ Executing cluster transition: - * Resource action: rsc_sles-4 monitor=5000 on sles-4 - * Pseudo action: DoFencing_stop_0 - * Fencing sles-3 (reboot) -- * Pseudo action: stonith_complete -- * Resource action: r192.168.100.183 start on sles-1 - * Pseudo action: migrator_stop_0 - * Pseudo action: rsc_sles-3_stop_0 - * Pseudo action: child_DoFencing:2_stop_0 - * Pseudo action: DoFencing_stopped_0 - * Pseudo action: DoFencing_start_0 - * Pseudo action: master_rsc_1_stop_0 -- * Pseudo action: group-1_running_0 -- * Resource action: r192.168.100.183 monitor=5000 on sles-1 -+ * Pseudo action: stonith_complete -+ * Resource action: r192.168.100.183 start on sles-1 - * Resource action: migrator start on sles-4 - * Resource action: rsc_sles-3 start on sles-4 - * Resource action: child_DoFencing:2 start on sles-4 -@@ -68,6 +65,8 @@ Executing cluster transition: - * Pseudo action: master_rsc_1_stopped_0 - * Pseudo action: master_rsc_1_start_0 - * Pseudo action: all_stopped -+ * Pseudo action: group-1_running_0 -+ * Resource action: r192.168.100.183 monitor=5000 on sles-1 - * Resource action: migrator monitor=10000 on sles-4 - * Resource action: rsc_sles-3 monitor=5000 on sles-4 - * Resource action: child_DoFencing:2 monitor=60000 on sles-4 -diff --git a/pengine/test10/stonith-2.exp b/pengine/test10/stonith-2.exp -index 1828377..e433e49 100644 ---- a/pengine/test10/stonith-2.exp -+++ b/pengine/test10/stonith-2.exp -@@ -1,64 +1,63 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/stonith-2.scores b/pengine/test10/stonith-2.scores -index 8c11561..e1dd011 100644 ---- a/pengine/test10/stonith-2.scores -+++ b/pengine/test10/stonith-2.scores -@@ -1,4 +1,3 @@ -- notice: Fencing sles-5: node is unclean - Allocation scores: - clone_color: DoFencing allocation score on sles-1: 0 - clone_color: DoFencing allocation score on sles-2: 0 -diff --git a/pengine/test10/stonith-2.summary b/pengine/test10/stonith-2.summary -index c8e1d70..2a6c218 100644 ---- a/pengine/test10/stonith-2.summary -+++ b/pengine/test10/stonith-2.summary -@@ -32,9 +32,8 @@ Online: [ sles-1 sles-2 sles-3 sles-4 sles-6 ] - ocf_msdummy:10 (ocf::heartbeat:Stateful): Slave sles-2 - ocf_msdummy:11 (ocf::heartbeat:Stateful): Slave sles-3 - -- notice: Fencing sles-5: node is unclean - Transition Summary: -- * Fence (reboot) sles-5 -+ * Fence (reboot) sles-5 'peer is no longer part of the cluster' - * Start rsc_sles-5 (sles-6) - - Executing cluster transition: -diff --git a/pengine/test10/stonith-3.scores b/pengine/test10/stonith-3.scores -index eef30fc..a1bd3d9 100644 ---- a/pengine/test10/stonith-3.scores -+++ b/pengine/test10/stonith-3.scores -@@ -1,4 +1,3 @@ -- notice: Fencing rh5node1: node is unclean - Allocation scores: - clone_color: clnStonith allocation score on rh5node1: 0 - clone_color: clnStonith allocation score on rh5node2: 0 -diff --git a/pengine/test10/stonith-3.summary b/pengine/test10/stonith-3.summary -index 015dd77..cc10cf5 100644 ---- a/pengine/test10/stonith-3.summary -+++ b/pengine/test10/stonith-3.summary -@@ -7,9 +7,8 @@ Online: [ rh5node2 ] - Clone Set: clnStonith [grpStonith] - Stopped: [ rh5node1 rh5node2 ] - -- notice: Fencing rh5node1: node is unclean - Transition Summary: -- * Fence (reboot) rh5node1 -+ * Fence (reboot) rh5node1 'node is unclean' - * Start prmIpPostgreSQLDB (rh5node2) - * Start prmStonith:0 (rh5node2) - -diff --git a/pengine/test10/stonith-4.exp b/pengine/test10/stonith-4.exp -index 298a636..d3e9e67 100644 ---- a/pengine/test10/stonith-4.exp -+++ b/pengine/test10/stonith-4.exp -@@ -1,81 +1,81 @@ - - - -- -- -- -- -- -- -+ -+ -+ - - - -- -+ - - - - - -- -- -- -- -- -- -+ -+ -+ - - - -- -+ - - - - - -- -- -+ -+ - -- -+ - - - -- -- -- -- -- -+ - - - -- -- -+ -+ - -- -+ - - - -- -+ -+ -+ -+ -+ - - - -- -- -- -+ -+ -+ -+ -+ -+ - - - -- -+ - - - - - -- -- -- -+ -+ -+ -+ -+ -+ - - - -- -+ - - - -diff --git a/pengine/test10/stonith-4.scores b/pengine/test10/stonith-4.scores -index 0bf1cf5..ac6fe0b 100644 ---- a/pengine/test10/stonith-4.scores -+++ b/pengine/test10/stonith-4.scores -@@ -1,7 +1,3 @@ -- notice: Fencing pcmk-10: node is unclean -- notice: Fencing pcmk-5: node is unclean -- notice: Fencing pcmk-7: node is unclean -- notice: Fencing pcmk-8: node is unclean - Allocation scores: - native_color: Fencing allocation score on pcmk-10: 0 - native_color: Fencing allocation score on pcmk-11: 0 -diff --git a/pengine/test10/stonith-4.summary b/pengine/test10/stonith-4.summary -index 0c9b5bd..76b1f44 100644 ---- a/pengine/test10/stonith-4.summary -+++ b/pengine/test10/stonith-4.summary -@@ -13,15 +13,11 @@ OFFLINE: [ pcmk-4 pcmk-6 ] - - Fencing (stonith:fence_xvm): Stopped - -- notice: Fencing pcmk-10: node is unclean -- notice: Fencing pcmk-5: node is unclean -- notice: Fencing pcmk-7: node is unclean -- notice: Fencing pcmk-8: node is unclean - Transition Summary: -- * Fence (reboot) pcmk-8 -- * Fence (reboot) pcmk-7 -- * Fence (reboot) pcmk-5 -- * Fence (reboot) pcmk-10 -+ * Fence (reboot) pcmk-10 'peer process is no longer available' -+ * Fence (reboot) pcmk-8 'peer has not been seen by the cluster' -+ * Fence (reboot) pcmk-7 'peer failed the pacemaker membership criteria' -+ * Fence (reboot) pcmk-5 'peer has not been seen by the cluster' - * Start Fencing (pcmk-1 - blocked) - - Executing cluster transition: -diff --git a/pengine/test10/stop-failure-no-quorum.exp b/pengine/test10/stop-failure-no-quorum.exp -index cf284bd..ddd383d 100644 ---- a/pengine/test10/stop-failure-no-quorum.exp -+++ b/pengine/test10/stop-failure-no-quorum.exp -@@ -1,82 +1,82 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/stop-failure-no-quorum.scores b/pengine/test10/stop-failure-no-quorum.scores -index c1893b6..df30423 100644 ---- a/pengine/test10/stop-failure-no-quorum.scores -+++ b/pengine/test10/stop-failure-no-quorum.scores -@@ -1,4 +1,3 @@ -- notice: Fencing pcmk-2: node is unclean - Allocation scores: - clone_color: clvm-clone allocation score on pcmk-1: 0 - clone_color: clvm-clone allocation score on pcmk-2: -INFINITY -diff --git a/pengine/test10/stop-failure-no-quorum.summary b/pengine/test10/stop-failure-no-quorum.summary -index d91edc1..4e337ab 100644 ---- a/pengine/test10/stop-failure-no-quorum.summary -+++ b/pengine/test10/stop-failure-no-quorum.summary -@@ -14,9 +14,8 @@ Online: [ pcmk-1 ] - ClusterIP (ocf::heartbeat:IPaddr2): Stopped - Fencing (stonith:fence_xvm): Stopped - -- notice: Fencing pcmk-2: node is unclean - Transition Summary: -- * Fence (reboot) pcmk-2 -+ * Fence (reboot) pcmk-2 'clvm:0 failed there' - * Start dlm:0 (pcmk-1 - blocked) - * Stop clvm:0 (pcmk-2) - * Start clvm:2 (pcmk-1 - blocked) -@@ -25,8 +24,8 @@ Transition Summary: - - Executing cluster transition: - * Fencing pcmk-2 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: clvm-clone_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: clvm_stop_0 - * Pseudo action: clvm-clone_stopped_0 - * Pseudo action: all_stopped -diff --git a/pengine/test10/stop-failure-with-fencing.exp b/pengine/test10/stop-failure-with-fencing.exp -index 3d8b34a..e7e7ca6 100644 ---- a/pengine/test10/stop-failure-with-fencing.exp -+++ b/pengine/test10/stop-failure-with-fencing.exp -@@ -1,49 +1,49 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -52,40 +52,40 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/stop-failure-with-fencing.scores b/pengine/test10/stop-failure-with-fencing.scores -index 0dc0813..cf62806 100644 ---- a/pengine/test10/stop-failure-with-fencing.scores -+++ b/pengine/test10/stop-failure-with-fencing.scores -@@ -1,4 +1,3 @@ -- notice: Fencing pcmk-2: node is unclean - Allocation scores: - clone_color: clvm-clone allocation score on pcmk-1: 0 - clone_color: clvm-clone allocation score on pcmk-2: -INFINITY -diff --git a/pengine/test10/stop-failure-with-fencing.summary b/pengine/test10/stop-failure-with-fencing.summary -index 79e6105..cdb39b0 100644 ---- a/pengine/test10/stop-failure-with-fencing.summary -+++ b/pengine/test10/stop-failure-with-fencing.summary -@@ -13,9 +13,8 @@ Online: [ pcmk-1 ] - ClusterIP (ocf::heartbeat:IPaddr2): Stopped - Fencing (stonith:fence_xvm): Stopped - -- notice: Fencing pcmk-2: node is unclean - Transition Summary: -- * Fence (reboot) pcmk-2 -+ * Fence (reboot) pcmk-2 'clvm:0 failed there' - * Start dlm:0 (pcmk-1 - blocked) - * Stop clvm:0 (pcmk-2) - * Start clvm:1 (pcmk-1 - blocked) -@@ -25,8 +24,8 @@ Transition Summary: - Executing cluster transition: - * Resource action: Fencing monitor on pcmk-1 - * Fencing pcmk-2 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: clvm-clone_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: clvm_stop_0 - * Pseudo action: clvm-clone_stopped_0 - * Pseudo action: all_stopped -diff --git a/pengine/test10/systemhealth1.scores b/pengine/test10/systemhealth1.scores -index c55f6e2..8a59654 100644 ---- a/pengine/test10/systemhealth1.scores -+++ b/pengine/test10/systemhealth1.scores -@@ -1,5 +1,3 @@ -- notice: Fencing hs21c: node is unclean -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealth1.summary b/pengine/test10/systemhealth1.summary -index 335b94a..351d508 100644 ---- a/pengine/test10/systemhealth1.summary -+++ b/pengine/test10/systemhealth1.summary -@@ -7,11 +7,9 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21c: node is unclean -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -- * Fence (reboot) hs21c -+ * Fence (reboot) hs21d 'node is unclean' -+ * Fence (reboot) hs21c 'node is unclean' - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealth2.scores b/pengine/test10/systemhealth2.scores -index b20bd49..8a59654 100644 ---- a/pengine/test10/systemhealth2.scores -+++ b/pengine/test10/systemhealth2.scores -@@ -1,4 +1,3 @@ -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealth2.summary b/pengine/test10/systemhealth2.summary -index b04d5a1..db68783 100644 ---- a/pengine/test10/systemhealth2.summary -+++ b/pengine/test10/systemhealth2.summary -@@ -7,9 +7,8 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -+ * Fence (reboot) hs21d 'node is unclean' - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealth3.scores b/pengine/test10/systemhealth3.scores -index b20bd49..8a59654 100644 ---- a/pengine/test10/systemhealth3.scores -+++ b/pengine/test10/systemhealth3.scores -@@ -1,4 +1,3 @@ -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealth3.summary b/pengine/test10/systemhealth3.summary -index b04d5a1..db68783 100644 ---- a/pengine/test10/systemhealth3.summary -+++ b/pengine/test10/systemhealth3.summary -@@ -7,9 +7,8 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -+ * Fence (reboot) hs21d 'node is unclean' - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealthm1.scores b/pengine/test10/systemhealthm1.scores -index c55f6e2..8a59654 100644 ---- a/pengine/test10/systemhealthm1.scores -+++ b/pengine/test10/systemhealthm1.scores -@@ -1,5 +1,3 @@ -- notice: Fencing hs21c: node is unclean -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthm1.summary b/pengine/test10/systemhealthm1.summary -index 335b94a..351d508 100644 ---- a/pengine/test10/systemhealthm1.summary -+++ b/pengine/test10/systemhealthm1.summary -@@ -7,11 +7,9 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21c: node is unclean -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -- * Fence (reboot) hs21c -+ * Fence (reboot) hs21d 'node is unclean' -+ * Fence (reboot) hs21c 'node is unclean' - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealthm2.scores b/pengine/test10/systemhealthm2.scores -index b20bd49..8a59654 100644 ---- a/pengine/test10/systemhealthm2.scores -+++ b/pengine/test10/systemhealthm2.scores -@@ -1,4 +1,3 @@ -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthm2.summary b/pengine/test10/systemhealthm2.summary -index b04d5a1..db68783 100644 ---- a/pengine/test10/systemhealthm2.summary -+++ b/pengine/test10/systemhealthm2.summary -@@ -7,9 +7,8 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -+ * Fence (reboot) hs21d 'node is unclean' - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealthm3.scores b/pengine/test10/systemhealthm3.scores -index 00b8d64..7e8804e 100644 ---- a/pengine/test10/systemhealthm3.scores -+++ b/pengine/test10/systemhealthm3.scores -@@ -1,4 +1,3 @@ -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: -INFINITY - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthm3.summary b/pengine/test10/systemhealthm3.summary -index 55d5cf7..836d8f5 100644 ---- a/pengine/test10/systemhealthm3.summary -+++ b/pengine/test10/systemhealthm3.summary -@@ -7,9 +7,8 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -+ * Fence (reboot) hs21d 'node is unclean' - - Executing cluster transition: - * Resource action: stonith-1 monitor on hs21c -diff --git a/pengine/test10/systemhealthn1.scores b/pengine/test10/systemhealthn1.scores -index c55f6e2..8a59654 100644 ---- a/pengine/test10/systemhealthn1.scores -+++ b/pengine/test10/systemhealthn1.scores -@@ -1,5 +1,3 @@ -- notice: Fencing hs21c: node is unclean -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthn1.summary b/pengine/test10/systemhealthn1.summary -index 335b94a..351d508 100644 ---- a/pengine/test10/systemhealthn1.summary -+++ b/pengine/test10/systemhealthn1.summary -@@ -7,11 +7,9 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21c: node is unclean -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -- * Fence (reboot) hs21c -+ * Fence (reboot) hs21d 'node is unclean' -+ * Fence (reboot) hs21c 'node is unclean' - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealthn2.scores b/pengine/test10/systemhealthn2.scores -index b20bd49..8a59654 100644 ---- a/pengine/test10/systemhealthn2.scores -+++ b/pengine/test10/systemhealthn2.scores -@@ -1,4 +1,3 @@ -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthn2.summary b/pengine/test10/systemhealthn2.summary -index b04d5a1..db68783 100644 ---- a/pengine/test10/systemhealthn2.summary -+++ b/pengine/test10/systemhealthn2.summary -@@ -7,9 +7,8 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -+ * Fence (reboot) hs21d 'node is unclean' - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealthn3.scores b/pengine/test10/systemhealthn3.scores -index b20bd49..8a59654 100644 ---- a/pengine/test10/systemhealthn3.scores -+++ b/pengine/test10/systemhealthn3.scores -@@ -1,4 +1,3 @@ -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthn3.summary b/pengine/test10/systemhealthn3.summary -index b04d5a1..db68783 100644 ---- a/pengine/test10/systemhealthn3.summary -+++ b/pengine/test10/systemhealthn3.summary -@@ -7,9 +7,8 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -+ * Fence (reboot) hs21d 'node is unclean' - * Start stonith-1 (hs21c) - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) -diff --git a/pengine/test10/systemhealtho1.scores b/pengine/test10/systemhealtho1.scores -index c55f6e2..8a59654 100644 ---- a/pengine/test10/systemhealtho1.scores -+++ b/pengine/test10/systemhealtho1.scores -@@ -1,5 +1,3 @@ -- notice: Fencing hs21c: node is unclean -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealtho1.summary b/pengine/test10/systemhealtho1.summary -index 335b94a..351d508 100644 ---- a/pengine/test10/systemhealtho1.summary -+++ b/pengine/test10/systemhealtho1.summary -@@ -7,11 +7,9 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21c: node is unclean -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -- * Fence (reboot) hs21c -+ * Fence (reboot) hs21d 'node is unclean' -+ * Fence (reboot) hs21c 'node is unclean' - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealtho2.scores b/pengine/test10/systemhealtho2.scores -index 00b8d64..7e8804e 100644 ---- a/pengine/test10/systemhealtho2.scores -+++ b/pengine/test10/systemhealtho2.scores -@@ -1,4 +1,3 @@ -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: -INFINITY - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealtho2.summary b/pengine/test10/systemhealtho2.summary -index 55d5cf7..836d8f5 100644 ---- a/pengine/test10/systemhealtho2.summary -+++ b/pengine/test10/systemhealtho2.summary -@@ -7,9 +7,8 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -+ * Fence (reboot) hs21d 'node is unclean' - - Executing cluster transition: - * Resource action: stonith-1 monitor on hs21c -diff --git a/pengine/test10/systemhealtho3.scores b/pengine/test10/systemhealtho3.scores -index 00b8d64..7e8804e 100644 ---- a/pengine/test10/systemhealtho3.scores -+++ b/pengine/test10/systemhealtho3.scores -@@ -1,4 +1,3 @@ -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: -INFINITY - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealtho3.summary b/pengine/test10/systemhealtho3.summary -index 55d5cf7..836d8f5 100644 ---- a/pengine/test10/systemhealtho3.summary -+++ b/pengine/test10/systemhealtho3.summary -@@ -7,9 +7,8 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -+ * Fence (reboot) hs21d 'node is unclean' - - Executing cluster transition: - * Resource action: stonith-1 monitor on hs21c -diff --git a/pengine/test10/systemhealthp1.scores b/pengine/test10/systemhealthp1.scores -index c55f6e2..8a59654 100644 ---- a/pengine/test10/systemhealthp1.scores -+++ b/pengine/test10/systemhealthp1.scores -@@ -1,5 +1,3 @@ -- notice: Fencing hs21c: node is unclean -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 100 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthp1.summary b/pengine/test10/systemhealthp1.summary -index 335b94a..351d508 100644 ---- a/pengine/test10/systemhealthp1.summary -+++ b/pengine/test10/systemhealthp1.summary -@@ -7,11 +7,9 @@ Node hs21d (737318c6-0f92-4592-9754-45967d45aff7): UNCLEAN (offline) - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21c: node is unclean -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -- * Fence (reboot) hs21c -+ * Fence (reboot) hs21d 'node is unclean' -+ * Fence (reboot) hs21c 'node is unclean' - - Executing cluster transition: - * Fencing hs21d (reboot) -diff --git a/pengine/test10/systemhealthp2.scores b/pengine/test10/systemhealthp2.scores -index 7ca75bf..20a08f2 100644 ---- a/pengine/test10/systemhealthp2.scores -+++ b/pengine/test10/systemhealthp2.scores -@@ -1,4 +1,3 @@ -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: 0 - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthp2.summary b/pengine/test10/systemhealthp2.summary -index 6c44a74..36d9675 100644 ---- a/pengine/test10/systemhealthp2.summary -+++ b/pengine/test10/systemhealthp2.summary -@@ -7,9 +7,8 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -+ * Fence (reboot) hs21d 'node is unclean' - * Start apache_1 (hs21c) - * Start nfs_1 (hs21c) - -diff --git a/pengine/test10/systemhealthp3.scores b/pengine/test10/systemhealthp3.scores -index 00b8d64..7e8804e 100644 ---- a/pengine/test10/systemhealthp3.scores -+++ b/pengine/test10/systemhealthp3.scores -@@ -1,4 +1,3 @@ -- notice: Fencing hs21d: node is unclean - Allocation scores: - native_color: apache_1 allocation score on hs21c: -INFINITY - native_color: apache_1 allocation score on hs21d: 0 -diff --git a/pengine/test10/systemhealthp3.summary b/pengine/test10/systemhealthp3.summary -index 55d5cf7..836d8f5 100644 ---- a/pengine/test10/systemhealthp3.summary -+++ b/pengine/test10/systemhealthp3.summary -@@ -7,9 +7,8 @@ Online: [ hs21c ] - apache_1 (ocf::heartbeat:apache): Stopped - nfs_1 (ocf::heartbeat:Filesystem): Stopped - -- notice: Fencing hs21d: node is unclean - Transition Summary: -- * Fence (reboot) hs21d -+ * Fence (reboot) hs21d 'node is unclean' - - Executing cluster transition: - * Resource action: stonith-1 monitor on hs21c -diff --git a/pengine/test10/ticket-clone-21.exp b/pengine/test10/ticket-clone-21.exp -index 23266d4..bc25bf2 100644 ---- a/pengine/test10/ticket-clone-21.exp -+++ b/pengine/test10/ticket-clone-21.exp -@@ -1,137 +1,136 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -+ -+ -+ - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - -- -- -- -- -- -- -- -- -- - -- -+ - - -- -+ - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/ticket-clone-21.scores b/pengine/test10/ticket-clone-21.scores -index e0fc0d8..89e2d0f 100644 ---- a/pengine/test10/ticket-clone-21.scores -+++ b/pengine/test10/ticket-clone-21.scores -@@ -1,5 +1,3 @@ -- notice: Fencing node1: node is unclean -- notice: Fencing node2: node is unclean - Allocation scores: - clone_color: clone1 allocation score on node1: 0 - clone_color: clone1 allocation score on node2: 0 -diff --git a/pengine/test10/ticket-clone-21.summary b/pengine/test10/ticket-clone-21.summary -index 13d2887..ce5335f 100644 ---- a/pengine/test10/ticket-clone-21.summary -+++ b/pengine/test10/ticket-clone-21.summary -@@ -6,11 +6,9 @@ Online: [ node1 node2 ] - Clone Set: clone1 [rsc1] - Started: [ node1 node2 ] - -- notice: Fencing node1: node is unclean -- notice: Fencing node2: node is unclean - Transition Summary: -- * Fence (reboot) node2 -- * Fence (reboot) node1 -+ * Fence (reboot) node2 'deadman ticket was lost' -+ * Fence (reboot) node1 'deadman ticket was lost' - * Stop rsc_stonith (node1) - * Stop rsc1:0 (node1) - * Stop rsc1:1 (node2) -@@ -19,8 +17,8 @@ Executing cluster transition: - * Fencing node1 (reboot) - * Pseudo action: rsc_stonith_stop_0 - * Fencing node2 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: clone1_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: rsc1:1_stop_0 - * Pseudo action: rsc1:0_stop_0 - * Pseudo action: clone1_stopped_0 -diff --git a/pengine/test10/ticket-clone-9.exp b/pengine/test10/ticket-clone-9.exp -index 23266d4..bc25bf2 100644 ---- a/pengine/test10/ticket-clone-9.exp -+++ b/pengine/test10/ticket-clone-9.exp -@@ -1,137 +1,136 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -+ -+ -+ - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - -- -- -- -- -- -- -- -- -- - -- -+ - - -- -+ - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/ticket-clone-9.scores b/pengine/test10/ticket-clone-9.scores -index e0fc0d8..89e2d0f 100644 ---- a/pengine/test10/ticket-clone-9.scores -+++ b/pengine/test10/ticket-clone-9.scores -@@ -1,5 +1,3 @@ -- notice: Fencing node1: node is unclean -- notice: Fencing node2: node is unclean - Allocation scores: - clone_color: clone1 allocation score on node1: 0 - clone_color: clone1 allocation score on node2: 0 -diff --git a/pengine/test10/ticket-clone-9.summary b/pengine/test10/ticket-clone-9.summary -index 13d2887..ce5335f 100644 ---- a/pengine/test10/ticket-clone-9.summary -+++ b/pengine/test10/ticket-clone-9.summary -@@ -6,11 +6,9 @@ Online: [ node1 node2 ] - Clone Set: clone1 [rsc1] - Started: [ node1 node2 ] - -- notice: Fencing node1: node is unclean -- notice: Fencing node2: node is unclean - Transition Summary: -- * Fence (reboot) node2 -- * Fence (reboot) node1 -+ * Fence (reboot) node2 'deadman ticket was lost' -+ * Fence (reboot) node1 'deadman ticket was lost' - * Stop rsc_stonith (node1) - * Stop rsc1:0 (node1) - * Stop rsc1:1 (node2) -@@ -19,8 +17,8 @@ Executing cluster transition: - * Fencing node1 (reboot) - * Pseudo action: rsc_stonith_stop_0 - * Fencing node2 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: clone1_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: rsc1:1_stop_0 - * Pseudo action: rsc1:0_stop_0 - * Pseudo action: clone1_stopped_0 -diff --git a/pengine/test10/ticket-group-21.exp b/pengine/test10/ticket-group-21.exp -index 82b3fdb..4a51d5f 100644 ---- a/pengine/test10/ticket-group-21.exp -+++ b/pengine/test10/ticket-group-21.exp -@@ -1,107 +1,106 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/ticket-group-21.scores b/pengine/test10/ticket-group-21.scores -index 8f01379..e5b8167 100644 ---- a/pengine/test10/ticket-group-21.scores -+++ b/pengine/test10/ticket-group-21.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node2: node is unclean - Allocation scores: - group_color: group1 allocation score on node1: 0 - group_color: group1 allocation score on node2: 0 -diff --git a/pengine/test10/ticket-group-21.summary b/pengine/test10/ticket-group-21.summary -index 80fb33f..385e44f 100644 ---- a/pengine/test10/ticket-group-21.summary -+++ b/pengine/test10/ticket-group-21.summary -@@ -7,17 +7,16 @@ Online: [ node1 node2 ] - rsc1 (ocf::pacemaker:Dummy): Started node2 - rsc2 (ocf::pacemaker:Dummy): Started node2 - -- notice: Fencing node2: node is unclean - Transition Summary: -- * Fence (reboot) node2 -+ * Fence (reboot) node2 'deadman ticket was lost' - * Stop rsc1 (node2) - * Stop rsc2 (node2) - - Executing cluster transition: - * Fencing node2 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: group1_stop_0 - * Pseudo action: rsc2_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: rsc1_stop_0 - * Pseudo action: all_stopped - * Pseudo action: group1_stopped_0 -diff --git a/pengine/test10/ticket-group-9.exp b/pengine/test10/ticket-group-9.exp -index 82b3fdb..4a51d5f 100644 ---- a/pengine/test10/ticket-group-9.exp -+++ b/pengine/test10/ticket-group-9.exp -@@ -1,107 +1,106 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/ticket-group-9.scores b/pengine/test10/ticket-group-9.scores -index 8f01379..e5b8167 100644 ---- a/pengine/test10/ticket-group-9.scores -+++ b/pengine/test10/ticket-group-9.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node2: node is unclean - Allocation scores: - group_color: group1 allocation score on node1: 0 - group_color: group1 allocation score on node2: 0 -diff --git a/pengine/test10/ticket-group-9.summary b/pengine/test10/ticket-group-9.summary -index 80fb33f..385e44f 100644 ---- a/pengine/test10/ticket-group-9.summary -+++ b/pengine/test10/ticket-group-9.summary -@@ -7,17 +7,16 @@ Online: [ node1 node2 ] - rsc1 (ocf::pacemaker:Dummy): Started node2 - rsc2 (ocf::pacemaker:Dummy): Started node2 - -- notice: Fencing node2: node is unclean - Transition Summary: -- * Fence (reboot) node2 -+ * Fence (reboot) node2 'deadman ticket was lost' - * Stop rsc1 (node2) - * Stop rsc2 (node2) - - Executing cluster transition: - * Fencing node2 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: group1_stop_0 - * Pseudo action: rsc2_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: rsc1_stop_0 - * Pseudo action: all_stopped - * Pseudo action: group1_stopped_0 -diff --git a/pengine/test10/ticket-master-21.exp b/pengine/test10/ticket-master-21.exp -index 71e57be..76114c0 100644 ---- a/pengine/test10/ticket-master-21.exp -+++ b/pengine/test10/ticket-master-21.exp -@@ -1,20 +1,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -22,55 +22,55 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -78,74 +78,73 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/ticket-master-21.scores b/pengine/test10/ticket-master-21.scores -index 89eac5e..dc79d67 100644 ---- a/pengine/test10/ticket-master-21.scores -+++ b/pengine/test10/ticket-master-21.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node1: node is unclean - Allocation scores: - clone_color: ms1 allocation score on node1: 0 - clone_color: ms1 allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-21.summary b/pengine/test10/ticket-master-21.summary -index dc2f5db..8fc50eb 100644 ---- a/pengine/test10/ticket-master-21.summary -+++ b/pengine/test10/ticket-master-21.summary -@@ -7,9 +7,8 @@ Online: [ node1 node2 ] - Masters: [ node1 ] - Slaves: [ node2 ] - -- notice: Fencing node1: node is unclean - Transition Summary: -- * Fence (reboot) node1 -+ * Fence (reboot) node1 'deadman ticket was lost' - * Move rsc_stonith (Started node1 -> node2) - * Demote rsc1:0 (Master -> Stopped node1) - -@@ -17,11 +16,11 @@ Executing cluster transition: - * Pseudo action: rsc_stonith_stop_0 - * Pseudo action: ms1_demote_0 - * Fencing node1 (reboot) -- * Pseudo action: stonith_complete - * Resource action: rsc_stonith start on node2 - * Pseudo action: rsc1:1_demote_0 - * Pseudo action: ms1_demoted_0 - * Pseudo action: ms1_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: rsc1:1_stop_0 - * Pseudo action: ms1_stopped_0 - * Pseudo action: all_stopped -diff --git a/pengine/test10/ticket-master-9.exp b/pengine/test10/ticket-master-9.exp -index 71e57be..76114c0 100644 ---- a/pengine/test10/ticket-master-9.exp -+++ b/pengine/test10/ticket-master-9.exp -@@ -1,20 +1,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -22,55 +22,55 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -78,74 +78,73 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/ticket-master-9.scores b/pengine/test10/ticket-master-9.scores -index 89eac5e..dc79d67 100644 ---- a/pengine/test10/ticket-master-9.scores -+++ b/pengine/test10/ticket-master-9.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node1: node is unclean - Allocation scores: - clone_color: ms1 allocation score on node1: 0 - clone_color: ms1 allocation score on node2: 0 -diff --git a/pengine/test10/ticket-master-9.summary b/pengine/test10/ticket-master-9.summary -index dc2f5db..8fc50eb 100644 ---- a/pengine/test10/ticket-master-9.summary -+++ b/pengine/test10/ticket-master-9.summary -@@ -7,9 +7,8 @@ Online: [ node1 node2 ] - Masters: [ node1 ] - Slaves: [ node2 ] - -- notice: Fencing node1: node is unclean - Transition Summary: -- * Fence (reboot) node1 -+ * Fence (reboot) node1 'deadman ticket was lost' - * Move rsc_stonith (Started node1 -> node2) - * Demote rsc1:0 (Master -> Stopped node1) - -@@ -17,11 +16,11 @@ Executing cluster transition: - * Pseudo action: rsc_stonith_stop_0 - * Pseudo action: ms1_demote_0 - * Fencing node1 (reboot) -- * Pseudo action: stonith_complete - * Resource action: rsc_stonith start on node2 - * Pseudo action: rsc1:1_demote_0 - * Pseudo action: ms1_demoted_0 - * Pseudo action: ms1_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: rsc1:1_stop_0 - * Pseudo action: ms1_stopped_0 - * Pseudo action: all_stopped -diff --git a/pengine/test10/ticket-primitive-21.exp b/pengine/test10/ticket-primitive-21.exp -index bbd949f..7895296 100644 ---- a/pengine/test10/ticket-primitive-21.exp -+++ b/pengine/test10/ticket-primitive-21.exp -@@ -1,53 +1,52 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/ticket-primitive-21.scores b/pengine/test10/ticket-primitive-21.scores -index d1147ca..ed3f3cd 100644 ---- a/pengine/test10/ticket-primitive-21.scores -+++ b/pengine/test10/ticket-primitive-21.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node2: node is unclean - Allocation scores: - native_color: rsc1 allocation score on node1: -INFINITY - native_color: rsc1 allocation score on node2: -INFINITY -diff --git a/pengine/test10/ticket-primitive-21.summary b/pengine/test10/ticket-primitive-21.summary -index d3d02fe..9b91672 100644 ---- a/pengine/test10/ticket-primitive-21.summary -+++ b/pengine/test10/ticket-primitive-21.summary -@@ -5,15 +5,14 @@ Online: [ node1 node2 ] - rsc_stonith (stonith:null): Started node1 - rsc1 (ocf::pacemaker:Dummy): Started node2 - -- notice: Fencing node2: node is unclean - Transition Summary: -- * Fence (reboot) node2 -+ * Fence (reboot) node2 'deadman ticket was lost' - * Stop rsc1 (node2) - - Executing cluster transition: - * Fencing node2 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: rsc1_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: all_stopped - - Revised cluster status: -diff --git a/pengine/test10/ticket-primitive-9.exp b/pengine/test10/ticket-primitive-9.exp -index bbd949f..7895296 100644 ---- a/pengine/test10/ticket-primitive-9.exp -+++ b/pengine/test10/ticket-primitive-9.exp -@@ -1,53 +1,52 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -diff --git a/pengine/test10/ticket-primitive-9.scores b/pengine/test10/ticket-primitive-9.scores -index d1147ca..ed3f3cd 100644 ---- a/pengine/test10/ticket-primitive-9.scores -+++ b/pengine/test10/ticket-primitive-9.scores -@@ -1,4 +1,3 @@ -- notice: Fencing node2: node is unclean - Allocation scores: - native_color: rsc1 allocation score on node1: -INFINITY - native_color: rsc1 allocation score on node2: -INFINITY -diff --git a/pengine/test10/ticket-primitive-9.summary b/pengine/test10/ticket-primitive-9.summary -index d3d02fe..9b91672 100644 ---- a/pengine/test10/ticket-primitive-9.summary -+++ b/pengine/test10/ticket-primitive-9.summary -@@ -5,15 +5,14 @@ Online: [ node1 node2 ] - rsc_stonith (stonith:null): Started node1 - rsc1 (ocf::pacemaker:Dummy): Started node2 - -- notice: Fencing node2: node is unclean - Transition Summary: -- * Fence (reboot) node2 -+ * Fence (reboot) node2 'deadman ticket was lost' - * Stop rsc1 (node2) - - Executing cluster transition: - * Fencing node2 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: rsc1_stop_0 -+ * Pseudo action: stonith_complete - * Pseudo action: all_stopped - - Revised cluster status: -diff --git a/pengine/test10/unfence-definition.scores b/pengine/test10/unfence-definition.scores -index 3d5aa9f..d9fa9bb 100644 ---- a/pengine/test10/unfence-definition.scores -+++ b/pengine/test10/unfence-definition.scores -@@ -1,6 +1,3 @@ -- notice: Fencing virt-4: node is unclean -- notice: Unfencing virt-1: Device definition changed -- notice: Unfencing virt-3: Required by dlm:2 - Allocation scores: - clone_color: clvmd-clone allocation score on virt-1: 0 - clone_color: clvmd-clone allocation score on virt-2: 0 -diff --git a/pengine/test10/unfence-definition.summary b/pengine/test10/unfence-definition.summary -index a31cc20..d776228 100644 ---- a/pengine/test10/unfence-definition.summary -+++ b/pengine/test10/unfence-definition.summary -@@ -11,13 +11,10 @@ Online: [ virt-1 virt-2 virt-3 ] - Started: [ virt-1 ] - Stopped: [ virt-2 virt-3 virt-4 ] - -- notice: Unfencing virt-1: Device definition changed -- notice: Unfencing virt-3: Required by dlm:2 -- notice: Fencing virt-4: node is unclean - Transition Summary: -- * Fence (reboot) virt-4 -- * Fence (on) virt-3 -- * Fence (on) virt-1 -+ * Fence (reboot) virt-4 'node is unclean' -+ * Fence (on) virt-3 'Required by dlm:2' -+ * Fence (on) virt-1 'Device definition changed' - * Restart fencing (Started virt-1) - * Restart dlm:0 (Started virt-1) - * Start dlm:2 (virt-3) -diff --git a/pengine/test10/unfence-parameters.scores b/pengine/test10/unfence-parameters.scores -index 5089910..d9fa9bb 100644 ---- a/pengine/test10/unfence-parameters.scores -+++ b/pengine/test10/unfence-parameters.scores -@@ -1,7 +1,3 @@ -- notice: Fencing virt-4: node is unclean -- notice: Unfencing virt-1: Device parameters changed (reload) -- notice: Unfencing virt-2: Device parameters changed (reload) -- notice: Unfencing virt-3: Device parameters changed (reload) - Allocation scores: - clone_color: clvmd-clone allocation score on virt-1: 0 - clone_color: clvmd-clone allocation score on virt-2: 0 -diff --git a/pengine/test10/unfence-parameters.summary b/pengine/test10/unfence-parameters.summary -index 8effc63..e71eafc 100644 ---- a/pengine/test10/unfence-parameters.summary -+++ b/pengine/test10/unfence-parameters.summary -@@ -11,15 +11,11 @@ Online: [ virt-1 virt-2 virt-3 ] - Started: [ virt-1 ] - Stopped: [ virt-2 virt-3 virt-4 ] - -- notice: Unfencing virt-1: Device parameters changed (reload) -- notice: Unfencing virt-2: Device parameters changed (reload) -- notice: Unfencing virt-3: Device parameters changed (reload) -- notice: Fencing virt-4: node is unclean - Transition Summary: -- * Fence (reboot) virt-4 -- * Fence (on) virt-3 -- * Fence (on) virt-2 -- * Fence (on) virt-1 -+ * Fence (reboot) virt-4 'node is unclean' -+ * Fence (on) virt-3 'Device parameters changed (reload)' -+ * Fence (on) virt-2 'Device parameters changed (reload)' -+ * Fence (on) virt-1 'Device parameters changed (reload)' - * Restart fencing (Started virt-1) - * Restart dlm:0 (Started virt-1) - * Restart dlm:1 (Started virt-2) -diff --git a/pengine/test10/unfence-startup.scores b/pengine/test10/unfence-startup.scores -index 0172a9d..d9fa9bb 100644 ---- a/pengine/test10/unfence-startup.scores -+++ b/pengine/test10/unfence-startup.scores -@@ -1,5 +1,3 @@ -- notice: Fencing virt-4: node is unclean -- notice: Unfencing virt-3: Required by dlm:2 - Allocation scores: - clone_color: clvmd-clone allocation score on virt-1: 0 - clone_color: clvmd-clone allocation score on virt-2: 0 -diff --git a/pengine/test10/unfence-startup.summary b/pengine/test10/unfence-startup.summary -index 6a49f42..276358c 100644 ---- a/pengine/test10/unfence-startup.summary -+++ b/pengine/test10/unfence-startup.summary -@@ -11,11 +11,9 @@ Online: [ virt-1 virt-2 virt-3 ] - Started: [ virt-1 ] - Stopped: [ virt-2 virt-3 virt-4 ] - -- notice: Unfencing virt-3: Required by dlm:2 -- notice: Fencing virt-4: node is unclean - Transition Summary: -- * Fence (reboot) virt-4 -- * Fence (on) virt-3 -+ * Fence (reboot) virt-4 'node is unclean' -+ * Fence (on) virt-3 'Required by dlm:2' - * Start dlm:2 (virt-3) - * Start clvmd:1 (virt-2) - * Start clvmd:2 (virt-3) -diff --git a/pengine/test10/unrunnable-1.exp b/pengine/test10/unrunnable-1.exp -index 56fb4c0..d8f3b69 100644 ---- a/pengine/test10/unrunnable-1.exp -+++ b/pengine/test10/unrunnable-1.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -10,7 +10,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,7 +46,7 @@ - - - -- -+ - - - -@@ -55,7 +55,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -73,7 +73,7 @@ - - - -- -+ - - - -@@ -82,7 +82,7 @@ - - - -- -+ - - - -@@ -91,7 +91,7 @@ - - - -- -+ - - - -@@ -100,19 +100,19 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-fail1.scores b/pengine/test10/whitebox-fail1.scores -index 02192a9..4fbbf29 100644 ---- a/pengine/test10/whitebox-fail1.scores -+++ b/pengine/test10/whitebox-fail1.scores -@@ -1,4 +1,3 @@ -- notice: Fencing lxc1: guest is unclean - Allocation scores: - clone_color: M-clone allocation score on 18node1: 0 - clone_color: M-clone allocation score on 18node2: 0 -diff --git a/pengine/test10/whitebox-fail1.summary b/pengine/test10/whitebox-fail1.summary -index c7b5e19..14b1ee2 100644 ---- a/pengine/test10/whitebox-fail1.summary -+++ b/pengine/test10/whitebox-fail1.summary -@@ -13,9 +13,8 @@ Containers: [ lxc2:container2 ] - C (ocf::pacemaker:Dummy): Started lxc2 - D (ocf::pacemaker:Dummy): Started 18node1 - -- notice: Fencing lxc1: guest is unclean - Transition Summary: -- * Fence (reboot) lxc1 (resource: container1) -+ * Fence (reboot) lxc1 (resource: container1) 'guest is unclean' - * Recover container1 (Started 18node2) - * Recover M:4 (Started lxc1) - * Recover B (Started lxc1) -diff --git a/pengine/test10/whitebox-fail2.scores b/pengine/test10/whitebox-fail2.scores -index 02192a9..4fbbf29 100644 ---- a/pengine/test10/whitebox-fail2.scores -+++ b/pengine/test10/whitebox-fail2.scores -@@ -1,4 +1,3 @@ -- notice: Fencing lxc1: guest is unclean - Allocation scores: - clone_color: M-clone allocation score on 18node1: 0 - clone_color: M-clone allocation score on 18node2: 0 -diff --git a/pengine/test10/whitebox-fail2.summary b/pengine/test10/whitebox-fail2.summary -index 73e968e..06364fb 100644 ---- a/pengine/test10/whitebox-fail2.summary -+++ b/pengine/test10/whitebox-fail2.summary -@@ -13,9 +13,8 @@ Containers: [ lxc2:container2 ] - C (ocf::pacemaker:Dummy): Started lxc2 - D (ocf::pacemaker:Dummy): Started 18node1 - -- notice: Fencing lxc1: guest is unclean - Transition Summary: -- * Fence (reboot) lxc1 (resource: container1) -+ * Fence (reboot) lxc1 (resource: container1) 'guest is unclean' - * Recover container1 (Started 18node2) - * Recover M:4 (Started lxc1) - * Recover B (Started lxc1) -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.exp b/pengine/test10/whitebox-imply-stop-on-fence.exp -index e9390bf..9beb51d 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.exp -+++ b/pengine/test10/whitebox-imply-stop-on-fence.exp -@@ -1,36 +1,36 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -38,277 +38,277 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -320,89 +320,89 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -417,7 +417,7 @@ - - - -- -+ - - - -@@ -432,32 +432,19 @@ - - - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - - -@@ -467,43 +454,56 @@ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.scores b/pengine/test10/whitebox-imply-stop-on-fence.scores -index 5c3e325..e50f077 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.scores -+++ b/pengine/test10/whitebox-imply-stop-on-fence.scores -@@ -1,6 +1,3 @@ -- notice: Fencing kiff-01: node is unclean -- notice: Fencing lxc-01_kiff-01: guest is unclean -- notice: Fencing lxc-02_kiff-01: guest is unclean - Allocation scores: - clone_color: clvmd-clone allocation score on kiff-01: 0 - clone_color: clvmd-clone allocation score on kiff-02: 0 -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.summary b/pengine/test10/whitebox-imply-stop-on-fence.summary -index a74bb72..9dab410 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.summary -+++ b/pengine/test10/whitebox-imply-stop-on-fence.summary -@@ -24,13 +24,10 @@ Containers: [ lxc-01_kiff-02:R-lxc-01_kiff-02 lxc-02_kiff-02:R-lxc-02_kiff-02 ] - R-lxc-02_kiff-02 (ocf::heartbeat:VirtualDomain): Started kiff-02 - vm-fs (ocf::heartbeat:Filesystem): FAILED lxc-01_kiff-01 - -- notice: Fencing kiff-01: node is unclean -- notice: Fencing lxc-01_kiff-01: guest is unclean -- notice: Fencing lxc-02_kiff-01: guest is unclean - Transition Summary: -- * Fence (reboot) lxc-02_kiff-01 (resource: R-lxc-02_kiff-01) -- * Fence (reboot) lxc-01_kiff-01 (resource: R-lxc-01_kiff-01) -- * Fence (reboot) kiff-01 -+ * Fence (reboot) lxc-02_kiff-01 (resource: R-lxc-02_kiff-01) 'guest is unclean' -+ * Fence (reboot) lxc-01_kiff-01 (resource: R-lxc-01_kiff-01) 'guest is unclean' -+ * Fence (reboot) kiff-01 'peer is no longer part of the cluster' - * Move fence-kiff-02 (Started kiff-01 -> kiff-02) - * Stop dlm:0 (kiff-01) - * Stop clvmd:0 (kiff-01) -diff --git a/pengine/test10/whitebox-ms-ordering.scores b/pengine/test10/whitebox-ms-ordering.scores -index 72e6d25..f0e51f5 100644 ---- a/pengine/test10/whitebox-ms-ordering.scores -+++ b/pengine/test10/whitebox-ms-ordering.scores -@@ -1,5 +1,3 @@ -- notice: Fencing lxc1: guest is unclean -- notice: Fencing lxc2: guest is unclean - Allocation scores: - clone_color: lxc-ms-master allocation score on 18node1: 0 - clone_color: lxc-ms-master allocation score on 18node2: 0 -diff --git a/pengine/test10/whitebox-ms-ordering.summary b/pengine/test10/whitebox-ms-ordering.summary -index 41436f8..d8ff62c 100644 ---- a/pengine/test10/whitebox-ms-ordering.summary -+++ b/pengine/test10/whitebox-ms-ordering.summary -@@ -8,11 +8,9 @@ Online: [ 18node1 18node2 18node3 ] - Master/Slave Set: lxc-ms-master [lxc-ms] - Stopped: [ 18node1 18node2 18node3 ] - -- notice: Fencing lxc1: guest is unclean -- notice: Fencing lxc2: guest is unclean - Transition Summary: -- * Fence (reboot) lxc2 (resource: container2) -- * Fence (reboot) lxc1 (resource: container1) -+ * Fence (reboot) lxc2 (resource: container2) 'guest is unclean' -+ * Fence (reboot) lxc1 (resource: container1) 'guest is unclean' - * Start container1 (18node1) - * Start container2 (18node1) - * Recover lxc-ms:0 (Master lxc1) -diff --git a/pengine/test10/whitebox-unexpectedly-running.scores b/pengine/test10/whitebox-unexpectedly-running.scores -index eb8a6f9..7f8a1d9 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.scores -+++ b/pengine/test10/whitebox-unexpectedly-running.scores -@@ -1,4 +1,3 @@ -- notice: Fencing remote1: guest is unclean - Allocation scores: - native_color: FAKE allocation score on 18builder: 0 - native_color: FAKE allocation score on remote1: -INFINITY -diff --git a/pengine/test10/whitebox-unexpectedly-running.summary b/pengine/test10/whitebox-unexpectedly-running.summary -index 3888aa2..0e69d3c 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.summary -+++ b/pengine/test10/whitebox-unexpectedly-running.summary -@@ -4,9 +4,8 @@ Online: [ 18builder ] - - FAKE (ocf::pacemaker:Dummy): FAILED 18builder - -- notice: Fencing remote1: guest is unclean - Transition Summary: -- * Fence (reboot) remote1 (resource: FAKE) -+ * Fence (reboot) remote1 (resource: FAKE) 'guest is unclean' - * Recover FAKE (Started 18builder) - * Start remote1 (18builder) - --- -1.8.3.1 - - -From 681d290ca57849b72c2d3eac03ff74cbb63e2df8 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 31 Jul 2017 14:25:54 +1000 -Subject: [PATCH 05/12] Log: PE: Attempt to indicate why resources are changing - state - ---- - include/crm/pengine/internal.h | 7 +- - lib/pengine/utils.c | 81 +++++++++++++++++--- - pengine/native.c | 89 ++++++++++++---------- - pengine/test10/10-a-then-bm-b-move-a-clone.summary | 2 +- - .../11-a-then-bm-b-move-a-clone-starting.summary | 2 +- - pengine/test10/1484.summary | 2 +- - pengine/test10/1494.summary | 2 +- - .../test10/5-am-then-bm-a-not-migratable.summary | 2 +- - pengine/test10/594.summary | 4 +- - pengine/test10/662.summary | 2 +- - .../7-migrate-group-one-unmigratable.summary | 2 +- - pengine/test10/764.summary | 10 +-- - pengine/test10/797.summary | 12 +-- - pengine/test10/829.summary | 2 +- - .../9-am-then-bm-b-migrating-a-stopping.summary | 4 +- - pengine/test10/994-2.summary | 2 +- - pengine/test10/anti-colocation-order.summary | 4 +- - pengine/test10/asymmetrical-order-move.summary | 2 +- - pengine/test10/bug-1572-1.summary | 8 +- - pengine/test10/bug-1572-2.summary | 8 +- - pengine/test10/bug-1573.summary | 2 +- - pengine/test10/bug-1718.summary | 4 +- - pengine/test10/bug-5014-A-stop-B-started.summary | 2 +- - .../test10/bug-5014-A-stopped-B-stopped.summary | 2 +- - .../test10/bug-5014-CLONE-A-stop-B-started.summary | 2 +- - .../test10/bug-5014-CthenAthenB-C-stopped.summary | 4 +- - .../bug-5014-GROUP-A-stopped-B-started.summary | 2 +- - .../bug-5014-GROUP-A-stopped-B-stopped.summary | 2 +- - .../bug-5014-ordered-set-symmetrical-false.summary | 2 +- - .../bug-5014-ordered-set-symmetrical-true.summary | 4 +- - pengine/test10/bug-5028-bottom.summary | 2 +- - pengine/test10/bug-5140-require-all-false.summary | 6 +- - pengine/test10/bug-5186-partial-migrate.summary | 6 +- - pengine/test10/bug-cl-5170.summary | 4 +- - pengine/test10/bug-cl-5212.summary | 8 +- - pengine/test10/bug-cl-5247.summary | 2 +- - pengine/test10/bug-lf-2153.summary | 4 +- - pengine/test10/bug-lf-2171.summary | 8 +- - pengine/test10/bug-lf-2361.summary | 4 +- - pengine/test10/bug-lf-2422.summary | 24 +++--- - pengine/test10/bug-lf-2453.summary | 10 +-- - pengine/test10/bug-lf-2508.summary | 12 +-- - pengine/test10/bug-lf-2551.summary | 12 +-- - pengine/test10/bug-lf-2574.summary | 2 +- - pengine/test10/bug-lf-2619.summary | 2 +- - pengine/test10/bug-n-385265.summary | 2 +- - pengine/test10/bug-rh-1097457.summary | 8 +- - pengine/test10/bug-suse-707150.summary | 2 +- - .../test10/bundle-order-partial-start-2.summary | 4 +- - pengine/test10/bundle-order-partial-stop.summary | 34 ++++----- - pengine/test10/bundle-order-startup-clone.summary | 12 +-- - pengine/test10/bundle-order-stop-clone.summary | 8 +- - pengine/test10/bundle-order-stop.summary | 34 ++++----- - pengine/test10/clone-anon-dup.summary | 2 +- - pengine/test10/clone-anon-failcount.summary | 6 +- - pengine/test10/clone-interleave-2.summary | 4 +- - pengine/test10/clone-interleave-3.summary | 4 +- - pengine/test10/clone-max-zero.summary | 12 +-- - pengine/test10/clone-require-all-2.summary | 8 +- - pengine/test10/clone-require-all-3.summary | 8 +- - pengine/test10/clone-require-all-4.summary | 2 +- - pengine/test10/clone-require-all-6.summary | 4 +- - .../test10/clone_min_interleave_start_one.summary | 12 +-- - .../test10/clone_min_interleave_stop_one.summary | 2 +- - .../test10/clone_min_interleave_stop_two.summary | 16 ++-- - pengine/test10/clone_min_start_one.summary | 2 +- - pengine/test10/clone_min_stop_all.summary | 8 +- - pengine/test10/clone_min_stop_one.summary | 2 +- - pengine/test10/clone_min_stop_two.summary | 6 +- - pengine/test10/cloned-group-stop.summary | 32 ++++---- - pengine/test10/cloned-group.summary | 6 +- - pengine/test10/cloned_start_one.summary | 4 +- - pengine/test10/cloned_start_two.summary | 2 +- - pengine/test10/cloned_stop_one.summary | 4 +- - pengine/test10/cloned_stop_two.summary | 8 +- - .../colocation_constraint_stops_slave.summary | 2 +- - pengine/test10/complex_enforce_colo.summary | 70 ++++++++--------- - pengine/test10/container-2.summary | 2 +- - pengine/test10/container-3.summary | 2 +- - pengine/test10/container-group-2.summary | 2 +- - pengine/test10/enforce-colo1.summary | 8 +- - pengine/test10/group-fail.summary | 4 +- - pengine/test10/group-unmanaged-stopped.summary | 2 +- - pengine/test10/group10.summary | 4 +- - pengine/test10/group11.summary | 4 +- - pengine/test10/group13.summary | 2 +- - pengine/test10/group14.summary | 32 ++++---- - pengine/test10/group9.summary | 2 +- - pengine/test10/inc10.summary | 4 +- - pengine/test10/inc12.summary | 36 ++++----- - pengine/test10/inc2.summary | 2 +- - pengine/test10/inc3.summary | 2 +- - pengine/test10/inc4.summary | 2 +- - pengine/test10/inc6.summary | 4 +- - pengine/test10/inc9.summary | 6 +- - pengine/test10/interleave-pseudo-stop.summary | 8 +- - pengine/test10/interleave-restart.summary | 4 +- - pengine/test10/interleave-stop.summary | 8 +- - pengine/test10/master-7.summary | 4 +- - pengine/test10/master-8.summary | 2 +- - pengine/test10/master-9.summary | 24 +++--- - pengine/test10/master-asymmetrical-order.summary | 2 +- - pengine/test10/master-failed-demote-2.summary | 2 +- - pengine/test10/master-failed-demote.summary | 2 +- - pengine/test10/master-pseudo.summary | 2 +- - pengine/test10/master-stop.summary | 2 +- - pengine/test10/migrate-5.summary | 2 +- - pengine/test10/migrate-both-vms.summary | 20 ++--- - pengine/test10/migrate-fencing.summary | 4 +- - pengine/test10/migrate-shutdown.summary | 16 ++-- - pengine/test10/migrate-stop-complex.summary | 4 +- - pengine/test10/migrate-stop-start-complex.summary | 2 +- - pengine/test10/migrate-stop.summary | 2 +- - pengine/test10/monitor-recovery.summary | 2 +- - pengine/test10/notify-0.summary | 2 +- - pengine/test10/notify-1.summary | 2 +- - pengine/test10/notify-2.summary | 2 +- - pengine/test10/notify-3.summary | 2 +- - pengine/test10/novell-252693.summary | 10 +-- - pengine/test10/one-or-more-1.summary | 6 +- - pengine/test10/one-or-more-3.summary | 2 +- - pengine/test10/one-or-more-6.summary | 2 +- - pengine/test10/one-or-more-7.summary | 2 +- - pengine/test10/order-mandatory.summary | 4 +- - pengine/test10/order-required.summary | 4 +- - pengine/test10/order-wrong-kind.summary | 2 +- - pengine/test10/order7.summary | 2 +- - .../test10/order_constraint_stops_master.summary | 4 +- - .../test10/order_constraint_stops_slave.summary | 4 +- - pengine/test10/ordered-set-basic-startup.summary | 6 +- - pengine/test10/ordered-set-natural.summary | 12 +-- - pengine/test10/probe-2.summary | 12 +-- - pengine/test10/quorum-2.summary | 2 +- - pengine/test10/quorum-3.summary | 6 +- - pengine/test10/rec-node-10.summary | 6 +- - pengine/test10/rec-node-13.summary | 2 +- - pengine/test10/rec-node-8.summary | 4 +- - pengine/test10/rec-node-9.summary | 4 +- - pengine/test10/rec-rsc-9.summary | 4 +- - pengine/test10/remote-disable.summary | 2 +- - pengine/test10/remote-orphaned.summary | 4 +- - pengine/test10/remote-recover-all.summary | 10 +-- - pengine/test10/remote-recover-connection.summary | 4 +- - pengine/test10/remote-recover-no-resources.summary | 8 +- - pengine/test10/remote-recover-unknown.summary | 10 +-- - pengine/test10/remote-recovery.summary | 4 +- - pengine/test10/rsc-sets-clone.summary | 2 +- - pengine/test10/stop-failure-no-quorum.summary | 10 +-- - pengine/test10/stop-failure-with-fencing.summary | 10 +-- - pengine/test10/ticket-clone-14.summary | 4 +- - pengine/test10/ticket-clone-15.summary | 4 +- - pengine/test10/ticket-clone-17.summary | 4 +- - pengine/test10/ticket-clone-18.summary | 4 +- - pengine/test10/ticket-clone-20.summary | 4 +- - pengine/test10/ticket-clone-21.summary | 4 +- - pengine/test10/ticket-clone-23.summary | 4 +- - pengine/test10/ticket-clone-3.summary | 4 +- - pengine/test10/ticket-clone-6.summary | 4 +- - pengine/test10/ticket-clone-9.summary | 4 +- - pengine/test10/ticket-group-14.summary | 4 +- - pengine/test10/ticket-group-15.summary | 4 +- - pengine/test10/ticket-group-17.summary | 4 +- - pengine/test10/ticket-group-18.summary | 4 +- - pengine/test10/ticket-group-20.summary | 4 +- - pengine/test10/ticket-group-21.summary | 4 +- - pengine/test10/ticket-group-23.summary | 4 +- - pengine/test10/ticket-group-3.summary | 4 +- - pengine/test10/ticket-group-6.summary | 4 +- - pengine/test10/ticket-group-9.summary | 4 +- - pengine/test10/ticket-master-14.summary | 2 +- - pengine/test10/ticket-master-15.summary | 2 +- - pengine/test10/ticket-master-3.summary | 2 +- - pengine/test10/ticket-rsc-sets-10.summary | 8 +- - pengine/test10/ticket-rsc-sets-12.summary | 4 +- - pengine/test10/ticket-rsc-sets-13.summary | 8 +- - pengine/test10/ticket-rsc-sets-14.summary | 8 +- - pengine/test10/ticket-rsc-sets-3.summary | 8 +- - pengine/test10/ticket-rsc-sets-7.summary | 8 +- - pengine/test10/ticket-rsc-sets-9.summary | 8 +- - pengine/test10/unfence-definition.summary | 4 +- - pengine/test10/unfence-parameters.summary | 6 +- - pengine/test10/unmanaged-block-restart.summary | 4 +- - pengine/test10/unmanaged-stop-1.summary | 2 +- - pengine/test10/unmanaged-stop-2.summary | 2 +- - pengine/test10/unmanaged-stop-3.summary | 2 +- - pengine/test10/unmanaged-stop-4.summary | 2 +- - pengine/test10/unrunnable-1.summary | 18 ++--- - pengine/test10/unrunnable-2.summary | 2 +- - pengine/test10/utilization-order2.summary | 2 +- - pengine/test10/utilization-order4.summary | 8 +- - pengine/test10/whitebox-fail1.summary | 2 +- - .../test10/whitebox-imply-stop-on-fence.summary | 6 +- - pengine/test10/whitebox-move.summary | 4 +- - pengine/test10/whitebox-ms-ordering-move.summary | 2 +- - pengine/test10/whitebox-orphan-ms.summary | 8 +- - pengine/test10/whitebox-orphaned.summary | 6 +- - pengine/test10/whitebox-stop.summary | 6 +- - 197 files changed, 704 insertions(+), 633 deletions(-) - -diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h -index 99e2055..5db90aa 100644 ---- a/include/crm/pengine/internal.h -+++ b/include/crm/pengine/internal.h -@@ -277,8 +277,11 @@ action_t *pe_fence_op(node_t * node, const char *op, bool optional, const char * - void trigger_unfencing( - resource_t * rsc, node_t *node, const char *reason, action_t *dependency, pe_working_set_t * data_set); - --void pe_action_required_worker(pe_action_t *action, const char *reason, const char *function, long line); --#define pe_action_required(action, reason) pe_action_required_worker(action, reason, __FUNCTION__, __LINE__) -+void pe_action_set_reason(pe_action_t *action, const char *reason, bool overwrite); -+void pe_action_set_flag_reason(const char *function, long line, pe_action_t *action, pe_action_t *reason, const char *text, enum pe_action_flags flags, bool overwrite); -+ -+#define pe_action_required(action, reason, text) pe_action_set_flag_reason(__FUNCTION__, __LINE__, action, reason, text, pe_action_optional, FALSE) -+#define pe_action_implies(action, reason, flag) pe_action_set_flag_reason(__FUNCTION__, __LINE__, action, reason, NULL, flag, FALSE) - - void set_bit_recursive(resource_t * rsc, unsigned long long flag); - void clear_bit_recursive(resource_t * rsc, unsigned long long flag); -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index a53be6a..bc34323 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -500,7 +503,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_clear_action_bit(action, pe_action_runnable); -+ pe_action_set_flag_reason(__FUNCTION__, __LINE__, action, NULL, "node availability", pe_action_runnable, TRUE); - - } else if (is_not_set(rsc->flags, pe_rsc_managed) - && g_hash_table_lookup(action->meta, XML_LRM_ATTR_INTERVAL) == NULL) { -@@ -527,6 +530,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_set_action_bit(action, pe_action_runnable); - #if 0 - /* -@@ -540,20 +543,21 @@ custom_action(resource_t * rsc, char *key, const char *task, - #endif - } else if (is_set(data_set->flags, pe_flag_have_quorum) == FALSE - && data_set->no_quorum_policy == no_quorum_stop) { -- pe_clear_action_bit(action, pe_action_runnable); -+ pe_action_set_flag_reason(__FUNCTION__, __LINE__, action, NULL, "no quorum", pe_action_runnable, TRUE); - crm_debug("%s\t%s (cancelled : quorum)", action->node->details->uname, action->uuid); - - } else if (is_set(data_set->flags, pe_flag_have_quorum) == FALSE - && data_set->no_quorum_policy == no_quorum_freeze) { - pe_rsc_trace(rsc, "Check resource is already active: %s %s %s %s", rsc->id, action->uuid, role2text(rsc->next_role), role2text(rsc->role)); - if (rsc->fns->active(rsc, TRUE) == FALSE || rsc->next_role > rsc->role) { -- pe_clear_action_bit(action, pe_action_runnable); -+ pe_action_set_flag_reason(__FUNCTION__, __LINE__, action, NULL, "quorum freeze", pe_action_runnable, TRUE); - pe_rsc_debug(rsc, "%s\t%s (cancelled : quorum freeze)", - action->node->details->uname, action->uuid); - } - - } else { - pe_rsc_trace(rsc, "Action %s is runnable", action->uuid); -+ free(action->reason); action->reason = NULL; - pe_set_action_bit(action, pe_action_runnable); - } - -@@ -1880,7 +1882,7 @@ rsc_action_digest(resource_t * rsc, const char *task, const char *key, - data->digest_secure_calc = calculate_operation_digest(data->params_secure, op_version); - } - -- if(crm_element_value(xml_op, XML_LRM_ATTR_RESTART_DIGEST) != NULL) { -+ if(xml_op && crm_element_value(xml_op, XML_LRM_ATTR_RESTART_DIGEST) != NULL) { - data->params_restart = copy_xml(data->params_all); - if (restart_list) { - filter_parameters(data->params_restart, restart_list, TRUE); -@@ -2108,7 +2110,7 @@ pe_fence_op(node_t * node, const char *op, bool optional, const char *reason, pe - } - - if(optional == FALSE && pe_can_fence(data_set, node)) { -- pe_action_required(stonith_op, reason); -+ pe_action_required(stonith_op, NULL, reason); - } else if(reason && stonith_op->reason == NULL) { - stonith_op->reason = strdup(reason); - } -@@ -2187,12 +2189,73 @@ add_tag_ref(GHashTable * tags, const char * tag_name, const char * obj_ref) - return TRUE; - } - --void pe_action_required_worker(pe_action_t *action, const char *reason, const char *function, long line) -+void pe_action_set_flag_reason(const char *function, long line, -+ pe_action_t *action, pe_action_t *reason, const char *text, -+ enum pe_action_flags flags, bool overwrite) -+{ -+ bool unset = FALSE; -+ bool update = FALSE; -+ const char *change = NULL; -+ -+ if(is_set(flags, pe_action_runnable)) { -+ unset = TRUE; -+ change = "unrunnable"; -+ } else if(is_set(flags, pe_action_optional)) { -+ unset = TRUE; -+ change = "required"; -+ } else if(is_set(flags, pe_action_failure_is_fatal)) { -+ change = "fatally failed"; -+ } else if(is_set(flags, pe_action_migrate_runnable)) { -+ unset = TRUE; -+ overwrite = TRUE; -+ change = "unrunnable"; -+ } else if(is_set(flags, pe_action_dangle)) { -+ change = "dangling"; -+ } else if(is_set(flags, pe_action_requires_any)) { -+ change = "required"; -+ } else { -+ crm_err("Unknown flag change to %s by %s: 0x%.16x", flags, action->uuid, reason->uuid); -+ } -+ -+ if(unset) { -+ if(is_set(action->flags, flags)) { -+ action->flags = crm_clear_bit(function, line, action->uuid, action->flags, flags); -+ update = TRUE; -+ } -+ -+ } else { -+ if(is_not_set(action->flags, flags)) { -+ action->flags = crm_set_bit(function, line, action->uuid, action->flags, flags); -+ update = TRUE; -+ } -+ } -+ -+ if((change && update) || text) { -+ char *reason_text = NULL; -+ if(reason == NULL) { -+ pe_action_set_reason(action, text, overwrite); -+ -+ } else if(reason->rsc == NULL) { -+ reason_text = crm_strdup_printf("%s %s%c %s", change, reason->task, text?':':0, text?text:""); -+ } else { -+ reason_text = crm_strdup_printf("%s %s %s%c %s", change, reason->rsc->id, reason->task, text?':':0, text?text:"NA"); -+ } -+ -+ if(reason_text && action->rsc != reason->rsc) { -+ pe_action_set_reason(action, reason_text, overwrite); -+ } -+ free(reason_text); -+ } -+ } -+ -+void pe_action_set_reason(pe_action_t *action, const char *reason, bool overwrite) - { -- if(is_set(action->flags, pe_action_optional)) { -- action->flags = crm_clear_bit(function, line, action->uuid, action->flags, pe_action_optional); -- if(action->reason == NULL) { -+ if(action->reason == NULL || overwrite) { -+ free(action->reason); -+ if(reason) { - action->reason = strdup(reason); -+ } else { -+ action->reason = NULL; - } - } - } -diff --git a/pengine/native.c b/pengine/native.c -index 16c9d5a..63666fd 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -1886,8 +1886,9 @@ native_update_actions(action_t * first, action_t * then, node_t * node, enum pe_ - } else if (!(first->flags & pe_action_runnable)) { - /* prevent 'then' action from happening if 'first' is not runnable and - * 'then' has not yet occurred. */ -- pe_clear_action_bit(then, pe_action_runnable); -- pe_clear_action_bit(then, pe_action_optional); -+ pe_action_implies(then, first, pe_action_optional); -+ pe_action_implies(then, first, pe_action_runnable); -+ - pe_rsc_trace(then->rsc, "Unset optional and runnable on %s", then->uuid); - } else { - /* ignore... then is allowed to start/stop if it wants to. */ -@@ -1895,10 +1896,10 @@ native_update_actions(action_t * first, action_t * then, node_t * node, enum pe_ - } - - if (type & pe_order_implies_first) { -- if ((filter & pe_action_optional) && (flags & pe_action_optional) == 0) { -+ if (is_set(filter, pe_action_optional) && is_not_set(flags /* Should be then_flags? */, pe_action_optional)) { -+ // Needs is_set(first_flags, pe_action_optional) too? - pe_rsc_trace(first->rsc, "Unset optional on %s because of %s", first->uuid, then->uuid); -- -- pe_clear_action_bit(first, pe_action_optional); -+ pe_action_implies(first, then, pe_action_optional); - } - - if (is_set(flags, pe_action_migrate_runnable) && -@@ -1907,7 +1908,7 @@ native_update_actions(action_t * first, action_t * then, node_t * node, enum pe_ - - pe_rsc_trace(first->rsc, "Unset migrate runnable on %s because of %s", - first->uuid, then->uuid); -- pe_clear_action_bit(first, pe_action_migrate_runnable); -+ pe_action_implies(first, then, pe_action_migrate_runnable); - } - } - -@@ -1915,13 +1916,13 @@ native_update_actions(action_t * first, action_t * then, node_t * node, enum pe_ - if ((filter & pe_action_optional) && - ((then->flags & pe_action_optional) == FALSE) && - then->rsc && (then->rsc->role == RSC_ROLE_MASTER)) { -- pe_clear_action_bit(first, pe_action_optional); -+ pe_action_implies(first, then, pe_action_optional); - - if (is_set(first->flags, pe_action_migrate_runnable) && - is_set(then->flags, pe_action_migrate_runnable) == FALSE) { - - pe_rsc_trace(first->rsc, "Unset migrate runnable on %s because of %s", first->uuid, then->uuid); -- pe_clear_action_bit(first, pe_action_migrate_runnable); -+ pe_action_implies(first, then, pe_action_migrate_runnable); - } - pe_rsc_trace(then->rsc, "Unset optional on %s because of %s", first->uuid, then->uuid); - } -@@ -1934,13 +1935,12 @@ native_update_actions(action_t * first, action_t * then, node_t * node, enum pe_ - ((then->flags & pe_action_runnable) == FALSE)) { - - pe_rsc_trace(then->rsc, "Unset runnable on %s because %s is neither runnable or migratable", first->uuid, then->uuid); -- pe_clear_action_bit(first, pe_action_runnable); -+ pe_action_implies(first, then, pe_action_runnable); - } - - if ((then->flags & pe_action_optional) == 0) { -- - pe_rsc_trace(then->rsc, "Unset optional on %s because %s is not optional", first->uuid, then->uuid); -- pe_clear_action_bit(first, pe_action_optional); -+ pe_action_implies(first, then, pe_action_optional); - } - } - -@@ -1948,7 +1948,7 @@ native_update_actions(action_t * first, action_t * then, node_t * node, enum pe_ - && is_set(filter, pe_action_optional)) { - - if ((first->flags & pe_action_runnable) == FALSE) { -- pe_clear_action_bit(then, pe_action_migrate_runnable); -+ pe_action_implies(then, first, pe_action_migrate_runnable); - pe_clear_action_bit(then, pe_action_pseudo); - pe_rsc_trace(then->rsc, "Unset pseudo on %s because %s is not runnable", then->uuid, first->uuid); - } -@@ -1960,8 +1960,8 @@ native_update_actions(action_t * first, action_t * then, node_t * node, enum pe_ - && is_set(then->flags, pe_action_runnable) - && is_set(flags, pe_action_runnable) == FALSE) { - pe_rsc_trace(then->rsc, "Unset runnable on %s because of %s", then->uuid, first->uuid); -- pe_clear_action_bit(then, pe_action_runnable); -- pe_clear_action_bit(then, pe_action_migrate_runnable); -+ pe_action_implies(then, first, pe_action_runnable); -+ pe_action_implies(then, first, pe_action_migrate_runnable); - } - - if (is_set(type, pe_order_implies_then) -@@ -1972,7 +1972,7 @@ native_update_actions(action_t * first, action_t * then, node_t * node, enum pe_ - /* in this case, treat migrate_runnable as if first is optional */ - if (is_set(first->flags, pe_action_migrate_runnable) == FALSE) { - pe_rsc_trace(then->rsc, "Unset optional on %s because of %s", then->uuid, first->uuid); -- pe_clear_action_bit(then, pe_action_optional); -+ pe_action_implies(then, first, pe_action_optional); - } - } - -@@ -1996,14 +1996,14 @@ native_update_actions(action_t * first, action_t * then, node_t * node, enum pe_ - if (is_set(first->flags, pe_action_runnable) - || is_not_set(then->flags, pe_action_optional)) { - pe_rsc_trace(first->rsc, "Handling %s: %s -> %s", reason, first->uuid, then->uuid); -- pe_clear_action_bit(first, pe_action_optional); -+ pe_action_implies(first, then, pe_action_optional); - } - } - - if (reason && is_not_set(first->flags, pe_action_optional) - && is_not_set(first->flags, pe_action_runnable)) { - pe_rsc_trace(then->rsc, "Handling %s: %s -> %s", reason, first->uuid, then->uuid); -- pe_clear_action_bit(then, pe_action_runnable); -+ pe_action_implies(then, first, pe_action_runnable); - } - - if (reason && -@@ -2011,7 +2011,7 @@ native_update_actions(action_t * first, action_t * then, node_t * node, enum pe_ - is_set(first->flags, pe_action_migrate_runnable) && - is_not_set(then->flags, pe_action_migrate_runnable)) { - -- pe_clear_action_bit(first, pe_action_migrate_runnable); -+ pe_action_implies(first, then, pe_action_migrate_runnable); - } - - } -@@ -2090,6 +2090,7 @@ native_rsc_location(resource_t * rsc, rsc_to_node_t * constraint) - } else { - other_node = node_copy(node); - -+ pe_rsc_trace(rsc, "%s: %d (insert %d)", other_node->details->uname, other_node->weight, constraint->discover_mode); - g_hash_table_insert(rsc->allowed_nodes, (gpointer) other_node->details->id, other_node); - } - -@@ -2130,12 +2131,16 @@ native_expand(resource_t * rsc, pe_working_set_t * data_set) - } - } - --#define log_change(fmt, args...) do { \ -- if(terminal) { \ -- printf(" * "fmt"\n", ##args); \ -- } else { \ -- crm_notice(fmt, ##args); \ -- } \ -+#define log_change(a, fmt, args...) do { \ -+ if(a && a->reason && terminal) { \ -+ printf(" * "fmt" \tdue to %s\n", ##args, a->reason); \ -+ } else if(a && a->reason) { \ -+ crm_notice(fmt" \tdue to %s", ##args, a->reason); \ -+ } else if(terminal) { \ -+ printf(" * "fmt"\n", ##args); \ -+ } else { \ -+ crm_notice(fmt, ##args); \ -+ } \ - } while(0) - - #define STOP_SANITY_ASSERT(lineno) do { \ -@@ -2264,34 +2269,34 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - CRM_CHECK(next != NULL,); - if (next == NULL) { - } else if (migrate_to && is_set(migrate_to->flags, pe_action_runnable) && current) { -- log_change("Migrate %s\t(%s %s -> %s)", -+ log_change(start, "Migrate %s\t(%s %s -> %s)", - rsc->id, role2text(rsc->role), current->details->uname, - next->details->uname); - - } else if (is_set(rsc->flags, pe_rsc_reload)) { -- log_change("Reload %s\t(%s %s)", rsc->id, role2text(rsc->role), next->details->uname); -+ log_change(start, "Reload %s\t(%s %s)", rsc->id, role2text(rsc->role), next->details->uname); - - } else if (start == NULL || is_set(start->flags, pe_action_optional)) { - pe_rsc_info(rsc, "Leave %s\t(%s %s)", rsc->id, role2text(rsc->role), - next->details->uname); - - } else if (start && is_set(start->flags, pe_action_runnable) == FALSE) { -- log_change("Stop %s\t(%s %s%s)", rsc->id, role2text(rsc->role), current?current->details->uname:"N/A", -+ log_change(start, "Stop %s\t(%s %s%s)", rsc->id, role2text(rsc->role), current?current->details->uname:"N/A", - stop && is_not_set(stop->flags, pe_action_runnable) ? " - blocked" : ""); - STOP_SANITY_ASSERT(__LINE__); - - } else if (moving && current) { -- log_change("%s %s\t(%s %s -> %s)", -+ log_change(stop, "%s %s\t(%s %s -> %s)", - is_set(rsc->flags, pe_rsc_failed) ? "Recover" : "Move ", - rsc->id, role2text(rsc->role), - current->details->uname, next->details->uname); - - } else if (is_set(rsc->flags, pe_rsc_failed)) { -- log_change("Recover %s\t(%s %s)", rsc->id, role2text(rsc->role), next->details->uname); -+ log_change(stop, "Recover %s\t(%s %s)", rsc->id, role2text(rsc->role), next->details->uname); - STOP_SANITY_ASSERT(__LINE__); - - } else { -- log_change("Restart %s\t(%s %s)", rsc->id, role2text(rsc->role), next->details->uname); -+ log_change(start, "Restart %s\t(%s %s)", rsc->id, role2text(rsc->role), next->details->uname); - /* STOP_SANITY_ASSERT(__LINE__); False positive for migrate-fail-7 */ - } - -@@ -2308,7 +2313,7 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - allowed = TRUE; - } - -- log_change("Demote %s\t(%s -> %s %s%s)", -+ log_change(demote, "Demote %s\t(%s -> %s %s%s)", - rsc->id, - role2text(rsc->role), - role2text(rsc->next_role), -@@ -2317,16 +2322,16 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - if (stop != NULL && is_not_set(stop->flags, pe_action_optional) - && rsc->next_role > RSC_ROLE_STOPPED && moving == FALSE) { - if (is_set(rsc->flags, pe_rsc_failed)) { -- log_change("Recover %s\t(%s %s)", -+ log_change(stop, "Recover %s\t(%s %s)", - rsc->id, role2text(rsc->role), next->details->uname); - STOP_SANITY_ASSERT(__LINE__); - - } else if (is_set(rsc->flags, pe_rsc_reload)) { -- log_change("Reload %s\t(%s %s)", rsc->id, role2text(rsc->role), -+ log_change(start, "Reload %s\t(%s %s)", rsc->id, role2text(rsc->role), - next->details->uname); - - } else { -- log_change("Restart %s\t(%s %s)", -+ log_change(start, "Restart %s\t(%s %s)", - rsc->id, role2text(rsc->next_role), next->details->uname); - STOP_SANITY_ASSERT(__LINE__); - } -@@ -2355,15 +2360,15 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - allowed = TRUE; - } - -- log_change("Stop %s\t(%s%s)", rsc->id, node->details->uname, -- allowed ? "" : " - blocked"); -+ log_change(start, "Stop %s\t(%s%s) %s", rsc->id, node->details->uname, -+ allowed ? "" : " - blocked", stop->reason?stop->reason:""); - } - - free(key); - } - - if (moving) { -- log_change("Move %s\t(%s %s -> %s)", -+ log_change(stop, "Move %s\t(%s %s -> %s)", - rsc->id, role2text(rsc->next_role), current->details->uname, - next->details->uname); - STOP_SANITY_ASSERT(__LINE__); -@@ -2378,7 +2383,7 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - - CRM_CHECK(next != NULL,); - if (next != NULL) { -- log_change("Start %s\t(%s%s)", rsc->id, next->details->uname, -+ log_change(start, "Start %s\t(%s%s)", rsc->id, next->details->uname, - allowed ? "" : " - blocked"); - } - if (allowed == FALSE) { -@@ -2393,17 +2398,17 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - if (stop != NULL && is_not_set(stop->flags, pe_action_optional) - && rsc->role > RSC_ROLE_STOPPED) { - if (is_set(rsc->flags, pe_rsc_failed)) { -- log_change("Recover %s\t(%s %s)", -+ log_change(stop, "Recover %s\t(%s %s)", - rsc->id, role2text(rsc->role), next?next->details->uname:NULL); - STOP_SANITY_ASSERT(__LINE__); - - } else if (is_set(rsc->flags, pe_rsc_reload)) { -- log_change("Reload %s\t(%s %s)", rsc->id, role2text(rsc->role), -+ log_change(start, "Reload %s\t(%s %s)", rsc->id, role2text(rsc->role), - next?next->details->uname:NULL); - STOP_SANITY_ASSERT(__LINE__); - - } else { -- log_change("Restart %s\t(%s %s)", -+ log_change(start, "Restart %s\t(%s %s)", - rsc->id, role2text(rsc->role), next?next->details->uname:NULL); - STOP_SANITY_ASSERT(__LINE__); - } -@@ -2413,7 +2418,7 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - allowed = TRUE; - } - -- log_change("Promote %s\t(%s -> %s %s%s)", -+ log_change(promote, "Promote %s\t(%s -> %s %s%s)", - rsc->id, - role2text(rsc->role), - role2text(rsc->next_role), -diff --git a/pengine/test10/10-a-then-bm-b-move-a-clone.summary b/pengine/test10/10-a-then-bm-b-move-a-clone.summary -index 07b4d2b..b39963f 100644 ---- a/pengine/test10/10-a-then-bm-b-move-a-clone.summary -+++ b/pengine/test10/10-a-then-bm-b-move-a-clone.summary -@@ -8,7 +8,7 @@ Online: [ f20node2 ] - vm (ocf::heartbeat:Dummy): Started f20node1 - - Transition Summary: -- * Stop myclone:1 (f20node1) -+ * Stop myclone:1 (f20node1) due to node availability - * Migrate vm (Started f20node1 -> f20node2) - - Executing cluster transition: -diff --git a/pengine/test10/11-a-then-bm-b-move-a-clone-starting.summary b/pengine/test10/11-a-then-bm-b-move-a-clone-starting.summary -index 4b8e1d0..498cd2b 100644 ---- a/pengine/test10/11-a-then-bm-b-move-a-clone-starting.summary -+++ b/pengine/test10/11-a-then-bm-b-move-a-clone-starting.summary -@@ -10,7 +10,7 @@ Online: [ f20node2 ] - - Transition Summary: - * Move myclone:0 (Started f20node1 -> f20node2) -- * Move vm (Started f20node1 -> f20node2) -+ * Move vm (Started f20node1 -> f20node2) due to unrunnable myclone-clone stop - - Executing cluster transition: - * Resource action: myclone monitor on f20node2 -diff --git a/pengine/test10/1484.summary b/pengine/test10/1484.summary -index 52cfebe..4b5d8a6 100644 ---- a/pengine/test10/1484.summary -+++ b/pengine/test10/1484.summary -@@ -6,7 +6,7 @@ OFFLINE: [ hb3 ] - the-future-of-vaj (ocf::heartbeat:Dummy): FAILED hb2 - - Transition Summary: -- * Stop the-future-of-vaj (hb2) -+ * Stop the-future-of-vaj (hb2) due to node availability - - Executing cluster transition: - * Resource action: the-future-of-vaj stop on hb2 -diff --git a/pengine/test10/1494.summary b/pengine/test10/1494.summary -index 29c3cd6..be13fdd 100644 ---- a/pengine/test10/1494.summary -+++ b/pengine/test10/1494.summary -@@ -8,7 +8,7 @@ OFFLINE: [ hb3 ] - ima_rscid:1 (ocf::heartbeat:Dummy): Started hb2 - - Transition Summary: -- * Stop ima_rscid:0 (hb1) -+ * Stop ima_rscid:0 (hb1) due to node availability - - Executing cluster transition: - * Pseudo action: ima_cloneid_stop_0 -diff --git a/pengine/test10/5-am-then-bm-a-not-migratable.summary b/pengine/test10/5-am-then-bm-a-not-migratable.summary -index bc73910..7e95dbb 100644 ---- a/pengine/test10/5-am-then-bm-a-not-migratable.summary -+++ b/pengine/test10/5-am-then-bm-a-not-migratable.summary -@@ -7,7 +7,7 @@ Online: [ 18node1 18node2 18node3 ] - - Transition Summary: - * Move A (Started 18node1 -> 18node2) -- * Move B (Started 18node2 -> 18node1) -+ * Move B (Started 18node2 -> 18node1) due to unrunnable A stop - - Executing cluster transition: - * Resource action: B stop on 18node2 -diff --git a/pengine/test10/594.summary b/pengine/test10/594.summary -index 44ed113..de1d179 100644 ---- a/pengine/test10/594.summary -+++ b/pengine/test10/594.summary -@@ -17,8 +17,8 @@ Transition Summary: - * Fence (reboot) hadev3 'peer is no longer part of the cluster' - * Move DcIPaddr (Started hadev2 -> hadev1) - * Move rsc_hadev2 (Started hadev2 -> hadev1) -- * Stop child_DoFencing:0 (hadev2) -- * Stop child_DoFencing:2 (hadev1) -+ * Stop child_DoFencing:0 (hadev2) due to node availability -+ * Stop child_DoFencing:2 (hadev1) due to node availability - - Executing cluster transition: - * Resource action: DcIPaddr monitor on hadev1 -diff --git a/pengine/test10/662.summary b/pengine/test10/662.summary -index 1726f35..4a9d911 100644 ---- a/pengine/test10/662.summary -+++ b/pengine/test10/662.summary -@@ -16,7 +16,7 @@ Online: [ c001n02 c001n03 c001n04 c001n09 ] - Transition Summary: - * Shutdown c001n02 - * Move rsc_c001n02 (Started c001n02 -> c001n03) -- * Stop child_DoFencing:0 (c001n02) -+ * Stop child_DoFencing:0 (c001n02) due to node availability - - Executing cluster transition: - * Resource action: DcIPaddr monitor on c001n04 -diff --git a/pengine/test10/7-migrate-group-one-unmigratable.summary b/pengine/test10/7-migrate-group-one-unmigratable.summary -index ab9bcd9..cf1b370 100644 ---- a/pengine/test10/7-migrate-group-one-unmigratable.summary -+++ b/pengine/test10/7-migrate-group-one-unmigratable.summary -@@ -10,7 +10,7 @@ Online: [ 18node1 18node2 18node3 ] - Transition Summary: - * Migrate A (Started 18node1 -> 18node2) - * Move B (Started 18node1 -> 18node2) -- * Move C (Started 18node1 -> 18node2) -+ * Move C (Started 18node1 -> 18node2) due to unrunnable B stop - - Executing cluster transition: - * Pseudo action: thegroup_stop_0 -diff --git a/pengine/test10/764.summary b/pengine/test10/764.summary -index 2d43eae..0d5c612 100644 ---- a/pengine/test10/764.summary -+++ b/pengine/test10/764.summary -@@ -15,11 +15,11 @@ OFFLINE: [ posic042 posic044 ] - child_DoFencing:3 (stonith:ssh): Stopped - - Transition Summary: -- * Stop DcIPaddr (Started posic043) -- * Stop rsc_posic041 (Started posic041) -- * Stop rsc_posic042 (Started posic041) -- * Stop rsc_posic043 (Started posic043) -- * Stop rsc_posic044 (Started posic041) -+ * Stop DcIPaddr (Started posic043) due to no quorum -+ * Stop rsc_posic041 (Started posic041) due to no quorum -+ * Stop rsc_posic042 (Started posic041) due to no quorum -+ * Stop rsc_posic043 (Started posic043) due to no quorum -+ * Stop rsc_posic044 (Started posic041) due to no quorum - - Executing cluster transition: - * Resource action: DcIPaddr monitor on posic041 -diff --git a/pengine/test10/797.summary b/pengine/test10/797.summary -index 3184eae..9e94003 100644 ---- a/pengine/test10/797.summary -+++ b/pengine/test10/797.summary -@@ -16,13 +16,13 @@ Online: [ c001n01 c001n02 c001n03 ] - - Transition Summary: - * Shutdown c001n02 -- * Stop DcIPaddr (Started c001n03) -- * Stop rsc_c001n08 (Started c001n02) -- * Stop rsc_c001n02 (Started c001n02) -- * Stop rsc_c001n03 (Started c001n03) -- * Stop rsc_c001n01 (Started c001n01) -+ * Stop DcIPaddr (Started c001n03) due to no quorum -+ * Stop rsc_c001n08 (Started c001n02) due to no quorum -+ * Stop rsc_c001n02 (Started c001n02) due to no quorum -+ * Stop rsc_c001n03 (Started c001n03) due to no quorum -+ * Stop rsc_c001n01 (Started c001n01) due to no quorum - * Restart child_DoFencing:0 (Started c001n01) -- * Stop child_DoFencing:1 (c001n02) -+ * Stop child_DoFencing:1 (c001n02) due to node availability - - Executing cluster transition: - * Resource action: DcIPaddr monitor on c001n02 -diff --git a/pengine/test10/829.summary b/pengine/test10/829.summary -index 9e66733..feca908 100644 ---- a/pengine/test10/829.summary -+++ b/pengine/test10/829.summary -@@ -17,7 +17,7 @@ Online: [ c001n01 c001n03 c001n08 ] - Transition Summary: - * Fence (reboot) c001n02 'peer is no longer part of the cluster' - * Move rsc_c001n02 (Started c001n02 -> c001n01) -- * Stop child_DoFencing:0 (c001n02) -+ * Stop child_DoFencing:0 (c001n02) due to node availability - - Executing cluster transition: - * Resource action: DcIPaddr monitor on c001n03 -diff --git a/pengine/test10/9-am-then-bm-b-migrating-a-stopping.summary b/pengine/test10/9-am-then-bm-b-migrating-a-stopping.summary -index 37d16be..44fc1a2 100644 ---- a/pengine/test10/9-am-then-bm-b-migrating-a-stopping.summary -+++ b/pengine/test10/9-am-then-bm-b-migrating-a-stopping.summary -@@ -7,8 +7,8 @@ Online: [ 18node1 18node2 18node3 ] - B (ocf::heartbeat:Dummy): Started 18node2 - - Transition Summary: -- * Stop A (18node1) -- * Stop B (Started 18node2) -+ * Stop A (18node1) due to node availability -+ * Stop B (Started 18node2) due to unrunnable A start - - Executing cluster transition: - * Resource action: B stop on 18node2 -diff --git a/pengine/test10/994-2.summary b/pengine/test10/994-2.summary -index dc4b9d1..a1d477f 100644 ---- a/pengine/test10/994-2.summary -+++ b/pengine/test10/994-2.summary -@@ -11,7 +11,7 @@ Online: [ paul ] - - Transition Summary: - * Recover postfix_9 (Started paul) -- * Restart depends (Started paul) -+ * Restart depends (Started paul) due to required group_1 running - - Executing cluster transition: - * Resource action: depends stop on paul -diff --git a/pengine/test10/anti-colocation-order.summary b/pengine/test10/anti-colocation-order.summary -index 2447501..052043a 100644 ---- a/pengine/test10/anti-colocation-order.summary -+++ b/pengine/test10/anti-colocation-order.summary -@@ -13,8 +13,8 @@ Online: [ node2 ] - Transition Summary: - * Move rsc1 (Started node1 -> node2) - * Move rsc2 (Started node1 -> node2) -- * Stop rsc3 (node2) -- * Stop rsc4 (node2) -+ * Stop rsc3 (node2) due to node availability -+ * Stop rsc4 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/asymmetrical-order-move.summary b/pengine/test10/asymmetrical-order-move.summary -index a9c1d8f..503813c 100644 ---- a/pengine/test10/asymmetrical-order-move.summary -+++ b/pengine/test10/asymmetrical-order-move.summary -@@ -9,7 +9,7 @@ Online: [ sle12sp2-1 sle12sp2-2 ] - dummy2 (ocf::pacemaker:Dummy): Started sle12sp2-1 - - Transition Summary: -- * Stop dummy2 (Started sle12sp2-1) -+ * Stop dummy2 (Started sle12sp2-1) due to unrunnable dummy1 start - - Executing cluster transition: - * Resource action: dummy2 stop on sle12sp2-1 -diff --git a/pengine/test10/bug-1572-1.summary b/pengine/test10/bug-1572-1.summary -index 6c37bb4..6a24614 100644 ---- a/pengine/test10/bug-1572-1.summary -+++ b/pengine/test10/bug-1572-1.summary -@@ -12,11 +12,11 @@ Online: [ arc-dknightlx arc-tkincaidlx.wsicorp.com ] - - Transition Summary: - * Shutdown arc-dknightlx -- * Stop rsc_drbd_7788:0 (arc-dknightlx) -+ * Stop rsc_drbd_7788:0 (arc-dknightlx) due to node availability - * Restart rsc_drbd_7788:1 (Master arc-tkincaidlx.wsicorp.com) -- * Restart fs_mirror (Started arc-tkincaidlx.wsicorp.com) -- * Restart pgsql_5555 (Started arc-tkincaidlx.wsicorp.com) -- * Restart IPaddr_147_81_84_133 (Started arc-tkincaidlx.wsicorp.com) -+ * Restart fs_mirror (Started arc-tkincaidlx.wsicorp.com) due to required ms_drbd_7788 notified -+ * Restart pgsql_5555 (Started arc-tkincaidlx.wsicorp.com) due to required fs_mirror start -+ * Restart IPaddr_147_81_84_133 (Started arc-tkincaidlx.wsicorp.com) due to required pgsql_5555 start - - Executing cluster transition: - * Pseudo action: ms_drbd_7788_pre_notify_demote_0 -diff --git a/pengine/test10/bug-1572-2.summary b/pengine/test10/bug-1572-2.summary -index a4235a7..96574cf 100644 ---- a/pengine/test10/bug-1572-2.summary -+++ b/pengine/test10/bug-1572-2.summary -@@ -12,11 +12,11 @@ Online: [ arc-dknightlx arc-tkincaidlx.wsicorp.com ] - - Transition Summary: - * Shutdown arc-dknightlx -- * Stop rsc_drbd_7788:0 (arc-dknightlx) -+ * Stop rsc_drbd_7788:0 (arc-dknightlx) due to node availability - * Demote rsc_drbd_7788:1 (Master -> Slave arc-tkincaidlx.wsicorp.com) -- * Stop fs_mirror (arc-tkincaidlx.wsicorp.com) -- * Stop pgsql_5555 (arc-tkincaidlx.wsicorp.com) -- * Stop IPaddr_147_81_84_133 (arc-tkincaidlx.wsicorp.com) -+ * Stop fs_mirror (arc-tkincaidlx.wsicorp.com) due to node availability -+ * Stop pgsql_5555 (arc-tkincaidlx.wsicorp.com) due to node availability -+ * Stop IPaddr_147_81_84_133 (arc-tkincaidlx.wsicorp.com) due to node availability - - Executing cluster transition: - * Pseudo action: ms_drbd_7788_pre_notify_demote_0 -diff --git a/pengine/test10/bug-1573.summary b/pengine/test10/bug-1573.summary -index 8fb2820..02d93a6 100644 ---- a/pengine/test10/bug-1573.summary -+++ b/pengine/test10/bug-1573.summary -@@ -12,7 +12,7 @@ OFFLINE: [ xen-c ] - - Transition Summary: - * Shutdown xen-b -- * Stop IPaddr_192_168_1_102 (xen-b) -+ * Stop IPaddr_192_168_1_102 (xen-b) due to node availability - - Executing cluster transition: - * Pseudo action: group_11_stop_0 -diff --git a/pengine/test10/bug-1718.summary b/pengine/test10/bug-1718.summary -index 622a5a8..b539e4e 100644 ---- a/pengine/test10/bug-1718.summary -+++ b/pengine/test10/bug-1718.summary -@@ -13,8 +13,8 @@ OFFLINE: [ defiant.ds9 warbird.ds9 ] - resource_dummy (ocf::heartbeat:Dummy): Started ops.ds9 - - Transition Summary: -- * Stop resource_IP3 (Started ops.ds9) -- * Stop resource_dummy (Started ops.ds9) -+ * Stop resource_IP3 (Started ops.ds9) due to unrunnable Web_Group running -+ * Stop resource_dummy (Started ops.ds9) due to required resource_IP3 start - - Executing cluster transition: - * Pseudo action: group_fUN_stop_0 -diff --git a/pengine/test10/bug-5014-A-stop-B-started.summary b/pengine/test10/bug-5014-A-stop-B-started.summary -index 20af4ab..a00dfd7 100644 ---- a/pengine/test10/bug-5014-A-stop-B-started.summary -+++ b/pengine/test10/bug-5014-A-stop-B-started.summary -@@ -7,7 +7,7 @@ Online: [ fc16-builder ] - ClusterIP2 (ocf::heartbeat:IPaddr2): Started fc16-builder - - Transition Summary: -- * Stop ClusterIP (fc16-builder) -+ * Stop ClusterIP (fc16-builder) due to node availability - - Executing cluster transition: - * Resource action: ClusterIP stop on fc16-builder -diff --git a/pengine/test10/bug-5014-A-stopped-B-stopped.summary b/pengine/test10/bug-5014-A-stopped-B-stopped.summary -index 970d81c..95e5b60 100644 ---- a/pengine/test10/bug-5014-A-stopped-B-stopped.summary -+++ b/pengine/test10/bug-5014-A-stopped-B-stopped.summary -@@ -7,7 +7,7 @@ Online: [ fc16-builder ] - ClusterIP2 (ocf::heartbeat:IPaddr2): Stopped - - Transition Summary: -- * Start ClusterIP2 (fc16-builder - blocked) -+ * Start ClusterIP2 (fc16-builder - blocked) due to unrunnable ClusterIP start - - Executing cluster transition: - * Resource action: ClusterIP monitor on fc16-builder -diff --git a/pengine/test10/bug-5014-CLONE-A-stop-B-started.summary b/pengine/test10/bug-5014-CLONE-A-stop-B-started.summary -index 5e9bec0..c3fb6d5 100644 ---- a/pengine/test10/bug-5014-CLONE-A-stop-B-started.summary -+++ b/pengine/test10/bug-5014-CLONE-A-stop-B-started.summary -@@ -9,7 +9,7 @@ Online: [ fc16-builder ] - Started: [ fc16-builder ] - - Transition Summary: -- * Stop ClusterIP:0 (fc16-builder) -+ * Stop ClusterIP:0 (fc16-builder) due to node availability - - Executing cluster transition: - * Pseudo action: clone1_stop_0 -diff --git a/pengine/test10/bug-5014-CthenAthenB-C-stopped.summary b/pengine/test10/bug-5014-CthenAthenB-C-stopped.summary -index 991e618..fe12fe6 100644 ---- a/pengine/test10/bug-5014-CthenAthenB-C-stopped.summary -+++ b/pengine/test10/bug-5014-CthenAthenB-C-stopped.summary -@@ -8,8 +8,8 @@ Online: [ fc16-builder ] - ClusterIP3 (ocf::heartbeat:IPaddr2): Stopped ( disabled ) - - Transition Summary: -- * Start ClusterIP (fc16-builder - blocked) -- * Start ClusterIP2 (fc16-builder - blocked) -+ * Start ClusterIP (fc16-builder - blocked) due to unrunnable ClusterIP3 start -+ * Start ClusterIP2 (fc16-builder - blocked) due to unrunnable ClusterIP start - - Executing cluster transition: - * Resource action: ClusterIP monitor on fc16-builder -diff --git a/pengine/test10/bug-5014-GROUP-A-stopped-B-started.summary b/pengine/test10/bug-5014-GROUP-A-stopped-B-started.summary -index 67df8d7..5ea35cb 100644 ---- a/pengine/test10/bug-5014-GROUP-A-stopped-B-started.summary -+++ b/pengine/test10/bug-5014-GROUP-A-stopped-B-started.summary -@@ -9,7 +9,7 @@ Online: [ fc16-builder ] - ClusterIP2 (ocf::heartbeat:IPaddr2): Started fc16-builder - - Transition Summary: -- * Stop ClusterIP (fc16-builder) -+ * Stop ClusterIP (fc16-builder) due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/bug-5014-GROUP-A-stopped-B-stopped.summary b/pengine/test10/bug-5014-GROUP-A-stopped-B-stopped.summary -index e5251a0..f9b6448 100644 ---- a/pengine/test10/bug-5014-GROUP-A-stopped-B-stopped.summary -+++ b/pengine/test10/bug-5014-GROUP-A-stopped-B-stopped.summary -@@ -9,7 +9,7 @@ Online: [ fc16-builder ] - ClusterIP2 (ocf::heartbeat:IPaddr2): Stopped - - Transition Summary: -- * Start ClusterIP2 (fc16-builder - blocked) -+ * Start ClusterIP2 (fc16-builder - blocked) due to unrunnable group1 running - - Executing cluster transition: - -diff --git a/pengine/test10/bug-5014-ordered-set-symmetrical-false.summary b/pengine/test10/bug-5014-ordered-set-symmetrical-false.summary -index 4322db3..89b3416 100644 ---- a/pengine/test10/bug-5014-ordered-set-symmetrical-false.summary -+++ b/pengine/test10/bug-5014-ordered-set-symmetrical-false.summary -@@ -9,7 +9,7 @@ OFFLINE: [ fc16-builder2 ] - C (ocf::pacemaker:Dummy): Started fc16-builder ( disabled ) - - Transition Summary: -- * Stop C (fc16-builder) -+ * Stop C (fc16-builder) due to node availability - - Executing cluster transition: - * Resource action: C stop on fc16-builder -diff --git a/pengine/test10/bug-5014-ordered-set-symmetrical-true.summary b/pengine/test10/bug-5014-ordered-set-symmetrical-true.summary -index af74ba6..7d94d60 100644 ---- a/pengine/test10/bug-5014-ordered-set-symmetrical-true.summary -+++ b/pengine/test10/bug-5014-ordered-set-symmetrical-true.summary -@@ -9,8 +9,8 @@ OFFLINE: [ fc16-builder2 ] - C (ocf::pacemaker:Dummy): Started fc16-builder ( disabled ) - - Transition Summary: -- * Stop A (Started fc16-builder) -- * Stop C (fc16-builder) -+ * Stop A (Started fc16-builder) due to required C start -+ * Stop C (fc16-builder) due to node availability - - Executing cluster transition: - * Resource action: A stop on fc16-builder -diff --git a/pengine/test10/bug-5028-bottom.summary b/pengine/test10/bug-5028-bottom.summary -index b43ba4e..de24e29 100644 ---- a/pengine/test10/bug-5028-bottom.summary -+++ b/pengine/test10/bug-5028-bottom.summary -@@ -8,7 +8,7 @@ Online: [ bl460g6a bl460g6b ] - - Transition Summary: - * Shutdown bl460g6a -- * Stop dummy02 (bl460g6a) -+ * Stop dummy02 (bl460g6a) due to node availability - - Executing cluster transition: - * Pseudo action: dummy-g_stop_0 -diff --git a/pengine/test10/bug-5140-require-all-false.summary b/pengine/test10/bug-5140-require-all-false.summary -index e06e969..cf5193c 100644 ---- a/pengine/test10/bug-5140-require-all-false.summary -+++ b/pengine/test10/bug-5140-require-all-false.summary -@@ -36,9 +36,9 @@ Node hex-3: OFFLINE (standby) - cluster-md0 (ocf::heartbeat:Raid1): Stopped - - Transition Summary: -- * Stop dlm:0 (hex-2) -- * Stop clvmd:0 (hex-2) -- * Stop o2cb:0 (hex-2) -+ * Stop dlm:0 (hex-2) due to node availability -+ * Stop clvmd:0 (hex-2) due to node availability -+ * Stop o2cb:0 (hex-2) due to node availability - - Executing cluster transition: - * Pseudo action: baseclone_stop_0 -diff --git a/pengine/test10/bug-5186-partial-migrate.summary b/pengine/test10/bug-5186-partial-migrate.summary -index c2685d8..cd01706 100644 ---- a/pengine/test10/bug-5186-partial-migrate.summary -+++ b/pengine/test10/bug-5186-partial-migrate.summary -@@ -30,9 +30,9 @@ Transition Summary: - * Move prmVM2 (Started bl460g1n7 -> bl460g1n8) - * Move prmStonith8-1 (Started bl460g1n7 -> bl460g1n6) - * Move prmStonith8-2 (Started bl460g1n7 -> bl460g1n6) -- * Stop prmDiskd1:0 (bl460g1n7) -- * Stop prmDiskd2:0 (bl460g1n7) -- * Stop prmPing:0 (bl460g1n7) -+ * Stop prmDiskd1:0 (bl460g1n7) due to node availability -+ * Stop prmDiskd2:0 (bl460g1n7) due to node availability -+ * Stop prmPing:0 (bl460g1n7) due to node availability - - Executing cluster transition: - * Resource action: prmVM2 stop on bl460g1n6 -diff --git a/pengine/test10/bug-cl-5170.summary b/pengine/test10/bug-cl-5170.summary -index c932a86..70b589e 100644 ---- a/pengine/test10/bug-cl-5170.summary -+++ b/pengine/test10/bug-cl-5170.summary -@@ -11,8 +11,8 @@ Online: [ TCS-2 ] - Stopped: [ TCS-1 ] - - Transition Summary: -- * Stop ip_trf (TCS-2) -- * Stop ip_mgmt (TCS-2) -+ * Stop ip_trf (TCS-2) due to node availability -+ * Stop ip_mgmt (TCS-2) due to node availability - - Executing cluster transition: - * Pseudo action: svc_stop_0 -diff --git a/pengine/test10/bug-cl-5212.summary b/pengine/test10/bug-cl-5212.summary -index b5d5146..92d3af3 100644 ---- a/pengine/test10/bug-cl-5212.summary -+++ b/pengine/test10/bug-cl-5212.summary -@@ -22,11 +22,11 @@ Online: [ srv03 ] - Transition Summary: - * Stop prmStonith1-1 (Started srv02 - blocked) - * Stop prmStonith2-1 (Started srv01 - blocked) -- * Stop prmStonith3-1 (srv01 - blocked) -- * Stop pgsql:0 (srv02 - blocked) -+ * Stop prmStonith3-1 (srv01 - blocked) due to node availability -+ * Stop pgsql:0 (srv02 - blocked) due to node availability - * Demote pgsql:1 (Master -> Stopped srv01 - blocked) -- * Stop prmPingd:0 (srv02 - blocked) -- * Stop prmPingd:1 (srv01 - blocked) -+ * Stop prmPingd:0 (srv02 - blocked) due to node availability -+ * Stop prmPingd:1 (srv01 - blocked) due to node availability - - Executing cluster transition: - * Pseudo action: grpStonith1_stop_0 -diff --git a/pengine/test10/bug-cl-5247.summary b/pengine/test10/bug-cl-5247.summary -index fc97e8d..0f328cc 100644 ---- a/pengine/test10/bug-cl-5247.summary -+++ b/pengine/test10/bug-cl-5247.summary -@@ -19,7 +19,7 @@ Containers: [ pgsr01:prmDB1 ] - - Transition Summary: - * Fence (off) pgsr02 (resource: prmDB2) 'guest is unclean' -- * Stop prmDB2 (bl460g8n4) -+ * Stop prmDB2 (bl460g8n4) due to node availability - * Restart prmStonith1-2 (Started bl460g8n4) - * Restart prmStonith2-2 (Started bl460g8n3) - * Recover vip-master (Started pgsr02 -> pgsr01) -diff --git a/pengine/test10/bug-lf-2153.summary b/pengine/test10/bug-lf-2153.summary -index 9995475..e95713e 100644 ---- a/pengine/test10/bug-lf-2153.summary -+++ b/pengine/test10/bug-lf-2153.summary -@@ -18,8 +18,8 @@ Online: [ alice ] - res_portblock_iscsivg01_unblock (ocf::heartbeat:portblock): Started alice - - Transition Summary: -- * Stop res_drbd_iscsivg01:0 (bob) -- * Stop res_tgtd:0 (bob) -+ * Stop res_drbd_iscsivg01:0 (bob) due to node availability -+ * Stop res_tgtd:0 (bob) due to node availability - - Executing cluster transition: - * Pseudo action: ms_drbd_iscsivg01_pre_notify_stop_0 -diff --git a/pengine/test10/bug-lf-2171.summary b/pengine/test10/bug-lf-2171.summary -index b1413c3..8c1d8a4 100644 ---- a/pengine/test10/bug-lf-2171.summary -+++ b/pengine/test10/bug-lf-2171.summary -@@ -10,10 +10,10 @@ Online: [ xenserver1 xenserver2 ] - res_Dummy3 (ocf::heartbeat:Dummy): Started xenserver1 - - Transition Summary: -- * Stop res_Dummy1:0 (xenserver1) -- * Stop res_Dummy1:1 (xenserver2) -- * Stop res_Dummy2 (Started xenserver1) -- * Stop res_Dummy3 (Started xenserver1) -+ * Stop res_Dummy1:0 (xenserver1) due to node availability -+ * Stop res_Dummy1:1 (xenserver2) due to node availability -+ * Stop res_Dummy2 (Started xenserver1) due to unrunnable cl_res_Dummy1 running -+ * Stop res_Dummy3 (Started xenserver1) due to unrunnable cl_res_Dummy1 running - - Executing cluster transition: - * Pseudo action: gr_Dummy_stop_0 -diff --git a/pengine/test10/bug-lf-2361.summary b/pengine/test10/bug-lf-2361.summary -index b81456c..3089e04 100644 ---- a/pengine/test10/bug-lf-2361.summary -+++ b/pengine/test10/bug-lf-2361.summary -@@ -11,8 +11,8 @@ Online: [ alice.demo bob.demo ] - Transition Summary: - * Start stateful:0 (alice.demo) - * Start stateful:1 (bob.demo) -- * Start dummy2:0 (alice.demo - blocked) -- * Start dummy2:1 (bob.demo - blocked) -+ * Start dummy2:0 (alice.demo - blocked) due to unrunnable dummy1 start -+ * Start dummy2:1 (bob.demo - blocked) due to unrunnable dummy1 start - - Executing cluster transition: - * Pseudo action: ms_stateful_pre_notify_start_0 -diff --git a/pengine/test10/bug-lf-2422.summary b/pengine/test10/bug-lf-2422.summary -index 54341c9..5e22e67 100644 ---- a/pengine/test10/bug-lf-2422.summary -+++ b/pengine/test10/bug-lf-2422.summary -@@ -10,18 +10,18 @@ Online: [ qa-suse-1 qa-suse-2 qa-suse-3 qa-suse-4 ] - Started: [ qa-suse-1 qa-suse-2 qa-suse-3 qa-suse-4 ] - - Transition Summary: -- * Stop o2cb:0 (qa-suse-1) -- * Stop cmirror:0 (qa-suse-1) -- * Stop o2cb:1 (qa-suse-4) -- * Stop cmirror:1 (qa-suse-4) -- * Stop o2cb:2 (qa-suse-3) -- * Stop cmirror:2 (qa-suse-3) -- * Stop o2cb:3 (qa-suse-2) -- * Stop cmirror:3 (qa-suse-2) -- * Stop ocfs:0 (qa-suse-1) -- * Stop ocfs:1 (qa-suse-4) -- * Stop ocfs:2 (qa-suse-3) -- * Stop ocfs:3 (qa-suse-2) -+ * Stop o2cb:0 (qa-suse-1) due to node availability -+ * Stop cmirror:0 (qa-suse-1) due to node availability -+ * Stop o2cb:1 (qa-suse-4) due to node availability -+ * Stop cmirror:1 (qa-suse-4) due to node availability -+ * Stop o2cb:2 (qa-suse-3) due to node availability -+ * Stop cmirror:2 (qa-suse-3) due to node availability -+ * Stop o2cb:3 (qa-suse-2) due to node availability -+ * Stop cmirror:3 (qa-suse-2) due to node availability -+ * Stop ocfs:0 (qa-suse-1) due to node availability -+ * Stop ocfs:1 (qa-suse-4) due to node availability -+ * Stop ocfs:2 (qa-suse-3) due to node availability -+ * Stop ocfs:3 (qa-suse-2) due to node availability - - Executing cluster transition: - * Resource action: sbd_stonith monitor=15000 on qa-suse-2 -diff --git a/pengine/test10/bug-lf-2453.summary b/pengine/test10/bug-lf-2453.summary -index 3ff1a6b..398868b 100644 ---- a/pengine/test10/bug-lf-2453.summary -+++ b/pengine/test10/bug-lf-2453.summary -@@ -10,11 +10,11 @@ Online: [ domu1 domu2 ] - Started: [ domu1 domu2 ] - - Transition Summary: -- * Stop PrimitiveResource1 (Started domu1) -- * Stop apache:0 (domu1) -- * Stop apache:1 (domu2) -- * Stop DummyResource:0 (Started domu1) -- * Stop DummyResource:1 (Started domu2) -+ * Stop PrimitiveResource1 (Started domu1) due to required CloneResource2 running -+ * Stop apache:0 (domu1) due to node availability -+ * Stop apache:1 (domu2) due to node availability -+ * Stop DummyResource:0 (Started domu1) due to unrunnable CloneResource1 running -+ * Stop DummyResource:1 (Started domu2) due to unrunnable CloneResource1 running - - Executing cluster transition: - * Resource action: PrimitiveResource1 stop on domu1 -diff --git a/pengine/test10/bug-lf-2508.summary b/pengine/test10/bug-lf-2508.summary -index ddaf1c3..5d0d90c 100644 ---- a/pengine/test10/bug-lf-2508.summary -+++ b/pengine/test10/bug-lf-2508.summary -@@ -38,13 +38,13 @@ Transition Summary: - * Fence (reboot) srv02 'peer is no longer part of the cluster' - * Start Dummy01 (srv01) - * Move Dummy02 (Started srv02 -> srv04) -- * Stop prmStonith1-1:1 (srv02) -- * Stop prmStonith1-3:1 (srv02) -- * Stop prmStonith3-1:0 (srv02) -- * Stop prmStonith3-3:0 (srv02) -+ * Stop prmStonith1-1:1 (srv02) due to node availability -+ * Stop prmStonith1-3:1 (srv02) due to node availability -+ * Stop prmStonith3-1:0 (srv02) due to node availability -+ * Stop prmStonith3-3:0 (srv02) due to node availability - * Start prmStonith3-3:1 (srv01) -- * Stop prmStonith4-1:1 (srv02) -- * Stop prmStonith4-3:1 (srv02) -+ * Stop prmStonith4-1:1 (srv02) due to node availability -+ * Stop prmStonith4-3:1 (srv02) due to node availability - - Executing cluster transition: - * Pseudo action: Group01_start_0 -diff --git a/pengine/test10/bug-lf-2551.summary b/pengine/test10/bug-lf-2551.summary -index 1b57ea7..9537277 100644 ---- a/pengine/test10/bug-lf-2551.summary -+++ b/pengine/test10/bug-lf-2551.summary -@@ -84,12 +84,12 @@ Transition Summary: - * Fence (reboot) hex-9 'peer is no longer part of the cluster' - * Move fencing-sbd (Started hex-9 -> hex-0) - * Move dummy1 (Started hex-9 -> hex-0) -- * Stop dlm:3 (hex-9) -- * Stop o2cb:3 (hex-9) -- * Stop clvm:3 (hex-9) -- * Stop cmirrord:3 (hex-9) -- * Stop vg1:3 (hex-9) -- * Stop ocfs2-1:3 (hex-9) -+ * Stop dlm:3 (hex-9) due to node availability -+ * Stop o2cb:3 (hex-9) due to node availability -+ * Stop clvm:3 (hex-9) due to node availability -+ * 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) -diff --git a/pengine/test10/bug-lf-2574.summary b/pengine/test10/bug-lf-2574.summary -index 3024a73..800453c 100644 ---- a/pengine/test10/bug-lf-2574.summary -+++ b/pengine/test10/bug-lf-2574.summary -@@ -12,7 +12,7 @@ Online: [ srv01 srv02 srv03 ] - - Transition Summary: - * Move main_rsc (Started srv01 -> srv03) -- * Stop prmPingd:0 (srv01) -+ * Stop prmPingd:0 (srv01) due to node availability - - Executing cluster transition: - * Resource action: main_rsc stop on srv01 -diff --git a/pengine/test10/bug-lf-2619.summary b/pengine/test10/bug-lf-2619.summary -index 2816ac3..9a2213d 100644 ---- a/pengine/test10/bug-lf-2619.summary -+++ b/pengine/test10/bug-lf-2619.summary -@@ -34,7 +34,7 @@ Transition Summary: - * Move prmFsPostgreSQLDB1-3 (Started act1 -> sby1) - * Move prmIpPostgreSQLDB1 (Started act1 -> sby1) - * Move prmApPostgreSQLDB1 (Started act1 -> sby1) -- * Stop prmPingd:0 (act1) -+ * Stop prmPingd:0 (act1) due to node availability - - Executing cluster transition: - * Pseudo action: grpPostgreSQLDB1_stop_0 -diff --git a/pengine/test10/bug-n-385265.summary b/pengine/test10/bug-n-385265.summary -index 8f95787..e5bc4bc 100644 ---- a/pengine/test10/bug-n-385265.summary -+++ b/pengine/test10/bug-n-385265.summary -@@ -7,7 +7,7 @@ Online: [ ih01 ih02 ] - resource_idvscommon (ocf::dfs:idvs): FAILED ih02 - - Transition Summary: -- * Stop resource_idvscommon (ih02) -+ * Stop resource_idvscommon (ih02) due to node availability - - Executing cluster transition: - * Pseudo action: group_common_stop_0 -diff --git a/pengine/test10/bug-rh-1097457.summary b/pengine/test10/bug-rh-1097457.summary -index 29dd018..ee21df8 100644 ---- a/pengine/test10/bug-rh-1097457.summary -+++ b/pengine/test10/bug-rh-1097457.summary -@@ -35,10 +35,10 @@ Transition Summary: - * Fence (reboot) lamaVM2 (resource: VM2) 'guest is unclean' - * Recover VM2 (Started lama3) - * Recover FSlun3 (Started lamaVM2 -> lama2) -- * Restart FAKE4 (Started lamaVM2) -- * Restart FAKE4-IP (Started lamaVM2) -- * Restart FAKE6:2 (Started lamaVM2) -- * Restart lamaVM2 (Started lama3) -+ * Restart FAKE4 (Started lamaVM2) due to required VM2 start -+ * Restart FAKE4-IP (Started lamaVM2) due to required VM2 start -+ * Restart FAKE6:2 (Started lamaVM2) due to required VM2 start -+ * Restart lamaVM2 (Started lama3) due to required VM2 start - - Executing cluster transition: - * Resource action: lamaVM2 stop on lama3 -diff --git a/pengine/test10/bug-suse-707150.summary b/pengine/test10/bug-suse-707150.summary -index da1d5c4..d6922ab 100644 ---- a/pengine/test10/bug-suse-707150.summary -+++ b/pengine/test10/bug-suse-707150.summary -@@ -26,7 +26,7 @@ Transition Summary: - * Start o2cb:1 (hex-9) - * Start clvm:1 (hex-9) - * Start cmirrord:1 (hex-9) -- * Start vm-01 (hex-9 - blocked) -+ * Start vm-01 (hex-9 - blocked) due to unrunnable base-clone running - - Executing cluster transition: - * Resource action: vg1:1 monitor on hex-9 -diff --git a/pengine/test10/bundle-order-partial-start-2.summary b/pengine/test10/bundle-order-partial-start-2.summary -index 5e3927c..d67f8fc 100644 ---- a/pengine/test10/bundle-order-partial-start-2.summary -+++ b/pengine/test10/bundle-order-partial-start-2.summary -@@ -22,8 +22,8 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq- - - Transition Summary: - * Start rabbitmq:0 (rabbitmq-bundle-0) -- * Restart galera-bundle-docker-0 (Started undercloud) -- * Restart galera-bundle-0 (Started undercloud) -+ * Restart galera-bundle-docker-0 (Started undercloud) due to required haproxy-bundle running -+ * Restart galera-bundle-0 (Started undercloud) due to required galera-bundle-docker-0 start - * Start galera:0 (galera-bundle-0) - * Promote redis:0 (Slave -> Master redis-bundle-0) - * Start haproxy-bundle-docker-0 (undercloud) -diff --git a/pengine/test10/bundle-order-partial-stop.summary b/pengine/test10/bundle-order-partial-stop.summary -index b30a237..e7bac73 100644 ---- a/pengine/test10/bundle-order-partial-stop.summary -+++ b/pengine/test10/bundle-order-partial-stop.summary -@@ -22,25 +22,25 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq- - - Transition Summary: - * Shutdown undercloud -- * Stop rabbitmq-bundle-docker-0 (undercloud) -- * Stop rabbitmq-bundle-0 (undercloud) -- * Stop rabbitmq:0 (Started rabbitmq-bundle-0) -- * Stop galera-bundle-docker-0 (undercloud) -- * Stop galera-bundle-0 (undercloud) -+ * Stop rabbitmq-bundle-docker-0 (undercloud) due to node availability -+ * Stop rabbitmq-bundle-0 (undercloud) due to node availability -+ * Stop rabbitmq:0 (Started rabbitmq-bundle-0) due to unrunnable rabbitmq-bundle-0 start -+ * Stop galera-bundle-docker-0 (undercloud) due to node availability -+ * Stop galera-bundle-0 (undercloud) due to node availability - * Demote galera:0 (Master -> Slave galera-bundle-0) -- * Restart galera:0 (Slave galera-bundle-0) -- * Stop redis-bundle-docker-0 (undercloud) -- * Stop redis-bundle-0 (undercloud) -+ * Restart galera:0 (Slave galera-bundle-0) due to unrunnable galera-bundle-0 start -+ * Stop redis-bundle-docker-0 (undercloud) due to node availability -+ * Stop redis-bundle-0 (undercloud) due to node availability - * Demote redis:0 (Master -> Slave redis-bundle-0) -- * Restart redis:0 (Slave redis-bundle-0) -- * Stop ip-192.168.122.254 (undercloud) -- * Stop ip-192.168.122.250 (undercloud) -- * Stop ip-192.168.122.249 (undercloud) -- * Stop ip-192.168.122.253 (undercloud) -- * Stop ip-192.168.122.247 (undercloud) -- * Stop ip-192.168.122.248 (undercloud) -- * Stop haproxy-bundle-docker-0 (undercloud) -- * Stop openstack-cinder-volume-docker-0 (undercloud) -+ * Restart redis:0 (Slave redis-bundle-0) due to unrunnable redis-bundle-0 start -+ * Stop ip-192.168.122.254 (undercloud) due to node availability -+ * Stop ip-192.168.122.250 (undercloud) due to node availability -+ * Stop ip-192.168.122.249 (undercloud) due to node availability -+ * Stop ip-192.168.122.253 (undercloud) due to node availability -+ * Stop ip-192.168.122.247 (undercloud) due to node availability -+ * Stop ip-192.168.122.248 (undercloud) due to node availability -+ * Stop haproxy-bundle-docker-0 (undercloud) due to node availability -+ * Stop openstack-cinder-volume-docker-0 (undercloud) due to node availability - - Executing cluster transition: - * Resource action: galera cancel=10000 on galera-bundle-0 -diff --git a/pengine/test10/bundle-order-startup-clone.summary b/pengine/test10/bundle-order-startup-clone.summary -index f3f8be0..0acfd1e 100644 ---- a/pengine/test10/bundle-order-startup-clone.summary -+++ b/pengine/test10/bundle-order-startup-clone.summary -@@ -13,12 +13,12 @@ RemoteOFFLINE: [ rabbitmq-bundle-0 ] - redis-bundle-0 (ocf::heartbeat:redis): Stopped - - Transition Summary: -- * Start storage:0 (metal-1 - blocked) -- * Start storage:1 (metal-2 - blocked) -- * Start storage:2 (metal-3 - blocked) -- * Start galera-bundle-docker-0 (metal-1 - blocked) -- * Start galera-bundle-0 (metal-1 - blocked) -- * Start galera:0 (galera-bundle-0 - blocked) -+ * Start storage:0 (metal-1 - blocked) due to unrunnable redis-bundle promoted -+ * Start storage:1 (metal-2 - blocked) due to unrunnable redis-bundle promoted -+ * Start storage:2 (metal-3 - blocked) due to unrunnable redis-bundle promoted -+ * Start galera-bundle-docker-0 (metal-1 - blocked) due to unrunnable storage-clone notified -+ * Start galera-bundle-0 (metal-1 - blocked) due to unrunnable galera-bundle-docker-0 start -+ * Start galera:0 (galera-bundle-0 - blocked) due to unrunnable galera-bundle-docker-0 start - * Start haproxy-bundle-docker-0 (metal-2) - * Start redis-bundle-docker-0 (metal-2) - * Start redis-bundle-0 (metal-2) -diff --git a/pengine/test10/bundle-order-stop-clone.summary b/pengine/test10/bundle-order-stop-clone.summary -index 404eecd..9a6b0f2 100644 ---- a/pengine/test10/bundle-order-stop-clone.summary -+++ b/pengine/test10/bundle-order-stop-clone.summary -@@ -21,10 +21,10 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bund - redis-bundle-2 (ocf::heartbeat:redis): Master metal-3 - - Transition Summary: -- * Stop storage:0 (metal-1) -- * Stop galera-bundle-docker-0 (metal-1) -- * Stop galera-bundle-0 (Started metal-1) -- * Stop galera:0 (Slave galera-bundle-0) -+ * Stop storage:0 (metal-1) due to node availability -+ * Stop galera-bundle-docker-0 (metal-1) due to node availability -+ * Stop galera-bundle-0 (Started metal-1) due to unrunnable galera-bundle-docker-0 start -+ * Stop galera:0 (Slave galera-bundle-0) due to unrunnable galera-bundle-docker-0 start - - Executing cluster transition: - * Pseudo action: storage-clone_pre_notify_stop_0 -diff --git a/pengine/test10/bundle-order-stop.summary b/pengine/test10/bundle-order-stop.summary -index b30a237..e7bac73 100644 ---- a/pengine/test10/bundle-order-stop.summary -+++ b/pengine/test10/bundle-order-stop.summary -@@ -22,25 +22,25 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq- - - Transition Summary: - * Shutdown undercloud -- * Stop rabbitmq-bundle-docker-0 (undercloud) -- * Stop rabbitmq-bundle-0 (undercloud) -- * Stop rabbitmq:0 (Started rabbitmq-bundle-0) -- * Stop galera-bundle-docker-0 (undercloud) -- * Stop galera-bundle-0 (undercloud) -+ * Stop rabbitmq-bundle-docker-0 (undercloud) due to node availability -+ * Stop rabbitmq-bundle-0 (undercloud) due to node availability -+ * Stop rabbitmq:0 (Started rabbitmq-bundle-0) due to unrunnable rabbitmq-bundle-0 start -+ * Stop galera-bundle-docker-0 (undercloud) due to node availability -+ * Stop galera-bundle-0 (undercloud) due to node availability - * Demote galera:0 (Master -> Slave galera-bundle-0) -- * Restart galera:0 (Slave galera-bundle-0) -- * Stop redis-bundle-docker-0 (undercloud) -- * Stop redis-bundle-0 (undercloud) -+ * Restart galera:0 (Slave galera-bundle-0) due to unrunnable galera-bundle-0 start -+ * Stop redis-bundle-docker-0 (undercloud) due to node availability -+ * Stop redis-bundle-0 (undercloud) due to node availability - * Demote redis:0 (Master -> Slave redis-bundle-0) -- * Restart redis:0 (Slave redis-bundle-0) -- * Stop ip-192.168.122.254 (undercloud) -- * Stop ip-192.168.122.250 (undercloud) -- * Stop ip-192.168.122.249 (undercloud) -- * Stop ip-192.168.122.253 (undercloud) -- * Stop ip-192.168.122.247 (undercloud) -- * Stop ip-192.168.122.248 (undercloud) -- * Stop haproxy-bundle-docker-0 (undercloud) -- * Stop openstack-cinder-volume-docker-0 (undercloud) -+ * Restart redis:0 (Slave redis-bundle-0) due to unrunnable redis-bundle-0 start -+ * Stop ip-192.168.122.254 (undercloud) due to node availability -+ * Stop ip-192.168.122.250 (undercloud) due to node availability -+ * Stop ip-192.168.122.249 (undercloud) due to node availability -+ * Stop ip-192.168.122.253 (undercloud) due to node availability -+ * Stop ip-192.168.122.247 (undercloud) due to node availability -+ * Stop ip-192.168.122.248 (undercloud) due to node availability -+ * Stop haproxy-bundle-docker-0 (undercloud) due to node availability -+ * Stop openstack-cinder-volume-docker-0 (undercloud) due to node availability - - Executing cluster transition: - * Resource action: galera cancel=10000 on galera-bundle-0 -diff --git a/pengine/test10/clone-anon-dup.summary b/pengine/test10/clone-anon-dup.summary -index 6ad247f..843972d 100644 ---- a/pengine/test10/clone-anon-dup.summary -+++ b/pengine/test10/clone-anon-dup.summary -@@ -11,7 +11,7 @@ Online: [ wc01 wc02 wc03 ] - - Transition Summary: - * Start stonith-1 (wc01) -- * Stop apache2:2 (wc02) -+ * Stop apache2:2 (wc02) due to node availability - - Executing cluster transition: - * Resource action: stonith-1 monitor on wc03 -diff --git a/pengine/test10/clone-anon-failcount.summary b/pengine/test10/clone-anon-failcount.summary -index cd4349c..3fb39e3 100644 ---- a/pengine/test10/clone-anon-failcount.summary -+++ b/pengine/test10/clone-anon-failcount.summary -@@ -42,9 +42,9 @@ Transition Summary: - * Move UmDummy01 (Started srv01 -> srv04) - * Move UmDummy02 (Started srv01 -> srv04) - * Recover clnUMdummy01:0 (Started srv04) -- * Restart clnUMdummy02:0 (Started srv04) -- * Stop clnUMdummy01:1 (srv01) -- * Stop clnUMdummy02:1 (srv01) -+ * Restart clnUMdummy02:0 (Started srv04) due to required clnUMdummy01:0 start -+ * Stop clnUMdummy01:1 (srv01) due to node availability -+ * Stop clnUMdummy02:1 (srv01) due to node availability - - Executing cluster transition: - * Pseudo action: UMgroup01_stop_0 -diff --git a/pengine/test10/clone-interleave-2.summary b/pengine/test10/clone-interleave-2.summary -index b15a546..78d46cd 100644 ---- a/pengine/test10/clone-interleave-2.summary -+++ b/pengine/test10/clone-interleave-2.summary -@@ -11,8 +11,8 @@ Online: [ pcmk-1 pcmk-2 pcmk-3 ] - Started: [ pcmk-1 pcmk-2 pcmk-3 ] - - Transition Summary: -- * Restart dummy (Started pcmk-1) -- * Stop child-2:0 (pcmk-1) -+ * Restart dummy (Started pcmk-1) due to required clone-3 running -+ * Stop child-2:0 (pcmk-1) due to node availability - * Stop child-3:0 (pcmk-1) - - Executing cluster transition: -diff --git a/pengine/test10/clone-interleave-3.summary b/pengine/test10/clone-interleave-3.summary -index 004fa54..8b13dc4 100644 ---- a/pengine/test10/clone-interleave-3.summary -+++ b/pengine/test10/clone-interleave-3.summary -@@ -12,9 +12,9 @@ Online: [ pcmk-1 pcmk-2 pcmk-3 ] - Started: [ pcmk-1 pcmk-2 pcmk-3 ] - - Transition Summary: -- * Restart dummy (Started pcmk-1) -+ * Restart dummy (Started pcmk-1) due to required clone-3 running - * Recover child-2:0 (Started pcmk-1) -- * Restart child-3:0 (Started pcmk-1) -+ * Restart child-3:0 (Started pcmk-1) due to required child-2:0 start - - Executing cluster transition: - * Resource action: dummy stop on pcmk-1 -diff --git a/pengine/test10/clone-max-zero.summary b/pengine/test10/clone-max-zero.summary -index 38aa6ba..33c4e89 100644 ---- a/pengine/test10/clone-max-zero.summary -+++ b/pengine/test10/clone-max-zero.summary -@@ -14,12 +14,12 @@ Online: [ c001n11 c001n12 ] - Started: [ c001n11 c001n12 ] - - Transition Summary: -- * Stop dlm:0 (c001n12) -- * Stop dlm:1 (c001n11) -- * Stop o2cb:0 (c001n12) -- * Stop o2cb:1 (c001n11) -- * Stop ocfs2-1:0 (c001n12) -- * Stop ocfs2-1:1 (c001n11) -+ * Stop dlm:0 (c001n12) due to node availability -+ * Stop dlm:1 (c001n11) due to node availability -+ * Stop o2cb:0 (c001n12) due to node availability -+ * Stop o2cb:1 (c001n11) due to node availability -+ * Stop ocfs2-1:0 (c001n12) due to node availability -+ * Stop ocfs2-1:1 (c001n11) due to node availability - - Executing cluster transition: - * Pseudo action: c-ocfs2-1_stop_0 -diff --git a/pengine/test10/clone-require-all-2.summary b/pengine/test10/clone-require-all-2.summary -index d4b2519..f5861e7 100644 ---- a/pengine/test10/clone-require-all-2.summary -+++ b/pengine/test10/clone-require-all-2.summary -@@ -13,10 +13,10 @@ Online: [ rhel7-auto3 rhel7-auto4 ] - - Transition Summary: - * Move shooter (Started rhel7-auto1 -> rhel7-auto3) -- * Stop A:0 (rhel7-auto1) -- * Stop A:1 (rhel7-auto2) -- * Start B:0 (rhel7-auto4 - blocked) -- * Start B:1 (rhel7-auto3 - blocked) -+ * Stop A:0 (rhel7-auto1) due to node availability -+ * Stop A:1 (rhel7-auto2) due to node availability -+ * Start B:0 (rhel7-auto4 - blocked) due to unrunnable clone-one-or-more:order-A-clone-B-clone-mandatory -+ * Start B:1 (rhel7-auto3 - blocked) due to unrunnable clone-one-or-more:order-A-clone-B-clone-mandatory - - Executing cluster transition: - * Resource action: shooter stop on rhel7-auto1 -diff --git a/pengine/test10/clone-require-all-3.summary b/pengine/test10/clone-require-all-3.summary -index 68191b1..1c887e5 100644 ---- a/pengine/test10/clone-require-all-3.summary -+++ b/pengine/test10/clone-require-all-3.summary -@@ -14,10 +14,10 @@ Online: [ rhel7-auto3 rhel7-auto4 ] - - Transition Summary: - * Move shooter (Started rhel7-auto1 -> rhel7-auto3) -- * Stop A:0 (rhel7-auto1) -- * Stop A:1 (rhel7-auto2) -- * Stop B:0 (Started rhel7-auto3) -- * Stop B:1 (Started rhel7-auto4) -+ * Stop A:0 (rhel7-auto1) due to node availability -+ * Stop A:1 (rhel7-auto2) due to node availability -+ * Stop B:0 (Started rhel7-auto3) due to unrunnable clone-one-or-more:order-A-clone-B-clone-mandatory -+ * Stop B:1 (Started rhel7-auto4) due to unrunnable clone-one-or-more:order-A-clone-B-clone-mandatory - - Executing cluster transition: - * Resource action: shooter stop on rhel7-auto1 -diff --git a/pengine/test10/clone-require-all-4.summary b/pengine/test10/clone-require-all-4.summary -index 49ae3bd..90d2059 100644 ---- a/pengine/test10/clone-require-all-4.summary -+++ b/pengine/test10/clone-require-all-4.summary -@@ -13,7 +13,7 @@ Online: [ rhel7-auto2 rhel7-auto3 rhel7-auto4 ] - - Transition Summary: - * Move shooter (Started rhel7-auto1 -> rhel7-auto2) -- * Stop A:0 (rhel7-auto1) -+ * Stop A:0 (rhel7-auto1) due to node availability - - Executing cluster transition: - * Resource action: shooter stop on rhel7-auto1 -diff --git a/pengine/test10/clone-require-all-6.summary b/pengine/test10/clone-require-all-6.summary -index 6561ea3..20ccf76 100644 ---- a/pengine/test10/clone-require-all-6.summary -+++ b/pengine/test10/clone-require-all-6.summary -@@ -11,8 +11,8 @@ Online: [ rhel7-auto1 rhel7-auto2 rhel7-auto3 rhel7-auto4 ] - Stopped: [ rhel7-auto2 ] - - Transition Summary: -- * Stop A:0 (rhel7-auto1) -- * Stop A:2 (rhel7-auto3) -+ * Stop A:0 (rhel7-auto1) due to node availability -+ * Stop A:2 (rhel7-auto3) due to node availability - - Executing cluster transition: - * Pseudo action: A-clone_stop_0 -diff --git a/pengine/test10/clone_min_interleave_start_one.summary b/pengine/test10/clone_min_interleave_start_one.summary -index b15f68a..4ee71c4 100644 ---- a/pengine/test10/clone_min_interleave_start_one.summary -+++ b/pengine/test10/clone_min_interleave_start_one.summary -@@ -12,12 +12,12 @@ Online: [ c7auto1 c7auto2 c7auto3 ] - - Transition Summary: - * Start FAKE1:0 (c7auto1) -- * Start FAKE2:0 (c7auto2 - blocked) -- * Start FAKE2:1 (c7auto3 - blocked) -- * Start FAKE2:2 (c7auto1 - blocked) -- * Start FAKE3:0 (c7auto2 - blocked) -- * Start FAKE3:1 (c7auto3 - blocked) -- * Start FAKE3:2 (c7auto1 - blocked) -+ * Start FAKE2:0 (c7auto2 - blocked) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -+ * Start FAKE2:1 (c7auto3 - blocked) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -+ * Start FAKE2:2 (c7auto1 - blocked) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -+ * Start FAKE3:0 (c7auto2 - blocked) due to unrunnable FAKE2:0 start -+ * Start FAKE3:1 (c7auto3 - blocked) due to unrunnable FAKE2:1 start -+ * Start FAKE3:2 (c7auto1 - blocked) due to unrunnable FAKE2:2 start - - Executing cluster transition: - * Pseudo action: FAKE1-clone_start_0 -diff --git a/pengine/test10/clone_min_interleave_stop_one.summary b/pengine/test10/clone_min_interleave_stop_one.summary -index 9280b7e..4fd094e 100644 ---- a/pengine/test10/clone_min_interleave_stop_one.summary -+++ b/pengine/test10/clone_min_interleave_stop_one.summary -@@ -11,7 +11,7 @@ Online: [ c7auto1 c7auto2 c7auto3 ] - Started: [ c7auto1 c7auto2 c7auto3 ] - - Transition Summary: -- * Stop FAKE1:0 (c7auto3) -+ * Stop FAKE1:0 (c7auto3) due to node availability - - Executing cluster transition: - * Pseudo action: FAKE1-clone_stop_0 -diff --git a/pengine/test10/clone_min_interleave_stop_two.summary b/pengine/test10/clone_min_interleave_stop_two.summary -index fb28e0d..0866f3c 100644 ---- a/pengine/test10/clone_min_interleave_stop_two.summary -+++ b/pengine/test10/clone_min_interleave_stop_two.summary -@@ -11,14 +11,14 @@ Online: [ c7auto1 c7auto2 c7auto3 ] - Started: [ c7auto1 c7auto2 c7auto3 ] - - Transition Summary: -- * Stop FAKE1:0 (c7auto3) -- * Stop FAKE1:2 (c7auto2) -- * Stop FAKE2:0 (Started c7auto3) -- * Stop FAKE2:1 (Started c7auto1) -- * Stop FAKE2:2 (Started c7auto2) -- * Stop FAKE3:0 (Started c7auto3) -- * Stop FAKE3:1 (Started c7auto1) -- * Stop FAKE3:2 (Started c7auto2) -+ * Stop FAKE1:0 (c7auto3) due to node availability -+ * Stop FAKE1:2 (c7auto2) due to node availability -+ * Stop FAKE2:0 (Started c7auto3) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -+ * Stop FAKE2:1 (Started c7auto1) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -+ * Stop FAKE2:2 (Started c7auto2) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -+ * Stop FAKE3:0 (Started c7auto3) due to required FAKE2:0 start -+ * Stop FAKE3:1 (Started c7auto1) due to required FAKE2:1 start -+ * Stop FAKE3:2 (Started c7auto2) due to required FAKE2:2 start - - Executing cluster transition: - * Pseudo action: FAKE3-clone_stop_0 -diff --git a/pengine/test10/clone_min_start_one.summary b/pengine/test10/clone_min_start_one.summary -index ee33e01..196f1b3 100644 ---- a/pengine/test10/clone_min_start_one.summary -+++ b/pengine/test10/clone_min_start_one.summary -@@ -12,7 +12,7 @@ Online: [ c7auto3 c7auto4 ] - Transition Summary: - * Move shooter (Started c7auto1 -> c7auto3) - * Start FAKECLONE:0 (c7auto3) -- * Start FAKE (c7auto4 - blocked) -+ * Start FAKE (c7auto4 - blocked) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory - - Executing cluster transition: - * Resource action: shooter stop on c7auto1 -diff --git a/pengine/test10/clone_min_stop_all.summary b/pengine/test10/clone_min_stop_all.summary -index eb2944f..877d12f 100644 ---- a/pengine/test10/clone_min_stop_all.summary -+++ b/pengine/test10/clone_min_stop_all.summary -@@ -13,10 +13,10 @@ Online: [ c7auto4 ] - - Transition Summary: - * Move shooter (Started c7auto1 -> c7auto4) -- * Stop FAKECLONE:0 (c7auto1) -- * Stop FAKECLONE:1 (c7auto2) -- * Stop FAKECLONE:2 (c7auto3) -- * Stop FAKE (Started c7auto4) -+ * Stop FAKECLONE:0 (c7auto1) due to node availability -+ * Stop FAKECLONE:1 (c7auto2) due to node availability -+ * Stop FAKECLONE:2 (c7auto3) due to node availability -+ * Stop FAKE (Started c7auto4) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory - - Executing cluster transition: - * Resource action: shooter stop on c7auto1 -diff --git a/pengine/test10/clone_min_stop_one.summary b/pengine/test10/clone_min_stop_one.summary -index 9206a0d..3fdb675 100644 ---- a/pengine/test10/clone_min_stop_one.summary -+++ b/pengine/test10/clone_min_stop_one.summary -@@ -10,7 +10,7 @@ Online: [ c7auto1 c7auto3 c7auto4 ] - FAKE (ocf::heartbeat:Dummy): Started c7auto4 - - Transition Summary: -- * Stop FAKECLONE:1 (c7auto2) -+ * Stop FAKECLONE:1 (c7auto2) due to node availability - - Executing cluster transition: - * Pseudo action: FAKECLONE-clone_stop_0 -diff --git a/pengine/test10/clone_min_stop_two.summary b/pengine/test10/clone_min_stop_two.summary -index c009d7d..4d8c38f 100644 ---- a/pengine/test10/clone_min_stop_two.summary -+++ b/pengine/test10/clone_min_stop_two.summary -@@ -12,9 +12,9 @@ Online: [ c7auto3 c7auto4 ] - - Transition Summary: - * Move shooter (Started c7auto1 -> c7auto3) -- * Stop FAKECLONE:0 (c7auto1) -- * Stop FAKECLONE:1 (c7auto2) -- * Stop FAKE (Started c7auto4) -+ * Stop FAKECLONE:0 (c7auto1) due to node availability -+ * Stop FAKECLONE:1 (c7auto2) due to node availability -+ * Stop FAKE (Started c7auto4) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory - - Executing cluster transition: - * Resource action: shooter stop on c7auto1 -diff --git a/pengine/test10/cloned-group-stop.summary b/pengine/test10/cloned-group-stop.summary -index 8357c38..f7a980c 100644 ---- a/pengine/test10/cloned-group-stop.summary -+++ b/pengine/test10/cloned-group-stop.summary -@@ -18,22 +18,22 @@ Online: [ rhos4-node3 rhos4-node4 ] - Started: [ rhos4-node3 rhos4-node4 ] - - Transition Summary: -- * Stop qpidd:0 (rhos4-node4) -- * Stop qpidd:1 (rhos4-node3) -- * Stop keystone:0 (Started rhos4-node4) -- * Stop keystone:1 (Started rhos4-node3) -- * Stop glance-fs:0 (Started rhos4-node4) -- * Stop glance-registry:0 (Started rhos4-node4) -- * Stop glance-api:0 (Started rhos4-node4) -- * Stop glance-fs:1 (Started rhos4-node3) -- * Stop glance-registry:1 (Started rhos4-node3) -- * Stop glance-api:1 (Started rhos4-node3) -- * Stop cinder-api:0 (Started rhos4-node4) -- * Stop cinder-scheduler:0 (Started rhos4-node4) -- * Stop cinder-volume:0 (Started rhos4-node4) -- * Stop cinder-api:1 (Started rhos4-node3) -- * Stop cinder-scheduler:1 (Started rhos4-node3) -- * Stop cinder-volume:1 (Started rhos4-node3) -+ * Stop qpidd:0 (rhos4-node4) due to node availability -+ * Stop qpidd:1 (rhos4-node3) due to node availability -+ * Stop keystone:0 (Started rhos4-node4) due to unrunnable qpidd-clone running -+ * Stop keystone:1 (Started rhos4-node3) due to unrunnable qpidd-clone running -+ * Stop glance-fs:0 (Started rhos4-node4) due to required keystone-clone running -+ * Stop glance-registry:0 (Started rhos4-node4) due to required glance-fs:0 start -+ * Stop glance-api:0 (Started rhos4-node4) due to required glance-registry:0 start -+ * Stop glance-fs:1 (Started rhos4-node3) due to required keystone-clone running -+ * Stop glance-registry:1 (Started rhos4-node3) due to required glance-fs:1 start -+ * Stop glance-api:1 (Started rhos4-node3) due to required glance-registry:1 start -+ * Stop cinder-api:0 (Started rhos4-node4) due to required glance-clone running -+ * Stop cinder-scheduler:0 (Started rhos4-node4) due to required cinder-api:0 start -+ * Stop cinder-volume:0 (Started rhos4-node4) due to required cinder-scheduler:0 start -+ * Stop cinder-api:1 (Started rhos4-node3) due to required glance-clone running -+ * Stop cinder-scheduler:1 (Started rhos4-node3) due to required cinder-api:1 start -+ * Stop cinder-volume:1 (Started rhos4-node3) due to required cinder-scheduler:1 start - - Executing cluster transition: - * Pseudo action: cinder-clone_stop_0 -diff --git a/pengine/test10/cloned-group.summary b/pengine/test10/cloned-group.summary -index 7d64be4..e1456b9 100644 ---- a/pengine/test10/cloned-group.summary -+++ b/pengine/test10/cloned-group.summary -@@ -12,9 +12,9 @@ OFFLINE: [ webcluster02 ] - - Transition Summary: - * Restart apache2:0 (Started webcluster01) -- * Restart mysql-proxy:0 (Started webcluster01) -- * Stop apache2:2 (webcluster01) -- * Stop mysql-proxy:2 (webcluster01) -+ * Restart mysql-proxy:0 (Started webcluster01) due to required apache2:0 start -+ * Stop apache2:2 (webcluster01) due to node availability -+ * Stop mysql-proxy:2 (webcluster01) due to node availability - - Executing cluster transition: - * Pseudo action: apache2_clone_stop_0 -diff --git a/pengine/test10/cloned_start_one.summary b/pengine/test10/cloned_start_one.summary -index 20ac58f..5dedc18 100644 ---- a/pengine/test10/cloned_start_one.summary -+++ b/pengine/test10/cloned_start_one.summary -@@ -13,8 +13,8 @@ Online: [ c7auto1 c7auto4 ] - - Transition Summary: - * Start FAKECLONE:0 (c7auto1) -- * Stop FAKECLONE2:0 (c7auto3) -- * Stop FAKECLONE2:1 (Started c7auto4) -+ * Stop FAKECLONE2:0 (c7auto3) due to node availability -+ * Stop FAKECLONE2:1 (Started c7auto4) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKECLONE2-clone-mandatory - - Executing cluster transition: - * Pseudo action: FAKECLONE-clone_start_0 -diff --git a/pengine/test10/cloned_start_two.summary b/pengine/test10/cloned_start_two.summary -index bea4609..2b47881 100644 ---- a/pengine/test10/cloned_start_two.summary -+++ b/pengine/test10/cloned_start_two.summary -@@ -13,7 +13,7 @@ Online: [ c7auto1 c7auto2 c7auto4 ] - Transition Summary: - * Start FAKECLONE:0 (c7auto2) - * Start FAKECLONE:1 (c7auto1) -- * Stop FAKECLONE2:0 (c7auto3) -+ * Stop FAKECLONE2:0 (c7auto3) due to node availability - - Executing cluster transition: - * Pseudo action: FAKECLONE-clone_start_0 -diff --git a/pengine/test10/cloned_stop_one.summary b/pengine/test10/cloned_stop_one.summary -index 1a952a2..892548d 100644 ---- a/pengine/test10/cloned_stop_one.summary -+++ b/pengine/test10/cloned_stop_one.summary -@@ -12,8 +12,8 @@ Online: [ c7auto1 c7auto2 c7auto4 ] - Stopped: [ c7auto1 c7auto2 ] - - Transition Summary: -- * Stop FAKECLONE:2 (c7auto3) -- * Stop FAKECLONE2:0 (c7auto3) -+ * Stop FAKECLONE:2 (c7auto3) due to node availability -+ * Stop FAKECLONE2:0 (c7auto3) due to node availability - - Executing cluster transition: - * Pseudo action: FAKECLONE2-clone_stop_0 -diff --git a/pengine/test10/cloned_stop_two.summary b/pengine/test10/cloned_stop_two.summary -index 531295f..8f1e039 100644 ---- a/pengine/test10/cloned_stop_two.summary -+++ b/pengine/test10/cloned_stop_two.summary -@@ -13,10 +13,10 @@ Online: [ c7auto1 c7auto4 ] - Stopped: [ c7auto1 c7auto2 ] - - Transition Summary: -- * Stop FAKECLONE:1 (c7auto2) -- * Stop FAKECLONE:2 (c7auto3) -- * Stop FAKECLONE2:0 (c7auto3) -- * Stop FAKECLONE2:1 (Started c7auto4) -+ * Stop FAKECLONE:1 (c7auto2) due to node availability -+ * Stop FAKECLONE:2 (c7auto3) due to node availability -+ * Stop FAKECLONE2:0 (c7auto3) due to node availability -+ * Stop FAKECLONE2:1 (Started c7auto4) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKECLONE2-clone-mandatory - - Executing cluster transition: - * Pseudo action: FAKECLONE2-clone_stop_0 -diff --git a/pengine/test10/colocation_constraint_stops_slave.summary b/pengine/test10/colocation_constraint_stops_slave.summary -index fe9e044..a97b74b 100644 ---- a/pengine/test10/colocation_constraint_stops_slave.summary -+++ b/pengine/test10/colocation_constraint_stops_slave.summary -@@ -9,7 +9,7 @@ OFFLINE: [ fc16-builder2 ] - NATIVE_RSC_B (ocf::pacemaker:Dummy): Started fc16-builder ( disabled ) - - Transition Summary: -- * Stop NATIVE_RSC_A:0 (fc16-builder) -+ * Stop NATIVE_RSC_A:0 (fc16-builder) due to node availability - * Stop NATIVE_RSC_B (fc16-builder) - - Executing cluster transition: -diff --git a/pengine/test10/complex_enforce_colo.summary b/pengine/test10/complex_enforce_colo.summary -index dd838b2..a21d5c1 100644 ---- a/pengine/test10/complex_enforce_colo.summary -+++ b/pengine/test10/complex_enforce_colo.summary -@@ -102,17 +102,17 @@ Online: [ rhos6-node1 rhos6-node2 rhos6-node3 ] - Started: [ rhos6-node1 rhos6-node2 rhos6-node3 ] - - Transition Summary: -- * Stop keystone:0 (rhos6-node1) -- * Stop keystone:1 (rhos6-node2) -- * Stop keystone:2 (rhos6-node3) -+ * Stop keystone:0 (rhos6-node1) due to node availability -+ * Stop keystone:1 (rhos6-node2) due to node availability -+ * Stop keystone:2 (rhos6-node3) due to node availability - * Stop glance-registry:0 (rhos6-node1) - * Stop glance-registry:1 (rhos6-node2) - * Stop glance-registry:2 (rhos6-node3) - * Stop glance-api:0 (rhos6-node1) - * Stop glance-api:1 (rhos6-node2) - * Stop glance-api:2 (rhos6-node3) -- * Stop cinder-api (Started rhos6-node1) -- * Stop cinder-scheduler (Started rhos6-node1) -+ * Stop cinder-api (Started rhos6-node1) due to unrunnable keystone-clone running -+ * Stop cinder-scheduler (Started rhos6-node1) due to required cinder-api start - * Stop cinder-volume (Started rhos6-node1) - * Stop swift-account:0 (rhos6-node1) - * Stop swift-account:1 (rhos6-node2) -@@ -126,7 +126,7 @@ Transition Summary: - * Stop swift-proxy:0 (rhos6-node1) - * Stop swift-proxy:1 (rhos6-node2) - * Stop swift-proxy:2 (rhos6-node3) -- * Stop swift-object-expirer (Started rhos6-node2) -+ * Stop swift-object-expirer (Started rhos6-node2) due to required swift-proxy-clone running - * Stop neutron-server:0 (rhos6-node1) - * Stop neutron-server:1 (rhos6-node2) - * Stop neutron-server:2 (rhos6-node3) -@@ -166,35 +166,35 @@ Transition Summary: - * Stop nova-conductor:0 (rhos6-node1) - * Stop nova-conductor:1 (rhos6-node2) - * Stop nova-conductor:2 (rhos6-node3) -- * Stop ceilometer-central (Started rhos6-node3) -- * Stop ceilometer-collector:0 (Started rhos6-node1) -- * Stop ceilometer-collector:1 (Started rhos6-node2) -- * Stop ceilometer-collector:2 (Started rhos6-node3) -- * Stop ceilometer-api:0 (Started rhos6-node1) -- * Stop ceilometer-api:1 (Started rhos6-node2) -- * Stop ceilometer-api:2 (Started rhos6-node3) -- * Stop ceilometer-delay:0 (Started rhos6-node1) -- * Stop ceilometer-delay:1 (Started rhos6-node2) -- * Stop ceilometer-delay:2 (Started rhos6-node3) -- * Stop ceilometer-alarm-evaluator:0 (Started rhos6-node1) -- * Stop ceilometer-alarm-evaluator:1 (Started rhos6-node2) -- * Stop ceilometer-alarm-evaluator:2 (Started rhos6-node3) -- * Stop ceilometer-alarm-notifier:0 (Started rhos6-node1) -- * Stop ceilometer-alarm-notifier:1 (Started rhos6-node2) -- * Stop ceilometer-alarm-notifier:2 (Started rhos6-node3) -- * Stop ceilometer-notification:0 (Started rhos6-node1) -- * Stop ceilometer-notification:1 (Started rhos6-node2) -- * Stop ceilometer-notification:2 (Started rhos6-node3) -- * Stop heat-api:0 (Started rhos6-node1) -- * Stop heat-api:1 (Started rhos6-node2) -- * Stop heat-api:2 (Started rhos6-node3) -- * Stop heat-api-cfn:0 (Started rhos6-node1) -- * Stop heat-api-cfn:1 (Started rhos6-node2) -- * Stop heat-api-cfn:2 (Started rhos6-node3) -- * Stop heat-api-cloudwatch:0 (Started rhos6-node1) -- * Stop heat-api-cloudwatch:1 (Started rhos6-node2) -- * Stop heat-api-cloudwatch:2 (Started rhos6-node3) -- * Stop heat-engine (Started rhos6-node2) -+ * Stop ceilometer-central (Started rhos6-node3) due to unrunnable keystone-clone running -+ * Stop ceilometer-collector:0 (Started rhos6-node1) due to required ceilometer-central start -+ * Stop ceilometer-collector:1 (Started rhos6-node2) due to required ceilometer-central start -+ * Stop ceilometer-collector:2 (Started rhos6-node3) due to required ceilometer-central start -+ * Stop ceilometer-api:0 (Started rhos6-node1) due to required ceilometer-collector:0 start -+ * Stop ceilometer-api:1 (Started rhos6-node2) due to required ceilometer-collector:1 start -+ * Stop ceilometer-api:2 (Started rhos6-node3) due to required ceilometer-collector:2 start -+ * Stop ceilometer-delay:0 (Started rhos6-node1) due to required ceilometer-api:0 start -+ * Stop ceilometer-delay:1 (Started rhos6-node2) due to required ceilometer-api:1 start -+ * Stop ceilometer-delay:2 (Started rhos6-node3) due to required ceilometer-api:2 start -+ * Stop ceilometer-alarm-evaluator:0 (Started rhos6-node1) due to required ceilometer-delay:0 start -+ * Stop ceilometer-alarm-evaluator:1 (Started rhos6-node2) due to required ceilometer-delay:1 start -+ * Stop ceilometer-alarm-evaluator:2 (Started rhos6-node3) due to required ceilometer-delay:2 start -+ * Stop ceilometer-alarm-notifier:0 (Started rhos6-node1) due to required ceilometer-alarm-evaluator:0 start -+ * Stop ceilometer-alarm-notifier:1 (Started rhos6-node2) due to required ceilometer-alarm-evaluator:1 start -+ * Stop ceilometer-alarm-notifier:2 (Started rhos6-node3) due to required ceilometer-alarm-evaluator:2 start -+ * Stop ceilometer-notification:0 (Started rhos6-node1) due to required ceilometer-alarm-notifier:0 start -+ * Stop ceilometer-notification:1 (Started rhos6-node2) due to required ceilometer-alarm-notifier:1 start -+ * Stop ceilometer-notification:2 (Started rhos6-node3) due to required ceilometer-alarm-notifier:2 start -+ * Stop heat-api:0 (Started rhos6-node1) due to required ceilometer-notification:0 start -+ * Stop heat-api:1 (Started rhos6-node2) due to required ceilometer-notification:1 start -+ * Stop heat-api:2 (Started rhos6-node3) due to required ceilometer-notification:2 start -+ * Stop heat-api-cfn:0 (Started rhos6-node1) due to required heat-api:0 start -+ * Stop heat-api-cfn:1 (Started rhos6-node2) due to required heat-api:1 start -+ * Stop heat-api-cfn:2 (Started rhos6-node3) due to required heat-api:2 start -+ * Stop heat-api-cloudwatch:0 (Started rhos6-node1) due to required heat-api-cfn:0 start -+ * Stop heat-api-cloudwatch:1 (Started rhos6-node2) due to required heat-api-cfn:1 start -+ * Stop heat-api-cloudwatch:2 (Started rhos6-node3) due to required heat-api-cfn:2 start -+ * Stop heat-engine (Started rhos6-node2) due to required heat-api-cloudwatch-clone running - - Executing cluster transition: - * Pseudo action: glance-api-clone_stop_0 -diff --git a/pengine/test10/container-2.summary b/pengine/test10/container-2.summary -index b0c08b8..f011cd3 100644 ---- a/pengine/test10/container-2.summary -+++ b/pengine/test10/container-2.summary -@@ -9,7 +9,7 @@ Online: [ node1 node2 ] - Transition Summary: - * Restart container1 (Started node1) - * Recover rsc1 (Started node1) -- * Restart rsc2 (Started node1) -+ * Restart rsc2 (Started node1) due to required container1 start - - Executing cluster transition: - * Resource action: rsc1 stop on node1 -diff --git a/pengine/test10/container-3.summary b/pengine/test10/container-3.summary -index 194c687..f853ab2 100644 ---- a/pengine/test10/container-3.summary -+++ b/pengine/test10/container-3.summary -@@ -9,7 +9,7 @@ Online: [ node1 node2 ] - Transition Summary: - * Restart container1 (Started node1) - * Start rsc1 (node1) -- * Restart rsc2 (Started node1) -+ * Restart rsc2 (Started node1) due to required container1 start - - Executing cluster transition: - * Resource action: rsc2 stop on node1 -diff --git a/pengine/test10/container-group-2.summary b/pengine/test10/container-group-2.summary -index 4451c63..c0dbbf8 100644 ---- a/pengine/test10/container-group-2.summary -+++ b/pengine/test10/container-group-2.summary -@@ -10,7 +10,7 @@ Online: [ node1 node2 ] - Transition Summary: - * Restart container1 (Started node1) - * Recover rsc1 (Started node1) -- * Restart rsc2 (Started node1) -+ * Restart rsc2 (Started node1) due to required rsc1 start - - Executing cluster transition: - * Pseudo action: container-group_stop_0 -diff --git a/pengine/test10/enforce-colo1.summary b/pengine/test10/enforce-colo1.summary -index 9859073..b79b8cb 100644 ---- a/pengine/test10/enforce-colo1.summary -+++ b/pengine/test10/enforce-colo1.summary -@@ -11,10 +11,10 @@ Online: [ rhel7-auto1 rhel7-auto2 rhel7-auto3 ] - - Transition Summary: - * Stop engine (Started rhel7-auto3) -- * Stop keystone:0 (rhel7-auto2) -- * Stop keystone:1 (rhel7-auto3) -- * Stop keystone:2 (rhel7-auto1) -- * Stop central (Started rhel7-auto3) -+ * Stop keystone:0 (rhel7-auto2) due to node availability -+ * Stop keystone:1 (rhel7-auto3) due to node availability -+ * Stop keystone:2 (rhel7-auto1) due to node availability -+ * Stop central (Started rhel7-auto3) due to unrunnable keystone-clone running - - Executing cluster transition: - * Resource action: engine stop on rhel7-auto3 -diff --git a/pengine/test10/group-fail.summary b/pengine/test10/group-fail.summary -index aa03d21..9067bf6 100644 ---- a/pengine/test10/group-fail.summary -+++ b/pengine/test10/group-fail.summary -@@ -10,9 +10,9 @@ Online: [ node1 node2 ] - - Transition Summary: - * Start rsc1 (node1) -- * Restart rsc2 (Started node1) -+ * Restart rsc2 (Started node1) due to required rsc1 start - * Start rsc3 (node1) -- * Restart rsc4 (Started node1) -+ * Restart rsc4 (Started node1) due to required rsc3 start - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/group-unmanaged-stopped.summary b/pengine/test10/group-unmanaged-stopped.summary -index 9f542ff..de0586a 100644 ---- a/pengine/test10/group-unmanaged-stopped.summary -+++ b/pengine/test10/group-unmanaged-stopped.summary -@@ -8,7 +8,7 @@ Online: [ pcmk-1 pcmk-2 ] - r192.168.122.115 (ocf::heartbeat:IPaddr2): Started pcmk-1 - - Transition Summary: -- * Stop r192.168.122.115 (pcmk-1) -+ * Stop r192.168.122.115 (pcmk-1) due to node availability - - Executing cluster transition: - * Pseudo action: group-1_stop_0 -diff --git a/pengine/test10/group10.summary b/pengine/test10/group10.summary -index c630a21..570fd28 100644 ---- a/pengine/test10/group10.summary -+++ b/pengine/test10/group10.summary -@@ -19,8 +19,8 @@ Online: [ c001n01 c001n02 c001n03 c001n08 ] - - Transition Summary: - * Recover child_192.168.100.181 (Started c001n01) -- * Restart child_192.168.100.182 (Started c001n01) -- * Restart child_192.168.100.183 (Started c001n01) -+ * Restart child_192.168.100.182 (Started c001n01) due to required child_192.168.100.181 start -+ * Restart child_192.168.100.183 (Started c001n01) due to required child_192.168.100.182 start - - Executing cluster transition: - * Pseudo action: group-1_stop_0 -diff --git a/pengine/test10/group11.summary b/pengine/test10/group11.summary -index 9619e51..204d632 100644 ---- a/pengine/test10/group11.summary -+++ b/pengine/test10/group11.summary -@@ -9,8 +9,8 @@ Online: [ node1 ] - rsc3 (heartbeat:apache): Started node1 - - Transition Summary: -- * Stop rsc2 (node1) -- * Stop rsc3 (node1) -+ * Stop rsc2 (node1) due to node availability -+ * Stop rsc3 (node1) due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/group13.summary b/pengine/test10/group13.summary -index e728b2e..5f92a4f 100644 ---- a/pengine/test10/group13.summary -+++ b/pengine/test10/group13.summary -@@ -8,7 +8,7 @@ Online: [ jamesltc ] - resource_fs (ocf::heartbeat:Filesystem): Stopped - - Transition Summary: -- * Stop resource_nfs (jamesltc) -+ * Stop resource_nfs (jamesltc) due to node availability - - Executing cluster transition: - * Pseudo action: nfs_stop_0 -diff --git a/pengine/test10/group14.summary b/pengine/test10/group14.summary -index 451aeda..69e688b 100644 ---- a/pengine/test10/group14.summary -+++ b/pengine/test10/group14.summary -@@ -33,24 +33,24 @@ OFFLINE: [ c001n02 c001n03 c001n04 c001n05 ] - ocf_msdummy:11 (ocf::heartbeat:Stateful): Stopped - - Transition Summary: -- * Start DcIPaddr (c001n06 - blocked) -- * Stop r192.168.100.181 (Started c001n06) -- * Start r192.168.100.182 (c001n07 - blocked) -- * Start r192.168.100.183 (c001n07 - blocked) -- * Start lsb_dummy (c001n06 - blocked) -- * Start migrator (c001n06 - blocked) -- * Start rsc_c001n03 (c001n06 - blocked) -- * Start rsc_c001n02 (c001n07 - blocked) -- * Start rsc_c001n04 (c001n06 - blocked) -- * Start rsc_c001n05 (c001n07 - blocked) -- * Start rsc_c001n06 (c001n06 - blocked) -- * Start rsc_c001n07 (c001n07 - blocked) -+ * Start DcIPaddr (c001n06 - blocked) due to no quorum -+ * Stop r192.168.100.181 (Started c001n06) due to no quorum -+ * Start r192.168.100.182 (c001n07 - blocked) due to no quorum -+ * Start r192.168.100.183 (c001n07 - blocked) due to no quorum -+ * Start lsb_dummy (c001n06 - blocked) due to no quorum -+ * Start migrator (c001n06 - blocked) due to no quorum -+ * Start rsc_c001n03 (c001n06 - blocked) due to no quorum -+ * Start rsc_c001n02 (c001n07 - blocked) due to no quorum -+ * Start rsc_c001n04 (c001n06 - blocked) due to no quorum -+ * Start rsc_c001n05 (c001n07 - blocked) due to no quorum -+ * Start rsc_c001n06 (c001n06 - blocked) due to no quorum -+ * Start rsc_c001n07 (c001n07 - blocked) due to no quorum - * Start child_DoFencing:0 (c001n06) - * Start child_DoFencing:1 (c001n07) -- * Start ocf_msdummy:0 (c001n06 - blocked) -- * Start ocf_msdummy:1 (c001n07 - blocked) -- * Start ocf_msdummy:2 (c001n06 - blocked) -- * Start ocf_msdummy:3 (c001n07 - blocked) -+ * Start ocf_msdummy:0 (c001n06 - blocked) due to no quorum -+ * Start ocf_msdummy:1 (c001n07 - blocked) due to no quorum -+ * Start ocf_msdummy:2 (c001n06 - blocked) due to no quorum -+ * Start ocf_msdummy:3 (c001n07 - blocked) due to no quorum - - Executing cluster transition: - * Pseudo action: group-1_stop_0 -diff --git a/pengine/test10/group9.summary b/pengine/test10/group9.summary -index 6989f1d..f6755b9 100644 ---- a/pengine/test10/group9.summary -+++ b/pengine/test10/group9.summary -@@ -15,7 +15,7 @@ Online: [ node1 node2 ] - - Transition Summary: - * Recover rsc4 (Started node1) -- * Restart rsc5 (Started node1) -+ * Restart rsc5 (Started node1) due to required rsc4 start - * Move rsc6 (Started node1 -> node2) - * Recover rsc7 (Started node1 -> node2) - * Move rsc8 (Started node1 -> node2) -diff --git a/pengine/test10/inc10.summary b/pengine/test10/inc10.summary -index 77552e7..053a9ba 100644 ---- a/pengine/test10/inc10.summary -+++ b/pengine/test10/inc10.summary -@@ -9,8 +9,8 @@ Online: [ xen-1 xen-3 xen-4 ] - Started: [ xen-1 xen-2 xen-3 xen-4 ] - - Transition Summary: -- * Stop child_DoFencing:1 (xen-2) -- * Stop ocfs2:1 (xen-2) -+ * Stop child_DoFencing:1 (xen-2) due to node availability -+ * Stop ocfs2:1 (xen-2) due to node availability - - Executing cluster transition: - * Pseudo action: DoFencing_stop_0 -diff --git a/pengine/test10/inc12.summary b/pengine/test10/inc12.summary -index 5068b7e..e950c67 100644 ---- a/pengine/test10/inc12.summary -+++ b/pengine/test10/inc12.summary -@@ -38,9 +38,9 @@ Transition Summary: - * Shutdown c001n04 - * Shutdown c001n03 - * Shutdown c001n02 -- * Stop ocf_192.168.100.181 (c001n02) -- * Stop heartbeat_192.168.100.182 (c001n02) -- * Stop ocf_192.168.100.183 (c001n02) -+ * 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) -@@ -48,21 +48,21 @@ Transition Summary: - * Stop rsc_c001n05 (c001n05) - * Stop rsc_c001n06 (c001n06) - * Stop rsc_c001n07 (c001n07) -- * Stop child_DoFencing:0 (c001n02) -- * Stop child_DoFencing:1 (c001n04) -- * Stop child_DoFencing:2 (c001n05) -- * Stop child_DoFencing:3 (c001n06) -- * Stop child_DoFencing:4 (c001n07) -- * Stop ocf_msdummy:10 (c001n02) -- * Stop ocf_msdummy:11 (c001n02) -- * Stop ocf_msdummy:2 (c001n04) -- * Stop ocf_msdummy:3 (c001n04) -- * Stop ocf_msdummy:4 (c001n05) -- * Stop ocf_msdummy:5 (c001n05) -- * Stop ocf_msdummy:6 (c001n06) -- * Stop ocf_msdummy:7 (c001n06) -- * Stop ocf_msdummy:8 (c001n07) -- * Stop ocf_msdummy:9 (c001n07) -+ * 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 -+ * Stop child_DoFencing:3 (c001n06) due to node availability -+ * Stop child_DoFencing:4 (c001n07) due to node availability -+ * Stop ocf_msdummy:10 (c001n02) due to node availability -+ * Stop ocf_msdummy:11 (c001n02) due to node availability -+ * Stop ocf_msdummy:2 (c001n04) due to node availability -+ * Stop ocf_msdummy:3 (c001n04) due to node availability -+ * Stop ocf_msdummy:4 (c001n05) due to node availability -+ * Stop ocf_msdummy:5 (c001n05) due to node availability -+ * Stop ocf_msdummy:6 (c001n06) due to node availability -+ * Stop ocf_msdummy:7 (c001n06) due to node availability -+ * Stop ocf_msdummy:8 (c001n07) due to node availability -+ * Stop ocf_msdummy:9 (c001n07) due to node availability - - Executing cluster transition: - * Pseudo action: group-1_stop_0 -diff --git a/pengine/test10/inc2.summary b/pengine/test10/inc2.summary -index 7c6a9bb..898729f 100644 ---- a/pengine/test10/inc2.summary -+++ b/pengine/test10/inc2.summary -@@ -12,7 +12,7 @@ Online: [ node1 node2 ] - Transition Summary: - * Move child_rsc1:2 (Started node1 -> node2) - * Move child_rsc1:3 (Started node1 -> node2) -- * Stop child_rsc1:4 (node1) -+ * Stop child_rsc1:4 (node1) due to node availability - - Executing cluster transition: - * Resource action: child_rsc1:0 monitor on node2 -diff --git a/pengine/test10/inc3.summary b/pengine/test10/inc3.summary -index adc59e7..955ff3b 100644 ---- a/pengine/test10/inc3.summary -+++ b/pengine/test10/inc3.summary -@@ -18,7 +18,7 @@ Online: [ node1 node2 ] - Transition Summary: - * Move child_rsc1:2 (Started node1 -> node2) - * Move child_rsc1:3 (Started node1 -> node2) -- * Stop child_rsc1:4 (node1) -+ * Stop child_rsc1:4 (node1) due to node availability - * Move child_rsc2:3 (Started node2 -> node1) - * Move child_rsc2:4 (Started node2 -> node1) - -diff --git a/pengine/test10/inc4.summary b/pengine/test10/inc4.summary -index 03947cd..e730360 100644 ---- a/pengine/test10/inc4.summary -+++ b/pengine/test10/inc4.summary -@@ -18,7 +18,7 @@ Online: [ node1 node2 ] - Transition Summary: - * Move child_rsc1:2 (Started node1 -> node2) - * Move child_rsc1:3 (Started node1 -> node2) -- * Stop child_rsc1:4 (node1) -+ * Stop child_rsc1:4 (node1) due to node availability - * Move child_rsc2:3 (Started node2 -> node1) - * Move child_rsc2:4 (Started node2 -> node1) - -diff --git a/pengine/test10/inc6.summary b/pengine/test10/inc6.summary -index cf84c1f..4c754d7 100644 ---- a/pengine/test10/inc6.summary -+++ b/pengine/test10/inc6.summary -@@ -31,8 +31,8 @@ Transition Summary: - * Move child_rsc2:1 (Started node1 -> node2) - * Move child_rsc4:1 (Started node1 -> node2) - * Move child_rsc5:1 (Started node2 -> node1) -- * Restart child_rsc6:0 (Started node1) -- * Restart child_rsc6:1 (Started node2) -+ * Restart child_rsc6:0 (Started node1) due to required rsc5 running -+ * Restart child_rsc6:1 (Started node2) due to required rsc5 running - * Move child_rsc7:1 (Started node2 -> node1) - - Executing cluster transition: -diff --git a/pengine/test10/inc9.summary b/pengine/test10/inc9.summary -index 5a7f123..3c35aee 100644 ---- a/pengine/test10/inc9.summary -+++ b/pengine/test10/inc9.summary -@@ -9,9 +9,9 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Stop child_rsc1:5 (node1) -- * Stop child_rsc1:6 (node1) -- * Stop child_rsc1:7 (node2) -+ * Stop child_rsc1:5 (node1) due to node availability -+ * Stop child_rsc1:6 (node1) due to node availability -+ * Stop child_rsc1:7 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: rsc1_stop_0 -diff --git a/pengine/test10/interleave-pseudo-stop.summary b/pengine/test10/interleave-pseudo-stop.summary -index 01ce0ec..ee3fa29 100644 ---- a/pengine/test10/interleave-pseudo-stop.summary -+++ b/pengine/test10/interleave-pseudo-stop.summary -@@ -18,10 +18,10 @@ Online: [ node2 ] - - Transition Summary: - * Fence (reboot) node1 'peer is no longer part of the cluster' -- * Stop stonithclone:1 (node1) -- * Stop evmsclone:1 (node1) -- * Stop imagestoreclone:1 (node1) -- * Stop configstoreclone:1 (node1) -+ * Stop stonithclone:1 (node1) due to node availability -+ * Stop evmsclone:1 (node1) due to node availability -+ * Stop imagestoreclone:1 (node1) due to node availability -+ * Stop configstoreclone:1 (node1) due to node availability - - Executing cluster transition: - * Pseudo action: evmscloneset_pre_notify_stop_0 -diff --git a/pengine/test10/interleave-restart.summary b/pengine/test10/interleave-restart.summary -index 7f1b1e4..5ac19b9 100644 ---- a/pengine/test10/interleave-restart.summary -+++ b/pengine/test10/interleave-restart.summary -@@ -14,8 +14,8 @@ Online: [ node1 node2 ] - - Transition Summary: - * Recover evmsclone:1 (Started node1) -- * Restart imagestoreclone:1 (Started node1) -- * Restart configstoreclone:1 (Started node1) -+ * Restart imagestoreclone:1 (Started node1) due to required evmsclone:1 start -+ * Restart configstoreclone:1 (Started node1) due to required evmsclone:1 start - - Executing cluster transition: - * Pseudo action: evmscloneset_pre_notify_stop_0 -diff --git a/pengine/test10/interleave-stop.summary b/pengine/test10/interleave-stop.summary -index b5a1a98..529e33a 100644 ---- a/pengine/test10/interleave-stop.summary -+++ b/pengine/test10/interleave-stop.summary -@@ -13,10 +13,10 @@ Online: [ node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Stop stonithclone:1 (node1) -- * Stop evmsclone:1 (node1) -- * Stop imagestoreclone:1 (node1) -- * Stop configstoreclone:1 (node1) -+ * Stop stonithclone:1 (node1) due to node availability -+ * Stop evmsclone:1 (node1) due to node availability -+ * Stop imagestoreclone:1 (node1) due to node availability -+ * Stop configstoreclone:1 (node1) due to node availability - - Executing cluster transition: - * Pseudo action: stonithcloneset_stop_0 -diff --git a/pengine/test10/master-7.summary b/pengine/test10/master-7.summary -index 4c58184..58ef275 100644 ---- a/pengine/test10/master-7.summary -+++ b/pengine/test10/master-7.summary -@@ -36,9 +36,9 @@ Transition Summary: - * Move ocf_192.168.100.183 (Started c001n03 -> c001n02) - * Move lsb_dummy (Started c001n02 -> c001n08) - * Move rsc_c001n01 (Started c001n01 -> c001n03) -- * Stop child_DoFencing:0 (c001n01) -+ * Stop child_DoFencing:0 (c001n01) due to node availability - * Demote ocf_msdummy:0 (Master -> Stopped c001n01) -- * Stop ocf_msdummy:4 (c001n01) -+ * Stop ocf_msdummy:4 (c001n01) due to node availability - - Executing cluster transition: - * Pseudo action: group-1_stop_0 -diff --git a/pengine/test10/master-8.summary b/pengine/test10/master-8.summary -index e8d90d2..c18e884 100644 ---- a/pengine/test10/master-8.summary -+++ b/pengine/test10/master-8.summary -@@ -36,7 +36,7 @@ Transition Summary: - * Move ocf_192.168.100.183 (Started c001n03 -> c001n02) - * Move lsb_dummy (Started c001n02 -> c001n08) - * Move rsc_c001n01 (Started c001n01 -> c001n03) -- * Stop child_DoFencing:0 (c001n01) -+ * Stop child_DoFencing:0 (c001n01) due to node availability - * Demote ocf_msdummy:0 (Master -> Slave c001n01 - blocked) - * Move ocf_msdummy:0 (Slave c001n01 -> c001n03) - -diff --git a/pengine/test10/master-9.summary b/pengine/test10/master-9.summary -index c1cd4a1..ef59602 100644 ---- a/pengine/test10/master-9.summary -+++ b/pengine/test10/master-9.summary -@@ -31,18 +31,18 @@ Online: [ ibm1 va1 ] - - Transition Summary: - * Shutdown ibm1 -- * Start DcIPaddr (va1 - blocked) -- * Start ocf_127.0.0.11 (va1 - blocked) -- * Start heartbeat_127.0.0.12 (va1 - blocked) -- * Start ocf_127.0.0.13 (va1 - blocked) -- * Start lsb_dummy (va1 - blocked) -- * Start rsc_sgi2 (va1 - blocked) -- * Start rsc_ibm1 (va1 - blocked) -- * Start rsc_va1 (va1 - blocked) -- * Start rsc_test02 (va1 - blocked) -- * Stop child_DoFencing:1 (ibm1) -- * Start ocf_msdummy:0 (va1 - blocked) -- * Start ocf_msdummy:1 (va1 - blocked) -+ * Start DcIPaddr (va1 - blocked) due to no quorum -+ * Start ocf_127.0.0.11 (va1 - blocked) due to no quorum -+ * Start heartbeat_127.0.0.12 (va1 - blocked) due to no quorum -+ * Start ocf_127.0.0.13 (va1 - blocked) due to no quorum -+ * Start lsb_dummy (va1 - blocked) due to no quorum -+ * Start rsc_sgi2 (va1 - blocked) due to no quorum -+ * Start rsc_ibm1 (va1 - blocked) due to no quorum -+ * Start rsc_va1 (va1 - blocked) due to no quorum -+ * Start rsc_test02 (va1 - blocked) due to no quorum -+ * Stop child_DoFencing:1 (ibm1) due to node availability -+ * Start ocf_msdummy:0 (va1 - blocked) due to no quorum -+ * Start ocf_msdummy:1 (va1 - blocked) due to no quorum - - Executing cluster transition: - * Resource action: child_DoFencing:1 monitor on va1 -diff --git a/pengine/test10/master-asymmetrical-order.summary b/pengine/test10/master-asymmetrical-order.summary -index 1ff2836..d09f62e 100644 ---- a/pengine/test10/master-asymmetrical-order.summary -+++ b/pengine/test10/master-asymmetrical-order.summary -@@ -12,7 +12,7 @@ Online: [ node1 node2 ] - - Transition Summary: - * Demote rsc1:0 (Master -> Stopped node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: ms1_demote_0 -diff --git a/pengine/test10/master-failed-demote-2.summary b/pengine/test10/master-failed-demote-2.summary -index 847e0a1..086d02e 100644 ---- a/pengine/test10/master-failed-demote-2.summary -+++ b/pengine/test10/master-failed-demote-2.summary -@@ -11,7 +11,7 @@ Online: [ dl380g5a dl380g5b ] - stateful-2:1 (ocf::heartbeat:Stateful): Slave dl380g5a - - Transition Summary: -- * Stop stateful-1:0 (dl380g5b) -+ * Stop stateful-1:0 (dl380g5b) due to node availability - * Promote stateful-1:1 (Slave -> Master dl380g5a) - * Promote stateful-2:1 (Slave -> Master dl380g5a) - -diff --git a/pengine/test10/master-failed-demote.summary b/pengine/test10/master-failed-demote.summary -index cc3fbee..0f6c410 100644 ---- a/pengine/test10/master-failed-demote.summary -+++ b/pengine/test10/master-failed-demote.summary -@@ -11,7 +11,7 @@ Online: [ dl380g5a dl380g5b ] - stateful-2:1 (ocf::heartbeat:Stateful): Slave dl380g5a - - Transition Summary: -- * Stop stateful-1:0 (dl380g5b) -+ * Stop stateful-1:0 (dl380g5b) due to node availability - * Promote stateful-1:1 (Slave -> Master dl380g5a) - * Promote stateful-2:1 (Slave -> Master dl380g5a) - -diff --git a/pengine/test10/master-pseudo.summary b/pengine/test10/master-pseudo.summary -index 4ac7605..2ee2d03 100644 ---- a/pengine/test10/master-pseudo.summary -+++ b/pengine/test10/master-pseudo.summary -@@ -12,7 +12,7 @@ Online: [ sambuca.linbit ] - - Transition Summary: - * Start ip_float_right (sambuca.linbit) -- * Restart drbd_float:0 (Slave sambuca.linbit) -+ * Restart drbd_float:0 (Slave sambuca.linbit) due to required ip_float_right start - * Promote drbd_float:0 (Slave -> Master sambuca.linbit) - * Start ip_nfs (sambuca.linbit) - -diff --git a/pengine/test10/master-stop.summary b/pengine/test10/master-stop.summary -index cbe6683..8b802d4 100644 ---- a/pengine/test10/master-stop.summary -+++ b/pengine/test10/master-stop.summary -@@ -6,7 +6,7 @@ Online: [ node1 node2 node3 ] - Slaves: [ node1 node2 node3 ] - - Transition Summary: -- * Stop dummy:2 (node3) -+ * Stop dummy:2 (node3) due to node availability - - Executing cluster transition: - * Pseudo action: m_stop_0 -diff --git a/pengine/test10/migrate-5.summary b/pengine/test10/migrate-5.summary -index 9a98330..a9d5771 100644 ---- a/pengine/test10/migrate-5.summary -+++ b/pengine/test10/migrate-5.summary -@@ -9,7 +9,7 @@ Online: [ dom0-01 ] - - Transition Summary: - * Migrate domU-test01 (Started dom0-02 -> dom0-01) -- * Stop dom0-iscsi1-cnx1:1 (dom0-02) -+ * Stop dom0-iscsi1-cnx1:1 (dom0-02) due to node availability - - Executing cluster transition: - * Resource action: domU-test01 migrate_to on dom0-02 -diff --git a/pengine/test10/migrate-both-vms.summary b/pengine/test10/migrate-both-vms.summary -index 531fd4c..5b60727 100644 ---- a/pengine/test10/migrate-both-vms.summary -+++ b/pengine/test10/migrate-both-vms.summary -@@ -22,16 +22,16 @@ Online: [ cvmh01 cvmh02 ] - vm-swbuildsl6 (ocf::ccni:xcatVirtualDomain): Started cvmh04 - - Transition Summary: -- * Stop fs-libvirt-VM-xcm:0 (cvmh04) -- * Stop fs-libvirt-VM-xcm:2 (cvmh03) -- * Stop p-watch-ib0:0 (cvmh04) -- * Stop p-watch-ib0:2 (cvmh03) -- * Stop p-fs-gpfs:0 (cvmh04) -- * Stop p-fs-gpfs:2 (cvmh03) -- * Stop p-libvirtd:0 (cvmh04) -- * Stop p-libvirtd:2 (cvmh03) -- * Stop fs-bind-libvirt-VM-cvmh:0 (cvmh04) -- * Stop fs-bind-libvirt-VM-cvmh:2 (cvmh03) -+ * Stop fs-libvirt-VM-xcm:0 (cvmh04) due to node availability -+ * Stop fs-libvirt-VM-xcm:2 (cvmh03) due to node availability -+ * Stop p-watch-ib0:0 (cvmh04) due to node availability -+ * Stop p-watch-ib0:2 (cvmh03) due to node availability -+ * Stop p-fs-gpfs:0 (cvmh04) due to node availability -+ * Stop p-fs-gpfs:2 (cvmh03) due to node availability -+ * Stop p-libvirtd:0 (cvmh04) due to node availability -+ * Stop p-libvirtd:2 (cvmh03) due to node availability -+ * Stop fs-bind-libvirt-VM-cvmh:0 (cvmh04) due to node availability -+ * Stop fs-bind-libvirt-VM-cvmh:2 (cvmh03) due to node availability - * Migrate vm-compute-test (Started cvmh03 -> cvmh01) - * Migrate vm-swbuildsl6 (Started cvmh04 -> cvmh02) - -diff --git a/pengine/test10/migrate-fencing.summary b/pengine/test10/migrate-fencing.summary -index 7468fe2..cfd4eb8 100644 ---- a/pengine/test10/migrate-fencing.summary -+++ b/pengine/test10/migrate-fencing.summary -@@ -23,14 +23,14 @@ Online: [ pcmk-1 pcmk-2 pcmk-3 ] - - Transition Summary: - * Fence (reboot) pcmk-4 'termination was requested' -- * Stop FencingChild:0 (pcmk-4) -+ * Stop FencingChild:0 (pcmk-4) due to node availability - * Move r192.168.101.181 (Started pcmk-4 -> pcmk-1) - * Move r192.168.101.182 (Started pcmk-4 -> pcmk-1) - * Move r192.168.101.183 (Started pcmk-4 -> pcmk-1) - * Move rsc_pcmk-4 (Started pcmk-4 -> pcmk-2) - * Move lsb-dummy (Started pcmk-4 -> pcmk-1) - * Migrate migrator (Started pcmk-1 -> pcmk-3) -- * Stop ping-1:0 (pcmk-4) -+ * Stop ping-1:0 (pcmk-4) due to node availability - * Demote stateful-1:0 (Master -> Stopped pcmk-4) - * Promote stateful-1:1 (Slave -> Master pcmk-1) - -diff --git a/pengine/test10/migrate-shutdown.summary b/pengine/test10/migrate-shutdown.summary -index 630d58d..b9aa5b2 100644 ---- a/pengine/test10/migrate-shutdown.summary -+++ b/pengine/test10/migrate-shutdown.summary -@@ -27,20 +27,20 @@ Transition Summary: - * Shutdown pcmk-2 - * Shutdown pcmk-1 - * Stop Fencing (pcmk-1) -- * Stop r192.168.122.105 (pcmk-2) -- * Stop r192.168.122.106 (pcmk-2) -- * Stop r192.168.122.107 (pcmk-2) -+ * 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 ping-1:0 (pcmk-1) -- * Stop ping-1:1 (pcmk-2) -- * Stop ping-1:2 (pcmk-4) -- * Stop stateful-1:0 (pcmk-1) -+ * 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 -+ * Stop stateful-1:0 (pcmk-1) due to node availability - * Demote stateful-1:1 (Master -> Stopped pcmk-2) -- * Stop stateful-1:2 (pcmk-4) -+ * Stop stateful-1:2 (pcmk-4) due to node availability - - Executing cluster transition: - * Resource action: Fencing stop on pcmk-1 -diff --git a/pengine/test10/migrate-stop-complex.summary b/pengine/test10/migrate-stop-complex.summary -index e8f148c..04dce1a 100644 ---- a/pengine/test10/migrate-stop-complex.summary -+++ b/pengine/test10/migrate-stop-complex.summary -@@ -13,8 +13,8 @@ Online: [ dom0-01 ] - Transition Summary: - * Move top (Started dom0-02 -> dom0-01) - * Migrate domU-test01 (Started dom0-02 -> dom0-01) -- * Stop dom0-iscsi1-cnx1:1 (dom0-02) -- * Stop bottom:1 (dom0-02) -+ * Stop dom0-iscsi1-cnx1:1 (dom0-02) due to node availability -+ * Stop bottom:1 (dom0-02) due to node availability - - Executing cluster transition: - * Resource action: top stop on dom0-02 -diff --git a/pengine/test10/migrate-stop-start-complex.summary b/pengine/test10/migrate-stop-start-complex.summary -index 162f73b..5408bb6 100644 ---- a/pengine/test10/migrate-stop-start-complex.summary -+++ b/pengine/test10/migrate-stop-start-complex.summary -@@ -13,7 +13,7 @@ Online: [ dom0-01 ] - - Transition Summary: - * Migrate domU-test01 (Started dom0-02 -> dom0-01) -- * Stop dom0-iscsi1-cnx1:1 (dom0-02) -+ * Stop dom0-iscsi1-cnx1:1 (dom0-02) due to node availability - * Move bottom:0 (Started dom0-02 -> dom0-01) - - Executing cluster transition: -diff --git a/pengine/test10/migrate-stop.summary b/pengine/test10/migrate-stop.summary -index 9a98330..a9d5771 100644 ---- a/pengine/test10/migrate-stop.summary -+++ b/pengine/test10/migrate-stop.summary -@@ -9,7 +9,7 @@ Online: [ dom0-01 ] - - Transition Summary: - * Migrate domU-test01 (Started dom0-02 -> dom0-01) -- * Stop dom0-iscsi1-cnx1:1 (dom0-02) -+ * Stop dom0-iscsi1-cnx1:1 (dom0-02) due to node availability - - Executing cluster transition: - * Resource action: domU-test01 migrate_to on dom0-02 -diff --git a/pengine/test10/monitor-recovery.summary b/pengine/test10/monitor-recovery.summary -index cae6d07..d8a13fe 100644 ---- a/pengine/test10/monitor-recovery.summary -+++ b/pengine/test10/monitor-recovery.summary -@@ -11,7 +11,7 @@ OFFLINE: [ CSE-2 ] - Stopped: [ CSE-2 ] - - Transition Summary: -- * Stop d_tomcat:0 (CSE-1) -+ * Stop d_tomcat:0 (CSE-1) due to node availability - - Executing cluster transition: - * Pseudo action: cl_tomcat_stop_0 -diff --git a/pengine/test10/notify-0.summary b/pengine/test10/notify-0.summary -index 2d95b26..69112da 100644 ---- a/pengine/test10/notify-0.summary -+++ b/pengine/test10/notify-0.summary -@@ -12,7 +12,7 @@ OFFLINE: [ node2 ] - - Transition Summary: - * Start child_rsc1:1 (node1) -- * Stop child_rsc2:0 (node1) -+ * Stop child_rsc2:0 (node1) due to node availability - - Executing cluster transition: - * Resource action: child_rsc1:1 monitor on node1 -diff --git a/pengine/test10/notify-1.summary b/pengine/test10/notify-1.summary -index d670be7..0a734a6 100644 ---- a/pengine/test10/notify-1.summary -+++ b/pengine/test10/notify-1.summary -@@ -12,7 +12,7 @@ OFFLINE: [ node2 ] - - Transition Summary: - * Start child_rsc1:1 (node1) -- * Stop child_rsc2:0 (node1) -+ * Stop child_rsc2:0 (node1) due to node availability - - Executing cluster transition: - * Resource action: child_rsc1:1 monitor on node1 -diff --git a/pengine/test10/notify-2.summary b/pengine/test10/notify-2.summary -index d670be7..0a734a6 100644 ---- a/pengine/test10/notify-2.summary -+++ b/pengine/test10/notify-2.summary -@@ -12,7 +12,7 @@ OFFLINE: [ node2 ] - - Transition Summary: - * Start child_rsc1:1 (node1) -- * Stop child_rsc2:0 (node1) -+ * Stop child_rsc2:0 (node1) due to node availability - - Executing cluster transition: - * Resource action: child_rsc1:1 monitor on node1 -diff --git a/pengine/test10/notify-3.summary b/pengine/test10/notify-3.summary -index efc3a07..03a3d4e 100644 ---- a/pengine/test10/notify-3.summary -+++ b/pengine/test10/notify-3.summary -@@ -11,7 +11,7 @@ Online: [ node1 node2 ] - - Transition Summary: - * Move child_rsc1:1 (Started node2 -> node1) -- * Stop child_rsc2:0 (node1) -+ * Stop child_rsc2:0 (node1) due to node availability - - Executing cluster transition: - * Resource action: child_rsc1:0 monitor on node2 -diff --git a/pengine/test10/novell-252693.summary b/pengine/test10/novell-252693.summary -index 23f0632..0682119 100644 ---- a/pengine/test10/novell-252693.summary -+++ b/pengine/test10/novell-252693.summary -@@ -16,11 +16,11 @@ Online: [ node1 node2 ] - - Transition Summary: - * Shutdown node1 -- * Stop stonithclone:1 (node1) -- * Stop evmsdclone:1 (node1) -- * Stop evmsclone:1 (node1) -- * Stop imagestoreclone:1 (node1) -- * Stop configstoreclone:1 (node1) -+ * Stop stonithclone:1 (node1) due to node availability -+ * Stop evmsdclone:1 (node1) due to node availability -+ * Stop evmsclone:1 (node1) due to node availability -+ * Stop imagestoreclone:1 (node1) due to node availability -+ * Stop configstoreclone:1 (node1) due to node availability - * Migrate sles10 (Started node1 -> node2) - - Executing cluster transition: -diff --git a/pengine/test10/one-or-more-1.summary b/pengine/test10/one-or-more-1.summary -index f26919c..af31a46 100644 ---- a/pengine/test10/one-or-more-1.summary -+++ b/pengine/test10/one-or-more-1.summary -@@ -10,9 +10,9 @@ OFFLINE: [ fc16-builder2 ] - D (ocf::pacemaker:Dummy): Stopped - - Transition Summary: -- * Start B (fc16-builder - blocked) -- * Start C (fc16-builder - blocked) -- * Start D (fc16-builder - blocked) -+ * Start B (fc16-builder - blocked) due to unrunnable A start -+ * Start C (fc16-builder - blocked) due to unrunnable A start -+ * Start D (fc16-builder - blocked) due to unrunnable one-or-more:require-all-set-1 - - Executing cluster transition: - * Resource action: A monitor on fc16-builder -diff --git a/pengine/test10/one-or-more-3.summary b/pengine/test10/one-or-more-3.summary -index f0ee084..abf4081 100644 ---- a/pengine/test10/one-or-more-3.summary -+++ b/pengine/test10/one-or-more-3.summary -@@ -11,7 +11,7 @@ OFFLINE: [ fc16-builder2 ] - - Transition Summary: - * Start A (fc16-builder) -- * Start D (fc16-builder - blocked) -+ * Start D (fc16-builder - blocked) due to unrunnable one-or-more:require-all-set-1 - - Executing cluster transition: - * Resource action: A monitor on fc16-builder -diff --git a/pengine/test10/one-or-more-6.summary b/pengine/test10/one-or-more-6.summary -index 18cab2e..665ac52 100644 ---- a/pengine/test10/one-or-more-6.summary -+++ b/pengine/test10/one-or-more-6.summary -@@ -9,7 +9,7 @@ OFFLINE: [ fc16-builder2 ] - C (ocf::pacemaker:Dummy): Started fc16-builder - - Transition Summary: -- * Stop B (fc16-builder) -+ * Stop B (fc16-builder) due to node availability - - Executing cluster transition: - * Resource action: B stop on fc16-builder -diff --git a/pengine/test10/one-or-more-7.summary b/pengine/test10/one-or-more-7.summary -index 4322db3..89b3416 100644 ---- a/pengine/test10/one-or-more-7.summary -+++ b/pengine/test10/one-or-more-7.summary -@@ -9,7 +9,7 @@ OFFLINE: [ fc16-builder2 ] - C (ocf::pacemaker:Dummy): Started fc16-builder ( disabled ) - - Transition Summary: -- * Stop C (fc16-builder) -+ * Stop C (fc16-builder) due to node availability - - Executing cluster transition: - * Resource action: C stop on fc16-builder -diff --git a/pengine/test10/order-mandatory.summary b/pengine/test10/order-mandatory.summary -index a1d2b4b..021d8fe 100644 ---- a/pengine/test10/order-mandatory.summary -+++ b/pengine/test10/order-mandatory.summary -@@ -9,8 +9,8 @@ Online: [ node1 ] - - Transition Summary: - * Start rsc1 (node1) -- * Restart rsc2 (Started node1) -- * Stop rsc4 (Started node1) -+ * Restart rsc2 (Started node1) due to required rsc1 start -+ * Stop rsc4 (Started node1) due to unrunnable rsc3 start - - Executing cluster transition: - * Resource action: rsc1 start on node1 -diff --git a/pengine/test10/order-required.summary b/pengine/test10/order-required.summary -index a1d2b4b..021d8fe 100644 ---- a/pengine/test10/order-required.summary -+++ b/pengine/test10/order-required.summary -@@ -9,8 +9,8 @@ Online: [ node1 ] - - Transition Summary: - * Start rsc1 (node1) -- * Restart rsc2 (Started node1) -- * Stop rsc4 (Started node1) -+ * Restart rsc2 (Started node1) due to required rsc1 start -+ * Stop rsc4 (Started node1) due to unrunnable rsc3 start - - Executing cluster transition: - * Resource action: rsc1 start on node1 -diff --git a/pengine/test10/order-wrong-kind.summary b/pengine/test10/order-wrong-kind.summary -index 8525b52..c498caf 100644 ---- a/pengine/test10/order-wrong-kind.summary -+++ b/pengine/test10/order-wrong-kind.summary -@@ -10,7 +10,7 @@ Online: [ node1 ] - - Transition Summary: - * Start rsc1 (node1) -- * Restart rsc2 (Started node1) -+ * Restart rsc2 (Started node1) due to required rsc1 start - - Executing cluster transition: - * Resource action: rsc1 start on node1 -diff --git a/pengine/test10/order7.summary b/pengine/test10/order7.summary -index 74c4b60..6648bff 100644 ---- a/pengine/test10/order7.summary -+++ b/pengine/test10/order7.summary -@@ -13,7 +13,7 @@ Transition Summary: - * Start rsc2 (node1) - * Start rsc3 (node1) - * Start rscB (node1) -- * Start rscC (node1 - blocked) -+ * Start rscC (node1 - blocked) due to unrunnable rscA start - - Executing cluster transition: - * Resource action: rsc2 monitor on node1 -diff --git a/pengine/test10/order_constraint_stops_master.summary b/pengine/test10/order_constraint_stops_master.summary -index f1125a1..d3d8891 100644 ---- a/pengine/test10/order_constraint_stops_master.summary -+++ b/pengine/test10/order_constraint_stops_master.summary -@@ -8,8 +8,8 @@ Online: [ fc16-builder fc16-builder2 ] - NATIVE_RSC_B (ocf::pacemaker:Dummy): Started fc16-builder2 ( disabled ) - - Transition Summary: -- * Stop NATIVE_RSC_A:0 (Master fc16-builder) -- * Stop NATIVE_RSC_B (fc16-builder2) -+ * Stop NATIVE_RSC_A:0 (Master fc16-builder) due to required NATIVE_RSC_B start -+ * Stop NATIVE_RSC_B (fc16-builder2) due to node availability - - Executing cluster transition: - * Pseudo action: MASTER_RSC_A_pre_notify_demote_0 -diff --git a/pengine/test10/order_constraint_stops_slave.summary b/pengine/test10/order_constraint_stops_slave.summary -index 843d3b6..896c9c3 100644 ---- a/pengine/test10/order_constraint_stops_slave.summary -+++ b/pengine/test10/order_constraint_stops_slave.summary -@@ -9,8 +9,8 @@ OFFLINE: [ fc16-builder2 ] - NATIVE_RSC_B (ocf::pacemaker:Dummy): Started fc16-builder ( disabled ) - - Transition Summary: -- * Stop NATIVE_RSC_A:0 (Slave fc16-builder) -- * Stop NATIVE_RSC_B (fc16-builder) -+ * Stop NATIVE_RSC_A:0 (Slave fc16-builder) due to required NATIVE_RSC_B start -+ * 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/ordered-set-basic-startup.summary b/pengine/test10/ordered-set-basic-startup.summary -index 182dd08..cfa8f8b 100644 ---- a/pengine/test10/ordered-set-basic-startup.summary -+++ b/pengine/test10/ordered-set-basic-startup.summary -@@ -12,10 +12,10 @@ OFFLINE: [ fc16-builder2 ] - F (ocf::pacemaker:Dummy): Stopped - - Transition Summary: -- * Start A (fc16-builder - blocked) -+ * Start A (fc16-builder - blocked) due to unrunnable C start - * Start B (fc16-builder) -- * Start E (fc16-builder - blocked) -- * Start F (fc16-builder - blocked) -+ * Start E (fc16-builder - blocked) due to unrunnable A start -+ * Start F (fc16-builder - blocked) due to unrunnable D start - - Executing cluster transition: - * Resource action: A monitor on fc16-builder -diff --git a/pengine/test10/ordered-set-natural.summary b/pengine/test10/ordered-set-natural.summary -index a3ba453..1888d66 100644 ---- a/pengine/test10/ordered-set-natural.summary -+++ b/pengine/test10/ordered-set-natural.summary -@@ -21,12 +21,12 @@ Online: [ node1 node2 ] - dummy2-5 (ocf::heartbeat:Dummy): Stopped - - Transition Summary: -- * Start dummy1-1 (node1 - blocked) -- * Start dummy1-2 (node1 - blocked) -- * Start dummy2-1 (node2 - blocked) -- * Start dummy2-2 (node2 - blocked) -- * Start dummy3-4 (node1 - blocked) -- * Start dummy3-5 (node1 - blocked) -+ * Start dummy1-1 (node1 - blocked) due to no quorum -+ * Start dummy1-2 (node1 - blocked) due to no quorum -+ * Start dummy2-1 (node2 - blocked) due to no quorum -+ * Start dummy2-2 (node2 - blocked) due to no quorum -+ * Start dummy3-4 (node1 - blocked) due to no quorum -+ * Start dummy3-5 (node1 - blocked) due to no quorum - - Executing cluster transition: - -diff --git a/pengine/test10/probe-2.summary b/pengine/test10/probe-2.summary -index e8a2269..05588c8 100644 ---- a/pengine/test10/probe-2.summary -+++ b/pengine/test10/probe-2.summary -@@ -36,13 +36,13 @@ Transition Summary: - * Move fs_mysql (Started wc02 -> wc01) - * Move intip_sql (Started wc02 -> wc01) - * Move mysql-server (Started wc02 -> wc01) -- * Stop drbd_www:1 (wc02) -- * Stop nfs-common:1 (wc02) -- * Stop mysql-proxy:1 (wc02) -- * Stop fs_www:1 (wc02) -- * Stop apache2:1 (wc02) -+ * Stop drbd_www:1 (wc02) due to node availability -+ * Stop nfs-common:1 (wc02) due to node availability -+ * 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 (Started wc01) -- * Stop stonith_rackpdu:1 (wc02) -+ * Stop stonith_rackpdu:1 (wc02) due to node availability - - Executing cluster transition: - * Resource action: drbd_mysql:0 cancel=10000 on wc01 -diff --git a/pengine/test10/quorum-2.summary b/pengine/test10/quorum-2.summary -index 9854fda..1dce96c 100644 ---- a/pengine/test10/quorum-2.summary -+++ b/pengine/test10/quorum-2.summary -@@ -8,7 +8,7 @@ Online: [ node1 node2 ] - - Transition Summary: - * Move rsc2 (Started node1 -> node2) -- * Start rsc3 (node1 - blocked) -+ * Start rsc3 (node1 - blocked) due to quorum freeze - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/quorum-3.summary b/pengine/test10/quorum-3.summary -index 2ff7561..e8e4bf3 100644 ---- a/pengine/test10/quorum-3.summary -+++ b/pengine/test10/quorum-3.summary -@@ -7,9 +7,9 @@ Online: [ node1 node2 ] - rsc3 (heartbeat:apache): Stopped - - Transition Summary: -- * Stop rsc1 (Started node1) -- * Stop rsc2 (Started node1) -- * Start rsc3 (node1 - blocked) -+ * Stop rsc1 (Started node1) due to no quorum -+ * Stop rsc2 (Started node1) due to no quorum -+ * Start rsc3 (node1 - blocked) due to no quorum - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/rec-node-10.summary b/pengine/test10/rec-node-10.summary -index 6daec5c..503dd0d 100644 ---- a/pengine/test10/rec-node-10.summary -+++ b/pengine/test10/rec-node-10.summary -@@ -8,9 +8,9 @@ Online: [ node2 ] - rsc2 (heartbeat:apache): Started node1 (UNCLEAN) - - Transition Summary: -- * Start stonith-1 (node2 - blocked) -- * Stop rsc1 (Started node1 - blocked) -- * Stop rsc2 (Started node1 - blocked) -+ * Start stonith-1 (node2 - blocked) due to no quorum -+ * Stop rsc1 (Started node1 - blocked) due to no quorum -+ * Stop rsc2 (Started node1 - blocked) due to no quorum - - Executing cluster transition: - * Resource action: stonith-1 monitor on node2 -diff --git a/pengine/test10/rec-node-13.summary b/pengine/test10/rec-node-13.summary -index 9873757..de2fa28 100644 ---- a/pengine/test10/rec-node-13.summary -+++ b/pengine/test10/rec-node-13.summary -@@ -35,7 +35,7 @@ OFFLINE: [ c001n03 c001n05 ] - - Transition Summary: - * Fence (reboot) c001n04 'ocf_msdummy:6 failed there' -- * Stop ocf_msdummy:6 (c001n04) -+ * Stop ocf_msdummy:6 (c001n04) due to node availability - - Executing cluster transition: - * Fencing c001n04 (reboot) -diff --git a/pengine/test10/rec-node-8.summary b/pengine/test10/rec-node-8.summary -index 4cd6724..1a7232e 100644 ---- a/pengine/test10/rec-node-8.summary -+++ b/pengine/test10/rec-node-8.summary -@@ -9,10 +9,10 @@ Online: [ node2 ] - rsc3 (heartbeat:apache): Stopped - - Transition Summary: -- * Start stonith-1 (node2 - blocked) -+ * Start stonith-1 (node2 - blocked) due to quorum freeze - * Stop rsc1 (Started node1 - blocked) - * Stop rsc2 (Started node1 - blocked) -- * Start rsc3 (node2 - blocked) -+ * Start rsc3 (node2 - blocked) due to quorum freeze - - Executing cluster transition: - * Resource action: stonith-1 monitor on node2 -diff --git a/pengine/test10/rec-node-9.summary b/pengine/test10/rec-node-9.summary -index 09ca805..7f6d8ae 100644 ---- a/pengine/test10/rec-node-9.summary -+++ b/pengine/test10/rec-node-9.summary -@@ -7,8 +7,8 @@ OFFLINE: [ node1 ] - rsc2 (heartbeat:apache): Stopped - - Transition Summary: -- * Start rsc1 (node2 - blocked) -- * Start rsc2 (node2 - blocked) -+ * Start rsc1 (node2 - blocked) due to no quorum -+ * Start rsc2 (node2 - blocked) due to no quorum - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/rec-rsc-9.summary b/pengine/test10/rec-rsc-9.summary -index 1c06087..02a2fe5 100644 ---- a/pengine/test10/rec-rsc-9.summary -+++ b/pengine/test10/rec-rsc-9.summary -@@ -9,8 +9,8 @@ Online: [ node1 ] - rsc3 (heartbeat:apache): FAILED node1 - - Transition Summary: -- * Restart rsc1 (Started node1) -- * Restart rsc2 (Started node1) -+ * Restart rsc1 (Started node1) due to required bar running -+ * Restart rsc2 (Started node1) due to required bar running - * Recover rsc3 (Started node1) - - Executing cluster transition: -diff --git a/pengine/test10/remote-disable.summary b/pengine/test10/remote-disable.summary -index 69b4b62..2ec1748 100644 ---- a/pengine/test10/remote-disable.summary -+++ b/pengine/test10/remote-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 - * Stop FAKE2 (remote1) - - Executing cluster transition: -diff --git a/pengine/test10/remote-orphaned.summary b/pengine/test10/remote-orphaned.summary -index 84762b2..2b9add7 100644 ---- a/pengine/test10/remote-orphaned.summary -+++ b/pengine/test10/remote-orphaned.summary -@@ -26,8 +26,8 @@ RemoteOnline: [ remote1 ] - - Transition Summary: - * Move rsc_18node2 (Started remote1 -> 18node1) -- * Stop ping-1:2 (remote1) -- * Stop remote1 (18node1) -+ * Stop ping-1:2 (remote1) due to node availability -+ * Stop remote1 (18node1) due to node availability - - Executing cluster transition: - * Resource action: rsc_18node2 stop on remote1 -diff --git a/pengine/test10/remote-recover-all.summary b/pengine/test10/remote-recover-all.summary -index 35f3d58..a8dac38 100644 ---- a/pengine/test10/remote-recover-all.summary -+++ b/pengine/test10/remote-recover-all.summary -@@ -41,16 +41,16 @@ Transition Summary: - * Fence (reboot) messaging-1 'resources are active and the connection is unrecoverable' - * Fence (reboot) galera-2 'resources are active and the connection is unrecoverable' - * Fence (reboot) controller-1 'peer is no longer part of the cluster' -- * Stop messaging-1 (controller-1) -+ * Stop messaging-1 (controller-1) due to node availability - * Move galera-0 (Started controller-1 -> controller-2) -- * Stop galera-2 (controller-1) -- * Stop rabbitmq:2 (messaging-1) -+ * Stop galera-2 (controller-1) due to node availability -+ * Stop rabbitmq:2 (messaging-1) due to node availability - * Demote galera:1 (Master -> Stopped galera-2) -- * Stop redis:0 (controller-1) -+ * Stop redis:0 (controller-1) due to node availability - * Move ip-172.17.1.14 (Started controller-1 -> controller-2) - * Move ip-172.17.1.17 (Started controller-1 -> controller-2) - * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -- * Stop haproxy:0 (controller-1) -+ * Stop haproxy:0 (controller-1) due to node availability - * Restart stonith-fence_ipmilan-525400bbf613 (Started controller-0) - * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) - * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -diff --git a/pengine/test10/remote-recover-connection.summary b/pengine/test10/remote-recover-connection.summary -index e0a9d0e..7b5b5fc 100644 ---- a/pengine/test10/remote-recover-connection.summary -+++ b/pengine/test10/remote-recover-connection.summary -@@ -42,11 +42,11 @@ Transition Summary: - * Move messaging-1 (Started controller-1 -> controller-2) - * Move galera-0 (Started controller-1 -> controller-2) - * Move galera-2 (Started controller-1 -> controller-2) -- * Stop redis:0 (controller-1) -+ * Stop redis:0 (controller-1) due to node availability - * Move ip-172.17.1.14 (Started controller-1 -> controller-2) - * Move ip-172.17.1.17 (Started controller-1 -> controller-2) - * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -- * Stop haproxy:0 (controller-1) -+ * Stop haproxy:0 (controller-1) due to node availability - * Restart stonith-fence_ipmilan-525400bbf613 (Started controller-0) - * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) - * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -diff --git a/pengine/test10/remote-recover-no-resources.summary b/pengine/test10/remote-recover-no-resources.summary -index 19b5181..4383e81 100644 ---- a/pengine/test10/remote-recover-no-resources.summary -+++ b/pengine/test10/remote-recover-no-resources.summary -@@ -40,15 +40,15 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - Transition Summary: - * Fence (reboot) messaging-1 'resources are active and the connection is unrecoverable' - * Fence (reboot) controller-1 'peer is no longer part of the cluster' -- * Stop messaging-1 (controller-1) -+ * Stop messaging-1 (controller-1) due to node availability - * Move galera-0 (Started controller-1 -> controller-2) - * Stop galera-2 (controller-1) -- * Stop rabbitmq:2 (messaging-1) -- * Stop redis:0 (controller-1) -+ * Stop rabbitmq:2 (messaging-1) due to node availability -+ * Stop redis:0 (controller-1) due to node availability - * Move ip-172.17.1.14 (Started controller-1 -> controller-2) - * Move ip-172.17.1.17 (Started controller-1 -> controller-2) - * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -- * Stop haproxy:0 (controller-1) -+ * Stop haproxy:0 (controller-1) due to node availability - * Restart stonith-fence_ipmilan-525400bbf613 (Started controller-0) - * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) - * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -diff --git a/pengine/test10/remote-recover-unknown.summary b/pengine/test10/remote-recover-unknown.summary -index 772a699..3ffb5f4 100644 ---- a/pengine/test10/remote-recover-unknown.summary -+++ b/pengine/test10/remote-recover-unknown.summary -@@ -41,15 +41,15 @@ Transition Summary: - * Fence (reboot) galera-2 'resources are in an unknown state and the connection is unrecoverable' - * Fence (reboot) messaging-1 'resources are active and the connection is unrecoverable' - * Fence (reboot) controller-1 'peer is no longer part of the cluster' -- * Stop messaging-1 (controller-1) -+ * Stop messaging-1 (controller-1) due to node availability - * Move galera-0 (Started controller-1 -> controller-2) -- * Stop galera-2 (controller-1) -- * Stop rabbitmq:2 (messaging-1) -- * Stop redis:0 (controller-1) -+ * Stop galera-2 (controller-1) due to node availability -+ * Stop rabbitmq:2 (messaging-1) due to node availability -+ * Stop redis:0 (controller-1) due to node availability - * Move ip-172.17.1.14 (Started controller-1 -> controller-2) - * Move ip-172.17.1.17 (Started controller-1 -> controller-2) - * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -- * Stop haproxy:0 (controller-1) -+ * Stop haproxy:0 (controller-1) due to node availability - * Restart stonith-fence_ipmilan-525400bbf613 (Started controller-0) - * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) - * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -diff --git a/pengine/test10/remote-recovery.summary b/pengine/test10/remote-recovery.summary -index e0a9d0e..7b5b5fc 100644 ---- a/pengine/test10/remote-recovery.summary -+++ b/pengine/test10/remote-recovery.summary -@@ -42,11 +42,11 @@ Transition Summary: - * Move messaging-1 (Started controller-1 -> controller-2) - * Move galera-0 (Started controller-1 -> controller-2) - * Move galera-2 (Started controller-1 -> controller-2) -- * Stop redis:0 (controller-1) -+ * Stop redis:0 (controller-1) due to node availability - * Move ip-172.17.1.14 (Started controller-1 -> controller-2) - * Move ip-172.17.1.17 (Started controller-1 -> controller-2) - * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -- * Stop haproxy:0 (controller-1) -+ * Stop haproxy:0 (controller-1) due to node availability - * Restart stonith-fence_ipmilan-525400bbf613 (Started controller-0) - * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) - * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -diff --git a/pengine/test10/rsc-sets-clone.summary b/pengine/test10/rsc-sets-clone.summary -index 7ee23a2..70570e6 100644 ---- a/pengine/test10/rsc-sets-clone.summary -+++ b/pengine/test10/rsc-sets-clone.summary -@@ -12,7 +12,7 @@ Online: [ node2 ] - Transition Summary: - * Move rsc1 (Started node1 -> node2) - * Move rsc3 (Started node1 -> node2) -- * Stop rsc:0 (node1) -+ * Stop rsc:0 (node1) due to node availability - - Executing cluster transition: - * Resource action: rsc1 stop on node1 -diff --git a/pengine/test10/stop-failure-no-quorum.summary b/pengine/test10/stop-failure-no-quorum.summary -index 4e337ab..75945b1 100644 ---- a/pengine/test10/stop-failure-no-quorum.summary -+++ b/pengine/test10/stop-failure-no-quorum.summary -@@ -16,11 +16,11 @@ Online: [ pcmk-1 ] - - Transition Summary: - * Fence (reboot) pcmk-2 'clvm:0 failed there' -- * Start dlm:0 (pcmk-1 - blocked) -- * Stop clvm:0 (pcmk-2) -- * Start clvm:2 (pcmk-1 - blocked) -- * Start ClusterIP (pcmk-1 - blocked) -- * Start Fencing (pcmk-1 - blocked) -+ * Start dlm:0 (pcmk-1 - blocked) due to no quorum -+ * Stop clvm:0 (pcmk-2) due to node availability -+ * Start clvm:2 (pcmk-1 - blocked) due to no quorum -+ * Start ClusterIP (pcmk-1 - blocked) due to no quorum -+ * Start Fencing (pcmk-1 - blocked) due to no quorum - - Executing cluster transition: - * Fencing pcmk-2 (reboot) -diff --git a/pengine/test10/stop-failure-with-fencing.summary b/pengine/test10/stop-failure-with-fencing.summary -index cdb39b0..09680c8 100644 ---- a/pengine/test10/stop-failure-with-fencing.summary -+++ b/pengine/test10/stop-failure-with-fencing.summary -@@ -15,11 +15,11 @@ Online: [ pcmk-1 ] - - Transition Summary: - * Fence (reboot) pcmk-2 'clvm:0 failed there' -- * Start dlm:0 (pcmk-1 - blocked) -- * Stop clvm:0 (pcmk-2) -- * Start clvm:1 (pcmk-1 - blocked) -- * Start ClusterIP (pcmk-1 - blocked) -- * Start Fencing (pcmk-1 - blocked) -+ * Start dlm:0 (pcmk-1 - blocked) due to no quorum -+ * Stop clvm:0 (pcmk-2) due to node availability -+ * Start clvm:1 (pcmk-1 - blocked) due to no quorum -+ * Start ClusterIP (pcmk-1 - blocked) due to no quorum -+ * Start Fencing (pcmk-1 - blocked) due to no quorum - - Executing cluster transition: - * Resource action: Fencing monitor on pcmk-1 -diff --git a/pengine/test10/ticket-clone-14.summary b/pengine/test10/ticket-clone-14.summary -index c807656..ceb76bf 100644 ---- a/pengine/test10/ticket-clone-14.summary -+++ b/pengine/test10/ticket-clone-14.summary -@@ -7,8 +7,8 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Stop rsc1:0 (node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:0 (node1) due to node availability -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: clone1_stop_0 -diff --git a/pengine/test10/ticket-clone-15.summary b/pengine/test10/ticket-clone-15.summary -index c807656..ceb76bf 100644 ---- a/pengine/test10/ticket-clone-15.summary -+++ b/pengine/test10/ticket-clone-15.summary -@@ -7,8 +7,8 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Stop rsc1:0 (node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:0 (node1) due to node availability -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: clone1_stop_0 -diff --git a/pengine/test10/ticket-clone-17.summary b/pengine/test10/ticket-clone-17.summary -index c807656..ceb76bf 100644 ---- a/pengine/test10/ticket-clone-17.summary -+++ b/pengine/test10/ticket-clone-17.summary -@@ -7,8 +7,8 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Stop rsc1:0 (node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:0 (node1) due to node availability -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: clone1_stop_0 -diff --git a/pengine/test10/ticket-clone-18.summary b/pengine/test10/ticket-clone-18.summary -index c807656..ceb76bf 100644 ---- a/pengine/test10/ticket-clone-18.summary -+++ b/pengine/test10/ticket-clone-18.summary -@@ -7,8 +7,8 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Stop rsc1:0 (node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:0 (node1) due to node availability -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: clone1_stop_0 -diff --git a/pengine/test10/ticket-clone-20.summary b/pengine/test10/ticket-clone-20.summary -index c807656..ceb76bf 100644 ---- a/pengine/test10/ticket-clone-20.summary -+++ b/pengine/test10/ticket-clone-20.summary -@@ -7,8 +7,8 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Stop rsc1:0 (node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:0 (node1) due to node availability -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: clone1_stop_0 -diff --git a/pengine/test10/ticket-clone-21.summary b/pengine/test10/ticket-clone-21.summary -index ce5335f..6b18cfa 100644 ---- a/pengine/test10/ticket-clone-21.summary -+++ b/pengine/test10/ticket-clone-21.summary -@@ -10,8 +10,8 @@ Transition Summary: - * Fence (reboot) node2 'deadman ticket was lost' - * Fence (reboot) node1 'deadman ticket was lost' - * Stop rsc_stonith (node1) -- * Stop rsc1:0 (node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:0 (node1) due to node availability -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Fencing node1 (reboot) -diff --git a/pengine/test10/ticket-clone-23.summary b/pengine/test10/ticket-clone-23.summary -index c807656..ceb76bf 100644 ---- a/pengine/test10/ticket-clone-23.summary -+++ b/pengine/test10/ticket-clone-23.summary -@@ -7,8 +7,8 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Stop rsc1:0 (node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:0 (node1) due to node availability -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: clone1_stop_0 -diff --git a/pengine/test10/ticket-clone-3.summary b/pengine/test10/ticket-clone-3.summary -index c807656..ceb76bf 100644 ---- a/pengine/test10/ticket-clone-3.summary -+++ b/pengine/test10/ticket-clone-3.summary -@@ -7,8 +7,8 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Stop rsc1:0 (node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:0 (node1) due to node availability -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: clone1_stop_0 -diff --git a/pengine/test10/ticket-clone-6.summary b/pengine/test10/ticket-clone-6.summary -index c807656..ceb76bf 100644 ---- a/pengine/test10/ticket-clone-6.summary -+++ b/pengine/test10/ticket-clone-6.summary -@@ -7,8 +7,8 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Stop rsc1:0 (node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:0 (node1) due to node availability -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: clone1_stop_0 -diff --git a/pengine/test10/ticket-clone-9.summary b/pengine/test10/ticket-clone-9.summary -index ce5335f..6b18cfa 100644 ---- a/pengine/test10/ticket-clone-9.summary -+++ b/pengine/test10/ticket-clone-9.summary -@@ -10,8 +10,8 @@ Transition Summary: - * Fence (reboot) node2 'deadman ticket was lost' - * Fence (reboot) node1 'deadman ticket was lost' - * Stop rsc_stonith (node1) -- * Stop rsc1:0 (node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:0 (node1) due to node availability -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Fencing node1 (reboot) -diff --git a/pengine/test10/ticket-group-14.summary b/pengine/test10/ticket-group-14.summary -index c0aaf74..824bb70 100644 ---- a/pengine/test10/ticket-group-14.summary -+++ b/pengine/test10/ticket-group-14.summary -@@ -8,8 +8,8 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Stop rsc1 (node2) -- * Stop rsc2 (node2) -+ * Stop rsc1 (node2) due to node availability -+ * Stop rsc2 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/ticket-group-15.summary b/pengine/test10/ticket-group-15.summary -index c0aaf74..824bb70 100644 ---- a/pengine/test10/ticket-group-15.summary -+++ b/pengine/test10/ticket-group-15.summary -@@ -8,8 +8,8 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Stop rsc1 (node2) -- * Stop rsc2 (node2) -+ * Stop rsc1 (node2) due to node availability -+ * Stop rsc2 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/ticket-group-17.summary b/pengine/test10/ticket-group-17.summary -index c0aaf74..824bb70 100644 ---- a/pengine/test10/ticket-group-17.summary -+++ b/pengine/test10/ticket-group-17.summary -@@ -8,8 +8,8 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Stop rsc1 (node2) -- * Stop rsc2 (node2) -+ * Stop rsc1 (node2) due to node availability -+ * Stop rsc2 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/ticket-group-18.summary b/pengine/test10/ticket-group-18.summary -index c0aaf74..824bb70 100644 ---- a/pengine/test10/ticket-group-18.summary -+++ b/pengine/test10/ticket-group-18.summary -@@ -8,8 +8,8 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Stop rsc1 (node2) -- * Stop rsc2 (node2) -+ * Stop rsc1 (node2) due to node availability -+ * Stop rsc2 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/ticket-group-20.summary b/pengine/test10/ticket-group-20.summary -index c0aaf74..824bb70 100644 ---- a/pengine/test10/ticket-group-20.summary -+++ b/pengine/test10/ticket-group-20.summary -@@ -8,8 +8,8 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Stop rsc1 (node2) -- * Stop rsc2 (node2) -+ * Stop rsc1 (node2) due to node availability -+ * Stop rsc2 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/ticket-group-21.summary b/pengine/test10/ticket-group-21.summary -index 385e44f..e397a42 100644 ---- a/pengine/test10/ticket-group-21.summary -+++ b/pengine/test10/ticket-group-21.summary -@@ -9,8 +9,8 @@ Online: [ node1 node2 ] - - Transition Summary: - * Fence (reboot) node2 'deadman ticket was lost' -- * Stop rsc1 (node2) -- * Stop rsc2 (node2) -+ * Stop rsc1 (node2) due to node availability -+ * Stop rsc2 (node2) due to node availability - - Executing cluster transition: - * Fencing node2 (reboot) -diff --git a/pengine/test10/ticket-group-23.summary b/pengine/test10/ticket-group-23.summary -index c0aaf74..824bb70 100644 ---- a/pengine/test10/ticket-group-23.summary -+++ b/pengine/test10/ticket-group-23.summary -@@ -8,8 +8,8 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Stop rsc1 (node2) -- * Stop rsc2 (node2) -+ * Stop rsc1 (node2) due to node availability -+ * Stop rsc2 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/ticket-group-3.summary b/pengine/test10/ticket-group-3.summary -index c0aaf74..824bb70 100644 ---- a/pengine/test10/ticket-group-3.summary -+++ b/pengine/test10/ticket-group-3.summary -@@ -8,8 +8,8 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Stop rsc1 (node2) -- * Stop rsc2 (node2) -+ * Stop rsc1 (node2) due to node availability -+ * Stop rsc2 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/ticket-group-6.summary b/pengine/test10/ticket-group-6.summary -index c0aaf74..824bb70 100644 ---- a/pengine/test10/ticket-group-6.summary -+++ b/pengine/test10/ticket-group-6.summary -@@ -8,8 +8,8 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Stop rsc1 (node2) -- * Stop rsc2 (node2) -+ * Stop rsc1 (node2) due to node availability -+ * Stop rsc2 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/ticket-group-9.summary b/pengine/test10/ticket-group-9.summary -index 385e44f..e397a42 100644 ---- a/pengine/test10/ticket-group-9.summary -+++ b/pengine/test10/ticket-group-9.summary -@@ -9,8 +9,8 @@ Online: [ node1 node2 ] - - Transition Summary: - * Fence (reboot) node2 'deadman ticket was lost' -- * Stop rsc1 (node2) -- * Stop rsc2 (node2) -+ * Stop rsc1 (node2) due to node availability -+ * Stop rsc2 (node2) due to node availability - - Executing cluster transition: - * Fencing node2 (reboot) -diff --git a/pengine/test10/ticket-master-14.summary b/pengine/test10/ticket-master-14.summary -index 9f7b89d..9a42d78 100644 ---- a/pengine/test10/ticket-master-14.summary -+++ b/pengine/test10/ticket-master-14.summary -@@ -9,7 +9,7 @@ Online: [ node1 node2 ] - - Transition Summary: - * Demote rsc1:0 (Master -> Stopped node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: ms1_demote_0 -diff --git a/pengine/test10/ticket-master-15.summary b/pengine/test10/ticket-master-15.summary -index 9f7b89d..9a42d78 100644 ---- a/pengine/test10/ticket-master-15.summary -+++ b/pengine/test10/ticket-master-15.summary -@@ -9,7 +9,7 @@ Online: [ node1 node2 ] - - Transition Summary: - * Demote rsc1:0 (Master -> Stopped node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: ms1_demote_0 -diff --git a/pengine/test10/ticket-master-3.summary b/pengine/test10/ticket-master-3.summary -index 9f7b89d..9a42d78 100644 ---- a/pengine/test10/ticket-master-3.summary -+++ b/pengine/test10/ticket-master-3.summary -@@ -9,7 +9,7 @@ Online: [ node1 node2 ] - - Transition Summary: - * Demote rsc1:0 (Master -> Stopped node1) -- * Stop rsc1:1 (node2) -+ * Stop rsc1:1 (node2) due to node availability - - Executing cluster transition: - * Pseudo action: ms1_demote_0 -diff --git a/pengine/test10/ticket-rsc-sets-10.summary b/pengine/test10/ticket-rsc-sets-10.summary -index 66f807a..8ef03e0 100644 ---- a/pengine/test10/ticket-rsc-sets-10.summary -+++ b/pengine/test10/ticket-rsc-sets-10.summary -@@ -15,10 +15,10 @@ Online: [ node1 node2 ] - - Transition Summary: - * Stop rsc1 (node2) -- * Stop rsc2 (node1) -- * Stop rsc3 (node1) -- * Stop rsc4:0 (node1) -- * Stop rsc4:1 (node2) -+ * Stop rsc2 (node1) due to node availability -+ * Stop rsc3 (node1) due to node availability -+ * Stop rsc4:0 (node1) due to node availability -+ * Stop rsc4:1 (node2) due to node availability - * Demote rsc5:0 (Master -> Slave node1) - - Executing cluster transition: -diff --git a/pengine/test10/ticket-rsc-sets-12.summary b/pengine/test10/ticket-rsc-sets-12.summary -index 6801c64..616a2a2 100644 ---- a/pengine/test10/ticket-rsc-sets-12.summary -+++ b/pengine/test10/ticket-rsc-sets-12.summary -@@ -14,8 +14,8 @@ Online: [ node1 node2 ] - - Transition Summary: - * Stop rsc1 (node2) -- * Stop rsc2 (node1) -- * Stop rsc3 (node1) -+ * Stop rsc2 (node1) due to node availability -+ * Stop rsc3 (node1) due to node availability - - Executing cluster transition: - * Resource action: rsc1 stop on node2 -diff --git a/pengine/test10/ticket-rsc-sets-13.summary b/pengine/test10/ticket-rsc-sets-13.summary -index 66f807a..8ef03e0 100644 ---- a/pengine/test10/ticket-rsc-sets-13.summary -+++ b/pengine/test10/ticket-rsc-sets-13.summary -@@ -15,10 +15,10 @@ Online: [ node1 node2 ] - - Transition Summary: - * Stop rsc1 (node2) -- * Stop rsc2 (node1) -- * Stop rsc3 (node1) -- * Stop rsc4:0 (node1) -- * Stop rsc4:1 (node2) -+ * Stop rsc2 (node1) due to node availability -+ * Stop rsc3 (node1) due to node availability -+ * Stop rsc4:0 (node1) due to node availability -+ * Stop rsc4:1 (node2) due to node availability - * Demote rsc5:0 (Master -> Slave node1) - - Executing cluster transition: -diff --git a/pengine/test10/ticket-rsc-sets-14.summary b/pengine/test10/ticket-rsc-sets-14.summary -index 66f807a..8ef03e0 100644 ---- a/pengine/test10/ticket-rsc-sets-14.summary -+++ b/pengine/test10/ticket-rsc-sets-14.summary -@@ -15,10 +15,10 @@ Online: [ node1 node2 ] - - Transition Summary: - * Stop rsc1 (node2) -- * Stop rsc2 (node1) -- * Stop rsc3 (node1) -- * Stop rsc4:0 (node1) -- * Stop rsc4:1 (node2) -+ * Stop rsc2 (node1) due to node availability -+ * Stop rsc3 (node1) due to node availability -+ * Stop rsc4:0 (node1) due to node availability -+ * Stop rsc4:1 (node2) due to node availability - * Demote rsc5:0 (Master -> Slave node1) - - Executing cluster transition: -diff --git a/pengine/test10/ticket-rsc-sets-3.summary b/pengine/test10/ticket-rsc-sets-3.summary -index 66f807a..8ef03e0 100644 ---- a/pengine/test10/ticket-rsc-sets-3.summary -+++ b/pengine/test10/ticket-rsc-sets-3.summary -@@ -15,10 +15,10 @@ Online: [ node1 node2 ] - - Transition Summary: - * Stop rsc1 (node2) -- * Stop rsc2 (node1) -- * Stop rsc3 (node1) -- * Stop rsc4:0 (node1) -- * Stop rsc4:1 (node2) -+ * Stop rsc2 (node1) due to node availability -+ * Stop rsc3 (node1) due to node availability -+ * Stop rsc4:0 (node1) due to node availability -+ * Stop rsc4:1 (node2) due to node availability - * Demote rsc5:0 (Master -> Slave node1) - - Executing cluster transition: -diff --git a/pengine/test10/ticket-rsc-sets-7.summary b/pengine/test10/ticket-rsc-sets-7.summary -index 66f807a..8ef03e0 100644 ---- a/pengine/test10/ticket-rsc-sets-7.summary -+++ b/pengine/test10/ticket-rsc-sets-7.summary -@@ -15,10 +15,10 @@ Online: [ node1 node2 ] - - Transition Summary: - * Stop rsc1 (node2) -- * Stop rsc2 (node1) -- * Stop rsc3 (node1) -- * Stop rsc4:0 (node1) -- * Stop rsc4:1 (node2) -+ * Stop rsc2 (node1) due to node availability -+ * Stop rsc3 (node1) due to node availability -+ * Stop rsc4:0 (node1) due to node availability -+ * Stop rsc4:1 (node2) due to node availability - * Demote rsc5:0 (Master -> Slave node1) - - Executing cluster transition: -diff --git a/pengine/test10/ticket-rsc-sets-9.summary b/pengine/test10/ticket-rsc-sets-9.summary -index 66f807a..8ef03e0 100644 ---- a/pengine/test10/ticket-rsc-sets-9.summary -+++ b/pengine/test10/ticket-rsc-sets-9.summary -@@ -15,10 +15,10 @@ Online: [ node1 node2 ] - - Transition Summary: - * Stop rsc1 (node2) -- * Stop rsc2 (node1) -- * Stop rsc3 (node1) -- * Stop rsc4:0 (node1) -- * Stop rsc4:1 (node2) -+ * Stop rsc2 (node1) due to node availability -+ * Stop rsc3 (node1) due to node availability -+ * Stop rsc4:0 (node1) due to node availability -+ * Stop rsc4:1 (node2) due to node availability - * Demote rsc5:0 (Master -> Slave node1) - - Executing cluster transition: -diff --git a/pengine/test10/unfence-definition.summary b/pengine/test10/unfence-definition.summary -index d776228..f728e39 100644 ---- a/pengine/test10/unfence-definition.summary -+++ b/pengine/test10/unfence-definition.summary -@@ -16,9 +16,9 @@ Transition Summary: - * Fence (on) virt-3 'Required by dlm:2' - * Fence (on) virt-1 'Device definition changed' - * Restart fencing (Started virt-1) -- * Restart dlm:0 (Started virt-1) -+ * Restart dlm:0 (Started virt-1) due to required stonith - * Start dlm:2 (virt-3) -- * Restart clvmd:0 (Started virt-1) -+ * Restart clvmd:0 (Started virt-1) due to required stonith - * Start clvmd:1 (virt-2) - * Start clvmd:2 (virt-3) - -diff --git a/pengine/test10/unfence-parameters.summary b/pengine/test10/unfence-parameters.summary -index e71eafc..e8b15ec 100644 ---- a/pengine/test10/unfence-parameters.summary -+++ b/pengine/test10/unfence-parameters.summary -@@ -17,10 +17,10 @@ Transition Summary: - * Fence (on) virt-2 'Device parameters changed (reload)' - * Fence (on) virt-1 'Device parameters changed (reload)' - * Restart fencing (Started virt-1) -- * Restart dlm:0 (Started virt-1) -- * Restart dlm:1 (Started virt-2) -+ * Restart dlm:0 (Started virt-1) due to required stonith -+ * Restart dlm:1 (Started virt-2) due to required stonith - * Start dlm:2 (virt-3) -- * Restart clvmd:0 (Started virt-1) -+ * Restart clvmd:0 (Started virt-1) due to required stonith - * Start clvmd:1 (virt-2) - * Start clvmd:2 (virt-3) - -diff --git a/pengine/test10/unmanaged-block-restart.summary b/pengine/test10/unmanaged-block-restart.summary -index 0b70481..01dffeb 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 (Started yingying.site - blocked) -- * Stop rsc3 (Started yingying.site - blocked) -+ * Stop rsc2 (Started yingying.site - blocked) due to required rsc1 start -+ * Stop rsc3 (Started yingying.site - blocked) due to required rsc2 start - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/unmanaged-stop-1.summary b/pengine/test10/unmanaged-stop-1.summary -index 978ddc1..94e0908 100644 ---- a/pengine/test10/unmanaged-stop-1.summary -+++ b/pengine/test10/unmanaged-stop-1.summary -@@ -7,7 +7,7 @@ Online: [ yingying.site ] - rsc2 (ocf::pacemaker:Dummy): FAILED yingying.site ( blocked ) - - Transition Summary: -- * Stop rsc1 (yingying.site - blocked) -+ * Stop rsc1 (yingying.site - blocked) due to node availability - - Executing cluster transition: - -diff --git a/pengine/test10/unmanaged-stop-2.summary b/pengine/test10/unmanaged-stop-2.summary -index 978ddc1..94e0908 100644 ---- a/pengine/test10/unmanaged-stop-2.summary -+++ b/pengine/test10/unmanaged-stop-2.summary -@@ -7,7 +7,7 @@ Online: [ yingying.site ] - rsc2 (ocf::pacemaker:Dummy): FAILED yingying.site ( blocked ) - - Transition Summary: -- * Stop rsc1 (yingying.site - blocked) -+ * Stop rsc1 (yingying.site - blocked) due to node availability - - Executing cluster transition: - -diff --git a/pengine/test10/unmanaged-stop-3.summary b/pengine/test10/unmanaged-stop-3.summary -index 74829a1..c72d451 100644 ---- a/pengine/test10/unmanaged-stop-3.summary -+++ b/pengine/test10/unmanaged-stop-3.summary -@@ -8,7 +8,7 @@ Online: [ yingying.site ] - rsc2 (ocf::pacemaker:Dummy): FAILED yingying.site ( disabled, blocked ) - - Transition Summary: -- * Stop rsc1 (yingying.site - blocked) -+ * Stop rsc1 (yingying.site - blocked) unrunnable rsc2 stop due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/unmanaged-stop-4.summary b/pengine/test10/unmanaged-stop-4.summary -index 457e41f..2704e98 100644 ---- a/pengine/test10/unmanaged-stop-4.summary -+++ b/pengine/test10/unmanaged-stop-4.summary -@@ -9,7 +9,7 @@ Online: [ yingying.site ] - rsc3 (ocf::heartbeat:Dummy): Stopped ( disabled ) - - Transition Summary: -- * Stop rsc1 (yingying.site - blocked) -+ * Stop rsc1 (yingying.site - blocked) unrunnable rsc2 stop due to node availability - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/unrunnable-1.summary b/pengine/test10/unrunnable-1.summary -index 92f4031..8c27e45 100644 ---- a/pengine/test10/unrunnable-1.summary -+++ b/pengine/test10/unrunnable-1.summary -@@ -19,15 +19,15 @@ Online: [ c001n03 ] - child_DoFencing:3 (stonith:ssh): Stopped - - Transition Summary: -- * Start DcIPaddr (c001n03 - blocked) -- * Start child_192.168.100.181 (c001n03 - blocked) -- * Start child_192.168.100.182 (c001n03 - blocked) -- * Start child_192.168.100.183 (c001n03 - blocked) -- * Start rsc_c001n08 (c001n03 - blocked) -- * Start rsc_c001n02 (c001n03 - blocked) -- * Start rsc_c001n03 (c001n03 - blocked) -- * Start rsc_c001n01 (c001n03 - blocked) -- * Stop child_DoFencing:1 (c001n02 - blocked) -+ * Start DcIPaddr (c001n03 - blocked) due to no quorum -+ * Start child_192.168.100.181 (c001n03 - blocked) due to no quorum -+ * Start child_192.168.100.182 (c001n03 - blocked) due to no quorum -+ * Start child_192.168.100.183 (c001n03 - blocked) due to no quorum -+ * Start rsc_c001n08 (c001n03 - blocked) due to no quorum -+ * Start rsc_c001n02 (c001n03 - blocked) due to no quorum -+ * Start rsc_c001n03 (c001n03 - blocked) due to no quorum -+ * Start rsc_c001n01 (c001n03 - blocked) due to no quorum -+ * Stop child_DoFencing:1 (c001n02 - blocked) due to node availability - - Executing cluster transition: - * Resource action: DcIPaddr monitor on c001n03 -diff --git a/pengine/test10/unrunnable-2.summary b/pengine/test10/unrunnable-2.summary -index 0c0c765..b67f7cb 100644 ---- a/pengine/test10/unrunnable-2.summary -+++ b/pengine/test10/unrunnable-2.summary -@@ -85,7 +85,7 @@ Online: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ] - Stopped: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ] - - Transition Summary: -- * Start openstack-cinder-volume (overcloud-controller-2 - blocked) -+ * Start openstack-cinder-volume (overcloud-controller-2 - blocked) due to unrunnable openstack-cinder-scheduler-clone running - - Executing cluster transition: - -diff --git a/pengine/test10/utilization-order2.summary b/pengine/test10/utilization-order2.summary -index 7871579..db65a16 100644 ---- a/pengine/test10/utilization-order2.summary -+++ b/pengine/test10/utilization-order2.summary -@@ -11,7 +11,7 @@ Online: [ node1 node2 ] - Transition Summary: - * Start rsc4 (node1) - * Move rsc3 (Started node1 -> node2) -- * Stop rsc2:0 (node1) -+ * Stop rsc2:0 (node1) due to node availability - * Stop rsc1 (node2) - - Executing cluster transition: -diff --git a/pengine/test10/utilization-order4.summary b/pengine/test10/utilization-order4.summary -index efb5958..09a8c31 100644 ---- a/pengine/test10/utilization-order4.summary -+++ b/pengine/test10/utilization-order4.summary -@@ -17,10 +17,10 @@ Online: [ deglxen001 ] - Transition Summary: - * Migrate degllx62-vm (Started deglxen002 -> deglxen001) - * Stop degllx61-vm (deglxen001) -- * Stop nfs-xen_config:1 (deglxen002) -- * Stop nfs-xen_swapfiles:1 (deglxen002) -- * Stop nfs-xen_images:1 (deglxen002) -- * Stop prim-ping:1 (deglxen002) -+ * 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 -+ * Stop prim-ping:1 (deglxen002) due to node availability - - Executing cluster transition: - * Resource action: degllx61-vm stop on deglxen001 -diff --git a/pengine/test10/whitebox-fail1.summary b/pengine/test10/whitebox-fail1.summary -index 14b1ee2..1d06552 100644 ---- a/pengine/test10/whitebox-fail1.summary -+++ b/pengine/test10/whitebox-fail1.summary -@@ -18,7 +18,7 @@ Transition Summary: - * Recover container1 (Started 18node2) - * Recover M:4 (Started lxc1) - * Recover B (Started lxc1) -- * Restart lxc1 (Started 18node2) -+ * Restart lxc1 (Started 18node2) due to required container1 start - - Executing cluster transition: - * Resource action: lxc1 stop on 18node2 -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.summary b/pengine/test10/whitebox-imply-stop-on-fence.summary -index 9dab410..bea75a2 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.summary -+++ b/pengine/test10/whitebox-imply-stop-on-fence.summary -@@ -29,9 +29,9 @@ Transition Summary: - * Fence (reboot) lxc-01_kiff-01 (resource: R-lxc-01_kiff-01) 'guest is unclean' - * Fence (reboot) kiff-01 'peer is no longer part of the cluster' - * Move fence-kiff-02 (Started kiff-01 -> kiff-02) -- * Stop dlm:0 (kiff-01) -- * Stop clvmd:0 (kiff-01) -- * Stop shared0:0 (kiff-01) -+ * Stop dlm:0 (kiff-01) due to node availability -+ * Stop clvmd:0 (kiff-01) due to node availability -+ * Stop shared0:0 (kiff-01) due to node availability - * Recover R-lxc-01_kiff-01 (Started kiff-01 -> kiff-02) - * Move R-lxc-02_kiff-01 (Started kiff-01 -> kiff-02) - * Recover vm-fs (Started lxc-01_kiff-01) -diff --git a/pengine/test10/whitebox-move.summary b/pengine/test10/whitebox-move.summary -index 3422ac7..dbf0780 100644 ---- a/pengine/test10/whitebox-move.summary -+++ b/pengine/test10/whitebox-move.summary -@@ -12,8 +12,8 @@ Containers: [ lxc1:container1 lxc2:container2 ] - - Transition Summary: - * Move container1 (Started 18node1 -> 18node2) -- * Restart M:3 (Started lxc1) -- * Restart A (Started lxc1) -+ * Restart M:3 (Started lxc1) due to required container1 start -+ * Restart A (Started lxc1) due to required container1 start - * Move lxc1 (Started 18node1 -> 18node2) - - Executing cluster transition: -diff --git a/pengine/test10/whitebox-ms-ordering-move.summary b/pengine/test10/whitebox-ms-ordering-move.summary -index d5f133b..b48d988 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.summary -+++ b/pengine/test10/whitebox-ms-ordering-move.summary -@@ -31,7 +31,7 @@ Containers: [ lxc1:container1 lxc2:container2 ] - - Transition Summary: - * Move container1 (Started rhel7-1 -> rhel7-2) -- * Restart lxc-ms:0 (Master lxc1) -+ * Restart lxc-ms:0 (Master lxc1) due to required container1 start - * Move lxc1 (Started rhel7-1 -> rhel7-2) - - Executing cluster transition: -diff --git a/pengine/test10/whitebox-orphan-ms.summary b/pengine/test10/whitebox-orphan-ms.summary -index 30c6a3b..3efa6bd 100644 ---- a/pengine/test10/whitebox-orphan-ms.summary -+++ b/pengine/test10/whitebox-orphan-ms.summary -@@ -28,11 +28,11 @@ Containers: [ lxc1:container1 lxc2:container2 ] - - Transition Summary: - * Move FencingFail (Started 18node3 -> 18node1) -- * Stop container2 (18node1) -- * Stop lxc1 (18node1) -+ * Stop container2 (18node1) due to node availability -+ * Stop lxc1 (18node1) due to node availability - * Demote lxc-ms (Master -> Stopped lxc1) -- * Stop lxc2 (18node1) -- * Stop container1 (18node1) -+ * Stop lxc2 (18node1) due to node availability -+ * Stop container1 (18node1) due to node availability - - Executing cluster transition: - * Resource action: FencingFail stop on 18node3 -diff --git a/pengine/test10/whitebox-orphaned.summary b/pengine/test10/whitebox-orphaned.summary -index 7be8453..52b54aa 100644 ---- a/pengine/test10/whitebox-orphaned.summary -+++ b/pengine/test10/whitebox-orphaned.summary -@@ -16,10 +16,10 @@ Containers: [ lxc1:container1 lxc2:container2 ] - lxc1 (ocf::pacemaker:remote): ORPHANED Started 18node2 - - Transition Summary: -- * Stop M:4 (lxc1) -+ * Stop M:4 (lxc1) due to node availability - * Move B (Started lxc1 -> lxc2) -- * Stop container1 (18node2) -- * Stop lxc1 (18node2) -+ * Stop container1 (18node2) due to node availability -+ * Stop lxc1 (18node2) due to node availability - - Executing cluster transition: - * Pseudo action: M-clone_stop_0 -diff --git a/pengine/test10/whitebox-stop.summary b/pengine/test10/whitebox-stop.summary -index b6a2954..89094da 100644 ---- a/pengine/test10/whitebox-stop.summary -+++ b/pengine/test10/whitebox-stop.summary -@@ -15,10 +15,10 @@ Containers: [ lxc1:container1 lxc2:container2 ] - D (ocf::pacemaker:Dummy): Started 18node1 - - Transition Summary: -- * Stop container1 (18node2) -- * Stop M:4 (lxc1) -+ * Stop container1 (18node2) due to node availability -+ * Stop M:4 (lxc1) due to node availability - * Move B (Started lxc1 -> lxc2) -- * Stop lxc1 (18node2) -+ * Stop lxc1 (18node2) due to node availability - - Executing cluster transition: - * Pseudo action: M-clone_stop_0 --- -1.8.3.1 - - -From ab87380e8800a1b1f867450e61049e9becbaec21 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 1 Aug 2017 16:18:06 +1000 -Subject: [PATCH 06/12] Log: PE: Output resource changes in a friendlier format - ---- - lib/pengine/utils.c | 1 + - pengine/native.c | 235 ++++++++++++--------- - pengine/test10/1-a-then-bm-move-b.summary | 2 +- - pengine/test10/10-a-then-bm-b-move-a-clone.summary | 2 +- - .../11-a-then-bm-b-move-a-clone-starting.summary | 4 +- - pengine/test10/1360.summary | 2 +- - pengine/test10/2-am-then-b-move-a.summary | 2 +- - pengine/test10/3-am-then-bm-both-migrate.summary | 4 +- - .../test10/4-am-then-bm-b-not-migratable.summary | 4 +- - .../test10/5-am-then-bm-a-not-migratable.summary | 4 +- - pengine/test10/594.summary | 4 +- - pengine/test10/6-migrate-group.summary | 6 +- - pengine/test10/662.summary | 2 +- - pengine/test10/696.summary | 2 +- - .../7-migrate-group-one-unmigratable.summary | 6 +- - pengine/test10/726.summary | 2 +- - pengine/test10/735.summary | 2 +- - pengine/test10/764.summary | 10 +- - pengine/test10/797.summary | 12 +- - .../8-am-then-bm-a-migrating-b-stopping.summary | 2 +- - pengine/test10/829.summary | 2 +- - .../9-am-then-bm-b-migrating-a-stopping.summary | 2 +- - pengine/test10/994-2.summary | 4 +- - pengine/test10/994.summary | 2 +- - pengine/test10/a-demote-then-b-migrate.summary | 4 +- - pengine/test10/a-promote-then-b-migrate.summary | 2 +- - pengine/test10/anti-colocation-master.summary | 4 +- - pengine/test10/anti-colocation-order.summary | 4 +- - pengine/test10/anti-colocation-slave.summary | 4 +- - pengine/test10/asymmetrical-order-move.summary | 2 +- - pengine/test10/bug-1572-1.summary | 8 +- - pengine/test10/bug-1572-2.summary | 2 +- - pengine/test10/bug-1718.summary | 4 +- - pengine/test10/bug-1820-1.summary | 4 +- - pengine/test10/bug-1820.summary | 4 +- - pengine/test10/bug-1822.summary | 4 +- - .../test10/bug-5007-masterslave_colocation.summary | 4 +- - .../test10/bug-5014-A-stopped-B-stopped.summary | 2 +- - .../test10/bug-5014-CthenAthenB-C-stopped.summary | 4 +- - .../bug-5014-GROUP-A-stopped-B-stopped.summary | 2 +- - .../bug-5014-ordered-set-symmetrical-true.summary | 2 +- - pengine/test10/bug-5025-1.summary | 2 +- - pengine/test10/bug-5025-3.summary | 2 +- - pengine/test10/bug-5028.summary | 2 +- - pengine/test10/bug-5059.summary | 1 - - pengine/test10/bug-5186-partial-migrate.summary | 8 +- - pengine/test10/bug-cl-5212.summary | 14 +- - pengine/test10/bug-cl-5247.summary | 10 +- - pengine/test10/bug-lf-2106.summary | 4 +- - pengine/test10/bug-lf-2153.summary | 2 +- - pengine/test10/bug-lf-2171.summary | 4 +- - pengine/test10/bug-lf-2361.summary | 4 +- - pengine/test10/bug-lf-2435.summary | 2 +- - pengine/test10/bug-lf-2445.summary | 2 +- - pengine/test10/bug-lf-2453.summary | 6 +- - pengine/test10/bug-lf-2508.summary | 2 +- - pengine/test10/bug-lf-2551.summary | 4 +- - pengine/test10/bug-lf-2574.summary | 2 +- - pengine/test10/bug-lf-2606.summary | 4 +- - pengine/test10/bug-lf-2613.summary | 12 +- - pengine/test10/bug-lf-2619.summary | 12 +- - pengine/test10/bug-n-385265-2.summary | 4 +- - pengine/test10/bug-n-387749.summary | 4 +- - pengine/test10/bug-pm-11.summary | 1 - - pengine/test10/bug-rh-1097457.summary | 12 +- - pengine/test10/bug-rh-880249.summary | 3 +- - pengine/test10/bug-suse-707150.summary | 2 +- - pengine/test10/bundle-nested-colocation.summary | 6 +- - .../test10/bundle-order-partial-start-2.summary | 4 +- - pengine/test10/bundle-order-partial-stop.summary | 8 +- - .../test10/bundle-order-startup-clone-2.summary | 3 - - pengine/test10/bundle-order-startup-clone.summary | 12 +- - pengine/test10/bundle-order-stop-clone.summary | 2 +- - pengine/test10/bundle-order-stop.summary | 8 +- - pengine/test10/clone-anon-failcount.summary | 12 +- - pengine/test10/clone-fail-block-colocation.summary | 8 +- - pengine/test10/clone-interleave-2.summary | 2 +- - pengine/test10/clone-interleave-3.summary | 6 +- - pengine/test10/clone-no-shuffle.summary | 2 +- - pengine/test10/clone-require-all-2.summary | 6 +- - pengine/test10/clone-require-all-3.summary | 6 +- - pengine/test10/clone-require-all-4.summary | 2 +- - .../clone-require-all-no-interleave-3.summary | 6 +- - .../test10/clone_min_interleave_start_one.summary | 12 +- - .../test10/clone_min_interleave_stop_two.summary | 12 +- - pengine/test10/clone_min_start_one.summary | 4 +- - pengine/test10/clone_min_stop_all.summary | 4 +- - pengine/test10/clone_min_stop_two.summary | 4 +- - pengine/test10/cloned-group-stop.summary | 28 +-- - pengine/test10/cloned-group.summary | 4 +- - pengine/test10/cloned_start_one.summary | 2 +- - pengine/test10/cloned_stop_two.summary | 2 +- - pengine/test10/colo_master_w_native.summary | 2 +- - pengine/test10/colo_slave_w_native.summary | 4 +- - pengine/test10/coloc-clone-stays-active.summary | 2 +- - pengine/test10/coloc-intra-set.summary | 4 +- - pengine/test10/coloc_fp_logic.summary | 2 +- - .../colocation_constraint_stops_master.summary | 2 +- - .../colocation_constraint_stops_slave.summary | 2 +- - pengine/test10/complex_enforce_colo.summary | 66 +++--- - pengine/test10/container-2.summary | 6 +- - pengine/test10/container-3.summary | 4 +- - pengine/test10/container-4.summary | 6 +- - pengine/test10/container-group-2.summary | 6 +- - pengine/test10/container-group-3.summary | 2 +- - pengine/test10/container-group-4.summary | 6 +- - pengine/test10/enforce-colo1.summary | 4 +- - pengine/test10/group-dependents.summary | 28 +-- - pengine/test10/group-fail.summary | 4 +- - pengine/test10/group10.summary | 6 +- - pengine/test10/group14.summary | 32 +-- - pengine/test10/group5.summary | 10 +- - pengine/test10/group6.summary | 12 +- - pengine/test10/group9.summary | 10 +- - pengine/test10/guest-node-host-dies.summary | 12 +- - pengine/test10/inc11.summary | 3 +- - pengine/test10/inc12.summary | 20 +- - pengine/test10/inc2.summary | 4 +- - pengine/test10/inc3.summary | 8 +- - pengine/test10/inc4.summary | 8 +- - pengine/test10/inc5.summary | 8 +- - pengine/test10/inc6.summary | 12 +- - pengine/test10/interleave-restart.summary | 6 +- - pengine/test10/isolation-restart-all.summary | 22 +- - pengine/test10/load-stopped-loop-2.summary | 16 +- - pengine/test10/load-stopped-loop.summary | 20 +- - pengine/test10/master-1.summary | 1 - - pengine/test10/master-10.summary | 1 - - pengine/test10/master-11.summary | 1 - - pengine/test10/master-2.summary | 1 - - pengine/test10/master-3.summary | 1 - - pengine/test10/master-7.summary | 16 +- - pengine/test10/master-8.summary | 15 +- - pengine/test10/master-9.summary | 22 +- - pengine/test10/master-asymmetrical-order.summary | 4 +- - pengine/test10/master-demote.summary | 2 +- - pengine/test10/master-failed-demote-2.summary | 2 +- - pengine/test10/master-failed-demote.summary | 2 +- - pengine/test10/master-move.summary | 4 +- - .../test10/master-partially-demoted-group.summary | 12 +- - pengine/test10/master-probed-score.summary | 6 +- - pengine/test10/master-pseudo.summary | 3 +- - pengine/test10/master-stop.summary | 2 +- - pengine/test10/migrate-1.summary | 2 +- - pengine/test10/migrate-3.summary | 2 +- - pengine/test10/migrate-4.summary | 2 +- - pengine/test10/migrate-5.summary | 2 +- - pengine/test10/migrate-begin.summary | 2 +- - pengine/test10/migrate-both-vms.summary | 4 +- - pengine/test10/migrate-fail-2.summary | 2 +- - pengine/test10/migrate-fail-3.summary | 2 +- - pengine/test10/migrate-fail-4.summary | 2 +- - pengine/test10/migrate-fail-6.summary | 2 +- - pengine/test10/migrate-fail-7.summary | 2 +- - pengine/test10/migrate-fail-8.summary | 2 +- - pengine/test10/migrate-fail-9.summary | 2 +- - pengine/test10/migrate-fencing.summary | 14 +- - pengine/test10/migrate-partial-2.summary | 2 +- - pengine/test10/migrate-partial-3.summary | 2 +- - pengine/test10/migrate-partial-4.summary | 4 +- - pengine/test10/migrate-shutdown.summary | 6 +- - pengine/test10/migrate-start-complex.summary | 4 +- - pengine/test10/migrate-start.summary | 2 +- - pengine/test10/migrate-stop-complex.summary | 4 +- - pengine/test10/migrate-stop-start-complex.summary | 4 +- - pengine/test10/migrate-stop.summary | 2 +- - pengine/test10/migrate-stop_start.summary | 4 +- - pengine/test10/mon-rsc-2.summary | 2 +- - pengine/test10/mon-rsc-4.summary | 2 +- - pengine/test10/monitor-onfail-restart.summary | 2 +- - pengine/test10/multi1.summary | 2 +- - pengine/test10/multiple-monitor-one-failed.summary | 2 +- - pengine/test10/not-installed-agent.summary | 4 +- - pengine/test10/not-installed-tools.summary | 2 +- - .../test10/not-reschedule-unneeded-monitor.summary | 2 +- - pengine/test10/notify-3.summary | 2 +- - pengine/test10/novell-239082.summary | 4 +- - pengine/test10/novell-252693-2.summary | 2 +- - pengine/test10/novell-252693-3.summary | 4 +- - pengine/test10/novell-252693.summary | 2 +- - pengine/test10/one-or-more-1.summary | 6 +- - pengine/test10/one-or-more-3.summary | 2 +- - pengine/test10/order-mandatory.summary | 4 +- - pengine/test10/order-required.summary | 4 +- - pengine/test10/order-serialize-set.summary | 12 +- - pengine/test10/order-serialize.summary | 12 +- - pengine/test10/order-sets.summary | 8 +- - pengine/test10/order-wrong-kind.summary | 2 +- - pengine/test10/order3.summary | 8 +- - pengine/test10/order5.summary | 8 +- - pengine/test10/order6.summary | 8 +- - pengine/test10/order7.summary | 2 +- - pengine/test10/ordered-set-basic-startup.summary | 6 +- - pengine/test10/ordered-set-natural.summary | 12 +- - pengine/test10/params-1.summary | 2 +- - pengine/test10/params-2.summary | 2 +- - pengine/test10/params-4.summary | 2 +- - pengine/test10/params-5.summary | 2 +- - pengine/test10/params-6.summary | 2 +- - pengine/test10/probe-2.summary | 12 +- - pengine/test10/probe-4.summary | 2 +- - pengine/test10/quorum-1.summary | 2 +- - pengine/test10/quorum-2.summary | 4 +- - pengine/test10/quorum-3.summary | 6 +- - pengine/test10/rec-node-10.summary | 6 +- - pengine/test10/rec-node-11.summary | 6 +- - pengine/test10/rec-node-13.summary | 2 +- - pengine/test10/rec-node-15.summary | 6 +- - pengine/test10/rec-node-4.summary | 4 +- - pengine/test10/rec-node-6.summary | 4 +- - pengine/test10/rec-node-7.summary | 4 +- - pengine/test10/rec-node-8.summary | 8 +- - pengine/test10/rec-node-9.summary | 4 +- - pengine/test10/rec-rsc-1.summary | 2 +- - pengine/test10/rec-rsc-2.summary | 2 +- - pengine/test10/rec-rsc-5.summary | 4 +- - pengine/test10/rec-rsc-6.summary | 2 +- - pengine/test10/rec-rsc-9.summary | 6 +- - .../test10/remote-fence-before-reconnect.summary | 2 +- - pengine/test10/remote-fence-unclean.summary | 8 +- - pengine/test10/remote-move.summary | 4 +- - pengine/test10/remote-orphaned.summary | 2 +- - pengine/test10/remote-partial-migrate.summary | 14 +- - pengine/test10/remote-partial-migrate2.summary | 34 +-- - pengine/test10/remote-recover-all.summary | 18 +- - pengine/test10/remote-recover-connection.summary | 20 +- - pengine/test10/remote-recover-fail.summary | 6 +- - pengine/test10/remote-recover-no-resources.summary | 16 +- - pengine/test10/remote-recover-unknown.summary | 16 +- - pengine/test10/remote-recovery.summary | 20 +- - pengine/test10/remote-start-fail.summary | 2 +- - pengine/test10/remote-startup-probes.summary | 4 +- - pengine/test10/remote-startup.summary | 2 +- - pengine/test10/remote-unclean2.summary | 2 +- - pengine/test10/rsc-discovery-per-node.summary | 6 +- - pengine/test10/rsc-sets-clone-1.summary | 2 +- - pengine/test10/rsc-sets-clone.summary | 4 +- - pengine/test10/rsc-sets-master.summary | 8 +- - pengine/test10/rsc-sets-seq-false.summary | 12 +- - pengine/test10/rsc-sets-seq-true.summary | 12 +- - pengine/test10/rsc_dep4.summary | 2 +- - pengine/test10/standby.summary | 16 +- - .../test10/start-then-stop-with-unfence.summary | 2 +- - pengine/test10/stonith-0.summary | 10 +- - pengine/test10/stonith-1.summary | 10 +- - pengine/test10/stonith-4.summary | 2 +- - pengine/test10/stop-failure-no-quorum.summary | 8 +- - pengine/test10/stop-failure-with-fencing.summary | 8 +- - pengine/test10/stopped-monitor-01.summary | 2 +- - pengine/test10/stopped-monitor-02.summary | 2 +- - pengine/test10/stopped-monitor-08.summary | 2 +- - pengine/test10/ticket-master-14.summary | 4 +- - pengine/test10/ticket-master-15.summary | 4 +- - pengine/test10/ticket-master-2.summary | 1 - - pengine/test10/ticket-master-21.summary | 4 +- - pengine/test10/ticket-master-3.summary | 4 +- - pengine/test10/ticket-master-9.summary | 4 +- - pengine/test10/unfence-definition.summary | 6 +- - pengine/test10/unfence-parameters.summary | 8 +- - pengine/test10/unmanaged-block-restart.summary | 4 +- - pengine/test10/unmanaged-stop-1.summary | 2 +- - pengine/test10/unmanaged-stop-2.summary | 2 +- - pengine/test10/unmanaged-stop-3.summary | 2 +- - pengine/test10/unmanaged-stop-4.summary | 2 +- - pengine/test10/unrunnable-1.summary | 18 +- - pengine/test10/unrunnable-2.summary | 2 +- - pengine/test10/utilization-order2.summary | 2 +- - pengine/test10/utilization-order3.summary | 2 +- - pengine/test10/utilization-order4.summary | 2 +- - pengine/test10/whitebox-fail1.summary | 8 +- - pengine/test10/whitebox-fail2.summary | 8 +- - pengine/test10/whitebox-fail3.summary | 2 +- - .../test10/whitebox-imply-stop-on-fence.summary | 12 +- - pengine/test10/whitebox-migrate1.summary | 8 +- - pengine/test10/whitebox-move.summary | 8 +- - pengine/test10/whitebox-ms-ordering-move.summary | 4 +- - pengine/test10/whitebox-orphan-ms.summary | 5 +- - pengine/test10/whitebox-orphaned.summary | 2 +- - pengine/test10/whitebox-start.summary | 4 +- - pengine/test10/whitebox-stop.summary | 2 +- - .../test10/whitebox-unexpectedly-running.summary | 2 +- - 280 files changed, 924 insertions(+), 915 deletions(-) - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index bc34323..222a3e2 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -2253,6 +2253,7 @@ void pe_action_set_reason(pe_action_t *action, const char *reason, bool overwrit - if(action->reason == NULL || overwrite) { - free(action->reason); - if(reason) { -+ crm_trace("Set %s reason to '%s'", action->uuid, reason); - action->reason = strdup(reason); - } else { - action->reason = NULL; -diff --git a/pengine/native.c b/pengine/native.c -index 63666fd..5281f36 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -2155,6 +2155,108 @@ native_expand(resource_t * rsc, pe_working_set_t * data_set) - } \ - } while(0) - -+static int rsc_width = 5; -+static int detail_width = 5; -+static void -+LogAction(const char *change, resource_t *rsc, pe_node_t *origin, pe_node_t *destination, pe_action_t *action, pe_action_t *source, gboolean terminal) -+{ -+ int len = 0; -+ char *reason = NULL; -+ char *details = NULL; -+ bool same_host = FALSE; -+ bool same_role = FALSE; -+ bool need_role = FALSE; -+ -+ CRM_ASSERT(action); -+ CRM_ASSERT(destination != NULL || origin != NULL); -+ -+ if(source == NULL) { -+ source = action; -+ } -+ -+ len = strlen(rsc->id); -+ if(len > rsc_width) { -+ rsc_width = len + 2; -+ } -+ -+ if(rsc->role > RSC_ROLE_STARTED || rsc->next_role > RSC_ROLE_SLAVE) { -+ need_role = TRUE; -+ } -+ -+ if(origin != NULL && destination != NULL && origin->details == destination->details) { -+ same_host = TRUE; -+ } -+ -+ if(rsc->role == rsc->next_role) { -+ same_role = TRUE; -+ } -+ -+ if(need_role && origin == NULL) { -+ /* Promoting from Stopped */ -+ details = crm_strdup_printf("%s -> %s %s", role2text(rsc->role), role2text(rsc->next_role), destination->details->uname); -+ -+ } else if(need_role && destination == NULL) { -+ /* Demoting a Master or Stopping a Slave */ -+ details = crm_strdup_printf("%s %s", role2text(rsc->role), origin->details->uname); -+ -+ } else if(origin == NULL || destination == NULL) { -+ /* Starting or stopping a resource */ -+ details = crm_strdup_printf("%s", origin?origin->details->uname:destination->details->uname); -+ -+ } else if(need_role && same_role && same_host) { -+ /* Recovering or Restarting a Master/Slave resource */ -+ details = crm_strdup_printf("%s %s", role2text(rsc->role), origin->details->uname); -+ -+ } else if(same_role && same_host) { -+ /* Recovering or Restarting a normal resource */ -+ details = crm_strdup_printf("%s", origin->details->uname); -+ -+ } else if(same_role && need_role) { -+ /* Moving a Master/Slave resource */ -+ details = crm_strdup_printf("%s -> %s %s", origin->details->uname, destination->details->uname, role2text(rsc->role)); -+ -+ } else if(same_role) { -+ /* Moving a normal resource */ -+ details = crm_strdup_printf("%s -> %s", origin->details->uname, destination->details->uname); -+ -+ } else if(same_host) { -+ /* Promoting or Demoting a Master/Slave resource */ -+ details = crm_strdup_printf("%s -> %s %s", role2text(rsc->role), role2text(rsc->next_role), origin->details->uname); -+ -+ } else { -+ /* Moving and promoting/demoting */ -+ details = crm_strdup_printf("%s %s -> %s %s", role2text(rsc->role), origin->details->uname, role2text(rsc->next_role), destination->details->uname); -+ } -+ -+ len = strlen(details); -+ if(len > detail_width) { -+ detail_width = len; -+ } -+ -+ if(source->reason && is_not_set(action->flags, pe_action_runnable)) { -+ reason = crm_strdup_printf(" due to %s (blocked)", source->reason); -+ -+ } else if(source->reason) { -+ reason = crm_strdup_printf(" due to %s", source->reason); -+ -+ } else if(is_not_set(action->flags, pe_action_runnable)) { -+ reason = strdup(" blocked"); -+ -+ } else { -+ reason = strdup(""); -+ } -+ -+ if(terminal) { -+ printf(" * %-8s %-*s ( %*s ) %s\n", change, rsc_width, rsc->id, detail_width, details, reason); -+ } else { -+ crm_notice(" * %-8s %-*s ( %*s ) %s", change, rsc_width, rsc->id, detail_width, details, reason); -+ } -+ -+ free(details); -+ free(reason); -+} -+ -+ - void - LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - { -@@ -2234,11 +2336,11 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - } else { - possible_matches = find_actions(rsc->actions, key, current); - } -- free(key); - if (possible_matches) { - stop = possible_matches->data; - g_list_free(possible_matches); - } -+ free(key); - - key = promote_key(rsc); - possible_matches = find_actions(rsc->actions, key, next); -@@ -2269,34 +2371,29 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - CRM_CHECK(next != NULL,); - if (next == NULL) { - } else if (migrate_to && is_set(migrate_to->flags, pe_action_runnable) && current) { -- log_change(start, "Migrate %s\t(%s %s -> %s)", -- rsc->id, role2text(rsc->role), current->details->uname, -- next->details->uname); -+ LogAction("Migrate", rsc, current, next, start, NULL, terminal); - - } else if (is_set(rsc->flags, pe_rsc_reload)) { -- log_change(start, "Reload %s\t(%s %s)", rsc->id, role2text(rsc->role), next->details->uname); -+ LogAction("Reload", rsc, current, next, start, NULL, terminal); - - } else if (start == NULL || is_set(start->flags, pe_action_optional)) { - pe_rsc_info(rsc, "Leave %s\t(%s %s)", rsc->id, role2text(rsc->role), - next->details->uname); - - } else if (start && is_set(start->flags, pe_action_runnable) == FALSE) { -- log_change(start, "Stop %s\t(%s %s%s)", rsc->id, role2text(rsc->role), current?current->details->uname:"N/A", -- stop && is_not_set(stop->flags, pe_action_runnable) ? " - blocked" : ""); -+ LogAction("Stop", rsc, current, NULL, stop, start, terminal); - STOP_SANITY_ASSERT(__LINE__); - - } else if (moving && current) { -- log_change(stop, "%s %s\t(%s %s -> %s)", -- is_set(rsc->flags, pe_rsc_failed) ? "Recover" : "Move ", -- rsc->id, role2text(rsc->role), -- current->details->uname, next->details->uname); -+ LogAction(is_set(rsc->flags, pe_rsc_failed) ? "Recover" : "Move", -+ rsc, current, next, stop, NULL, terminal); - - } else if (is_set(rsc->flags, pe_rsc_failed)) { -- log_change(stop, "Recover %s\t(%s %s)", rsc->id, role2text(rsc->role), next->details->uname); -+ LogAction("Recover", rsc, current, NULL, stop, NULL, terminal); - STOP_SANITY_ASSERT(__LINE__); - - } else { -- log_change(start, "Restart %s\t(%s %s)", rsc->id, role2text(rsc->role), next->details->uname); -+ LogAction("Restart", rsc, current, next, start, NULL, terminal); - /* STOP_SANITY_ASSERT(__LINE__); False positive for migrate-fail-7 */ - } - -@@ -2304,50 +2401,16 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - return; - } - -- if (rsc->role > RSC_ROLE_SLAVE && rsc->role > rsc->next_role) { -- CRM_CHECK(current != NULL,); -- if (current != NULL) { -- gboolean allowed = FALSE; -- -- if (demote != NULL && (demote->flags & pe_action_runnable)) { -- allowed = TRUE; -- } -- -- log_change(demote, "Demote %s\t(%s -> %s %s%s)", -- rsc->id, -- role2text(rsc->role), -- role2text(rsc->next_role), -- current->details->uname, allowed ? "" : " - blocked"); -- -- if (stop != NULL && is_not_set(stop->flags, pe_action_optional) -- && rsc->next_role > RSC_ROLE_STOPPED && moving == FALSE) { -- if (is_set(rsc->flags, pe_rsc_failed)) { -- log_change(stop, "Recover %s\t(%s %s)", -- rsc->id, role2text(rsc->role), next->details->uname); -- STOP_SANITY_ASSERT(__LINE__); -- -- } else if (is_set(rsc->flags, pe_rsc_reload)) { -- log_change(start, "Reload %s\t(%s %s)", rsc->id, role2text(rsc->role), -- next->details->uname); -- -- } else { -- log_change(start, "Restart %s\t(%s %s)", -- rsc->id, role2text(rsc->next_role), next->details->uname); -- STOP_SANITY_ASSERT(__LINE__); -- } -- } -- } -+ if(stop -+ && (rsc->next_role == RSC_ROLE_STOPPED -+ || (start && is_not_set(start->flags, pe_action_runnable)))) { - -- } else if (rsc->next_role == RSC_ROLE_STOPPED) { - GListPtr gIter = NULL; - -- CRM_CHECK(current != NULL,); -- - key = stop_key(rsc); - for (gIter = rsc->running_on; gIter != NULL; gIter = gIter->next) { - node_t *node = (node_t *) gIter->data; - action_t *stop_op = NULL; -- gboolean allowed = FALSE; - - possible_matches = find_actions(rsc->actions, key, node); - if (possible_matches) { -@@ -2357,73 +2420,39 @@ LogActions(resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) - - if (stop_op && (stop_op->flags & pe_action_runnable)) { - STOP_SANITY_ASSERT(__LINE__); -- allowed = TRUE; - } - -- log_change(start, "Stop %s\t(%s%s) %s", rsc->id, node->details->uname, -- allowed ? "" : " - blocked", stop->reason?stop->reason:""); -+ LogAction("Stop", rsc, node, NULL, stop_op, start, terminal); - } - - free(key); -- } - -- if (moving) { -- log_change(stop, "Move %s\t(%s %s -> %s)", -- rsc->id, role2text(rsc->next_role), current->details->uname, -- next->details->uname); -+ } else if (stop && is_set(rsc->flags, pe_rsc_failed)) { -+ /* 'stop' may be NULL if the failure was ignored */ -+ LogAction("Recover", rsc, current, next, stop, start, terminal); - STOP_SANITY_ASSERT(__LINE__); -- } - -- if (rsc->role == RSC_ROLE_STOPPED) { -- gboolean allowed = FALSE; -+ } else if (moving) { -+ LogAction("Move", rsc, current, next, stop, NULL, terminal); -+ STOP_SANITY_ASSERT(__LINE__); - -- if (start && (start->flags & pe_action_runnable)) { -- allowed = TRUE; -- } -+ } else if (is_set(rsc->flags, pe_rsc_reload)) { -+ LogAction("Reload", rsc, current, next, start, NULL, terminal); - -- CRM_CHECK(next != NULL,); -- if (next != NULL) { -- log_change(start, "Start %s\t(%s%s)", rsc->id, next->details->uname, -- allowed ? "" : " - blocked"); -- } -- if (allowed == FALSE) { -- return; -- } -- } -+ } else if (stop != NULL && is_not_set(stop->flags, pe_action_optional)) { -+ LogAction("Restart", rsc, current, next, start, NULL, terminal); -+ STOP_SANITY_ASSERT(__LINE__); - -- if (rsc->next_role > RSC_ROLE_SLAVE && rsc->role < rsc->next_role) { -- gboolean allowed = FALSE; -+ } else if (rsc->role == RSC_ROLE_MASTER) { -+ CRM_LOG_ASSERT(current != NULL); -+ LogAction("Demote", rsc, current, next, demote, NULL, terminal); - -+ } else if(rsc->next_role == RSC_ROLE_MASTER) { - CRM_LOG_ASSERT(next); -- if (stop != NULL && is_not_set(stop->flags, pe_action_optional) -- && rsc->role > RSC_ROLE_STOPPED) { -- if (is_set(rsc->flags, pe_rsc_failed)) { -- log_change(stop, "Recover %s\t(%s %s)", -- rsc->id, role2text(rsc->role), next?next->details->uname:NULL); -- STOP_SANITY_ASSERT(__LINE__); -- -- } else if (is_set(rsc->flags, pe_rsc_reload)) { -- log_change(start, "Reload %s\t(%s %s)", rsc->id, role2text(rsc->role), -- next?next->details->uname:NULL); -- STOP_SANITY_ASSERT(__LINE__); -- -- } else { -- log_change(start, "Restart %s\t(%s %s)", -- rsc->id, role2text(rsc->role), next?next->details->uname:NULL); -- STOP_SANITY_ASSERT(__LINE__); -- } -- } -- -- if (promote && (promote->flags & pe_action_runnable)) { -- allowed = TRUE; -- } -+ LogAction("Promote", rsc, current, next, promote, NULL, terminal); - -- log_change(promote, "Promote %s\t(%s -> %s %s%s)", -- rsc->id, -- role2text(rsc->role), -- role2text(rsc->next_role), -- next?next->details->uname:NULL, -- allowed ? "" : " - blocked"); -+ } else if (rsc->role == RSC_ROLE_STOPPED && rsc->next_role > RSC_ROLE_STOPPED) { -+ LogAction("Start", rsc, current, next, start, NULL, terminal); - } - } - -diff --git a/pengine/test10/1-a-then-bm-move-b.summary b/pengine/test10/1-a-then-bm-move-b.summary -index 571feda..f4d6207 100644 ---- a/pengine/test10/1-a-then-bm-move-b.summary -+++ b/pengine/test10/1-a-then-bm-move-b.summary -@@ -6,7 +6,7 @@ Online: [ 18node1 18node2 18node3 ] - B (ocf::heartbeat:Dummy): Started 18node2 - - Transition Summary: -- * Migrate B (Started 18node2 -> 18node1) -+ * Migrate B ( 18node2 -> 18node1 ) - - Executing cluster transition: - * Resource action: B migrate_to on 18node2 -diff --git a/pengine/test10/10-a-then-bm-b-move-a-clone.summary b/pengine/test10/10-a-then-bm-b-move-a-clone.summary -index b39963f..ee7697f 100644 ---- a/pengine/test10/10-a-then-bm-b-move-a-clone.summary -+++ b/pengine/test10/10-a-then-bm-b-move-a-clone.summary -@@ -9,7 +9,7 @@ Online: [ f20node2 ] - - Transition Summary: - * Stop myclone:1 (f20node1) due to node availability -- * Migrate vm (Started f20node1 -> f20node2) -+ * Migrate vm ( f20node1 -> f20node2 ) - - Executing cluster transition: - * Resource action: vm migrate_to on f20node1 -diff --git a/pengine/test10/11-a-then-bm-b-move-a-clone-starting.summary b/pengine/test10/11-a-then-bm-b-move-a-clone-starting.summary -index 498cd2b..9138c81 100644 ---- a/pengine/test10/11-a-then-bm-b-move-a-clone-starting.summary -+++ b/pengine/test10/11-a-then-bm-b-move-a-clone-starting.summary -@@ -9,8 +9,8 @@ Online: [ f20node2 ] - vm (ocf::heartbeat:Dummy): Started f20node1 - - Transition Summary: -- * Move myclone:0 (Started f20node1 -> f20node2) -- * Move vm (Started f20node1 -> f20node2) due to unrunnable myclone-clone stop -+ * Move myclone:0 ( f20node1 -> f20node2 ) -+ * Move vm ( f20node1 -> f20node2 ) due to unrunnable myclone-clone stop - - Executing cluster transition: - * Resource action: myclone monitor on f20node2 -diff --git a/pengine/test10/1360.summary b/pengine/test10/1360.summary -index 04ec941..acff1b8 100644 ---- a/pengine/test10/1360.summary -+++ b/pengine/test10/1360.summary -@@ -8,7 +8,7 @@ Online: [ ssgtest1a ssgtest1b ] - Started: [ ssgtest1a ] - - Transition Summary: -- * Move dollies:0 (Started ssgtest1a -> ssgtest1b) -+ * Move dollies:0 ( ssgtest1a -> ssgtest1b ) - - Executing cluster transition: - * Pseudo action: dolly_stop_0 -diff --git a/pengine/test10/2-am-then-b-move-a.summary b/pengine/test10/2-am-then-b-move-a.summary -index 1d74081..a238cf6 100644 ---- a/pengine/test10/2-am-then-b-move-a.summary -+++ b/pengine/test10/2-am-then-b-move-a.summary -@@ -6,7 +6,7 @@ Online: [ 18node1 18node2 18node3 ] - B (ocf::heartbeat:Dummy): Started 18node2 - - Transition Summary: -- * Migrate A (Started 18node1 -> 18node2) -+ * Migrate A ( 18node1 -> 18node2 ) - - Executing cluster transition: - * Resource action: A migrate_to on 18node1 -diff --git a/pengine/test10/3-am-then-bm-both-migrate.summary b/pengine/test10/3-am-then-bm-both-migrate.summary -index 6e1e33a..d938449 100644 ---- a/pengine/test10/3-am-then-bm-both-migrate.summary -+++ b/pengine/test10/3-am-then-bm-both-migrate.summary -@@ -6,8 +6,8 @@ Online: [ 18node1 18node2 18node3 ] - B (ocf::heartbeat:Dummy): Started 18node2 - - Transition Summary: -- * Migrate A (Started 18node1 -> 18node2) -- * Migrate B (Started 18node2 -> 18node1) -+ * Migrate A ( 18node1 -> 18node2 ) -+ * Migrate B ( 18node2 -> 18node1 ) - - Executing cluster transition: - * Resource action: A migrate_to on 18node1 -diff --git a/pengine/test10/4-am-then-bm-b-not-migratable.summary b/pengine/test10/4-am-then-bm-b-not-migratable.summary -index 2283c8b..16ce149 100644 ---- a/pengine/test10/4-am-then-bm-b-not-migratable.summary -+++ b/pengine/test10/4-am-then-bm-b-not-migratable.summary -@@ -6,8 +6,8 @@ Online: [ 18node1 18node2 18node3 ] - B (ocf::heartbeat:Dummy): Started 18node2 - - Transition Summary: -- * Migrate A (Started 18node1 -> 18node2) -- * Move B (Started 18node2 -> 18node1) -+ * Migrate A ( 18node1 -> 18node2 ) -+ * Move B ( 18node2 -> 18node1 ) - - Executing cluster transition: - * Resource action: B stop on 18node2 -diff --git a/pengine/test10/5-am-then-bm-a-not-migratable.summary b/pengine/test10/5-am-then-bm-a-not-migratable.summary -index 7e95dbb..fa1dc33 100644 ---- a/pengine/test10/5-am-then-bm-a-not-migratable.summary -+++ b/pengine/test10/5-am-then-bm-a-not-migratable.summary -@@ -6,8 +6,8 @@ Online: [ 18node1 18node2 18node3 ] - B (ocf::heartbeat:Dummy): Started 18node2 - - Transition Summary: -- * Move A (Started 18node1 -> 18node2) -- * Move B (Started 18node2 -> 18node1) due to unrunnable A stop -+ * Move A ( 18node1 -> 18node2 ) -+ * Move B ( 18node2 -> 18node1 ) due to unrunnable A stop - - Executing cluster transition: - * Resource action: B stop on 18node2 -diff --git a/pengine/test10/594.summary b/pengine/test10/594.summary -index de1d179..4a36789 100644 ---- a/pengine/test10/594.summary -+++ b/pengine/test10/594.summary -@@ -15,8 +15,8 @@ Online: [ hadev1 hadev2 ] - Transition Summary: - * Shutdown hadev2 - * Fence (reboot) hadev3 'peer is no longer part of the cluster' -- * Move DcIPaddr (Started hadev2 -> hadev1) -- * Move rsc_hadev2 (Started hadev2 -> hadev1) -+ * Move DcIPaddr ( hadev2 -> hadev1 ) -+ * Move rsc_hadev2 ( hadev2 -> hadev1 ) - * Stop child_DoFencing:0 (hadev2) due to node availability - * Stop child_DoFencing:2 (hadev1) due to node availability - -diff --git a/pengine/test10/6-migrate-group.summary b/pengine/test10/6-migrate-group.summary -index 3c4e7c6..c7c9f6d 100644 ---- a/pengine/test10/6-migrate-group.summary -+++ b/pengine/test10/6-migrate-group.summary -@@ -8,9 +8,9 @@ Online: [ 18node1 18node2 18node3 ] - C (ocf::heartbeat:Dummy): Started 18node1 - - Transition Summary: -- * Migrate A (Started 18node1 -> 18node2) -- * Migrate B (Started 18node1 -> 18node2) -- * Migrate C (Started 18node1 -> 18node2) -+ * Migrate A ( 18node1 -> 18node2 ) -+ * Migrate B ( 18node1 -> 18node2 ) -+ * Migrate C ( 18node1 -> 18node2 ) - - Executing cluster transition: - * Pseudo action: thegroup_stop_0 -diff --git a/pengine/test10/662.summary b/pengine/test10/662.summary -index 4a9d911..a19f71e 100644 ---- a/pengine/test10/662.summary -+++ b/pengine/test10/662.summary -@@ -15,7 +15,7 @@ Online: [ c001n02 c001n03 c001n04 c001n09 ] - - Transition Summary: - * Shutdown c001n02 -- * Move rsc_c001n02 (Started c001n02 -> c001n03) -+ * Move rsc_c001n02 ( c001n02 -> c001n03 ) - * Stop child_DoFencing:0 (c001n02) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/696.summary b/pengine/test10/696.summary -index af16c93..78e40d1 100644 ---- a/pengine/test10/696.summary -+++ b/pengine/test10/696.summary -@@ -12,7 +12,7 @@ Online: [ hadev1 hadev2 hadev3 ] - child_DoFencing:2 (stonith:ssh): Stopped - - Transition Summary: -- * Move rsc_hadev1 (Started hadev3 -> hadev1) -+ * Move rsc_hadev1 ( hadev3 -> hadev1 ) - * Start child_DoFencing:2 (hadev1) - - Executing cluster transition: -diff --git a/pengine/test10/7-migrate-group-one-unmigratable.summary b/pengine/test10/7-migrate-group-one-unmigratable.summary -index cf1b370..6c6b127 100644 ---- a/pengine/test10/7-migrate-group-one-unmigratable.summary -+++ b/pengine/test10/7-migrate-group-one-unmigratable.summary -@@ -8,9 +8,9 @@ Online: [ 18node1 18node2 18node3 ] - C (ocf::heartbeat:Dummy): Started 18node1 - - Transition Summary: -- * Migrate A (Started 18node1 -> 18node2) -- * Move B (Started 18node1 -> 18node2) -- * Move C (Started 18node1 -> 18node2) due to unrunnable B stop -+ * Migrate A ( 18node1 -> 18node2 ) -+ * Move B ( 18node1 -> 18node2 ) -+ * Move C ( 18node1 -> 18node2 ) due to unrunnable B stop - - Executing cluster transition: - * Pseudo action: thegroup_stop_0 -diff --git a/pengine/test10/726.summary b/pengine/test10/726.summary -index 920aefe..b3cd4e4 100644 ---- a/pengine/test10/726.summary -+++ b/pengine/test10/726.summary -@@ -15,7 +15,7 @@ Online: [ ibm1 sgi2 test02 test03 ] - - Transition Summary: - * Start rsc_sgi2 (sgi2) -- * Move rsc_ibm1 (Started test03 -> ibm1) -+ * Move rsc_ibm1 ( test03 -> ibm1 ) - * Start rsc_test02 (test02) - * Start child_DoFencing:2 (ibm1) - * Start child_DoFencing:3 (sgi2) -diff --git a/pengine/test10/735.summary b/pengine/test10/735.summary -index 69538de..2db520a 100644 ---- a/pengine/test10/735.summary -+++ b/pengine/test10/735.summary -@@ -13,7 +13,7 @@ OFFLINE: [ hadev1 ] - child_DoFencing:2 (stonith:ssh): Stopped - - Transition Summary: -- * Move rsc_hadev1 (Started hadev2 -> hadev3) -+ * Move rsc_hadev1 ( hadev2 -> hadev3 ) - * Start rsc_hadev3 (hadev3) - * Start child_DoFencing:0 (hadev2) - * Start child_DoFencing:1 (hadev3) -diff --git a/pengine/test10/764.summary b/pengine/test10/764.summary -index 0d5c612..ea62931 100644 ---- a/pengine/test10/764.summary -+++ b/pengine/test10/764.summary -@@ -15,11 +15,11 @@ OFFLINE: [ posic042 posic044 ] - child_DoFencing:3 (stonith:ssh): Stopped - - Transition Summary: -- * Stop DcIPaddr (Started posic043) due to no quorum -- * Stop rsc_posic041 (Started posic041) due to no quorum -- * Stop rsc_posic042 (Started posic041) due to no quorum -- * Stop rsc_posic043 (Started posic043) due to no quorum -- * Stop rsc_posic044 (Started posic041) due to no quorum -+ * Stop DcIPaddr ( posic043 ) due to no quorum -+ * Stop rsc_posic041 ( posic041 ) due to no quorum -+ * Stop rsc_posic042 ( posic041 ) due to no quorum -+ * Stop rsc_posic043 ( posic043 ) due to no quorum -+ * Stop rsc_posic044 ( posic041 ) due to no quorum - - Executing cluster transition: - * Resource action: DcIPaddr monitor on posic041 -diff --git a/pengine/test10/797.summary b/pengine/test10/797.summary -index 9e94003..61afbf1 100644 ---- a/pengine/test10/797.summary -+++ b/pengine/test10/797.summary -@@ -16,12 +16,12 @@ Online: [ c001n01 c001n02 c001n03 ] - - Transition Summary: - * Shutdown c001n02 -- * Stop DcIPaddr (Started c001n03) due to no quorum -- * Stop rsc_c001n08 (Started c001n02) due to no quorum -- * Stop rsc_c001n02 (Started c001n02) due to no quorum -- * Stop rsc_c001n03 (Started c001n03) due to no quorum -- * Stop rsc_c001n01 (Started c001n01) due to no quorum -- * Restart child_DoFencing:0 (Started c001n01) -+ * Stop DcIPaddr ( c001n03 ) due to no quorum -+ * Stop rsc_c001n08 ( c001n02 ) due to no quorum -+ * Stop rsc_c001n02 ( c001n02 ) due to no quorum -+ * Stop rsc_c001n03 ( c001n03 ) due to no quorum -+ * Stop rsc_c001n01 ( c001n01 ) due to no quorum -+ * Restart child_DoFencing:0 ( c001n01 ) - * Stop child_DoFencing:1 (c001n02) due to node availability - - Executing cluster transition: -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 2aa3f07..06a1356 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 -@@ -7,7 +7,7 @@ Online: [ 18node1 18node2 18node3 ] - B (ocf::heartbeat:Dummy): Started 18node2 ( disabled ) - - Transition Summary: -- * Migrate A (Started 18node1 -> 18node2) -+ * Migrate A ( 18node1 -> 18node2 ) - * Stop B (18node2) - - Executing cluster transition: -diff --git a/pengine/test10/829.summary b/pengine/test10/829.summary -index feca908..8cc27dc 100644 ---- a/pengine/test10/829.summary -+++ b/pengine/test10/829.summary -@@ -16,7 +16,7 @@ Online: [ c001n01 c001n03 c001n08 ] - - Transition Summary: - * Fence (reboot) c001n02 'peer is no longer part of the cluster' -- * Move rsc_c001n02 (Started c001n02 -> c001n01) -+ * Move rsc_c001n02 ( c001n02 -> c001n01 ) - * Stop child_DoFencing:0 (c001n02) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/9-am-then-bm-b-migrating-a-stopping.summary b/pengine/test10/9-am-then-bm-b-migrating-a-stopping.summary -index 44fc1a2..250d888 100644 ---- a/pengine/test10/9-am-then-bm-b-migrating-a-stopping.summary -+++ b/pengine/test10/9-am-then-bm-b-migrating-a-stopping.summary -@@ -8,7 +8,7 @@ Online: [ 18node1 18node2 18node3 ] - - Transition Summary: - * Stop A (18node1) due to node availability -- * Stop B (Started 18node2) due to unrunnable A start -+ * Stop B ( 18node2 ) due to unrunnable A start - - Executing cluster transition: - * Resource action: B stop on 18node2 -diff --git a/pengine/test10/994-2.summary b/pengine/test10/994-2.summary -index a1d477f..0f7def7 100644 ---- a/pengine/test10/994-2.summary -+++ b/pengine/test10/994-2.summary -@@ -10,8 +10,8 @@ Online: [ paul ] - depends (lsb:postfix): Started paul - - Transition Summary: -- * Recover postfix_9 (Started paul) -- * Restart depends (Started paul) due to required group_1 running -+ * Recover postfix_9 ( paul ) -+ * Restart depends ( paul ) due to required group_1 running - - Executing cluster transition: - * Resource action: depends stop on paul -diff --git a/pengine/test10/994.summary b/pengine/test10/994.summary -index 6e8e4a2..4f0c42f 100644 ---- a/pengine/test10/994.summary -+++ b/pengine/test10/994.summary -@@ -9,7 +9,7 @@ Online: [ paul ] - postfix_9 (lsb:postfix): FAILED paul - - Transition Summary: -- * Recover postfix_9 (Started paul) -+ * Recover postfix_9 ( paul ) - - Executing cluster transition: - * Pseudo action: group_1_stop_0 -diff --git a/pengine/test10/a-demote-then-b-migrate.summary b/pengine/test10/a-demote-then-b-migrate.summary -index 84b250e..9e461e8 100644 ---- a/pengine/test10/a-demote-then-b-migrate.summary -+++ b/pengine/test10/a-demote-then-b-migrate.summary -@@ -8,9 +8,9 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node1 - - Transition Summary: -- * Demote rsc1:0 (Master -> Slave node1) -+ * Demote rsc1:0 ( Master -> Slave node1 ) - * Promote rsc1:1 (Slave -> Master node2) -- * Migrate rsc2 (Started node1 -> node2) -+ * Migrate rsc2 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc1:1 cancel=5000 on node1 -diff --git a/pengine/test10/a-promote-then-b-migrate.summary b/pengine/test10/a-promote-then-b-migrate.summary -index c7d791b..166b7b0 100644 ---- a/pengine/test10/a-promote-then-b-migrate.summary -+++ b/pengine/test10/a-promote-then-b-migrate.summary -@@ -9,7 +9,7 @@ Online: [ node1 node2 ] - - Transition Summary: - * Promote rsc1:1 (Slave -> Master node2) -- * Migrate rsc2 (Started node1 -> node2) -+ * Migrate rsc2 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc1:1 cancel=10000 on node2 -diff --git a/pengine/test10/anti-colocation-master.summary b/pengine/test10/anti-colocation-master.summary -index 31fd635..df4c4ed 100644 ---- a/pengine/test10/anti-colocation-master.summary -+++ b/pengine/test10/anti-colocation-master.summary -@@ -10,9 +10,9 @@ Online: [ sle12sp2-1 sle12sp2-2 ] - Slaves: [ sle12sp2-2 ] - - Transition Summary: -- * Move dummy1 (Started sle12sp2-2 -> sle12sp2-1) -+ * Move dummy1 ( sle12sp2-2 -> sle12sp2-1 ) - * Promote state1:0 (Slave -> Master sle12sp2-2) -- * Demote state1:1 (Master -> Slave sle12sp2-1) -+ * Demote state1:1 ( Master -> Slave sle12sp2-1 ) - - Executing cluster transition: - * Resource action: dummy1 stop on sle12sp2-2 -diff --git a/pengine/test10/anti-colocation-order.summary b/pengine/test10/anti-colocation-order.summary -index 052043a..4f03a68 100644 ---- a/pengine/test10/anti-colocation-order.summary -+++ b/pengine/test10/anti-colocation-order.summary -@@ -11,8 +11,8 @@ Online: [ node2 ] - rsc4 (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Move rsc1 (Started node1 -> node2) -- * Move rsc2 (Started node1 -> node2) -+ * Move rsc1 ( node1 -> node2 ) -+ * Move rsc2 ( node1 -> node2 ) - * Stop rsc3 (node2) due to node availability - * Stop rsc4 (node2) due to node availability - -diff --git a/pengine/test10/anti-colocation-slave.summary b/pengine/test10/anti-colocation-slave.summary -index 9179e9f..0d77064 100644 ---- a/pengine/test10/anti-colocation-slave.summary -+++ b/pengine/test10/anti-colocation-slave.summary -@@ -9,9 +9,9 @@ Online: [ sle12sp2-1 sle12sp2-2 ] - dummy1 (ocf::pacemaker:Dummy): Started sle12sp2-1 - - Transition Summary: -- * Demote state1:0 (Master -> Slave sle12sp2-1) -+ * Demote state1:0 ( Master -> Slave sle12sp2-1 ) - * Promote state1:1 (Slave -> Master sle12sp2-2) -- * Move dummy1 (Started sle12sp2-1 -> sle12sp2-2) -+ * Move dummy1 ( sle12sp2-1 -> sle12sp2-2 ) - - Executing cluster transition: - * Resource action: dummy1 stop on sle12sp2-1 -diff --git a/pengine/test10/asymmetrical-order-move.summary b/pengine/test10/asymmetrical-order-move.summary -index 503813c..34869d5 100644 ---- a/pengine/test10/asymmetrical-order-move.summary -+++ b/pengine/test10/asymmetrical-order-move.summary -@@ -9,7 +9,7 @@ Online: [ sle12sp2-1 sle12sp2-2 ] - dummy2 (ocf::pacemaker:Dummy): Started sle12sp2-1 - - Transition Summary: -- * Stop dummy2 (Started sle12sp2-1) due to unrunnable dummy1 start -+ * Stop dummy2 ( sle12sp2-1 ) due to unrunnable dummy1 start - - Executing cluster transition: - * Resource action: dummy2 stop on sle12sp2-1 -diff --git a/pengine/test10/bug-1572-1.summary b/pengine/test10/bug-1572-1.summary -index 6a24614..7715980 100644 ---- a/pengine/test10/bug-1572-1.summary -+++ b/pengine/test10/bug-1572-1.summary -@@ -12,11 +12,11 @@ Online: [ arc-dknightlx arc-tkincaidlx.wsicorp.com ] - - Transition Summary: - * Shutdown arc-dknightlx -- * Stop rsc_drbd_7788:0 (arc-dknightlx) due to node availability -+ * Stop rsc_drbd_7788:0 ( Slave arc-dknightlx ) due to node availability - * Restart rsc_drbd_7788:1 (Master arc-tkincaidlx.wsicorp.com) -- * Restart fs_mirror (Started arc-tkincaidlx.wsicorp.com) due to required ms_drbd_7788 notified -- * Restart pgsql_5555 (Started arc-tkincaidlx.wsicorp.com) due to required fs_mirror start -- * Restart IPaddr_147_81_84_133 (Started arc-tkincaidlx.wsicorp.com) due to required pgsql_5555 start -+ * 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 - - Executing cluster transition: - * Pseudo action: ms_drbd_7788_pre_notify_demote_0 -diff --git a/pengine/test10/bug-1572-2.summary b/pengine/test10/bug-1572-2.summary -index 96574cf..9d2b885 100644 ---- a/pengine/test10/bug-1572-2.summary -+++ b/pengine/test10/bug-1572-2.summary -@@ -12,7 +12,7 @@ Online: [ arc-dknightlx arc-tkincaidlx.wsicorp.com ] - - Transition Summary: - * Shutdown arc-dknightlx -- * Stop rsc_drbd_7788:0 (arc-dknightlx) due to node availability -+ * Stop rsc_drbd_7788:0 ( Slave arc-dknightlx ) due to node availability - * Demote rsc_drbd_7788:1 (Master -> Slave arc-tkincaidlx.wsicorp.com) - * Stop fs_mirror (arc-tkincaidlx.wsicorp.com) due to node availability - * Stop pgsql_5555 (arc-tkincaidlx.wsicorp.com) due to node availability -diff --git a/pengine/test10/bug-1718.summary b/pengine/test10/bug-1718.summary -index b539e4e..aec182e 100644 ---- a/pengine/test10/bug-1718.summary -+++ b/pengine/test10/bug-1718.summary -@@ -13,8 +13,8 @@ OFFLINE: [ defiant.ds9 warbird.ds9 ] - resource_dummy (ocf::heartbeat:Dummy): Started ops.ds9 - - Transition Summary: -- * Stop resource_IP3 (Started ops.ds9) due to unrunnable Web_Group running -- * Stop resource_dummy (Started ops.ds9) due to required resource_IP3 start -+ * Stop resource_IP3 ( ops.ds9 ) due to unrunnable Web_Group running -+ * Stop resource_dummy ( ops.ds9 ) due to required resource_IP3 start - - Executing cluster transition: - * Pseudo action: group_fUN_stop_0 -diff --git a/pengine/test10/bug-1820-1.summary b/pengine/test10/bug-1820-1.summary -index db41ac4..2b0673a 100644 ---- a/pengine/test10/bug-1820-1.summary -+++ b/pengine/test10/bug-1820-1.summary -@@ -10,8 +10,8 @@ Online: [ star world ] - Transition Summary: - * Shutdown star - * Start p1 (world) -- * Migrate test1 (Started star -> world) -- * Migrate test2 (Started star -> world) -+ * Migrate test1 ( star -> world ) -+ * Migrate test2 ( star -> world ) - - Executing cluster transition: - * Resource action: p1 monitor on world -diff --git a/pengine/test10/bug-1820.summary b/pengine/test10/bug-1820.summary -index 6d9c021..e13f8ad 100644 ---- a/pengine/test10/bug-1820.summary -+++ b/pengine/test10/bug-1820.summary -@@ -8,8 +8,8 @@ Online: [ star world ] - - Transition Summary: - * Shutdown star -- * Migrate test1 (Started star -> world) -- * Migrate test2 (Started star -> world) -+ * Migrate test1 ( star -> world ) -+ * Migrate test2 ( star -> world ) - - Executing cluster transition: - * Pseudo action: gr1_stop_0 -diff --git a/pengine/test10/bug-1822.summary b/pengine/test10/bug-1822.summary -index 325e408..5bf91b9 100644 ---- a/pengine/test10/bug-1822.summary -+++ b/pengine/test10/bug-1822.summary -@@ -12,8 +12,8 @@ Online: [ process1a process2b ] - - Transition Summary: - * Shutdown process1a -- * Demote master_slave_Stateful:1 (Master -> Stopped process1a) -- * Demote master_slave_procdctl:1 (Master -> Stopped process1a) -+ * Stop master_slave_Stateful:1 ( Master process1a ) due to node availability -+ * Stop master_slave_procdctl:1 ( Master process1a ) due to node availability - - Executing cluster transition: - * Pseudo action: ms-sf_demote_0 -diff --git a/pengine/test10/bug-5007-masterslave_colocation.summary b/pengine/test10/bug-5007-masterslave_colocation.summary -index 06a81e1..adbc1f1 100644 ---- a/pengine/test10/bug-5007-masterslave_colocation.summary -+++ b/pengine/test10/bug-5007-masterslave_colocation.summary -@@ -9,8 +9,8 @@ Online: [ fc16-builder fc16-builder2 ] - MASTER_IP (ocf::pacemaker:Dummy): Started fc16-builder2 - - Transition Summary: -- * Move SLAVE_IP (Started fc16-builder -> fc16-builder2) -- * Move MASTER_IP (Started fc16-builder2 -> fc16-builder) -+ * Move SLAVE_IP ( fc16-builder -> fc16-builder2 ) -+ * Move MASTER_IP ( fc16-builder2 -> fc16-builder ) - - Executing cluster transition: - * Resource action: SLAVE_IP stop on fc16-builder -diff --git a/pengine/test10/bug-5014-A-stopped-B-stopped.summary b/pengine/test10/bug-5014-A-stopped-B-stopped.summary -index 95e5b60..ba0a5e1 100644 ---- a/pengine/test10/bug-5014-A-stopped-B-stopped.summary -+++ b/pengine/test10/bug-5014-A-stopped-B-stopped.summary -@@ -7,7 +7,7 @@ Online: [ fc16-builder ] - ClusterIP2 (ocf::heartbeat:IPaddr2): Stopped - - Transition Summary: -- * Start ClusterIP2 (fc16-builder - blocked) due to unrunnable ClusterIP start -+ * Start ClusterIP2 ( fc16-builder ) due to unrunnable ClusterIP start (blocked) - - Executing cluster transition: - * Resource action: ClusterIP monitor on fc16-builder -diff --git a/pengine/test10/bug-5014-CthenAthenB-C-stopped.summary b/pengine/test10/bug-5014-CthenAthenB-C-stopped.summary -index fe12fe6..d15d1b2 100644 ---- a/pengine/test10/bug-5014-CthenAthenB-C-stopped.summary -+++ b/pengine/test10/bug-5014-CthenAthenB-C-stopped.summary -@@ -8,8 +8,8 @@ Online: [ fc16-builder ] - ClusterIP3 (ocf::heartbeat:IPaddr2): Stopped ( disabled ) - - Transition Summary: -- * Start ClusterIP (fc16-builder - blocked) due to unrunnable ClusterIP3 start -- * Start ClusterIP2 (fc16-builder - blocked) due to unrunnable ClusterIP start -+ * Start ClusterIP ( fc16-builder ) due to unrunnable ClusterIP3 start (blocked) -+ * Start ClusterIP2 ( fc16-builder ) due to unrunnable ClusterIP start (blocked) - - Executing cluster transition: - * Resource action: ClusterIP monitor on fc16-builder -diff --git a/pengine/test10/bug-5014-GROUP-A-stopped-B-stopped.summary b/pengine/test10/bug-5014-GROUP-A-stopped-B-stopped.summary -index f9b6448..aa4b699 100644 ---- a/pengine/test10/bug-5014-GROUP-A-stopped-B-stopped.summary -+++ b/pengine/test10/bug-5014-GROUP-A-stopped-B-stopped.summary -@@ -9,7 +9,7 @@ Online: [ fc16-builder ] - ClusterIP2 (ocf::heartbeat:IPaddr2): Stopped - - Transition Summary: -- * Start ClusterIP2 (fc16-builder - blocked) due to unrunnable group1 running -+ * Start ClusterIP2 ( fc16-builder ) due to unrunnable group1 running (blocked) - - Executing cluster transition: - -diff --git a/pengine/test10/bug-5014-ordered-set-symmetrical-true.summary b/pengine/test10/bug-5014-ordered-set-symmetrical-true.summary -index 7d94d60..7c28340 100644 ---- a/pengine/test10/bug-5014-ordered-set-symmetrical-true.summary -+++ b/pengine/test10/bug-5014-ordered-set-symmetrical-true.summary -@@ -9,7 +9,7 @@ OFFLINE: [ fc16-builder2 ] - C (ocf::pacemaker:Dummy): Started fc16-builder ( disabled ) - - Transition Summary: -- * Stop A (Started fc16-builder) due to required C start -+ * Stop A ( fc16-builder ) due to required C start - * Stop C (fc16-builder) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/bug-5025-1.summary b/pengine/test10/bug-5025-1.summary -index 9f9baa2..34f7b34 100644 ---- a/pengine/test10/bug-5025-1.summary -+++ b/pengine/test10/bug-5025-1.summary -@@ -7,7 +7,7 @@ OFFLINE: [ fc16-builder2 fc16-builder3 ] - A (ocf::pacemaker:Dummy): Started fc16-builder - - Transition Summary: -- * Reload A (Started fc16-builder) -+ * Reload A ( fc16-builder ) - - Executing cluster transition: - * Cluster action: clear_failcount for A on fc16-builder -diff --git a/pengine/test10/bug-5025-3.summary b/pengine/test10/bug-5025-3.summary -index 0d843d2..9072771 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 (Started fc16-builder) -+ * Restart A ( fc16-builder ) - - 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 a85f75b..f1c6f63 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 (Started bl460g6a - blocked) -+ * Stop dummy01 ( bl460g6a ) blocked - - Executing cluster transition: - * Pseudo action: dummy-g_stop_0 -diff --git a/pengine/test10/bug-5059.summary b/pengine/test10/bug-5059.summary -index 36a5c67..3122cf9 100644 ---- a/pengine/test10/bug-5059.summary -+++ b/pengine/test10/bug-5059.summary -@@ -17,7 +17,6 @@ OFFLINE: [ gluster04.h ] - - Transition Summary: - * Promote p_stateful1:0 (Slave -> Master gluster01.h) -- * Start p_stateful2:0 (gluster01.h) - * Promote p_stateful2:0 (Stopped -> Master gluster01.h) - * Start p_stateful2:1 (gluster02.h) - -diff --git a/pengine/test10/bug-5186-partial-migrate.summary b/pengine/test10/bug-5186-partial-migrate.summary -index cd01706..4d7f0bf 100644 ---- a/pengine/test10/bug-5186-partial-migrate.summary -+++ b/pengine/test10/bug-5186-partial-migrate.summary -@@ -26,10 +26,10 @@ Online: [ bl460g1n6 bl460g1n8 ] - - Transition Summary: - * Fence (reboot) bl460g1n7 'prmDummy is thought to be active there' -- * Move prmDummy (Started bl460g1n7 -> bl460g1n6) -- * Move prmVM2 (Started bl460g1n7 -> bl460g1n8) -- * Move prmStonith8-1 (Started bl460g1n7 -> bl460g1n6) -- * Move prmStonith8-2 (Started bl460g1n7 -> bl460g1n6) -+ * Move prmDummy ( bl460g1n7 -> bl460g1n6 ) -+ * Move prmVM2 ( bl460g1n7 -> bl460g1n8 ) -+ * Move prmStonith8-1 ( bl460g1n7 -> bl460g1n6 ) -+ * Move prmStonith8-2 ( bl460g1n7 -> bl460g1n6 ) - * Stop prmDiskd1:0 (bl460g1n7) due to node availability - * Stop prmDiskd2:0 (bl460g1n7) due to node availability - * Stop prmPing:0 (bl460g1n7) due to node availability -diff --git a/pengine/test10/bug-cl-5212.summary b/pengine/test10/bug-cl-5212.summary -index 92d3af3..1800f06 100644 ---- a/pengine/test10/bug-cl-5212.summary -+++ b/pengine/test10/bug-cl-5212.summary -@@ -20,13 +20,13 @@ Online: [ srv03 ] - Started: [ srv03 ] - - Transition Summary: -- * Stop prmStonith1-1 (Started srv02 - blocked) -- * Stop prmStonith2-1 (Started srv01 - blocked) -- * Stop prmStonith3-1 (srv01 - blocked) due to node availability -- * Stop pgsql:0 (srv02 - blocked) due to node availability -- * Demote pgsql:1 (Master -> Stopped srv01 - blocked) -- * Stop prmPingd:0 (srv02 - blocked) due to node availability -- * Stop prmPingd:1 (srv01 - blocked) due to node availability -+ * Stop prmStonith1-1 ( srv02 ) blocked -+ * Stop prmStonith2-1 ( srv01 ) blocked -+ * Stop prmStonith3-1 ( srv01 ) due to node availability (blocked) -+ * Stop pgsql:0 ( Slave srv02 ) due to node availability (blocked) -+ * Stop pgsql:1 ( Master srv01 ) due to node availability (blocked) -+ * Stop prmPingd:0 ( srv02 ) due to node availability (blocked) -+ * Stop prmPingd:1 ( srv01 ) due to node availability (blocked) - - Executing cluster transition: - * Pseudo action: grpStonith1_stop_0 -diff --git a/pengine/test10/bug-cl-5247.summary b/pengine/test10/bug-cl-5247.summary -index 0f328cc..3e5511d 100644 ---- a/pengine/test10/bug-cl-5247.summary -+++ b/pengine/test10/bug-cl-5247.summary -@@ -20,11 +20,11 @@ Containers: [ pgsr01:prmDB1 ] - Transition Summary: - * Fence (off) pgsr02 (resource: prmDB2) 'guest is unclean' - * Stop prmDB2 (bl460g8n4) due to node availability -- * Restart prmStonith1-2 (Started bl460g8n4) -- * Restart prmStonith2-2 (Started bl460g8n3) -- * Recover vip-master (Started pgsr02 -> pgsr01) -- * Recover vip-rep (Started pgsr02 -> pgsr01) -- * Demote pgsql:0 (Master -> Stopped pgsr02) -+ * Restart prmStonith1-2 ( bl460g8n4 ) -+ * Restart prmStonith2-2 ( bl460g8n3 ) -+ * Recover vip-master ( pgsr02 -> pgsr01 ) -+ * Recover vip-rep ( pgsr02 -> pgsr01 ) -+ * Stop pgsql:0 ( Master pgsr02 ) due to node availability - * Stop pgsr02 (bl460g8n4) - - Executing cluster transition: -diff --git a/pengine/test10/bug-lf-2106.summary b/pengine/test10/bug-lf-2106.summary -index 9a71125..1cea829 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 (Started cl-virt-1) -- * Restart pingd:1 (Started cl-virt-2) -+ * Restart pingd:0 ( cl-virt-1 ) -+ * Restart pingd:1 ( cl-virt-2 ) - - Executing cluster transition: - * Cluster action: clear_failcount for pingd on cl-virt-1 -diff --git a/pengine/test10/bug-lf-2153.summary b/pengine/test10/bug-lf-2153.summary -index e95713e..01567b5 100644 ---- a/pengine/test10/bug-lf-2153.summary -+++ b/pengine/test10/bug-lf-2153.summary -@@ -18,7 +18,7 @@ Online: [ alice ] - res_portblock_iscsivg01_unblock (ocf::heartbeat:portblock): Started alice - - Transition Summary: -- * Stop res_drbd_iscsivg01:0 (bob) due to node availability -+ * Stop res_drbd_iscsivg01:0 ( Slave bob ) due to node availability - * Stop res_tgtd:0 (bob) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/bug-lf-2171.summary b/pengine/test10/bug-lf-2171.summary -index 8c1d8a4..41a7b94 100644 ---- a/pengine/test10/bug-lf-2171.summary -+++ b/pengine/test10/bug-lf-2171.summary -@@ -12,8 +12,8 @@ Online: [ xenserver1 xenserver2 ] - Transition Summary: - * Stop res_Dummy1:0 (xenserver1) due to node availability - * Stop res_Dummy1:1 (xenserver2) due to node availability -- * Stop res_Dummy2 (Started xenserver1) due to unrunnable cl_res_Dummy1 running -- * Stop res_Dummy3 (Started xenserver1) due to unrunnable cl_res_Dummy1 running -+ * Stop res_Dummy2 ( xenserver1 ) due to unrunnable cl_res_Dummy1 running -+ * Stop res_Dummy3 ( xenserver1 ) due to unrunnable cl_res_Dummy1 running - - Executing cluster transition: - * Pseudo action: gr_Dummy_stop_0 -diff --git a/pengine/test10/bug-lf-2361.summary b/pengine/test10/bug-lf-2361.summary -index 3089e04..b88cd90 100644 ---- a/pengine/test10/bug-lf-2361.summary -+++ b/pengine/test10/bug-lf-2361.summary -@@ -11,8 +11,8 @@ Online: [ alice.demo bob.demo ] - Transition Summary: - * Start stateful:0 (alice.demo) - * Start stateful:1 (bob.demo) -- * Start dummy2:0 (alice.demo - blocked) due to unrunnable dummy1 start -- * Start dummy2:1 (bob.demo - blocked) due to unrunnable dummy1 start -+ * Start dummy2:0 ( alice.demo ) due to unrunnable dummy1 start (blocked) -+ * Start dummy2:1 ( bob.demo ) due to unrunnable dummy1 start (blocked) - - Executing cluster transition: - * Pseudo action: ms_stateful_pre_notify_start_0 -diff --git a/pengine/test10/bug-lf-2435.summary b/pengine/test10/bug-lf-2435.summary -index a538342..bb07089 100644 ---- a/pengine/test10/bug-lf-2435.summary -+++ b/pengine/test10/bug-lf-2435.summary -@@ -9,7 +9,7 @@ Online: [ c19.chepkov.lan c21.chepkov.lan ] - dummy3 (ocf::pacemaker:Dummy): Started c21.chepkov.lan - - Transition Summary: -- * Move dummy2 (Started c20.chepkov.lan -> c21.chepkov.lan) -+ * Move dummy2 ( c20.chepkov.lan -> c21.chepkov.lan ) - * Stop dummy3 (c21.chepkov.lan) - - Executing cluster transition: -diff --git a/pengine/test10/bug-lf-2445.summary b/pengine/test10/bug-lf-2445.summary -index 4523d9b..12f5031 100644 ---- a/pengine/test10/bug-lf-2445.summary -+++ b/pengine/test10/bug-lf-2445.summary -@@ -7,7 +7,7 @@ Online: [ node1 node2 ] - P:1 (ocf::pacemaker:Dummy): Started node1 - - Transition Summary: -- * Move P:1 (Started node1 -> node2) -+ * Move P:1 ( node1 -> node2 ) - - Executing cluster transition: - * Pseudo action: C_stop_0 -diff --git a/pengine/test10/bug-lf-2453.summary b/pengine/test10/bug-lf-2453.summary -index 398868b..f038cbb 100644 ---- a/pengine/test10/bug-lf-2453.summary -+++ b/pengine/test10/bug-lf-2453.summary -@@ -10,11 +10,11 @@ Online: [ domu1 domu2 ] - Started: [ domu1 domu2 ] - - Transition Summary: -- * Stop PrimitiveResource1 (Started domu1) due to required CloneResource2 running -+ * Stop PrimitiveResource1 ( domu1 ) due to required CloneResource2 running - * Stop apache:0 (domu1) due to node availability - * Stop apache:1 (domu2) due to node availability -- * Stop DummyResource:0 (Started domu1) due to unrunnable CloneResource1 running -- * Stop DummyResource:1 (Started domu2) due to unrunnable CloneResource1 running -+ * Stop DummyResource:0 ( domu1 ) due to unrunnable CloneResource1 running -+ * Stop DummyResource:1 ( domu2 ) due to unrunnable CloneResource1 running - - Executing cluster transition: - * Resource action: PrimitiveResource1 stop on domu1 -diff --git a/pengine/test10/bug-lf-2508.summary b/pengine/test10/bug-lf-2508.summary -index 5d0d90c..d4e548a 100644 ---- a/pengine/test10/bug-lf-2508.summary -+++ b/pengine/test10/bug-lf-2508.summary -@@ -37,7 +37,7 @@ Online: [ srv01 srv03 srv04 ] - Transition Summary: - * Fence (reboot) srv02 'peer is no longer part of the cluster' - * Start Dummy01 (srv01) -- * Move Dummy02 (Started srv02 -> srv04) -+ * Move Dummy02 ( srv02 -> srv04 ) - * Stop prmStonith1-1:1 (srv02) due to node availability - * Stop prmStonith1-3:1 (srv02) due to node availability - * Stop prmStonith3-1:0 (srv02) due to node availability -diff --git a/pengine/test10/bug-lf-2551.summary b/pengine/test10/bug-lf-2551.summary -index 9537277..1cd5108 100644 ---- a/pengine/test10/bug-lf-2551.summary -+++ b/pengine/test10/bug-lf-2551.summary -@@ -82,8 +82,8 @@ Online: [ hex-0 hex-7 hex-8 ] - - Transition Summary: - * Fence (reboot) hex-9 'peer is no longer part of the cluster' -- * Move fencing-sbd (Started hex-9 -> hex-0) -- * Move dummy1 (Started hex-9 -> hex-0) -+ * Move fencing-sbd ( hex-9 -> hex-0 ) -+ * Move dummy1 ( hex-9 -> hex-0 ) - * Stop dlm:3 (hex-9) due to node availability - * Stop o2cb:3 (hex-9) due to node availability - * Stop clvm:3 (hex-9) due to node availability -diff --git a/pengine/test10/bug-lf-2574.summary b/pengine/test10/bug-lf-2574.summary -index 800453c..8033616 100644 ---- a/pengine/test10/bug-lf-2574.summary -+++ b/pengine/test10/bug-lf-2574.summary -@@ -11,7 +11,7 @@ Online: [ srv01 srv02 srv03 ] - Started: [ srv01 srv02 srv03 ] - - Transition Summary: -- * Move main_rsc (Started srv01 -> srv03) -+ * Move main_rsc ( srv01 -> srv03 ) - * Stop prmPingd:0 (srv01) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/bug-lf-2606.summary b/pengine/test10/bug-lf-2606.summary -index 7e889c9..d3fdb24 100644 ---- a/pengine/test10/bug-lf-2606.summary -+++ b/pengine/test10/bug-lf-2606.summary -@@ -14,8 +14,8 @@ Online: [ node1 ] - Transition Summary: - * Fence (reboot) node2 'rsc1 failed there' - * Stop rsc1 (node2) -- * Move rsc2 (Started node2 -> node1) -- * Demote rsc3:1 (Master -> Stopped node2) -+ * Move rsc2 ( node2 -> node1 ) -+ * Stop rsc3:1 ( Master node2 ) due to node availability - - Executing cluster transition: - * Pseudo action: ms3_demote_0 -diff --git a/pengine/test10/bug-lf-2613.summary b/pengine/test10/bug-lf-2613.summary -index 4312c51..51078c0 100644 ---- a/pengine/test10/bug-lf-2613.summary -+++ b/pengine/test10/bug-lf-2613.summary -@@ -25,12 +25,12 @@ Online: [ act1 act2 act3 sby1 sby2 ] - prmApPostgreSQLDB3 (ocf::pacemaker:Dummy): Started act3 - - Transition Summary: -- * Move prmExPostgreSQLDB1 (Started act1 -> sby1) -- * Move prmFsPostgreSQLDB1-1 (Started act1 -> sby1) -- * Move prmFsPostgreSQLDB1-2 (Started act1 -> sby1) -- * Move prmFsPostgreSQLDB1-3 (Started act1 -> sby1) -- * Move prmIpPostgreSQLDB1 (Started act1 -> sby1) -- * Recover prmApPostgreSQLDB1 (Started act1 -> sby1) -+ * Move prmExPostgreSQLDB1 ( act1 -> sby1 ) -+ * Move prmFsPostgreSQLDB1-1 ( act1 -> sby1 ) -+ * Move prmFsPostgreSQLDB1-2 ( act1 -> sby1 ) -+ * Move prmFsPostgreSQLDB1-3 ( act1 -> sby1 ) -+ * Move prmIpPostgreSQLDB1 ( act1 -> sby1 ) -+ * Recover prmApPostgreSQLDB1 ( act1 -> sby1 ) - - Executing cluster transition: - * Pseudo action: grpPostgreSQLDB1_stop_0 -diff --git a/pengine/test10/bug-lf-2619.summary b/pengine/test10/bug-lf-2619.summary -index 9a2213d..a704be8 100644 ---- a/pengine/test10/bug-lf-2619.summary -+++ b/pengine/test10/bug-lf-2619.summary -@@ -28,12 +28,12 @@ Online: [ act1 act2 act3 sby1 sby2 ] - Started: [ act2 act3 sby1 sby2 ] - - Transition Summary: -- * Move prmExPostgreSQLDB1 (Started act1 -> sby1) -- * Move prmFsPostgreSQLDB1-1 (Started act1 -> sby1) -- * Move prmFsPostgreSQLDB1-2 (Started act1 -> sby1) -- * Move prmFsPostgreSQLDB1-3 (Started act1 -> sby1) -- * Move prmIpPostgreSQLDB1 (Started act1 -> sby1) -- * Move prmApPostgreSQLDB1 (Started act1 -> sby1) -+ * Move prmExPostgreSQLDB1 ( act1 -> sby1 ) -+ * Move prmFsPostgreSQLDB1-1 ( act1 -> sby1 ) -+ * Move prmFsPostgreSQLDB1-2 ( act1 -> sby1 ) -+ * Move prmFsPostgreSQLDB1-3 ( act1 -> sby1 ) -+ * Move prmIpPostgreSQLDB1 ( act1 -> sby1 ) -+ * Move prmApPostgreSQLDB1 ( act1 -> sby1 ) - * Stop prmPingd:0 (act1) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/bug-n-385265-2.summary b/pengine/test10/bug-n-385265-2.summary -index f02554d..2e0f7c1 100644 ---- a/pengine/test10/bug-n-385265-2.summary -+++ b/pengine/test10/bug-n-385265-2.summary -@@ -7,8 +7,8 @@ Online: [ ih01 ih02 ] - resource_idvscommon (ocf::dfs:idvs): Started ih02 - - Transition Summary: -- * Recover resource_ip_common (Started ih02 -> ih01) -- * Move resource_idvscommon (Started ih02 -> ih01) -+ * Recover resource_ip_common ( ih02 -> ih01 ) -+ * Move resource_idvscommon ( ih02 -> ih01 ) - - Executing cluster transition: - * Pseudo action: group_common_stop_0 -diff --git a/pengine/test10/bug-n-387749.summary b/pengine/test10/bug-n-387749.summary -index 2532d35..9ef7e70 100644 ---- a/pengine/test10/bug-n-387749.summary -+++ b/pengine/test10/bug-n-387749.summary -@@ -13,8 +13,8 @@ OFFLINE: [ power720-4 ] - - Transition Summary: - * Start export_home_ocfs2:0 (power720-1) -- * Move resource_ipaddr1_single (Started power720-2 -> power720-1) -- * Move resource_nfsserver_single (Started power720-2 -> power720-1) -+ * Move resource_ipaddr1_single ( power720-2 -> power720-1 ) -+ * Move resource_nfsserver_single ( power720-2 -> power720-1 ) - - Executing cluster transition: - * Resource action: export_home_ocfs2:0 monitor on power720-1 -diff --git a/pengine/test10/bug-pm-11.summary b/pengine/test10/bug-pm-11.summary -index 07f2d9a..dc26a2e 100644 ---- a/pengine/test10/bug-pm-11.summary -+++ b/pengine/test10/bug-pm-11.summary -@@ -12,7 +12,6 @@ Online: [ node-a node-b ] - - Transition Summary: - * Start stateful-2:0 (node-b) -- * Start stateful-2:1 (node-a) - * Promote stateful-2:1 (Stopped -> Master node-a) - - Executing cluster transition: -diff --git a/pengine/test10/bug-rh-1097457.summary b/pengine/test10/bug-rh-1097457.summary -index ee21df8..c50df5f 100644 ---- a/pengine/test10/bug-rh-1097457.summary -+++ b/pengine/test10/bug-rh-1097457.summary -@@ -33,12 +33,12 @@ Containers: [ lamaVM1:VM1 lamaVM2:VM2 lamaVM3:VM3 ] - - Transition Summary: - * Fence (reboot) lamaVM2 (resource: VM2) 'guest is unclean' -- * Recover VM2 (Started lama3) -- * Recover FSlun3 (Started lamaVM2 -> lama2) -- * Restart FAKE4 (Started lamaVM2) due to required VM2 start -- * Restart FAKE4-IP (Started lamaVM2) due to required VM2 start -- * Restart FAKE6:2 (Started lamaVM2) due to required VM2 start -- * Restart lamaVM2 (Started lama3) due to required VM2 start -+ * Recover VM2 ( lama3 ) -+ * Recover FSlun3 ( lamaVM2 -> lama2 ) -+ * Restart FAKE4 ( lamaVM2 ) due to required VM2 start -+ * Restart FAKE4-IP ( lamaVM2 ) due to required VM2 start -+ * Restart FAKE6:2 ( lamaVM2 ) due to required VM2 start -+ * Restart lamaVM2 ( lama3 ) due to required VM2 start - - Executing cluster transition: - * Resource action: lamaVM2 stop on lama3 -diff --git a/pengine/test10/bug-rh-880249.summary b/pengine/test10/bug-rh-880249.summary -index d4f5333..766d326 100644 ---- a/pengine/test10/bug-rh-880249.summary -+++ b/pengine/test10/bug-rh-880249.summary -@@ -7,8 +7,7 @@ Online: [ 18node1 18node2 18node3 ] - dummystateful (ocf::pacemaker:Stateful): Master [ 18node2 18node1 18node3 ] - - Transition Summary: -- * Demote dummystateful (Master -> Started 18node2) -- * Move dummystateful (Started 18node2 -> 18node3) -+ * Move dummystateful ( Master 18node2 -> Started 18node3 ) - - Executing cluster transition: - * Resource action: dummystateful demote on 18node3 -diff --git a/pengine/test10/bug-suse-707150.summary b/pengine/test10/bug-suse-707150.summary -index d6922ab..6e5a025 100644 ---- a/pengine/test10/bug-suse-707150.summary -+++ b/pengine/test10/bug-suse-707150.summary -@@ -26,7 +26,7 @@ Transition Summary: - * Start o2cb:1 (hex-9) - * Start clvm:1 (hex-9) - * Start cmirrord:1 (hex-9) -- * Start vm-01 (hex-9 - blocked) due to unrunnable base-clone running -+ * Start vm-01 ( hex-9 ) due to unrunnable base-clone running (blocked) - - Executing cluster transition: - * Resource action: vg1:1 monitor on hex-9 -diff --git a/pengine/test10/bundle-nested-colocation.summary b/pengine/test10/bundle-nested-colocation.summary -index 9755e5f..0e2a68d 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 (Started overcloud-rabbit-0) -+ * Restart rabbitmq-bundle-docker-0 ( overcloud-rabbit-0 ) - * Start rabbitmq-bundle-0 (overcloud-controller-0) - * Start rabbitmq:0 (rabbitmq-bundle-0) -- * Restart rabbitmq-bundle-docker-1 (Started overcloud-rabbit-1) -+ * Restart rabbitmq-bundle-docker-1 ( overcloud-rabbit-1 ) - * Start rabbitmq-bundle-1 (overcloud-controller-1) - * Start rabbitmq:1 (rabbitmq-bundle-1) -- * Restart rabbitmq-bundle-docker-2 (Started overcloud-rabbit-2) -+ * Restart rabbitmq-bundle-docker-2 ( overcloud-rabbit-2 ) - * Start rabbitmq-bundle-2 (overcloud-controller-2) - * Start rabbitmq:2 (rabbitmq-bundle-2) - -diff --git a/pengine/test10/bundle-order-partial-start-2.summary b/pengine/test10/bundle-order-partial-start-2.summary -index d67f8fc..790bd17 100644 ---- a/pengine/test10/bundle-order-partial-start-2.summary -+++ b/pengine/test10/bundle-order-partial-start-2.summary -@@ -22,8 +22,8 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq- - - Transition Summary: - * Start rabbitmq:0 (rabbitmq-bundle-0) -- * Restart galera-bundle-docker-0 (Started undercloud) due to required haproxy-bundle running -- * Restart galera-bundle-0 (Started undercloud) due to required galera-bundle-docker-0 start -+ * Restart galera-bundle-docker-0 ( undercloud ) due to required haproxy-bundle running -+ * Restart galera-bundle-0 ( undercloud ) due to required galera-bundle-docker-0 start - * Start galera:0 (galera-bundle-0) - * Promote redis:0 (Slave -> Master redis-bundle-0) - * Start haproxy-bundle-docker-0 (undercloud) -diff --git a/pengine/test10/bundle-order-partial-stop.summary b/pengine/test10/bundle-order-partial-stop.summary -index e7bac73..7bc24d2 100644 ---- a/pengine/test10/bundle-order-partial-stop.summary -+++ b/pengine/test10/bundle-order-partial-stop.summary -@@ -24,15 +24,13 @@ Transition Summary: - * Shutdown undercloud - * Stop rabbitmq-bundle-docker-0 (undercloud) due to node availability - * Stop rabbitmq-bundle-0 (undercloud) due to node availability -- * Stop rabbitmq:0 (Started rabbitmq-bundle-0) due to unrunnable rabbitmq-bundle-0 start -+ * Stop rabbitmq:0 ( rabbitmq-bundle-0 ) due to unrunnable rabbitmq-bundle-0 start - * Stop galera-bundle-docker-0 (undercloud) due to node availability - * Stop galera-bundle-0 (undercloud) due to node availability -- * Demote galera:0 (Master -> Slave galera-bundle-0) -- * Restart galera:0 (Slave galera-bundle-0) due to unrunnable galera-bundle-0 start -+ * Stop galera:0 ( Master galera-bundle-0 ) due to unrunnable galera-bundle-0 start - * Stop redis-bundle-docker-0 (undercloud) due to node availability - * Stop redis-bundle-0 (undercloud) due to node availability -- * Demote redis:0 (Master -> Slave redis-bundle-0) -- * Restart redis:0 (Slave redis-bundle-0) due to unrunnable redis-bundle-0 start -+ * Stop redis:0 ( Master redis-bundle-0 ) due to unrunnable redis-bundle-0 start - * Stop ip-192.168.122.254 (undercloud) due to node availability - * Stop ip-192.168.122.250 (undercloud) due to node availability - * Stop ip-192.168.122.249 (undercloud) due to node availability -diff --git a/pengine/test10/bundle-order-startup-clone-2.summary b/pengine/test10/bundle-order-startup-clone-2.summary -index e23d933..9b0eeaa 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.summary -+++ b/pengine/test10/bundle-order-startup-clone-2.summary -@@ -36,15 +36,12 @@ Transition Summary: - * Start haproxy-bundle-docker-2 (metal-3) - * Start redis-bundle-docker-0 (metal-1) - * Start redis-bundle-0 (metal-1) -- * Start redis:0 (redis-bundle-0) - * Promote redis:0 (Stopped -> Master redis-bundle-0) - * Start redis-bundle-docker-1 (metal-2) - * Start redis-bundle-1 (metal-2) -- * Start redis:1 (redis-bundle-1) - * Promote redis:1 (Stopped -> Master redis-bundle-1) - * Start redis-bundle-docker-2 (metal-3) - * Start redis-bundle-2 (metal-3) -- * Start redis:2 (redis-bundle-2) - * Promote redis:2 (Stopped -> Master redis-bundle-2) - - Executing cluster transition: -diff --git a/pengine/test10/bundle-order-startup-clone.summary b/pengine/test10/bundle-order-startup-clone.summary -index 0acfd1e..5e826dc 100644 ---- a/pengine/test10/bundle-order-startup-clone.summary -+++ b/pengine/test10/bundle-order-startup-clone.summary -@@ -13,12 +13,12 @@ RemoteOFFLINE: [ rabbitmq-bundle-0 ] - redis-bundle-0 (ocf::heartbeat:redis): Stopped - - Transition Summary: -- * Start storage:0 (metal-1 - blocked) due to unrunnable redis-bundle promoted -- * Start storage:1 (metal-2 - blocked) due to unrunnable redis-bundle promoted -- * Start storage:2 (metal-3 - blocked) due to unrunnable redis-bundle promoted -- * Start galera-bundle-docker-0 (metal-1 - blocked) due to unrunnable storage-clone notified -- * Start galera-bundle-0 (metal-1 - blocked) due to unrunnable galera-bundle-docker-0 start -- * Start galera:0 (galera-bundle-0 - blocked) due to unrunnable galera-bundle-docker-0 start -+ * Start storage:0 ( metal-1 ) due to unrunnable redis-bundle promoted (blocked) -+ * Start storage:1 ( metal-2 ) due to unrunnable redis-bundle promoted (blocked) -+ * Start storage:2 ( metal-3 ) due to unrunnable redis-bundle promoted (blocked) -+ * Start galera-bundle-docker-0 ( metal-1 ) due to unrunnable storage-clone notified (blocked) -+ * Start galera-bundle-0 ( metal-1 ) due to unrunnable galera-bundle-docker-0 start (blocked) -+ * Start galera:0 ( galera-bundle-0 ) due to unrunnable galera-bundle-docker-0 start (blocked) - * Start haproxy-bundle-docker-0 (metal-2) - * Start redis-bundle-docker-0 (metal-2) - * Start redis-bundle-0 (metal-2) -diff --git a/pengine/test10/bundle-order-stop-clone.summary b/pengine/test10/bundle-order-stop-clone.summary -index 9a6b0f2..66cb82a 100644 ---- a/pengine/test10/bundle-order-stop-clone.summary -+++ b/pengine/test10/bundle-order-stop-clone.summary -@@ -23,7 +23,7 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bund - Transition Summary: - * Stop storage:0 (metal-1) due to node availability - * Stop galera-bundle-docker-0 (metal-1) due to node availability -- * Stop galera-bundle-0 (Started metal-1) due to unrunnable galera-bundle-docker-0 start -+ * Stop galera-bundle-0 ( metal-1 ) due to unrunnable galera-bundle-docker-0 start - * Stop galera:0 (Slave galera-bundle-0) due to unrunnable galera-bundle-docker-0 start - - Executing cluster transition: -diff --git a/pengine/test10/bundle-order-stop.summary b/pengine/test10/bundle-order-stop.summary -index e7bac73..7bc24d2 100644 ---- a/pengine/test10/bundle-order-stop.summary -+++ b/pengine/test10/bundle-order-stop.summary -@@ -24,15 +24,13 @@ Transition Summary: - * Shutdown undercloud - * Stop rabbitmq-bundle-docker-0 (undercloud) due to node availability - * Stop rabbitmq-bundle-0 (undercloud) due to node availability -- * Stop rabbitmq:0 (Started rabbitmq-bundle-0) due to unrunnable rabbitmq-bundle-0 start -+ * Stop rabbitmq:0 ( rabbitmq-bundle-0 ) due to unrunnable rabbitmq-bundle-0 start - * Stop galera-bundle-docker-0 (undercloud) due to node availability - * Stop galera-bundle-0 (undercloud) due to node availability -- * Demote galera:0 (Master -> Slave galera-bundle-0) -- * Restart galera:0 (Slave galera-bundle-0) due to unrunnable galera-bundle-0 start -+ * Stop galera:0 ( Master galera-bundle-0 ) due to unrunnable galera-bundle-0 start - * Stop redis-bundle-docker-0 (undercloud) due to node availability - * Stop redis-bundle-0 (undercloud) due to node availability -- * Demote redis:0 (Master -> Slave redis-bundle-0) -- * Restart redis:0 (Slave redis-bundle-0) due to unrunnable redis-bundle-0 start -+ * Stop redis:0 ( Master redis-bundle-0 ) due to unrunnable redis-bundle-0 start - * Stop ip-192.168.122.254 (undercloud) due to node availability - * Stop ip-192.168.122.250 (undercloud) due to node availability - * Stop ip-192.168.122.249 (undercloud) due to node availability -diff --git a/pengine/test10/clone-anon-failcount.summary b/pengine/test10/clone-anon-failcount.summary -index 3fb39e3..098b772 100644 ---- a/pengine/test10/clone-anon-failcount.summary -+++ b/pengine/test10/clone-anon-failcount.summary -@@ -37,12 +37,12 @@ Online: [ srv01 srv02 srv03 srv04 ] - Started: [ srv01 srv02 srv03 srv04 ] - - Transition Summary: -- * Move UmVIPcheck (Started srv01 -> srv04) -- * Move UmIPaddr (Started srv01 -> srv04) -- * Move UmDummy01 (Started srv01 -> srv04) -- * Move UmDummy02 (Started srv01 -> srv04) -- * Recover clnUMdummy01:0 (Started srv04) -- * Restart clnUMdummy02:0 (Started srv04) due to required clnUMdummy01:0 start -+ * Move UmVIPcheck ( srv01 -> srv04 ) -+ * Move UmIPaddr ( srv01 -> srv04 ) -+ * Move UmDummy01 ( srv01 -> srv04 ) -+ * Move UmDummy02 ( srv01 -> srv04 ) -+ * Recover clnUMdummy01:0 ( srv04 ) -+ * Restart clnUMdummy02:0 ( srv04 ) due to required clnUMdummy01:0 start - * Stop clnUMdummy01:1 (srv01) due to node availability - * Stop clnUMdummy02:1 (srv01) due to node availability - -diff --git a/pengine/test10/clone-fail-block-colocation.summary b/pengine/test10/clone-fail-block-colocation.summary -index 9b9167a..7f3f765 100644 ---- a/pengine/test10/clone-fail-block-colocation.summary -+++ b/pengine/test10/clone-fail-block-colocation.summary -@@ -16,10 +16,10 @@ Online: [ DEM-1 DEM-2 ] - Started: [ DEM-1 DEM-2 ] - - Transition Summary: -- * Move ipv6_dem_tas_dns (Started DEM-1 -> DEM-2) -- * Move d_bird_subnet_state (Started DEM-1 -> DEM-2) -- * Move ip_mgmt (Started DEM-1 -> DEM-2) -- * Move ip_trf_tas (Started DEM-1 -> DEM-2) -+ * Move ipv6_dem_tas_dns ( DEM-1 -> DEM-2 ) -+ * Move d_bird_subnet_state ( DEM-1 -> DEM-2 ) -+ * Move ip_mgmt ( DEM-1 -> DEM-2 ) -+ * Move ip_trf_tas ( DEM-1 -> DEM-2 ) - - Executing cluster transition: - * Pseudo action: svc_stop_0 -diff --git a/pengine/test10/clone-interleave-2.summary b/pengine/test10/clone-interleave-2.summary -index 78d46cd..e4c9aa4 100644 ---- a/pengine/test10/clone-interleave-2.summary -+++ b/pengine/test10/clone-interleave-2.summary -@@ -11,7 +11,7 @@ Online: [ pcmk-1 pcmk-2 pcmk-3 ] - Started: [ pcmk-1 pcmk-2 pcmk-3 ] - - Transition Summary: -- * Restart dummy (Started pcmk-1) due to required clone-3 running -+ * Restart dummy ( pcmk-1 ) due to required clone-3 running - * Stop child-2:0 (pcmk-1) due to node availability - * Stop child-3:0 (pcmk-1) - -diff --git a/pengine/test10/clone-interleave-3.summary b/pengine/test10/clone-interleave-3.summary -index 8b13dc4..a40dc1d 100644 ---- a/pengine/test10/clone-interleave-3.summary -+++ b/pengine/test10/clone-interleave-3.summary -@@ -12,9 +12,9 @@ Online: [ pcmk-1 pcmk-2 pcmk-3 ] - Started: [ pcmk-1 pcmk-2 pcmk-3 ] - - Transition Summary: -- * Restart dummy (Started pcmk-1) due to required clone-3 running -- * Recover child-2:0 (Started pcmk-1) -- * Restart child-3:0 (Started pcmk-1) due to required child-2:0 start -+ * Restart dummy ( pcmk-1 ) due to required clone-3 running -+ * Recover child-2:0 ( pcmk-1 ) -+ * Restart child-3:0 ( pcmk-1 ) due to required child-2:0 start - - Executing cluster transition: - * Resource action: dummy stop on pcmk-1 -diff --git a/pengine/test10/clone-no-shuffle.summary b/pengine/test10/clone-no-shuffle.summary -index 59ffbbe..c69d8f3 100644 ---- a/pengine/test10/clone-no-shuffle.summary -+++ b/pengine/test10/clone-no-shuffle.summary -@@ -10,7 +10,7 @@ Online: [ dktest1sles10 dktest2sles10 ] - - Transition Summary: - * Start stonith-1 (dktest1sles10) -- * Demote drbd1:0 (Master -> Stopped dktest2sles10) -+ * Stop drbd1:0 ( Master dktest2sles10 ) due to node availability - * Start drbd1:1 (dktest1sles10) - * Stop testip (dktest2sles10) - -diff --git a/pengine/test10/clone-require-all-2.summary b/pengine/test10/clone-require-all-2.summary -index f5861e7..2ebd230 100644 ---- a/pengine/test10/clone-require-all-2.summary -+++ b/pengine/test10/clone-require-all-2.summary -@@ -12,11 +12,11 @@ Online: [ rhel7-auto3 rhel7-auto4 ] - Stopped: [ rhel7-auto1 rhel7-auto2 rhel7-auto3 rhel7-auto4 ] - - Transition Summary: -- * Move shooter (Started rhel7-auto1 -> rhel7-auto3) -+ * Move shooter ( rhel7-auto1 -> rhel7-auto3 ) - * Stop A:0 (rhel7-auto1) due to node availability - * Stop A:1 (rhel7-auto2) due to node availability -- * Start B:0 (rhel7-auto4 - blocked) due to unrunnable clone-one-or-more:order-A-clone-B-clone-mandatory -- * Start B:1 (rhel7-auto3 - blocked) due to unrunnable clone-one-or-more:order-A-clone-B-clone-mandatory -+ * Start B:0 ( rhel7-auto4 ) due to unrunnable clone-one-or-more:order-A-clone-B-clone-mandatory (blocked) -+ * Start B:1 ( rhel7-auto3 ) due to unrunnable clone-one-or-more:order-A-clone-B-clone-mandatory (blocked) - - Executing cluster transition: - * Resource action: shooter stop on rhel7-auto1 -diff --git a/pengine/test10/clone-require-all-3.summary b/pengine/test10/clone-require-all-3.summary -index 1c887e5..78076e5 100644 ---- a/pengine/test10/clone-require-all-3.summary -+++ b/pengine/test10/clone-require-all-3.summary -@@ -13,11 +13,11 @@ Online: [ rhel7-auto3 rhel7-auto4 ] - Stopped: [ rhel7-auto1 rhel7-auto2 ] - - Transition Summary: -- * Move shooter (Started rhel7-auto1 -> rhel7-auto3) -+ * Move shooter ( rhel7-auto1 -> rhel7-auto3 ) - * Stop A:0 (rhel7-auto1) due to node availability - * Stop A:1 (rhel7-auto2) due to node availability -- * Stop B:0 (Started rhel7-auto3) due to unrunnable clone-one-or-more:order-A-clone-B-clone-mandatory -- * Stop B:1 (Started rhel7-auto4) due to unrunnable clone-one-or-more:order-A-clone-B-clone-mandatory -+ * Stop B:0 ( rhel7-auto3 ) due to unrunnable clone-one-or-more:order-A-clone-B-clone-mandatory -+ * Stop B:1 ( rhel7-auto4 ) due to unrunnable clone-one-or-more:order-A-clone-B-clone-mandatory - - Executing cluster transition: - * Resource action: shooter stop on rhel7-auto1 -diff --git a/pengine/test10/clone-require-all-4.summary b/pengine/test10/clone-require-all-4.summary -index 90d2059..5b50e04 100644 ---- a/pengine/test10/clone-require-all-4.summary -+++ b/pengine/test10/clone-require-all-4.summary -@@ -12,7 +12,7 @@ Online: [ rhel7-auto2 rhel7-auto3 rhel7-auto4 ] - Stopped: [ rhel7-auto1 rhel7-auto2 ] - - Transition Summary: -- * Move shooter (Started rhel7-auto1 -> rhel7-auto2) -+ * Move shooter ( rhel7-auto1 -> rhel7-auto2 ) - * Stop A:0 (rhel7-auto1) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/clone-require-all-no-interleave-3.summary b/pengine/test10/clone-require-all-no-interleave-3.summary -index 4379644..d45d078 100644 ---- a/pengine/test10/clone-require-all-no-interleave-3.summary -+++ b/pengine/test10/clone-require-all-no-interleave-3.summary -@@ -15,9 +15,9 @@ Online: [ rhel7-auto1 rhel7-auto2 rhel7-auto3 ] - Stopped: [ rhel7-auto3 ] - - Transition Summary: -- * Move A:0 (Started rhel7-auto4 -> rhel7-auto3) -- * Move B:0 (Started rhel7-auto4 -> rhel7-auto3) -- * Move C:0 (Started rhel7-auto4 -> rhel7-auto3) -+ * Move A:0 ( rhel7-auto4 -> rhel7-auto3 ) -+ * Move B:0 ( rhel7-auto4 -> rhel7-auto3 ) -+ * Move C:0 ( rhel7-auto4 -> rhel7-auto3 ) - - Executing cluster transition: - * Pseudo action: C-clone_stop_0 -diff --git a/pengine/test10/clone_min_interleave_start_one.summary b/pengine/test10/clone_min_interleave_start_one.summary -index 4ee71c4..f2e0c0c 100644 ---- a/pengine/test10/clone_min_interleave_start_one.summary -+++ b/pengine/test10/clone_min_interleave_start_one.summary -@@ -12,12 +12,12 @@ Online: [ c7auto1 c7auto2 c7auto3 ] - - Transition Summary: - * Start FAKE1:0 (c7auto1) -- * Start FAKE2:0 (c7auto2 - blocked) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -- * Start FAKE2:1 (c7auto3 - blocked) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -- * Start FAKE2:2 (c7auto1 - blocked) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -- * Start FAKE3:0 (c7auto2 - blocked) due to unrunnable FAKE2:0 start -- * Start FAKE3:1 (c7auto3 - blocked) due to unrunnable FAKE2:1 start -- * Start FAKE3:2 (c7auto1 - blocked) due to unrunnable FAKE2:2 start -+ * Start FAKE2:0 ( c7auto2 ) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory (blocked) -+ * Start FAKE2:1 ( c7auto3 ) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory (blocked) -+ * Start FAKE2:2 ( c7auto1 ) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory (blocked) -+ * Start FAKE3:0 ( c7auto2 ) due to unrunnable FAKE2:0 start (blocked) -+ * Start FAKE3:1 ( c7auto3 ) due to unrunnable FAKE2:1 start (blocked) -+ * Start FAKE3:2 ( c7auto1 ) due to unrunnable FAKE2:2 start (blocked) - - Executing cluster transition: - * Pseudo action: FAKE1-clone_start_0 -diff --git a/pengine/test10/clone_min_interleave_stop_two.summary b/pengine/test10/clone_min_interleave_stop_two.summary -index 0866f3c..ccdb5e9 100644 ---- a/pengine/test10/clone_min_interleave_stop_two.summary -+++ b/pengine/test10/clone_min_interleave_stop_two.summary -@@ -13,12 +13,12 @@ Online: [ c7auto1 c7auto2 c7auto3 ] - Transition Summary: - * Stop FAKE1:0 (c7auto3) due to node availability - * Stop FAKE1:2 (c7auto2) due to node availability -- * Stop FAKE2:0 (Started c7auto3) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -- * Stop FAKE2:1 (Started c7auto1) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -- * Stop FAKE2:2 (Started c7auto2) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -- * Stop FAKE3:0 (Started c7auto3) due to required FAKE2:0 start -- * Stop FAKE3:1 (Started c7auto1) due to required FAKE2:1 start -- * Stop FAKE3:2 (Started c7auto2) due to required FAKE2:2 start -+ * Stop FAKE2:0 ( c7auto3 ) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -+ * Stop FAKE2:1 ( c7auto1 ) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -+ * Stop FAKE2:2 ( c7auto2 ) due to unrunnable clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory -+ * Stop FAKE3:0 ( c7auto3 ) due to required FAKE2:0 start -+ * Stop FAKE3:1 ( c7auto1 ) due to required FAKE2:1 start -+ * Stop FAKE3:2 ( c7auto2 ) due to required FAKE2:2 start - - Executing cluster transition: - * Pseudo action: FAKE3-clone_stop_0 -diff --git a/pengine/test10/clone_min_start_one.summary b/pengine/test10/clone_min_start_one.summary -index 196f1b3..504b81f 100644 ---- a/pengine/test10/clone_min_start_one.summary -+++ b/pengine/test10/clone_min_start_one.summary -@@ -10,9 +10,9 @@ Online: [ c7auto3 c7auto4 ] - FAKE (ocf::heartbeat:Dummy): Stopped - - Transition Summary: -- * Move shooter (Started c7auto1 -> c7auto3) -+ * Move shooter ( c7auto1 -> c7auto3 ) - * Start FAKECLONE:0 (c7auto3) -- * Start FAKE (c7auto4 - blocked) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory -+ * Start FAKE ( c7auto4 ) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory (blocked) - - Executing cluster transition: - * Resource action: shooter stop on c7auto1 -diff --git a/pengine/test10/clone_min_stop_all.summary b/pengine/test10/clone_min_stop_all.summary -index 877d12f..c12b0a3 100644 ---- a/pengine/test10/clone_min_stop_all.summary -+++ b/pengine/test10/clone_min_stop_all.summary -@@ -12,11 +12,11 @@ Online: [ c7auto4 ] - FAKE (ocf::heartbeat:Dummy): Started c7auto4 - - Transition Summary: -- * Move shooter (Started c7auto1 -> c7auto4) -+ * Move shooter ( c7auto1 -> c7auto4 ) - * Stop FAKECLONE:0 (c7auto1) due to node availability - * Stop FAKECLONE:1 (c7auto2) due to node availability - * Stop FAKECLONE:2 (c7auto3) due to node availability -- * Stop FAKE (Started c7auto4) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory -+ * Stop FAKE ( c7auto4 ) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory - - Executing cluster transition: - * Resource action: shooter stop on c7auto1 -diff --git a/pengine/test10/clone_min_stop_two.summary b/pengine/test10/clone_min_stop_two.summary -index 4d8c38f..5223501 100644 ---- a/pengine/test10/clone_min_stop_two.summary -+++ b/pengine/test10/clone_min_stop_two.summary -@@ -11,10 +11,10 @@ Online: [ c7auto3 c7auto4 ] - FAKE (ocf::heartbeat:Dummy): Started c7auto4 - - Transition Summary: -- * Move shooter (Started c7auto1 -> c7auto3) -+ * Move shooter ( c7auto1 -> c7auto3 ) - * Stop FAKECLONE:0 (c7auto1) due to node availability - * Stop FAKECLONE:1 (c7auto2) due to node availability -- * Stop FAKE (Started c7auto4) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory -+ * Stop FAKE ( c7auto4 ) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory - - Executing cluster transition: - * Resource action: shooter stop on c7auto1 -diff --git a/pengine/test10/cloned-group-stop.summary b/pengine/test10/cloned-group-stop.summary -index f7a980c..4d5f390 100644 ---- a/pengine/test10/cloned-group-stop.summary -+++ b/pengine/test10/cloned-group-stop.summary -@@ -20,20 +20,20 @@ Online: [ rhos4-node3 rhos4-node4 ] - Transition Summary: - * Stop qpidd:0 (rhos4-node4) due to node availability - * Stop qpidd:1 (rhos4-node3) due to node availability -- * Stop keystone:0 (Started rhos4-node4) due to unrunnable qpidd-clone running -- * Stop keystone:1 (Started rhos4-node3) due to unrunnable qpidd-clone running -- * Stop glance-fs:0 (Started rhos4-node4) due to required keystone-clone running -- * Stop glance-registry:0 (Started rhos4-node4) due to required glance-fs:0 start -- * Stop glance-api:0 (Started rhos4-node4) due to required glance-registry:0 start -- * Stop glance-fs:1 (Started rhos4-node3) due to required keystone-clone running -- * Stop glance-registry:1 (Started rhos4-node3) due to required glance-fs:1 start -- * Stop glance-api:1 (Started rhos4-node3) due to required glance-registry:1 start -- * Stop cinder-api:0 (Started rhos4-node4) due to required glance-clone running -- * Stop cinder-scheduler:0 (Started rhos4-node4) due to required cinder-api:0 start -- * Stop cinder-volume:0 (Started rhos4-node4) due to required cinder-scheduler:0 start -- * Stop cinder-api:1 (Started rhos4-node3) due to required glance-clone running -- * Stop cinder-scheduler:1 (Started rhos4-node3) due to required cinder-api:1 start -- * Stop cinder-volume:1 (Started rhos4-node3) due to required cinder-scheduler:1 start -+ * 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-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-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-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-volume:1 ( rhos4-node3 ) due to required cinder-scheduler:1 start - - Executing cluster transition: - * Pseudo action: cinder-clone_stop_0 -diff --git a/pengine/test10/cloned-group.summary b/pengine/test10/cloned-group.summary -index e1456b9..1c4f277 100644 ---- a/pengine/test10/cloned-group.summary -+++ b/pengine/test10/cloned-group.summary -@@ -11,8 +11,8 @@ OFFLINE: [ webcluster02 ] - Stopped: [ webcluster02 ] - - Transition Summary: -- * Restart apache2:0 (Started webcluster01) -- * Restart mysql-proxy:0 (Started webcluster01) due to required apache2:0 start -+ * Restart apache2:0 ( webcluster01 ) -+ * 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/cloned_start_one.summary b/pengine/test10/cloned_start_one.summary -index 5dedc18..38bf2ae 100644 ---- a/pengine/test10/cloned_start_one.summary -+++ b/pengine/test10/cloned_start_one.summary -@@ -14,7 +14,7 @@ Online: [ c7auto1 c7auto4 ] - Transition Summary: - * Start FAKECLONE:0 (c7auto1) - * Stop FAKECLONE2:0 (c7auto3) due to node availability -- * Stop FAKECLONE2:1 (Started c7auto4) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKECLONE2-clone-mandatory -+ * Stop FAKECLONE2:1 ( c7auto4 ) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKECLONE2-clone-mandatory - - Executing cluster transition: - * Pseudo action: FAKECLONE-clone_start_0 -diff --git a/pengine/test10/cloned_stop_two.summary b/pengine/test10/cloned_stop_two.summary -index 8f1e039..d6a4f2c 100644 ---- a/pengine/test10/cloned_stop_two.summary -+++ b/pengine/test10/cloned_stop_two.summary -@@ -16,7 +16,7 @@ Transition Summary: - * Stop FAKECLONE:1 (c7auto2) due to node availability - * Stop FAKECLONE:2 (c7auto3) due to node availability - * Stop FAKECLONE2:0 (c7auto3) due to node availability -- * Stop FAKECLONE2:1 (Started c7auto4) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKECLONE2-clone-mandatory -+ * Stop FAKECLONE2:1 ( c7auto4 ) due to unrunnable clone-one-or-more:order-FAKECLONE-clone-FAKECLONE2-clone-mandatory - - Executing cluster transition: - * Pseudo action: FAKECLONE2-clone_stop_0 -diff --git a/pengine/test10/colo_master_w_native.summary b/pengine/test10/colo_master_w_native.summary -index 98774c1..fda8e85 100644 ---- a/pengine/test10/colo_master_w_native.summary -+++ b/pengine/test10/colo_master_w_native.summary -@@ -8,7 +8,7 @@ Online: [ node1 node2 ] - Slaves: [ node1 ] - - Transition Summary: -- * Demote MS_RSC_NATIVE:0 (Master -> Slave node2) -+ * Demote MS_RSC_NATIVE:0 ( Master -> Slave node2 ) - * Promote MS_RSC_NATIVE:1 (Slave -> Master node1) - - Executing cluster transition: -diff --git a/pengine/test10/colo_slave_w_native.summary b/pengine/test10/colo_slave_w_native.summary -index 705935e..f59d93b 100644 ---- a/pengine/test10/colo_slave_w_native.summary -+++ b/pengine/test10/colo_slave_w_native.summary -@@ -8,8 +8,8 @@ Online: [ node1 node2 ] - Slaves: [ node1 ] - - Transition Summary: -- * Move A (Started node1 -> node2) -- * Demote MS_RSC_NATIVE:0 (Master -> Slave node2) -+ * Move A ( node1 -> node2 ) -+ * Demote MS_RSC_NATIVE:0 ( Master -> Slave node2 ) - * Promote MS_RSC_NATIVE:1 (Slave -> Master node1) - - Executing cluster transition: -diff --git a/pengine/test10/coloc-clone-stays-active.summary b/pengine/test10/coloc-clone-stays-active.summary -index b017137..df9b92c 100644 ---- a/pengine/test10/coloc-clone-stays-active.summary -+++ b/pengine/test10/coloc-clone-stays-active.summary -@@ -98,7 +98,7 @@ Online: [ s01-0 s01-1 ] - Started: [ s01-0 s01-1 ] - - Transition Summary: -- * Migrate mgmt-vm (Started s01-0 -> s01-1) -+ * Migrate mgmt-vm ( s01-0 -> s01-1 ) - - Executing cluster transition: - * Resource action: mgmt-vm migrate_to on s01-0 -diff --git a/pengine/test10/coloc-intra-set.summary b/pengine/test10/coloc-intra-set.summary -index caefd3e..e313d5a 100644 ---- a/pengine/test10/coloc-intra-set.summary -+++ b/pengine/test10/coloc-intra-set.summary -@@ -9,8 +9,8 @@ Online: [ hex-13 hex-14 ] - dummy3 (ocf::heartbeat:Dummy): Started hex-13 - - Transition Summary: -- * Move dummy1 (Started hex-13 -> hex-14) -- * Move dummy3 (Started hex-13 -> hex-14) -+ * Move dummy1 ( hex-13 -> hex-14 ) -+ * Move dummy3 ( hex-13 -> hex-14 ) - - Executing cluster transition: - * Resource action: dummy1 stop on hex-13 -diff --git a/pengine/test10/coloc_fp_logic.summary b/pengine/test10/coloc_fp_logic.summary -index bf479d8..0c2f4b9 100644 ---- a/pengine/test10/coloc_fp_logic.summary -+++ b/pengine/test10/coloc_fp_logic.summary -@@ -6,7 +6,7 @@ Online: [ node1 node2 ] - B (ocf::pacemaker:Dummy): Started node2 - - Transition Summary: -- * Move A (Started node1 -> node2) -+ * Move A ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: A stop on node1 -diff --git a/pengine/test10/colocation_constraint_stops_master.summary b/pengine/test10/colocation_constraint_stops_master.summary -index e0b6976..e4b8697 100644 ---- a/pengine/test10/colocation_constraint_stops_master.summary -+++ b/pengine/test10/colocation_constraint_stops_master.summary -@@ -6,7 +6,7 @@ Online: [ fc16-builder fc16-builder2 ] - Masters: [ fc16-builder ] - - Transition Summary: -- * Demote NATIVE_RSC_A:0 (Master -> Stopped fc16-builder) -+ * Stop NATIVE_RSC_A:0 ( Master fc16-builder ) due to node availability - - Executing cluster transition: - * Pseudo action: MASTER_RSC_A_pre_notify_demote_0 -diff --git a/pengine/test10/colocation_constraint_stops_slave.summary b/pengine/test10/colocation_constraint_stops_slave.summary -index a97b74b..4af4415 100644 ---- a/pengine/test10/colocation_constraint_stops_slave.summary -+++ b/pengine/test10/colocation_constraint_stops_slave.summary -@@ -9,7 +9,7 @@ OFFLINE: [ fc16-builder2 ] - NATIVE_RSC_B (ocf::pacemaker:Dummy): Started fc16-builder ( disabled ) - - Transition Summary: -- * Stop NATIVE_RSC_A:0 (fc16-builder) due to node availability -+ * Stop NATIVE_RSC_A:0 ( Slave fc16-builder ) due to node availability - * Stop NATIVE_RSC_B (fc16-builder) - - Executing cluster transition: -diff --git a/pengine/test10/complex_enforce_colo.summary b/pengine/test10/complex_enforce_colo.summary -index a21d5c1..2332269 100644 ---- a/pengine/test10/complex_enforce_colo.summary -+++ b/pengine/test10/complex_enforce_colo.summary -@@ -111,9 +111,9 @@ Transition Summary: - * Stop glance-api:0 (rhos6-node1) - * Stop glance-api:1 (rhos6-node2) - * Stop glance-api:2 (rhos6-node3) -- * Stop cinder-api (Started rhos6-node1) due to unrunnable keystone-clone running -- * Stop cinder-scheduler (Started rhos6-node1) due to required cinder-api start -- * Stop cinder-volume (Started rhos6-node1) -+ * Stop cinder-api ( rhos6-node1 ) due to unrunnable keystone-clone running -+ * Stop cinder-scheduler ( rhos6-node1 ) due to required cinder-api start -+ * Stop cinder-volume ( rhos6-node1 ) - * Stop swift-account:0 (rhos6-node1) - * Stop swift-account:1 (rhos6-node2) - * Stop swift-account:2 (rhos6-node3) -@@ -126,7 +126,7 @@ Transition Summary: - * Stop swift-proxy:0 (rhos6-node1) - * Stop swift-proxy:1 (rhos6-node2) - * Stop swift-proxy:2 (rhos6-node3) -- * Stop swift-object-expirer (Started rhos6-node2) due to required swift-proxy-clone running -+ * Stop swift-object-expirer ( rhos6-node2 ) due to required swift-proxy-clone running - * Stop neutron-server:0 (rhos6-node1) - * Stop neutron-server:1 (rhos6-node2) - * Stop neutron-server:2 (rhos6-node3) -@@ -166,35 +166,35 @@ Transition Summary: - * Stop nova-conductor:0 (rhos6-node1) - * Stop nova-conductor:1 (rhos6-node2) - * Stop nova-conductor:2 (rhos6-node3) -- * Stop ceilometer-central (Started rhos6-node3) due to unrunnable keystone-clone running -- * Stop ceilometer-collector:0 (Started rhos6-node1) due to required ceilometer-central start -- * Stop ceilometer-collector:1 (Started rhos6-node2) due to required ceilometer-central start -- * Stop ceilometer-collector:2 (Started rhos6-node3) due to required ceilometer-central start -- * Stop ceilometer-api:0 (Started rhos6-node1) due to required ceilometer-collector:0 start -- * Stop ceilometer-api:1 (Started rhos6-node2) due to required ceilometer-collector:1 start -- * Stop ceilometer-api:2 (Started rhos6-node3) due to required ceilometer-collector:2 start -- * Stop ceilometer-delay:0 (Started rhos6-node1) due to required ceilometer-api:0 start -- * Stop ceilometer-delay:1 (Started rhos6-node2) due to required ceilometer-api:1 start -- * Stop ceilometer-delay:2 (Started rhos6-node3) due to required ceilometer-api:2 start -- * Stop ceilometer-alarm-evaluator:0 (Started rhos6-node1) due to required ceilometer-delay:0 start -- * Stop ceilometer-alarm-evaluator:1 (Started rhos6-node2) due to required ceilometer-delay:1 start -- * Stop ceilometer-alarm-evaluator:2 (Started rhos6-node3) due to required ceilometer-delay:2 start -- * Stop ceilometer-alarm-notifier:0 (Started rhos6-node1) due to required ceilometer-alarm-evaluator:0 start -- * Stop ceilometer-alarm-notifier:1 (Started rhos6-node2) due to required ceilometer-alarm-evaluator:1 start -- * Stop ceilometer-alarm-notifier:2 (Started rhos6-node3) due to required ceilometer-alarm-evaluator:2 start -- * Stop ceilometer-notification:0 (Started rhos6-node1) due to required ceilometer-alarm-notifier:0 start -- * Stop ceilometer-notification:1 (Started rhos6-node2) due to required ceilometer-alarm-notifier:1 start -- * Stop ceilometer-notification:2 (Started rhos6-node3) due to required ceilometer-alarm-notifier:2 start -- * Stop heat-api:0 (Started rhos6-node1) due to required ceilometer-notification:0 start -- * Stop heat-api:1 (Started rhos6-node2) due to required ceilometer-notification:1 start -- * Stop heat-api:2 (Started rhos6-node3) due to required ceilometer-notification:2 start -- * Stop heat-api-cfn:0 (Started rhos6-node1) due to required heat-api:0 start -- * Stop heat-api-cfn:1 (Started rhos6-node2) due to required heat-api:1 start -- * Stop heat-api-cfn:2 (Started rhos6-node3) due to required heat-api:2 start -- * Stop heat-api-cloudwatch:0 (Started rhos6-node1) due to required heat-api-cfn:0 start -- * Stop heat-api-cloudwatch:1 (Started rhos6-node2) due to required heat-api-cfn:1 start -- * Stop heat-api-cloudwatch:2 (Started rhos6-node3) due to required heat-api-cfn:2 start -- * Stop heat-engine (Started rhos6-node2) due to required heat-api-cloudwatch-clone running -+ * Stop ceilometer-central ( rhos6-node3 ) due to unrunnable keystone-clone running -+ * Stop ceilometer-collector:0 ( rhos6-node1 ) due to required ceilometer-central start -+ * Stop ceilometer-collector:1 ( rhos6-node2 ) due to required ceilometer-central start -+ * Stop ceilometer-collector:2 ( rhos6-node3 ) due to required ceilometer-central start -+ * Stop ceilometer-api:0 ( rhos6-node1 ) due to required ceilometer-collector:0 start -+ * Stop ceilometer-api:1 ( rhos6-node2 ) due to required ceilometer-collector:1 start -+ * Stop ceilometer-api:2 ( rhos6-node3 ) due to required ceilometer-collector:2 start -+ * Stop ceilometer-delay:0 ( rhos6-node1 ) due to required ceilometer-api:0 start -+ * Stop ceilometer-delay:1 ( rhos6-node2 ) due to required ceilometer-api:1 start -+ * Stop ceilometer-delay:2 ( rhos6-node3 ) due to required ceilometer-api:2 start -+ * Stop ceilometer-alarm-evaluator:0 ( rhos6-node1 ) due to required ceilometer-delay:0 start -+ * Stop ceilometer-alarm-evaluator:1 ( rhos6-node2 ) due to required ceilometer-delay:1 start -+ * Stop ceilometer-alarm-evaluator:2 ( rhos6-node3 ) due to required ceilometer-delay:2 start -+ * Stop ceilometer-alarm-notifier:0 ( rhos6-node1 ) due to required ceilometer-alarm-evaluator:0 start -+ * Stop ceilometer-alarm-notifier:1 ( rhos6-node2 ) due to required ceilometer-alarm-evaluator:1 start -+ * Stop ceilometer-alarm-notifier:2 ( rhos6-node3 ) due to required ceilometer-alarm-evaluator:2 start -+ * Stop ceilometer-notification:0 ( rhos6-node1 ) due to required ceilometer-alarm-notifier:0 start -+ * Stop ceilometer-notification:1 ( rhos6-node2 ) due to required ceilometer-alarm-notifier:1 start -+ * Stop ceilometer-notification:2 ( rhos6-node3 ) due to required ceilometer-alarm-notifier:2 start -+ * Stop heat-api:0 ( rhos6-node1 ) due to required ceilometer-notification:0 start -+ * Stop heat-api:1 ( rhos6-node2 ) due to required ceilometer-notification:1 start -+ * Stop heat-api:2 ( rhos6-node3 ) due to required ceilometer-notification:2 start -+ * Stop heat-api-cfn:0 ( rhos6-node1 ) due to required heat-api:0 start -+ * Stop heat-api-cfn:1 ( rhos6-node2 ) due to required heat-api:1 start -+ * Stop heat-api-cfn:2 ( rhos6-node3 ) due to required heat-api:2 start -+ * Stop heat-api-cloudwatch:0 ( rhos6-node1 ) due to required heat-api-cfn:0 start -+ * Stop heat-api-cloudwatch:1 ( rhos6-node2 ) due to required heat-api-cfn:1 start -+ * Stop heat-api-cloudwatch:2 ( rhos6-node3 ) due to required heat-api-cfn:2 start -+ * Stop heat-engine ( rhos6-node2 ) due to required heat-api-cloudwatch-clone running - - Executing cluster transition: - * Pseudo action: glance-api-clone_stop_0 -diff --git a/pengine/test10/container-2.summary b/pengine/test10/container-2.summary -index f011cd3..011dbe4 100644 ---- a/pengine/test10/container-2.summary -+++ b/pengine/test10/container-2.summary -@@ -7,9 +7,9 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node1 - - Transition Summary: -- * Restart container1 (Started node1) -- * Recover rsc1 (Started node1) -- * Restart rsc2 (Started node1) due to required container1 start -+ * Restart container1 ( node1 ) -+ * Recover rsc1 ( node1 ) -+ * Restart rsc2 ( node1 ) due to required container1 start - - Executing cluster transition: - * Resource action: rsc1 stop on node1 -diff --git a/pengine/test10/container-3.summary b/pengine/test10/container-3.summary -index f853ab2..424f27e 100644 ---- a/pengine/test10/container-3.summary -+++ b/pengine/test10/container-3.summary -@@ -7,9 +7,9 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node1 - - Transition Summary: -- * Restart container1 (Started node1) -+ * Restart container1 ( node1 ) - * Start rsc1 (node1) -- * Restart rsc2 (Started node1) due to required container1 start -+ * Restart rsc2 ( node1 ) due to required container1 start - - Executing cluster transition: - * Resource action: rsc2 stop on node1 -diff --git a/pengine/test10/container-4.summary b/pengine/test10/container-4.summary -index c5852de..387db8f 100644 ---- a/pengine/test10/container-4.summary -+++ b/pengine/test10/container-4.summary -@@ -7,9 +7,9 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node1 - - Transition Summary: -- * Move container1 (Started node1 -> node2) -- * Recover rsc1 (Started node1 -> node2) -- * Move rsc2 (Started node1 -> node2) -+ * Move container1 ( node1 -> node2 ) -+ * Recover rsc1 ( node1 -> node2 ) -+ * Move rsc2 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc1 stop on node1 -diff --git a/pengine/test10/container-group-2.summary b/pengine/test10/container-group-2.summary -index c0dbbf8..68d62aa 100644 ---- a/pengine/test10/container-group-2.summary -+++ b/pengine/test10/container-group-2.summary -@@ -8,9 +8,9 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node1 - - Transition Summary: -- * Restart container1 (Started node1) -- * Recover rsc1 (Started node1) -- * Restart rsc2 (Started node1) due to required rsc1 start -+ * Restart container1 ( node1 ) -+ * Recover rsc1 ( node1 ) -+ * Restart rsc2 ( node1 ) due to required rsc1 start - - Executing cluster transition: - * Pseudo action: container-group_stop_0 -diff --git a/pengine/test10/container-group-3.summary b/pengine/test10/container-group-3.summary -index d5fac46..3e327ff 100644 ---- a/pengine/test10/container-group-3.summary -+++ b/pengine/test10/container-group-3.summary -@@ -8,7 +8,7 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Stopped - - Transition Summary: -- * Restart container1 (Started node1) -+ * Restart container1 ( node1 ) - * Start rsc1 (node1) - * Start rsc2 (node1) - -diff --git a/pengine/test10/container-group-4.summary b/pengine/test10/container-group-4.summary -index 3ee85bc..8ab682b 100644 ---- a/pengine/test10/container-group-4.summary -+++ b/pengine/test10/container-group-4.summary -@@ -8,9 +8,9 @@ Online: [ node1 node2 ] - rsc2 (ocf::pacemaker:Dummy): Started node1 - - Transition Summary: -- * Move container1 (Started node1 -> node2) -- * Recover rsc1 (Started node1 -> node2) -- * Move rsc2 (Started node1 -> node2) -+ * Move container1 ( node1 -> node2 ) -+ * Recover rsc1 ( node1 -> node2 ) -+ * Move rsc2 ( node1 -> node2 ) - - Executing cluster transition: - * Pseudo action: container-group_stop_0 -diff --git a/pengine/test10/enforce-colo1.summary b/pengine/test10/enforce-colo1.summary -index b79b8cb..64815ae 100644 ---- a/pengine/test10/enforce-colo1.summary -+++ b/pengine/test10/enforce-colo1.summary -@@ -10,11 +10,11 @@ Online: [ rhel7-auto1 rhel7-auto2 rhel7-auto3 ] - central (ocf::heartbeat:Dummy): Started rhel7-auto3 - - Transition Summary: -- * Stop engine (Started rhel7-auto3) -+ * Stop engine ( rhel7-auto3 ) - * Stop keystone:0 (rhel7-auto2) due to node availability - * Stop keystone:1 (rhel7-auto3) due to node availability - * Stop keystone:2 (rhel7-auto1) due to node availability -- * Stop central (Started rhel7-auto3) due to unrunnable keystone-clone running -+ * Stop central ( rhel7-auto3 ) due to unrunnable keystone-clone running - - Executing cluster transition: - * Resource action: engine stop on rhel7-auto3 -diff --git a/pengine/test10/group-dependents.summary b/pengine/test10/group-dependents.summary -index c136656..15b750b 100644 ---- a/pengine/test10/group-dependents.summary -+++ b/pengine/test10/group-dependents.summary -@@ -30,25 +30,25 @@ Online: [ asttest1 asttest2 ] - Slaves: [ asttest2 ] - - Transition Summary: -- * Migrate mysqld (Started asttest1 -> asttest2) -- * Migrate dahdi (Started asttest1 -> asttest2) -+ * Migrate mysqld ( asttest1 -> asttest2 ) -+ * Migrate dahdi ( asttest1 -> asttest2 ) - * Start fonulator (asttest2) - * Start asterisk (asttest2) - * Start iax2_mon (asttest2) - * Start httpd (asttest2) - * Start tftp (asttest2) -- * Migrate ip_voip_route_test1 (Started asttest1 -> asttest2) -- * Migrate ip_voip_route_test2 (Started asttest1 -> asttest2) -- * Migrate ip_voip_vlan850 (Started asttest1 -> asttest2) -- * Migrate ip_voip_vlan998 (Started asttest1 -> asttest2) -- * Migrate ip_voip_vlan851 (Started asttest1 -> asttest2) -- * Migrate ip_voip_vlan852 (Started asttest1 -> asttest2) -- * Migrate ip_voip_vlan853 (Started asttest1 -> asttest2) -- * Migrate ip_voip_vlan854 (Started asttest1 -> asttest2) -- * Migrate ip_voip_vlan855 (Started asttest1 -> asttest2) -- * Migrate ip_voip_vlan856 (Started asttest1 -> asttest2) -- * Move fs_drbd (Started asttest1 -> asttest2) -- * Demote drbd:0 (Master -> Slave asttest1) -+ * Migrate ip_voip_route_test1 ( asttest1 -> asttest2 ) -+ * Migrate ip_voip_route_test2 ( asttest1 -> asttest2 ) -+ * Migrate ip_voip_vlan850 ( asttest1 -> asttest2 ) -+ * Migrate ip_voip_vlan998 ( asttest1 -> asttest2 ) -+ * Migrate ip_voip_vlan851 ( asttest1 -> asttest2 ) -+ * Migrate ip_voip_vlan852 ( asttest1 -> asttest2 ) -+ * Migrate ip_voip_vlan853 ( asttest1 -> asttest2 ) -+ * Migrate ip_voip_vlan854 ( asttest1 -> asttest2 ) -+ * Migrate ip_voip_vlan855 ( asttest1 -> asttest2 ) -+ * Migrate ip_voip_vlan856 ( asttest1 -> asttest2 ) -+ * Move fs_drbd ( asttest1 -> asttest2 ) -+ * Demote drbd:0 ( Master -> Slave asttest1 ) - * Promote drbd:1 (Slave -> Master asttest2) - - Executing cluster transition: -diff --git a/pengine/test10/group-fail.summary b/pengine/test10/group-fail.summary -index 9067bf6..8ed59ca 100644 ---- a/pengine/test10/group-fail.summary -+++ b/pengine/test10/group-fail.summary -@@ -10,9 +10,9 @@ Online: [ node1 node2 ] - - Transition Summary: - * Start rsc1 (node1) -- * Restart rsc2 (Started node1) due to required rsc1 start -+ * Restart rsc2 ( node1 ) due to required rsc1 start - * Start rsc3 (node1) -- * Restart rsc4 (Started node1) due to required rsc3 start -+ * Restart rsc4 ( node1 ) due to required rsc3 start - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/group10.summary b/pengine/test10/group10.summary -index 570fd28..f7d0eef 100644 ---- a/pengine/test10/group10.summary -+++ b/pengine/test10/group10.summary -@@ -18,9 +18,9 @@ Online: [ c001n01 c001n02 c001n03 c001n08 ] - child_DoFencing:3 (stonith:ssh): Started c001n08 - - Transition Summary: -- * Recover child_192.168.100.181 (Started c001n01) -- * Restart child_192.168.100.182 (Started c001n01) due to required child_192.168.100.181 start -- * Restart child_192.168.100.183 (Started c001n01) due to required child_192.168.100.182 start -+ * Recover child_192.168.100.181 ( c001n01 ) -+ * Restart child_192.168.100.182 ( c001n01 ) due to required child_192.168.100.181 start -+ * Restart child_192.168.100.183 ( c001n01 ) due to required child_192.168.100.182 start - - Executing cluster transition: - * Pseudo action: group-1_stop_0 -diff --git a/pengine/test10/group14.summary b/pengine/test10/group14.summary -index 69e688b..f7a5d7d 100644 ---- a/pengine/test10/group14.summary -+++ b/pengine/test10/group14.summary -@@ -33,24 +33,24 @@ OFFLINE: [ c001n02 c001n03 c001n04 c001n05 ] - ocf_msdummy:11 (ocf::heartbeat:Stateful): Stopped - - Transition Summary: -- * Start DcIPaddr (c001n06 - blocked) due to no quorum -- * Stop r192.168.100.181 (Started c001n06) due to no quorum -- * Start r192.168.100.182 (c001n07 - blocked) due to no quorum -- * Start r192.168.100.183 (c001n07 - blocked) due to no quorum -- * Start lsb_dummy (c001n06 - blocked) due to no quorum -- * Start migrator (c001n06 - blocked) due to no quorum -- * Start rsc_c001n03 (c001n06 - blocked) due to no quorum -- * Start rsc_c001n02 (c001n07 - blocked) due to no quorum -- * Start rsc_c001n04 (c001n06 - blocked) due to no quorum -- * Start rsc_c001n05 (c001n07 - blocked) due to no quorum -- * Start rsc_c001n06 (c001n06 - blocked) due to no quorum -- * Start rsc_c001n07 (c001n07 - blocked) due to no quorum -+ * Start DcIPaddr ( c001n06 ) due to no quorum (blocked) -+ * Stop r192.168.100.181 ( c001n06 ) due to no quorum -+ * Start r192.168.100.182 ( c001n07 ) due to no quorum (blocked) -+ * Start r192.168.100.183 ( c001n07 ) due to no quorum (blocked) -+ * Start lsb_dummy ( c001n06 ) due to no quorum (blocked) -+ * Start migrator ( c001n06 ) due to no quorum (blocked) -+ * Start rsc_c001n03 ( c001n06 ) due to no quorum (blocked) -+ * Start rsc_c001n02 ( c001n07 ) due to no quorum (blocked) -+ * Start rsc_c001n04 ( c001n06 ) due to no quorum (blocked) -+ * Start rsc_c001n05 ( c001n07 ) due to no quorum (blocked) -+ * Start rsc_c001n06 ( c001n06 ) due to no quorum (blocked) -+ * Start rsc_c001n07 ( c001n07 ) due to no quorum (blocked) - * Start child_DoFencing:0 (c001n06) - * Start child_DoFencing:1 (c001n07) -- * Start ocf_msdummy:0 (c001n06 - blocked) due to no quorum -- * Start ocf_msdummy:1 (c001n07 - blocked) due to no quorum -- * Start ocf_msdummy:2 (c001n06 - blocked) due to no quorum -- * Start ocf_msdummy:3 (c001n07 - blocked) due to no quorum -+ * Start ocf_msdummy:0 ( c001n06 ) due to no quorum (blocked) -+ * Start ocf_msdummy:1 ( c001n07 ) due to no quorum (blocked) -+ * Start ocf_msdummy:2 ( c001n06 ) due to no quorum (blocked) -+ * Start ocf_msdummy:3 ( c001n07 ) due to no quorum (blocked) - - Executing cluster transition: - * Pseudo action: group-1_stop_0 -diff --git a/pengine/test10/group5.summary b/pengine/test10/group5.summary -index 68a0e91..f709b9d 100644 ---- a/pengine/test10/group5.summary -+++ b/pengine/test10/group5.summary -@@ -10,11 +10,11 @@ Online: [ node1 node2 ] - rsc3 (heartbeat:apache): Started node1 - - Transition Summary: -- * Move rsc1 (Started node1 -> node2) -- * Move child_rsc1 (Started node1 -> node2) -- * Move child_rsc2 (Started node1 -> node2) -- * Move child_rsc3 (Started node1 -> node2) -- * Move rsc3 (Started node1 -> node2) -+ * Move rsc1 ( node1 -> node2 ) -+ * Move child_rsc1 ( node1 -> node2 ) -+ * Move child_rsc2 ( node1 -> node2 ) -+ * Move child_rsc3 ( node1 -> node2 ) -+ * Move rsc3 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/group6.summary b/pengine/test10/group6.summary -index f2fa1e2..0d18868 100644 ---- a/pengine/test10/group6.summary -+++ b/pengine/test10/group6.summary -@@ -12,12 +12,12 @@ Online: [ node1 node2 ] - child_rsc6 (heartbeat:apache): Started node1 - - Transition Summary: -- * Move child_rsc1 (Started node1 -> node2) -- * Move child_rsc2 (Started node1 -> node2) -- * Move child_rsc3 (Started node1 -> node2) -- * Move child_rsc4 (Started node1 -> node2) -- * Move child_rsc5 (Started node1 -> node2) -- * Move child_rsc6 (Started node1 -> node2) -+ * Move child_rsc1 ( node1 -> node2 ) -+ * Move child_rsc2 ( node1 -> node2 ) -+ * Move child_rsc3 ( node1 -> node2 ) -+ * Move child_rsc4 ( node1 -> node2 ) -+ * Move child_rsc5 ( node1 -> node2 ) -+ * Move child_rsc6 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: child_rsc1 monitor on node2 -diff --git a/pengine/test10/group9.summary b/pengine/test10/group9.summary -index f6755b9..ede3c82 100644 ---- a/pengine/test10/group9.summary -+++ b/pengine/test10/group9.summary -@@ -14,11 +14,11 @@ Online: [ node1 node2 ] - rsc8 (heartbeat:apache): Started node1 - - Transition Summary: -- * Recover rsc4 (Started node1) -- * Restart rsc5 (Started node1) due to required rsc4 start -- * Move rsc6 (Started node1 -> node2) -- * Recover rsc7 (Started node1 -> node2) -- * Move rsc8 (Started node1 -> node2) -+ * Recover rsc4 ( node1 ) -+ * Restart rsc5 ( node1 ) due to required rsc4 start -+ * Move rsc6 ( node1 -> node2 ) -+ * Recover rsc7 ( node1 -> node2 ) -+ * Move rsc8 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/guest-node-host-dies.summary b/pengine/test10/guest-node-host-dies.summary -index d22fe3d..ea0fa4c 100644 ---- a/pengine/test10/guest-node-host-dies.summary -+++ b/pengine/test10/guest-node-host-dies.summary -@@ -14,14 +14,14 @@ 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 (Started rhel7-4) -- * Move rsc_rhel7-1 (Started rhel7-1 -> rhel7-5) -- * Recover container1 (Started rhel7-1 -> rhel7-2) -- * Recover container2 (Started rhel7-1 -> rhel7-3) -+ * Restart Fencing ( rhel7-4 ) -+ * Move rsc_rhel7-1 ( rhel7-1 -> rhel7-5 ) -+ * Recover container1 ( rhel7-1 -> rhel7-2 ) -+ * Recover container2 ( rhel7-1 -> rhel7-3 ) - * Recover lxc-ms:0 (Master lxc1) - * Recover lxc-ms:1 (Slave lxc2) -- * Move lxc1 (Started rhel7-1 -> rhel7-2) -- * Move lxc2 (Started rhel7-1 -> rhel7-3) -+ * Move lxc1 ( rhel7-1 -> rhel7-2 ) -+ * Move lxc2 ( rhel7-1 -> rhel7-3 ) - - Executing cluster transition: - * Resource action: Fencing stop on rhel7-4 -diff --git a/pengine/test10/inc11.summary b/pengine/test10/inc11.summary -index 6f4d8ef..08d024d 100644 ---- a/pengine/test10/inc11.summary -+++ b/pengine/test10/inc11.summary -@@ -10,8 +10,7 @@ Online: [ node0 node1 node2 ] - Transition Summary: - * Start simple-rsc (node2) - * Start child_rsc1:0 (node1) -- * Start child_rsc1:1 (node2) -- * Promote child_rsc1:1 (Stopped -> Master node2) -+ * Promote child_rsc1:1 ( Stopped -> Master node2 ) - - Executing cluster transition: - * Resource action: simple-rsc monitor on node2 -diff --git a/pengine/test10/inc12.summary b/pengine/test10/inc12.summary -index e950c67..cfe99c5 100644 ---- a/pengine/test10/inc12.summary -+++ b/pengine/test10/inc12.summary -@@ -53,16 +53,16 @@ Transition Summary: - * Stop child_DoFencing:2 (c001n05) due to node availability - * Stop child_DoFencing:3 (c001n06) due to node availability - * Stop child_DoFencing:4 (c001n07) due to node availability -- * Stop ocf_msdummy:10 (c001n02) due to node availability -- * Stop ocf_msdummy:11 (c001n02) due to node availability -- * Stop ocf_msdummy:2 (c001n04) due to node availability -- * Stop ocf_msdummy:3 (c001n04) due to node availability -- * Stop ocf_msdummy:4 (c001n05) due to node availability -- * Stop ocf_msdummy:5 (c001n05) due to node availability -- * Stop ocf_msdummy:6 (c001n06) due to node availability -- * Stop ocf_msdummy:7 (c001n06) due to node availability -- * Stop ocf_msdummy:8 (c001n07) due to node availability -- * Stop ocf_msdummy:9 (c001n07) due to node availability -+ * Stop ocf_msdummy:10 ( Slave c001n02 ) due to node availability -+ * Stop ocf_msdummy:11 ( Slave c001n02 ) due to node availability -+ * Stop ocf_msdummy:2 ( Slave c001n04 ) due to node availability -+ * Stop ocf_msdummy:3 ( Slave c001n04 ) due to node availability -+ * Stop ocf_msdummy:4 ( Slave c001n05 ) due to node availability -+ * Stop ocf_msdummy:5 ( Slave c001n05 ) due to node availability -+ * Stop ocf_msdummy:6 ( Slave c001n06 ) due to node availability -+ * Stop ocf_msdummy:7 ( Slave c001n06 ) due to node availability -+ * Stop ocf_msdummy:8 ( Slave c001n07 ) due to node availability -+ * Stop ocf_msdummy:9 ( Slave c001n07 ) due to node availability - - Executing cluster transition: - * Pseudo action: group-1_stop_0 -diff --git a/pengine/test10/inc2.summary b/pengine/test10/inc2.summary -index 898729f..b3049be 100644 ---- a/pengine/test10/inc2.summary -+++ b/pengine/test10/inc2.summary -@@ -10,8 +10,8 @@ Online: [ node1 node2 ] - child_rsc1:4 (heartbeat:apache): Started node1 - - Transition Summary: -- * Move child_rsc1:2 (Started node1 -> node2) -- * Move child_rsc1:3 (Started node1 -> node2) -+ * Move child_rsc1:2 ( node1 -> node2 ) -+ * Move child_rsc1:3 ( node1 -> node2 ) - * Stop child_rsc1:4 (node1) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/inc3.summary b/pengine/test10/inc3.summary -index 955ff3b..5ceab72 100644 ---- a/pengine/test10/inc3.summary -+++ b/pengine/test10/inc3.summary -@@ -16,11 +16,11 @@ Online: [ node1 node2 ] - child_rsc2:4 (heartbeat:apache): Started node2 - - Transition Summary: -- * Move child_rsc1:2 (Started node1 -> node2) -- * Move child_rsc1:3 (Started node1 -> node2) -+ * Move child_rsc1:2 ( node1 -> node2 ) -+ * Move child_rsc1:3 ( node1 -> node2 ) - * Stop child_rsc1:4 (node1) due to node availability -- * Move child_rsc2:3 (Started node2 -> node1) -- * Move child_rsc2:4 (Started node2 -> node1) -+ * Move child_rsc2:3 ( node2 -> node1 ) -+ * Move child_rsc2:4 ( node2 -> node1 ) - - Executing cluster transition: - * Resource action: child_rsc1:0 monitor on node2 -diff --git a/pengine/test10/inc4.summary b/pengine/test10/inc4.summary -index e730360..3b3f10b 100644 ---- a/pengine/test10/inc4.summary -+++ b/pengine/test10/inc4.summary -@@ -16,11 +16,11 @@ Online: [ node1 node2 ] - child_rsc2:4 (heartbeat:apache): Started node2 - - Transition Summary: -- * Move child_rsc1:2 (Started node1 -> node2) -- * Move child_rsc1:3 (Started node1 -> node2) -+ * Move child_rsc1:2 ( node1 -> node2 ) -+ * Move child_rsc1:3 ( node1 -> node2 ) - * Stop child_rsc1:4 (node1) due to node availability -- * Move child_rsc2:3 (Started node2 -> node1) -- * Move child_rsc2:4 (Started node2 -> node1) -+ * Move child_rsc2:3 ( node2 -> node1 ) -+ * Move child_rsc2:4 ( node2 -> node1 ) - - Executing cluster transition: - * Resource action: child_rsc1:0 monitor on node2 -diff --git a/pengine/test10/inc5.summary b/pengine/test10/inc5.summary -index d4e8863..93e0d8e 100644 ---- a/pengine/test10/inc5.summary -+++ b/pengine/test10/inc5.summary -@@ -36,10 +36,10 @@ Online: [ node1 node2 ] - child_rsc8:2 (heartbeat:apache): Stopped - - Transition Summary: -- * Move child_rsc2:1 (Started node1 -> node2) -- * Move child_rsc4:1 (Started node1 -> node2) -- * Move child_rsc5:1 (Started node2 -> node1) -- * Move child_rsc7:1 (Started node2 -> node1) -+ * Move child_rsc2:1 ( node1 -> node2 ) -+ * Move child_rsc4:1 ( node1 -> node2 ) -+ * Move child_rsc5:1 ( node2 -> node1 ) -+ * Move child_rsc7:1 ( node2 -> node1 ) - - Executing cluster transition: - * Resource action: child_rsc1:0 monitor on node2 -diff --git a/pengine/test10/inc6.summary b/pengine/test10/inc6.summary -index 4c754d7..99f3702 100644 ---- a/pengine/test10/inc6.summary -+++ b/pengine/test10/inc6.summary -@@ -28,12 +28,12 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Move child_rsc2:1 (Started node1 -> node2) -- * Move child_rsc4:1 (Started node1 -> node2) -- * Move child_rsc5:1 (Started node2 -> node1) -- * Restart child_rsc6:0 (Started node1) due to required rsc5 running -- * Restart child_rsc6:1 (Started node2) due to required rsc5 running -- * Move child_rsc7:1 (Started node2 -> node1) -+ * Move child_rsc2:1 ( node1 -> node2 ) -+ * Move child_rsc4:1 ( node1 -> node2 ) -+ * Move child_rsc5:1 ( node2 -> node1 ) -+ * Restart child_rsc6:0 ( node1 ) due to required rsc5 running -+ * Restart child_rsc6:1 ( node2 ) due to required rsc5 running -+ * Move child_rsc7:1 ( node2 -> node1 ) - - Executing cluster transition: - * Pseudo action: rsc2_stop_0 -diff --git a/pengine/test10/interleave-restart.summary b/pengine/test10/interleave-restart.summary -index 5ac19b9..c151581 100644 ---- a/pengine/test10/interleave-restart.summary -+++ b/pengine/test10/interleave-restart.summary -@@ -13,9 +13,9 @@ Online: [ node1 node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Recover evmsclone:1 (Started node1) -- * Restart imagestoreclone:1 (Started node1) due to required evmsclone:1 start -- * Restart configstoreclone:1 (Started node1) due to required evmsclone:1 start -+ * Recover evmsclone:1 ( node1 ) -+ * Restart imagestoreclone:1 ( node1 ) due to required evmsclone:1 start -+ * Restart configstoreclone:1 ( node1 ) due to required evmsclone:1 start - - Executing cluster transition: - * Pseudo action: evmscloneset_pre_notify_stop_0 -diff --git a/pengine/test10/isolation-restart-all.summary b/pengine/test10/isolation-restart-all.summary -index a2939f1..595c254 100644 ---- a/pengine/test10/isolation-restart-all.summary -+++ b/pengine/test10/isolation-restart-all.summary -@@ -22,17 +22,17 @@ OFFLINE: [ rhel7-auto4 ] - iso_mem2 (ocf::heartbeat:Dummy): Started rhel7-auto5 - - Transition Summary: -- * Restart fake (Started rhel7-auto5) -- * Restart replicated:0 (Started rhel7-auto5) -- * Restart replicated:1 (Started rhel7-auto5) -- * Restart s1 (Started rhel7-auto5) -- * Restart s2 (Started rhel7-auto5) -- * Restart g1:0 (Started rhel7-auto5) -- * Restart g2:0 (Started rhel7-auto5) -- * Restart g1:1 (Started rhel7-auto5) -- * Restart g2:1 (Started rhel7-auto5) -- * Restart iso_mem1 (Started rhel7-auto5) -- * Restart iso_mem2 (Started rhel7-auto5) -+ * Restart fake ( rhel7-auto5 ) -+ * Restart replicated:0 ( rhel7-auto5 ) -+ * Restart replicated:1 ( rhel7-auto5 ) -+ * Restart s1 ( rhel7-auto5 ) -+ * Restart s2 ( rhel7-auto5 ) -+ * Restart g1:0 ( rhel7-auto5 ) -+ * Restart g2:0 ( rhel7-auto5 ) -+ * Restart g1:1 ( rhel7-auto5 ) -+ * Restart g2:1 ( rhel7-auto5 ) -+ * Restart iso_mem1 ( rhel7-auto5 ) -+ * Restart iso_mem2 ( rhel7-auto5 ) - - Executing cluster transition: - * Resource action: fake stop on rhel7-auto5 -diff --git a/pengine/test10/load-stopped-loop-2.summary b/pengine/test10/load-stopped-loop-2.summary -index 5da41e4..d4fbf14 100644 ---- a/pengine/test10/load-stopped-loop-2.summary -+++ b/pengine/test10/load-stopped-loop-2.summary -@@ -26,14 +26,14 @@ Online: [ xfc0 xfc1 xfc2 xfc3 ] - xu-test9 (ocf::heartbeat:Xen): Started xfc0 - - Transition Summary: -- * Migrate xu-test12 (Started xfc2 -> xfc3) -- * Migrate xu-test2 (Started xfc3 -> xfc1) -- * Migrate xu-test3 (Started xfc1 -> xfc0) -- * Migrate xu-test4 (Started xfc0 -> xfc2) -- * Migrate xu-test5 (Started xfc2 -> xfc3) -- * Migrate xu-test6 (Started xfc3 -> xfc1) -- * Migrate xu-test7 (Started xfc1 -> xfc0) -- * Migrate xu-test9 (Started xfc0 -> xfc2) -+ * Migrate xu-test12 ( xfc2 -> xfc3 ) -+ * Migrate xu-test2 ( xfc3 -> xfc1 ) -+ * Migrate xu-test3 ( xfc1 -> xfc0 ) -+ * Migrate xu-test4 ( xfc0 -> xfc2 ) -+ * Migrate xu-test5 ( xfc2 -> xfc3 ) -+ * Migrate xu-test6 ( xfc3 -> xfc1 ) -+ * Migrate xu-test7 ( xfc1 -> xfc0 ) -+ * Migrate xu-test9 ( xfc0 -> xfc2 ) - * Start xu-test13 (xfc3) - - Executing cluster transition: -diff --git a/pengine/test10/load-stopped-loop.summary b/pengine/test10/load-stopped-loop.summary -index 2ff5bae..bc5a0f9 100644 ---- a/pengine/test10/load-stopped-loop.summary -+++ b/pengine/test10/load-stopped-loop.summary -@@ -143,16 +143,16 @@ Online: [ mgmt01 v03-a v03-b ] - Stopped: [ mgmt01 ] - - Transition Summary: -- * Reload vds-ok-pool-0-iscsi:0 (Started mgmt01) -- * Reload vds-ok-pool-0-iscsi:1 (Started v03-b) -- * Reload vds-ok-pool-0-iscsi:2 (Started v03-a) -- * Reload vds-ok-pool-1-iscsi:0 (Started mgmt01) -- * Reload vds-ok-pool-1-iscsi:1 (Started v03-b) -- * Reload vds-ok-pool-1-iscsi:2 (Started v03-a) -- * Restart stonith-v03-b (Started v03-a) -- * Restart stonith-v03-a (Started v03-b) -- * Migrate license.anbriz.vds-ok.com-vm (Started v03-b -> v03-a) -- * Migrate terminal0.anbriz.vds-ok.com-vm (Started v03-a -> v03-b) -+ * Reload vds-ok-pool-0-iscsi:0 ( mgmt01 ) -+ * Reload vds-ok-pool-0-iscsi:1 ( v03-b ) -+ * Reload vds-ok-pool-0-iscsi:2 ( v03-a ) -+ * 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 ) -+ * 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) - - Executing cluster transition: -diff --git a/pengine/test10/master-1.summary b/pengine/test10/master-1.summary -index a45943c..b0e5025 100644 ---- a/pengine/test10/master-1.summary -+++ b/pengine/test10/master-1.summary -@@ -11,7 +11,6 @@ Online: [ node1 node2 ] - - Transition Summary: - * Start child_rsc1:0 (node1) -- * Start child_rsc1:1 (node2) - * Promote child_rsc1:1 (Stopped -> Master node2) - * Start child_rsc1:2 (node1) - * Start child_rsc1:3 (node2) -diff --git a/pengine/test10/master-10.summary b/pengine/test10/master-10.summary -index cd0efc3..d736f7c 100644 ---- a/pengine/test10/master-10.summary -+++ b/pengine/test10/master-10.summary -@@ -10,7 +10,6 @@ Online: [ node1 node2 ] - child_rsc1:4 (ocf::heartbeat:apache): Stopped - - Transition Summary: -- * Start child_rsc1:0 (node1) - * Promote child_rsc1:0 (Stopped -> Master node1) - * Start child_rsc1:1 (node2) - * Start child_rsc1:2 (node1) -diff --git a/pengine/test10/master-11.summary b/pengine/test10/master-11.summary -index a13760f..b88e5be 100644 ---- a/pengine/test10/master-11.summary -+++ b/pengine/test10/master-11.summary -@@ -10,7 +10,6 @@ Online: [ node1 node2 ] - Transition Summary: - * Start simple-rsc (node2) - * Start child_rsc1:0 (node1) -- * Start child_rsc1:1 (node2) - * Promote child_rsc1:1 (Stopped -> Master node2) - - Executing cluster transition: -diff --git a/pengine/test10/master-2.summary b/pengine/test10/master-2.summary -index b8f5447..391bf83 100644 ---- a/pengine/test10/master-2.summary -+++ b/pengine/test10/master-2.summary -@@ -10,7 +10,6 @@ Online: [ node1 node2 ] - child_rsc1:4 (ocf::heartbeat:apache): Stopped - - Transition Summary: -- * Start child_rsc1:0 (node1) - * Promote child_rsc1:0 (Stopped -> Master node1) - * Start child_rsc1:1 (node2) - * Start child_rsc1:2 (node1) -diff --git a/pengine/test10/master-3.summary b/pengine/test10/master-3.summary -index a45943c..b0e5025 100644 ---- a/pengine/test10/master-3.summary -+++ b/pengine/test10/master-3.summary -@@ -11,7 +11,6 @@ Online: [ node1 node2 ] - - Transition Summary: - * Start child_rsc1:0 (node1) -- * Start child_rsc1:1 (node2) - * Promote child_rsc1:1 (Stopped -> Master node2) - * Start child_rsc1:2 (node1) - * Start child_rsc1:3 (node2) -diff --git a/pengine/test10/master-7.summary b/pengine/test10/master-7.summary -index 58ef275..105966f 100644 ---- a/pengine/test10/master-7.summary -+++ b/pengine/test10/master-7.summary -@@ -30,15 +30,15 @@ Online: [ c001n02 c001n03 c001n08 ] - - Transition Summary: - * Fence (reboot) c001n01 'peer is no longer part of the cluster' -- * Move DcIPaddr (Started c001n01 -> c001n03) -- * Move ocf_192.168.100.181 (Started c001n03 -> c001n02) -- * Move heartbeat_192.168.100.182 (Started c001n03 -> c001n02) -- * Move ocf_192.168.100.183 (Started c001n03 -> c001n02) -- * Move lsb_dummy (Started c001n02 -> c001n08) -- * Move rsc_c001n01 (Started c001n01 -> c001n03) -+ * Move DcIPaddr ( c001n01 -> c001n03 ) -+ * Move ocf_192.168.100.181 ( c001n03 -> c001n02 ) -+ * Move heartbeat_192.168.100.182 ( c001n03 -> c001n02 ) -+ * Move ocf_192.168.100.183 ( c001n03 -> c001n02 ) -+ * Move lsb_dummy ( c001n02 -> c001n08 ) -+ * Move rsc_c001n01 ( c001n01 -> c001n03 ) - * Stop child_DoFencing:0 (c001n01) due to node availability -- * Demote ocf_msdummy:0 (Master -> Stopped c001n01) -- * Stop ocf_msdummy:4 (c001n01) due to node availability -+ * Stop ocf_msdummy:0 ( Master c001n01 ) due to node availability -+ * Stop ocf_msdummy:4 ( Slave c001n01 ) due to node availability - - Executing cluster transition: - * Pseudo action: group-1_stop_0 -diff --git a/pengine/test10/master-8.summary b/pengine/test10/master-8.summary -index c18e884..5792e16 100644 ---- a/pengine/test10/master-8.summary -+++ b/pengine/test10/master-8.summary -@@ -30,15 +30,14 @@ Online: [ c001n02 c001n03 c001n08 ] - - Transition Summary: - * Fence (reboot) c001n01 'peer is no longer part of the cluster' -- * Move DcIPaddr (Started c001n01 -> c001n03) -- * Move ocf_192.168.100.181 (Started c001n03 -> c001n02) -- * Move heartbeat_192.168.100.182 (Started c001n03 -> c001n02) -- * Move ocf_192.168.100.183 (Started c001n03 -> c001n02) -- * Move lsb_dummy (Started c001n02 -> c001n08) -- * Move rsc_c001n01 (Started c001n01 -> c001n03) -+ * Move DcIPaddr ( c001n01 -> c001n03 ) -+ * Move ocf_192.168.100.181 ( c001n03 -> c001n02 ) -+ * Move heartbeat_192.168.100.182 ( c001n03 -> c001n02 ) -+ * Move ocf_192.168.100.183 ( c001n03 -> c001n02 ) -+ * Move lsb_dummy ( c001n02 -> c001n08 ) -+ * Move rsc_c001n01 ( c001n01 -> c001n03 ) - * Stop child_DoFencing:0 (c001n01) due to node availability -- * Demote ocf_msdummy:0 (Master -> Slave c001n01 - blocked) -- * Move ocf_msdummy:0 (Slave c001n01 -> c001n03) -+ * Move ocf_msdummy:0 ( Master c001n01 -> Slave c001n03 ) - - Executing cluster transition: - * Pseudo action: group-1_stop_0 -diff --git a/pengine/test10/master-9.summary b/pengine/test10/master-9.summary -index ef59602..55ccf50 100644 ---- a/pengine/test10/master-9.summary -+++ b/pengine/test10/master-9.summary -@@ -31,18 +31,18 @@ Online: [ ibm1 va1 ] - - Transition Summary: - * Shutdown ibm1 -- * Start DcIPaddr (va1 - blocked) due to no quorum -- * Start ocf_127.0.0.11 (va1 - blocked) due to no quorum -- * Start heartbeat_127.0.0.12 (va1 - blocked) due to no quorum -- * Start ocf_127.0.0.13 (va1 - blocked) due to no quorum -- * Start lsb_dummy (va1 - blocked) due to no quorum -- * Start rsc_sgi2 (va1 - blocked) due to no quorum -- * Start rsc_ibm1 (va1 - blocked) due to no quorum -- * Start rsc_va1 (va1 - blocked) due to no quorum -- * Start rsc_test02 (va1 - blocked) due to no quorum -+ * Start DcIPaddr ( va1 ) due to no quorum (blocked) -+ * Start ocf_127.0.0.11 ( va1 ) due to no quorum (blocked) -+ * Start heartbeat_127.0.0.12 ( va1 ) due to no quorum (blocked) -+ * Start ocf_127.0.0.13 ( va1 ) due to no quorum (blocked) -+ * Start lsb_dummy ( va1 ) due to no quorum (blocked) -+ * Start rsc_sgi2 ( va1 ) due to no quorum (blocked) -+ * Start rsc_ibm1 ( va1 ) due to no quorum (blocked) -+ * 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 -- * Start ocf_msdummy:0 (va1 - blocked) due to no quorum -- * Start ocf_msdummy:1 (va1 - blocked) due to no quorum -+ * Promote ocf_msdummy:0 ( Stopped -> Master va1 ) due to node availability (blocked) -+ * Start ocf_msdummy:1 ( va1 ) due to no quorum (blocked) - - Executing cluster transition: - * Resource action: child_DoFencing:1 monitor on va1 -diff --git a/pengine/test10/master-asymmetrical-order.summary b/pengine/test10/master-asymmetrical-order.summary -index d09f62e..50f717e 100644 ---- a/pengine/test10/master-asymmetrical-order.summary -+++ b/pengine/test10/master-asymmetrical-order.summary -@@ -11,8 +11,8 @@ Online: [ node1 node2 ] - Slaves: [ node1 ] - - Transition Summary: -- * Demote rsc1:0 (Master -> Stopped node1) -- * Stop rsc1:1 (node2) due to node availability -+ * Stop rsc1:0 ( Master node1 ) due to node availability -+ * Stop rsc1:1 ( Slave node2 ) due to node availability - - Executing cluster transition: - * Pseudo action: ms1_demote_0 -diff --git a/pengine/test10/master-demote.summary b/pengine/test10/master-demote.summary -index 678e20c..b50fb90 100644 ---- a/pengine/test10/master-demote.summary -+++ b/pengine/test10/master-demote.summary -@@ -23,7 +23,7 @@ Online: [ cxa1 cxb1 ] - Started: [ cxa1 cxb1 ] - - Transition Summary: -- * Move named_address (Started cxa1 -> cxb1) -+ * Move named_address ( cxa1 -> cxb1 ) - * Promote named_drbd_node:1 (Slave -> Master cxb1) - - Executing cluster transition: -diff --git a/pengine/test10/master-failed-demote-2.summary b/pengine/test10/master-failed-demote-2.summary -index 086d02e..f5f535c 100644 ---- a/pengine/test10/master-failed-demote-2.summary -+++ b/pengine/test10/master-failed-demote-2.summary -@@ -11,7 +11,7 @@ Online: [ dl380g5a dl380g5b ] - stateful-2:1 (ocf::heartbeat:Stateful): Slave dl380g5a - - Transition Summary: -- * Stop stateful-1:0 (dl380g5b) due to node availability -+ * Stop stateful-1:0 ( Slave dl380g5b ) due to node availability - * Promote stateful-1:1 (Slave -> Master dl380g5a) - * Promote stateful-2:1 (Slave -> Master dl380g5a) - -diff --git a/pengine/test10/master-failed-demote.summary b/pengine/test10/master-failed-demote.summary -index 0f6c410..ec31e42 100644 ---- a/pengine/test10/master-failed-demote.summary -+++ b/pengine/test10/master-failed-demote.summary -@@ -11,7 +11,7 @@ Online: [ dl380g5a dl380g5b ] - stateful-2:1 (ocf::heartbeat:Stateful): Slave dl380g5a - - Transition Summary: -- * Stop stateful-1:0 (dl380g5b) due to node availability -+ * Stop stateful-1:0 ( Slave dl380g5b ) due to node availability - * Promote stateful-1:1 (Slave -> Master dl380g5a) - * Promote stateful-2:1 (Slave -> Master dl380g5a) - -diff --git a/pengine/test10/master-move.summary b/pengine/test10/master-move.summary -index 2f7d877..e42fa27 100644 ---- a/pengine/test10/master-move.summary -+++ b/pengine/test10/master-move.summary -@@ -11,8 +11,8 @@ Online: [ bl460g1n13 bl460g1n14 ] - Slaves: [ bl460g1n14 ] - - Transition Summary: -- * Recover dummy01 (Started bl460g1n13 -> bl460g1n14) -- * Move dummy02 (Started bl460g1n13 -> bl460g1n14) -+ * Recover dummy01 ( bl460g1n13 -> bl460g1n14 ) -+ * Move dummy02 ( bl460g1n13 -> bl460g1n14 ) - * Start dummy03 (bl460g1n14) - * Demote prmDRBD:0 (Master -> Slave bl460g1n13) - * Promote prmDRBD:1 (Slave -> Master bl460g1n14) -diff --git a/pengine/test10/master-partially-demoted-group.summary b/pengine/test10/master-partially-demoted-group.summary -index 0bda605..0abf07c 100644 ---- a/pengine/test10/master-partially-demoted-group.summary -+++ b/pengine/test10/master-partially-demoted-group.summary -@@ -22,14 +22,14 @@ Online: [ sd01-0 sd01-1 ] - Slaves: [ sd01-0 ] - - Transition Summary: -- * Move vip-164 (Started sd01-1 -> sd01-0) -- * Move vip-165 (Started sd01-1 -> sd01-0) -- * Move cdev-pool-0-iscsi-target (Started sd01-1 -> sd01-0) -- * Move cdev-pool-0-iscsi-lun-1 (Started sd01-1 -> sd01-0) -- * Demote vip-164-fw:0 (Master -> Slave sd01-1) -+ * Move vip-164 ( sd01-1 -> sd01-0 ) -+ * Move vip-165 ( sd01-1 -> sd01-0 ) -+ * Move cdev-pool-0-iscsi-target ( sd01-1 -> sd01-0 ) -+ * Move cdev-pool-0-iscsi-lun-1 ( sd01-1 -> sd01-0 ) -+ * Demote vip-164-fw:0 ( Master -> Slave sd01-1 ) - * Promote vip-164-fw:1 (Slave -> Master sd01-0) - * Promote vip-165-fw:1 (Slave -> Master sd01-0) -- * Demote cdev-pool-0-drbd:0 (Master -> Slave sd01-1) -+ * Demote cdev-pool-0-drbd:0 ( Master -> Slave sd01-1 ) - * Promote cdev-pool-0-drbd:1 (Slave -> Master sd01-0) - - Executing cluster transition: -diff --git a/pengine/test10/master-probed-score.summary b/pengine/test10/master-probed-score.summary -index e7f2ba3..3c67fe9 100644 ---- a/pengine/test10/master-probed-score.summary -+++ b/pengine/test10/master-probed-score.summary -@@ -37,10 +37,8 @@ Online: [ hypatia-corosync.nevis.columbia.edu orestes-corosync.nevis.columbia.ed - Proxy (ocf::heartbeat:VirtualDomain): Stopped - - Transition Summary: -- * Start AdminDrbd:0 (hypatia-corosync.nevis.columbia.edu) -- * Promote AdminDrbd:0 (Stopped -> Master hypatia-corosync.nevis.columbia.edu) -- * Start AdminDrbd:1 (orestes-corosync.nevis.columbia.edu) -- * Promote AdminDrbd:1 (Stopped -> Master orestes-corosync.nevis.columbia.edu) -+ * Promote AdminDrbd:0 ( Stopped -> Master hypatia-corosync.nevis.columbia.edu ) -+ * Promote AdminDrbd:1 ( Stopped -> Master orestes-corosync.nevis.columbia.edu ) - * Start CronAmbientTemperature (hypatia-corosync.nevis.columbia.edu) - * Start StonithHypatia (orestes-corosync.nevis.columbia.edu) - * Start StonithOrestes (hypatia-corosync.nevis.columbia.edu) -diff --git a/pengine/test10/master-pseudo.summary b/pengine/test10/master-pseudo.summary -index 2ee2d03..8f67a68 100644 ---- a/pengine/test10/master-pseudo.summary -+++ b/pengine/test10/master-pseudo.summary -@@ -12,8 +12,7 @@ Online: [ sambuca.linbit ] - - Transition Summary: - * Start ip_float_right (sambuca.linbit) -- * Restart drbd_float:0 (Slave sambuca.linbit) due to required ip_float_right start -- * Promote drbd_float:0 (Slave -> Master sambuca.linbit) -+ * Restart drbd_float:0 ( Slave -> Master sambuca.linbit ) due to required ip_float_right start - * Start ip_nfs (sambuca.linbit) - - Executing cluster transition: -diff --git a/pengine/test10/master-stop.summary b/pengine/test10/master-stop.summary -index 8b802d4..8b861df 100644 ---- a/pengine/test10/master-stop.summary -+++ b/pengine/test10/master-stop.summary -@@ -6,7 +6,7 @@ Online: [ node1 node2 node3 ] - Slaves: [ node1 node2 node3 ] - - Transition Summary: -- * Stop dummy:2 (node3) due to node availability -+ * Stop dummy:2 ( Slave node3 ) due to node availability - - Executing cluster transition: - * Pseudo action: m_stop_0 -diff --git a/pengine/test10/migrate-1.summary b/pengine/test10/migrate-1.summary -index 8df4fdb..ee3d352 100644 ---- a/pengine/test10/migrate-1.summary -+++ b/pengine/test10/migrate-1.summary -@@ -6,7 +6,7 @@ Online: [ node2 ] - rsc3 (heartbeat:apache): Started node1 - - Transition Summary: -- * Migrate rsc3 (Started node1 -> node2) -+ * Migrate rsc3 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc3 monitor on node2 -diff --git a/pengine/test10/migrate-3.summary b/pengine/test10/migrate-3.summary -index 9ccc062..9288be3 100644 ---- a/pengine/test10/migrate-3.summary -+++ b/pengine/test10/migrate-3.summary -@@ -6,7 +6,7 @@ Online: [ node2 ] - rsc3 (heartbeat:apache): FAILED node1 - - Transition Summary: -- * Recover rsc3 (Started node1 -> node2) -+ * Recover rsc3 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc3 monitor on node2 -diff --git a/pengine/test10/migrate-4.summary b/pengine/test10/migrate-4.summary -index 32449a7..b95521a 100644 ---- a/pengine/test10/migrate-4.summary -+++ b/pengine/test10/migrate-4.summary -@@ -6,7 +6,7 @@ Online: [ node2 ] - rsc3 (heartbeat:apache): FAILED node2 - - Transition Summary: -- * Recover rsc3 (Started node2) -+ * Recover rsc3 ( node2 ) - - Executing cluster transition: - * Resource action: rsc3 stop on node2 -diff --git a/pengine/test10/migrate-5.summary b/pengine/test10/migrate-5.summary -index a9d5771..0a939dd 100644 ---- a/pengine/test10/migrate-5.summary -+++ b/pengine/test10/migrate-5.summary -@@ -8,7 +8,7 @@ Online: [ dom0-01 ] - Started: [ dom0-01 dom0-02 ] - - Transition Summary: -- * Migrate domU-test01 (Started dom0-02 -> dom0-01) -+ * Migrate domU-test01 ( dom0-02 -> dom0-01 ) - * Stop dom0-iscsi1-cnx1:1 (dom0-02) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/migrate-begin.summary b/pengine/test10/migrate-begin.summary -index b4b5870..56e0f33 100644 ---- a/pengine/test10/migrate-begin.summary -+++ b/pengine/test10/migrate-begin.summary -@@ -7,7 +7,7 @@ Online: [ hex-13 hex-14 ] - Started: [ hex-13 hex-14 ] - - Transition Summary: -- * Migrate test-vm (Started hex-14 -> hex-13) -+ * Migrate test-vm ( hex-14 -> hex-13 ) - - Executing cluster transition: - * Pseudo action: load_stopped_hex-13 -diff --git a/pengine/test10/migrate-both-vms.summary b/pengine/test10/migrate-both-vms.summary -index 5b60727..d45d267 100644 ---- a/pengine/test10/migrate-both-vms.summary -+++ b/pengine/test10/migrate-both-vms.summary -@@ -32,8 +32,8 @@ Transition Summary: - * Stop p-libvirtd:2 (cvmh03) due to node availability - * Stop fs-bind-libvirt-VM-cvmh:0 (cvmh04) due to node availability - * Stop fs-bind-libvirt-VM-cvmh:2 (cvmh03) due to node availability -- * Migrate vm-compute-test (Started cvmh03 -> cvmh01) -- * Migrate vm-swbuildsl6 (Started cvmh04 -> cvmh02) -+ * Migrate vm-compute-test ( cvmh03 -> cvmh01 ) -+ * Migrate vm-swbuildsl6 ( cvmh04 -> cvmh02 ) - - Executing cluster transition: - * Pseudo action: c-watch-ib0_stop_0 -diff --git a/pengine/test10/migrate-fail-2.summary b/pengine/test10/migrate-fail-2.summary -index 3786533..f3709c4 100644 ---- a/pengine/test10/migrate-fail-2.summary -+++ b/pengine/test10/migrate-fail-2.summary -@@ -7,7 +7,7 @@ Online: [ hex-13 hex-14 ] - Started: [ hex-13 hex-14 ] - - Transition Summary: -- * Recover test-vm (Started hex-13) -+ * Recover test-vm ( hex-13 ) - - Executing cluster transition: - * Resource action: test-vm stop on hex-14 -diff --git a/pengine/test10/migrate-fail-3.summary b/pengine/test10/migrate-fail-3.summary -index 547c110..35ec75f 100644 ---- a/pengine/test10/migrate-fail-3.summary -+++ b/pengine/test10/migrate-fail-3.summary -@@ -7,7 +7,7 @@ Online: [ hex-13 hex-14 ] - Started: [ hex-13 hex-14 ] - - Transition Summary: -- * Recover test-vm (Started hex-13) -+ * Recover test-vm ( hex-13 ) - - Executing cluster transition: - * Resource action: test-vm stop on hex-13 -diff --git a/pengine/test10/migrate-fail-4.summary b/pengine/test10/migrate-fail-4.summary -index cda25ad..d36c61b 100644 ---- a/pengine/test10/migrate-fail-4.summary -+++ b/pengine/test10/migrate-fail-4.summary -@@ -7,7 +7,7 @@ Online: [ hex-13 hex-14 ] - Started: [ hex-13 hex-14 ] - - Transition Summary: -- * Restart test-vm (Started hex-13) -+ * Restart test-vm ( hex-13 ) - - Executing cluster transition: - * Resource action: test-vm stop on hex-14 -diff --git a/pengine/test10/migrate-fail-6.summary b/pengine/test10/migrate-fail-6.summary -index dfde8bb..7cabcf3 100644 ---- a/pengine/test10/migrate-fail-6.summary -+++ b/pengine/test10/migrate-fail-6.summary -@@ -7,7 +7,7 @@ Online: [ hex-13 hex-14 ] - Started: [ hex-13 hex-14 ] - - Transition Summary: -- * Recover test-vm (Started hex-13) -+ * Recover test-vm ( hex-13 ) - - Executing cluster transition: - * Resource action: test-vm stop on hex-13 -diff --git a/pengine/test10/migrate-fail-7.summary b/pengine/test10/migrate-fail-7.summary -index 7a41758..f05bb75 100644 ---- a/pengine/test10/migrate-fail-7.summary -+++ b/pengine/test10/migrate-fail-7.summary -@@ -7,7 +7,7 @@ Online: [ hex-13 hex-14 ] - Started: [ hex-13 hex-14 ] - - Transition Summary: -- * Restart test-vm (Started hex-13) -+ * Restart test-vm ( hex-13 ) - - Executing cluster transition: - * Pseudo action: load_stopped_hex-14 -diff --git a/pengine/test10/migrate-fail-8.summary b/pengine/test10/migrate-fail-8.summary -index 9a651eb..018a466 100644 ---- a/pengine/test10/migrate-fail-8.summary -+++ b/pengine/test10/migrate-fail-8.summary -@@ -7,7 +7,7 @@ Online: [ hex-13 hex-14 ] - Started: [ hex-13 hex-14 ] - - Transition Summary: -- * Recover test-vm (Started hex-14 -> hex-13) -+ * Recover test-vm ( hex-14 -> hex-13 ) - - Executing cluster transition: - * Resource action: test-vm stop on hex-14 -diff --git a/pengine/test10/migrate-fail-9.summary b/pengine/test10/migrate-fail-9.summary -index 82ded68..0f99e92 100644 ---- a/pengine/test10/migrate-fail-9.summary -+++ b/pengine/test10/migrate-fail-9.summary -@@ -7,7 +7,7 @@ Online: [ hex-13 hex-14 ] - Started: [ hex-13 hex-14 ] - - Transition Summary: -- * Start test-vm (hex-13) -+ * Restart test-vm ( hex-13 ) - - Executing cluster transition: - * Resource action: test-vm stop on hex-14 -diff --git a/pengine/test10/migrate-fencing.summary b/pengine/test10/migrate-fencing.summary -index cfd4eb8..44f3262 100644 ---- a/pengine/test10/migrate-fencing.summary -+++ b/pengine/test10/migrate-fencing.summary -@@ -24,14 +24,14 @@ Online: [ pcmk-1 pcmk-2 pcmk-3 ] - Transition Summary: - * Fence (reboot) pcmk-4 'termination was requested' - * Stop FencingChild:0 (pcmk-4) due to node availability -- * Move r192.168.101.181 (Started pcmk-4 -> pcmk-1) -- * Move r192.168.101.182 (Started pcmk-4 -> pcmk-1) -- * Move r192.168.101.183 (Started pcmk-4 -> pcmk-1) -- * Move rsc_pcmk-4 (Started pcmk-4 -> pcmk-2) -- * Move lsb-dummy (Started pcmk-4 -> pcmk-1) -- * Migrate migrator (Started pcmk-1 -> pcmk-3) -+ * Move r192.168.101.181 ( pcmk-4 -> pcmk-1 ) -+ * Move r192.168.101.182 ( pcmk-4 -> pcmk-1 ) -+ * Move r192.168.101.183 ( pcmk-4 -> pcmk-1 ) -+ * Move rsc_pcmk-4 ( pcmk-4 -> pcmk-2 ) -+ * Move lsb-dummy ( pcmk-4 -> pcmk-1 ) -+ * Migrate migrator ( pcmk-1 -> pcmk-3 ) - * Stop ping-1:0 (pcmk-4) due to node availability -- * Demote stateful-1:0 (Master -> Stopped pcmk-4) -+ * Stop stateful-1:0 ( Master pcmk-4 ) due to node availability - * Promote stateful-1:1 (Slave -> Master pcmk-1) - - Executing cluster transition: -diff --git a/pengine/test10/migrate-partial-2.summary b/pengine/test10/migrate-partial-2.summary -index 0cf3c75..7ef1a5d 100644 ---- a/pengine/test10/migrate-partial-2.summary -+++ b/pengine/test10/migrate-partial-2.summary -@@ -7,7 +7,7 @@ Online: [ hex-13 hex-14 ] - Started: [ hex-13 hex-14 ] - - Transition Summary: -- * Migrate test-vm (Started hex-14 -> hex-13) -+ * Migrate test-vm ( hex-14 -> hex-13 ) - - Executing cluster transition: - * Resource action: test-vm migrate_from on hex-13 -diff --git a/pengine/test10/migrate-partial-3.summary b/pengine/test10/migrate-partial-3.summary -index 516e470..0dbe46a 100644 ---- a/pengine/test10/migrate-partial-3.summary -+++ b/pengine/test10/migrate-partial-3.summary -@@ -9,7 +9,7 @@ OFFLINE: [ hex-15 ] - Stopped: [ hex-15 ] - - Transition Summary: -- * Recover test-vm (Started hex-14 -> hex-13) -+ * Recover test-vm ( hex-14 -> hex-13 ) - - Executing cluster transition: - * Resource action: test-vm stop on hex-14 -diff --git a/pengine/test10/migrate-partial-4.summary b/pengine/test10/migrate-partial-4.summary -index c3f7012..8fd1d4c 100644 ---- a/pengine/test10/migrate-partial-4.summary -+++ b/pengine/test10/migrate-partial-4.summary -@@ -48,8 +48,8 @@ Online: [ lustre01-left lustre02-left lustre03-left lustre04-left ] - Transition Summary: - * Start drbd-stacked (lustre02-left) - * Start drbd-testfs-local (lustre03-left) -- * Migrate lustre (Started lustre03-left -> lustre04-left) -- * Move testfs (Started lustre02-left -> lustre03-left) -+ * Migrate lustre ( lustre03-left -> lustre04-left ) -+ * Move testfs ( lustre02-left -> lustre03-left ) - * Start drbd-mgs:0 (lustre01-left) - * Start drbd-mgs:1 (lustre02-left) - -diff --git a/pengine/test10/migrate-shutdown.summary b/pengine/test10/migrate-shutdown.summary -index b9aa5b2..508c399 100644 ---- a/pengine/test10/migrate-shutdown.summary -+++ b/pengine/test10/migrate-shutdown.summary -@@ -38,9 +38,9 @@ Transition Summary: - * 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 -- * Stop stateful-1:0 (pcmk-1) due to node availability -- * Demote stateful-1:1 (Master -> Stopped pcmk-2) -- * Stop stateful-1:2 (pcmk-4) due to node availability -+ * Stop stateful-1:0 ( Slave pcmk-1 ) due to node availability -+ * Stop stateful-1:1 ( Master pcmk-2 ) due to node availability -+ * Stop stateful-1:2 ( Slave pcmk-4 ) due to node availability - - Executing cluster transition: - * Resource action: Fencing stop on pcmk-1 -diff --git a/pengine/test10/migrate-start-complex.summary b/pengine/test10/migrate-start-complex.summary -index ed88398..9dd0924 100644 ---- a/pengine/test10/migrate-start-complex.summary -+++ b/pengine/test10/migrate-start-complex.summary -@@ -11,8 +11,8 @@ Online: [ dom0-01 dom0-02 ] - Stopped: [ dom0-01 dom0-02 ] - - Transition Summary: -- * Move top (Started dom0-02 -> dom0-01) -- * Migrate domU-test01 (Started dom0-02 -> dom0-01) -+ * Move top ( dom0-02 -> dom0-01 ) -+ * Migrate domU-test01 ( dom0-02 -> dom0-01 ) - * Start dom0-iscsi1-cnx1:1 (dom0-01) - * Start bottom:0 (dom0-01) - * Start bottom:1 (dom0-02) -diff --git a/pengine/test10/migrate-start.summary b/pengine/test10/migrate-start.summary -index 8bbe3e5..fb6fdef 100644 ---- a/pengine/test10/migrate-start.summary -+++ b/pengine/test10/migrate-start.summary -@@ -8,7 +8,7 @@ Online: [ dom0-01 dom0-02 ] - Stopped: [ dom0-01 ] - - Transition Summary: -- * Migrate domU-test01 (Started dom0-02 -> dom0-01) -+ * Migrate domU-test01 ( dom0-02 -> dom0-01 ) - * Start dom0-iscsi1-cnx1:1 (dom0-01) - - Executing cluster transition: -diff --git a/pengine/test10/migrate-stop-complex.summary b/pengine/test10/migrate-stop-complex.summary -index 04dce1a..4aa6cf7 100644 ---- a/pengine/test10/migrate-stop-complex.summary -+++ b/pengine/test10/migrate-stop-complex.summary -@@ -11,8 +11,8 @@ Online: [ dom0-01 ] - Started: [ dom0-01 dom0-02 ] - - Transition Summary: -- * Move top (Started dom0-02 -> dom0-01) -- * Migrate domU-test01 (Started dom0-02 -> dom0-01) -+ * Move top ( dom0-02 -> dom0-01 ) -+ * Migrate domU-test01 ( dom0-02 -> dom0-01 ) - * Stop dom0-iscsi1-cnx1:1 (dom0-02) due to node availability - * Stop bottom:1 (dom0-02) due to node availability - -diff --git a/pengine/test10/migrate-stop-start-complex.summary b/pengine/test10/migrate-stop-start-complex.summary -index 5408bb6..f0f5843 100644 ---- a/pengine/test10/migrate-stop-start-complex.summary -+++ b/pengine/test10/migrate-stop-start-complex.summary -@@ -12,9 +12,9 @@ Online: [ dom0-01 ] - Stopped: [ dom0-01 ] - - Transition Summary: -- * Migrate domU-test01 (Started dom0-02 -> dom0-01) -+ * Migrate domU-test01 ( dom0-02 -> dom0-01 ) - * Stop dom0-iscsi1-cnx1:1 (dom0-02) due to node availability -- * Move bottom:0 (Started dom0-02 -> dom0-01) -+ * Move bottom:0 ( dom0-02 -> dom0-01 ) - - Executing cluster transition: - * Resource action: domU-test01 migrate_to on dom0-02 -diff --git a/pengine/test10/migrate-stop.summary b/pengine/test10/migrate-stop.summary -index a9d5771..0a939dd 100644 ---- a/pengine/test10/migrate-stop.summary -+++ b/pengine/test10/migrate-stop.summary -@@ -8,7 +8,7 @@ Online: [ dom0-01 ] - Started: [ dom0-01 dom0-02 ] - - Transition Summary: -- * Migrate domU-test01 (Started dom0-02 -> dom0-01) -+ * Migrate domU-test01 ( dom0-02 -> dom0-01 ) - * Stop dom0-iscsi1-cnx1:1 (dom0-02) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/migrate-stop_start.summary b/pengine/test10/migrate-stop_start.summary -index cadb24f..de89651 100644 ---- a/pengine/test10/migrate-stop_start.summary -+++ b/pengine/test10/migrate-stop_start.summary -@@ -9,8 +9,8 @@ Online: [ dom0-01 ] - Stopped: [ dom0-01 ] - - Transition Summary: -- * Migrate domU-test01 (Started dom0-02 -> dom0-01) -- * Move dom0-iscsi1-cnx1:0 (Started dom0-02 -> dom0-01) -+ * Migrate domU-test01 ( dom0-02 -> dom0-01 ) -+ * Move dom0-iscsi1-cnx1:0 ( dom0-02 -> dom0-01 ) - - Executing cluster transition: - * Pseudo action: clone-dom0-iscsi1_stop_0 -diff --git a/pengine/test10/mon-rsc-2.summary b/pengine/test10/mon-rsc-2.summary -index 3f649e5..6c219b5 100644 ---- a/pengine/test10/mon-rsc-2.summary -+++ b/pengine/test10/mon-rsc-2.summary -@@ -6,7 +6,7 @@ Online: [ node1 ] - rsc1 (heartbeat:apache): Started node2 - - Transition Summary: -- * Move rsc1 (Started node2 -> node1) -+ * Move rsc1 ( node2 -> node1 ) - - Executing cluster transition: - * Resource action: rsc1 monitor on node1 -diff --git a/pengine/test10/mon-rsc-4.summary b/pengine/test10/mon-rsc-4.summary -index 92b0f68..d4debf3 100644 ---- a/pengine/test10/mon-rsc-4.summary -+++ b/pengine/test10/mon-rsc-4.summary -@@ -6,7 +6,7 @@ Online: [ node1 ] - rsc1 (heartbeat:apache): Starting node2 - - Transition Summary: -- * Move rsc1 (Started node2 -> node1) -+ * Move rsc1 ( node2 -> node1 ) - - Executing cluster transition: - * Resource action: rsc1 monitor on node1 -diff --git a/pengine/test10/monitor-onfail-restart.summary b/pengine/test10/monitor-onfail-restart.summary -index 34bc76a..b15c321 100644 ---- a/pengine/test10/monitor-onfail-restart.summary -+++ b/pengine/test10/monitor-onfail-restart.summary -@@ -6,7 +6,7 @@ OFFLINE: [ fc16-builder2 ] - A (ocf::pacemaker:Dummy): FAILED fc16-builder - - Transition Summary: -- * Recover A (Started fc16-builder) -+ * Recover A ( fc16-builder ) - - Executing cluster transition: - * Resource action: A stop on fc16-builder -diff --git a/pengine/test10/multi1.summary b/pengine/test10/multi1.summary -index c782e98..40222fc 100644 ---- a/pengine/test10/multi1.summary -+++ b/pengine/test10/multi1.summary -@@ -5,7 +5,7 @@ Online: [ node1 node2 ] - rsc1 (heartbeat:apache): Started [ node1 node2 ] - - Transition Summary: -- * Restart rsc1 (Started node1) -+ * Restart rsc1 ( node1 ) - - Executing cluster transition: - * Resource action: rsc1 stop on node2 -diff --git a/pengine/test10/multiple-monitor-one-failed.summary b/pengine/test10/multiple-monitor-one-failed.summary -index b10abbe..0691ebf 100644 ---- a/pengine/test10/multiple-monitor-one-failed.summary -+++ b/pengine/test10/multiple-monitor-one-failed.summary -@@ -5,7 +5,7 @@ Online: [ dhcp180 dhcp69 ] - Dummy-test2 (ocf::test:Dummy): FAILED dhcp180 - - Transition Summary: -- * Recover Dummy-test2 (Started dhcp180) -+ * Recover Dummy-test2 ( dhcp180 ) - - Executing cluster transition: - * Resource action: Dummy-test2 stop on dhcp180 -diff --git a/pengine/test10/not-installed-agent.summary b/pengine/test10/not-installed-agent.summary -index 5d0b311..b32cdd4 100644 ---- a/pengine/test10/not-installed-agent.summary -+++ b/pengine/test10/not-installed-agent.summary -@@ -7,8 +7,8 @@ Online: [ sles11-1 sles11-2 ] - rsc2 (ocf::pacemaker:Dummy): FAILED sles11-1 - - Transition Summary: -- * Recover rsc1 (Started sles11-1 -> sles11-2) -- * Recover rsc2 (Started sles11-1 -> sles11-2) -+ * Recover rsc1 ( sles11-1 -> sles11-2 ) -+ * Recover rsc2 ( sles11-1 -> sles11-2 ) - - Executing cluster transition: - * Resource action: rsc1 stop on sles11-1 -diff --git a/pengine/test10/not-installed-tools.summary b/pengine/test10/not-installed-tools.summary -index e429333..01ae7f7 100644 ---- a/pengine/test10/not-installed-tools.summary -+++ b/pengine/test10/not-installed-tools.summary -@@ -7,7 +7,7 @@ Online: [ sles11-1 sles11-2 ] - rsc2 (ocf::pacemaker:Dummy): Started sles11-1 (failure ignored) - - Transition Summary: -- * Recover rsc1 (Started sles11-1 -> sles11-2) -+ * Recover rsc1 ( sles11-1 -> sles11-2 ) - - Executing cluster transition: - * Resource action: rsc1 stop on sles11-1 -diff --git a/pengine/test10/not-reschedule-unneeded-monitor.summary b/pengine/test10/not-reschedule-unneeded-monitor.summary -index 2a872d5..429ea24 100644 ---- a/pengine/test10/not-reschedule-unneeded-monitor.summary -+++ b/pengine/test10/not-reschedule-unneeded-monitor.summary -@@ -14,7 +14,7 @@ Online: [ castor kimball ] - Started: [ castor kimball ] - - Transition Summary: -- * Recover sle12-kvm (Started castor -> kimball) -+ * Recover sle12-kvm ( castor -> kimball ) - - Executing cluster transition: - * Resource action: sle12-kvm stop on castor -diff --git a/pengine/test10/notify-3.summary b/pengine/test10/notify-3.summary -index 03a3d4e..6c3367e 100644 ---- a/pengine/test10/notify-3.summary -+++ b/pengine/test10/notify-3.summary -@@ -10,7 +10,7 @@ Online: [ node1 node2 ] - child_rsc2:1 (heartbeat:apache): Stopped - - Transition Summary: -- * Move child_rsc1:1 (Started node2 -> node1) -+ * Move child_rsc1:1 ( node2 -> node1 ) - * Stop child_rsc2:0 (node1) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/novell-239082.summary b/pengine/test10/novell-239082.summary -index b596de4..2bafd1b 100644 ---- a/pengine/test10/novell-239082.summary -+++ b/pengine/test10/novell-239082.summary -@@ -9,9 +9,9 @@ Online: [ xen-1 xen-2 ] - - Transition Summary: - * Shutdown xen-1 -- * Move fs_1 (Started xen-1 -> xen-2) -+ * Move fs_1 ( xen-1 -> xen-2 ) - * Promote drbd0:0 (Slave -> Master xen-2) -- * Demote drbd0:1 (Master -> Stopped xen-1) -+ * Stop drbd0:1 ( Master xen-1 ) due to node availability - - Executing cluster transition: - * Resource action: fs_1 stop on xen-1 -diff --git a/pengine/test10/novell-252693-2.summary b/pengine/test10/novell-252693-2.summary -index 2e8e4b5..392d26e 100644 ---- a/pengine/test10/novell-252693-2.summary -+++ b/pengine/test10/novell-252693-2.summary -@@ -25,7 +25,7 @@ Transition Summary: - * Start evmsclone:1 (node1) - * Start imagestoreclone:1 (node1) - * Start configstoreclone:1 (node1) -- * Migrate sles10 (Started node2 -> node1) -+ * Migrate sles10 ( node2 -> node1 ) - - Executing cluster transition: - * Resource action: stonithclone:1 monitor on node1 -diff --git a/pengine/test10/novell-252693-3.summary b/pengine/test10/novell-252693-3.summary -index 741c957..5c3b0ca 100644 ---- a/pengine/test10/novell-252693-3.summary -+++ b/pengine/test10/novell-252693-3.summary -@@ -23,10 +23,10 @@ Transition Summary: - * Start stonithclone:1 (node1) - * Start evmsdclone:1 (node1) - * Start evmsclone:1 (node1) -- * Recover imagestoreclone:0 (Started node2 -> node1) -+ * Recover imagestoreclone:0 ( node2 -> node1 ) - * Start imagestoreclone:1 (node2) - * Start configstoreclone:1 (node1) -- * Migrate sles10 (Started node2 -> node1) -+ * Migrate sles10 ( node2 -> node1 ) - - Executing cluster transition: - * Resource action: stonithclone:1 monitor on node1 -diff --git a/pengine/test10/novell-252693.summary b/pengine/test10/novell-252693.summary -index 0682119..27cf315 100644 ---- a/pengine/test10/novell-252693.summary -+++ b/pengine/test10/novell-252693.summary -@@ -21,7 +21,7 @@ Transition Summary: - * Stop evmsclone:1 (node1) due to node availability - * Stop imagestoreclone:1 (node1) due to node availability - * Stop configstoreclone:1 (node1) due to node availability -- * Migrate sles10 (Started node1 -> node2) -+ * Migrate sles10 ( node1 -> node2 ) - - Executing cluster transition: - * Pseudo action: stonithcloneset_stop_0 -diff --git a/pengine/test10/one-or-more-1.summary b/pengine/test10/one-or-more-1.summary -index af31a46..d2e79bc 100644 ---- a/pengine/test10/one-or-more-1.summary -+++ b/pengine/test10/one-or-more-1.summary -@@ -10,9 +10,9 @@ OFFLINE: [ fc16-builder2 ] - D (ocf::pacemaker:Dummy): Stopped - - Transition Summary: -- * Start B (fc16-builder - blocked) due to unrunnable A start -- * Start C (fc16-builder - blocked) due to unrunnable A start -- * Start D (fc16-builder - blocked) due to unrunnable one-or-more:require-all-set-1 -+ * Start B ( fc16-builder ) due to unrunnable A start (blocked) -+ * Start C ( fc16-builder ) due to unrunnable A start (blocked) -+ * Start D ( fc16-builder ) due to unrunnable one-or-more:require-all-set-1 (blocked) - - Executing cluster transition: - * Resource action: A monitor on fc16-builder -diff --git a/pengine/test10/one-or-more-3.summary b/pengine/test10/one-or-more-3.summary -index abf4081..97511e8 100644 ---- a/pengine/test10/one-or-more-3.summary -+++ b/pengine/test10/one-or-more-3.summary -@@ -11,7 +11,7 @@ OFFLINE: [ fc16-builder2 ] - - Transition Summary: - * Start A (fc16-builder) -- * Start D (fc16-builder - blocked) due to unrunnable one-or-more:require-all-set-1 -+ * Start D ( fc16-builder ) due to unrunnable one-or-more:require-all-set-1 (blocked) - - Executing cluster transition: - * Resource action: A monitor on fc16-builder -diff --git a/pengine/test10/order-mandatory.summary b/pengine/test10/order-mandatory.summary -index 021d8fe..955a281 100644 ---- a/pengine/test10/order-mandatory.summary -+++ b/pengine/test10/order-mandatory.summary -@@ -9,8 +9,8 @@ Online: [ node1 ] - - Transition Summary: - * Start rsc1 (node1) -- * Restart rsc2 (Started node1) due to required rsc1 start -- * Stop rsc4 (Started node1) due to unrunnable rsc3 start -+ * Restart rsc2 ( node1 ) due to required rsc1 start -+ * Stop rsc4 ( node1 ) due to unrunnable rsc3 start - - Executing cluster transition: - * Resource action: rsc1 start on node1 -diff --git a/pengine/test10/order-required.summary b/pengine/test10/order-required.summary -index 021d8fe..955a281 100644 ---- a/pengine/test10/order-required.summary -+++ b/pengine/test10/order-required.summary -@@ -9,8 +9,8 @@ Online: [ node1 ] - - Transition Summary: - * Start rsc1 (node1) -- * Restart rsc2 (Started node1) due to required rsc1 start -- * Stop rsc4 (Started node1) due to unrunnable rsc3 start -+ * Restart rsc2 ( node1 ) due to required rsc1 start -+ * Stop rsc4 ( node1 ) due to unrunnable rsc3 start - - Executing cluster transition: - * Resource action: rsc1 start on node1 -diff --git a/pengine/test10/order-serialize-set.summary b/pengine/test10/order-serialize-set.summary -index 5483cca..a9f97a3 100644 ---- a/pengine/test10/order-serialize-set.summary -+++ b/pengine/test10/order-serialize-set.summary -@@ -15,13 +15,13 @@ Online: [ xen-b ] - Email_Alerting (ocf::heartbeat:MailTo): Started xen-b - - Transition Summary: -- * Restart xen-a-fencing (Started xen-b) -+ * Restart xen-a-fencing ( xen-b ) - * Stop xen-b-fencing (xen-a) -- * Migrate db (Started xen-a -> xen-b) -- * Migrate core-101 (Started xen-a -> xen-b) -- * Migrate core-200 (Started xen-a -> xen-b) -- * Migrate edge (Started xen-a -> xen-b) -- * Migrate base (Started xen-a -> xen-b) -+ * Migrate db ( xen-a -> xen-b ) -+ * Migrate core-101 ( xen-a -> xen-b ) -+ * Migrate core-200 ( xen-a -> xen-b ) -+ * Migrate edge ( xen-a -> xen-b ) -+ * Migrate base ( xen-a -> xen-b ) - - Executing cluster transition: - * Resource action: xen-a-fencing stop on xen-b -diff --git a/pengine/test10/order-serialize.summary b/pengine/test10/order-serialize.summary -index b2114eb..f58a6bc 100644 ---- a/pengine/test10/order-serialize.summary -+++ b/pengine/test10/order-serialize.summary -@@ -15,13 +15,13 @@ Online: [ xen-b ] - Email_Alerting (ocf::heartbeat:MailTo): Started xen-b - - Transition Summary: -- * Restart xen-a-fencing (Started xen-b) -+ * Restart xen-a-fencing ( xen-b ) - * Stop xen-b-fencing (xen-a) -- * Migrate db (Started xen-a -> xen-b) -- * Migrate core-101 (Started xen-a -> xen-b) -- * Migrate core-200 (Started xen-a -> xen-b) -- * Migrate edge (Started xen-a -> xen-b) -- * Migrate base (Started xen-a -> xen-b) -+ * Migrate db ( xen-a -> xen-b ) -+ * Migrate core-101 ( xen-a -> xen-b ) -+ * Migrate core-200 ( xen-a -> xen-b ) -+ * Migrate edge ( xen-a -> xen-b ) -+ * Migrate base ( xen-a -> xen-b ) - - Executing cluster transition: - * Resource action: xen-a-fencing stop on xen-b -diff --git a/pengine/test10/order-sets.summary b/pengine/test10/order-sets.summary -index 0d5de5e..e16e1f4 100644 ---- a/pengine/test10/order-sets.summary -+++ b/pengine/test10/order-sets.summary -@@ -9,10 +9,10 @@ Online: [ ubuntu_1 ] - world4 (ocf::bbnd:world4test): Started ubuntu_2 - - Transition Summary: -- * Move world1 (Started ubuntu_2 -> ubuntu_1) -- * Move world2 (Started ubuntu_2 -> ubuntu_1) -- * Move world3 (Started ubuntu_2 -> ubuntu_1) -- * Move world4 (Started ubuntu_2 -> ubuntu_1) -+ * Move world1 ( ubuntu_2 -> ubuntu_1 ) -+ * Move world2 ( ubuntu_2 -> ubuntu_1 ) -+ * Move world3 ( ubuntu_2 -> ubuntu_1 ) -+ * Move world4 ( ubuntu_2 -> ubuntu_1 ) - - Executing cluster transition: - * Resource action: world4 stop on ubuntu_2 -diff --git a/pengine/test10/order-wrong-kind.summary b/pengine/test10/order-wrong-kind.summary -index c498caf..df3bd80 100644 ---- a/pengine/test10/order-wrong-kind.summary -+++ b/pengine/test10/order-wrong-kind.summary -@@ -10,7 +10,7 @@ Online: [ node1 ] - - Transition Summary: - * Start rsc1 (node1) -- * Restart rsc2 (Started node1) due to required rsc1 start -+ * Restart rsc2 ( node1 ) due to required rsc1 start - - Executing cluster transition: - * Resource action: rsc1 start on node1 -diff --git a/pengine/test10/order3.summary b/pengine/test10/order3.summary -index 4289a47..6694c0e 100644 ---- a/pengine/test10/order3.summary -+++ b/pengine/test10/order3.summary -@@ -8,10 +8,10 @@ Online: [ node1 node2 ] - rsc4 (heartbeat:apache): Started node1 - - Transition Summary: -- * Move rsc1 (Started node1 -> node2) -- * Move rsc2 (Started node1 -> node2) -- * Move rsc3 (Started node1 -> node2) -- * Move rsc4 (Started node1 -> node2) -+ * Move rsc1 ( node1 -> node2 ) -+ * Move rsc2 ( node1 -> node2 ) -+ * Move rsc3 ( node1 -> node2 ) -+ * Move rsc4 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/order5.summary b/pengine/test10/order5.summary -index 0c3e0bc..db222c4 100644 ---- a/pengine/test10/order5.summary -+++ b/pengine/test10/order5.summary -@@ -12,10 +12,10 @@ Online: [ node1 node2 ] - rsc8 (heartbeat:apache): Started node2 - - Transition Summary: -- * Move rsc2 (Started node1 -> node2) -- * Move rsc4 (Started node1 -> node2) -- * Move rsc6 (Started node2 -> node1) -- * Move rsc8 (Started node2 -> node1) -+ * Move rsc2 ( node1 -> node2 ) -+ * Move rsc4 ( node1 -> node2 ) -+ * Move rsc6 ( node2 -> node1 ) -+ * Move rsc8 ( node2 -> node1 ) - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/order6.summary b/pengine/test10/order6.summary -index 0c3e0bc..db222c4 100644 ---- a/pengine/test10/order6.summary -+++ b/pengine/test10/order6.summary -@@ -12,10 +12,10 @@ Online: [ node1 node2 ] - rsc8 (heartbeat:apache): Started node2 - - Transition Summary: -- * Move rsc2 (Started node1 -> node2) -- * Move rsc4 (Started node1 -> node2) -- * Move rsc6 (Started node2 -> node1) -- * Move rsc8 (Started node2 -> node1) -+ * Move rsc2 ( node1 -> node2 ) -+ * Move rsc4 ( node1 -> node2 ) -+ * Move rsc6 ( node2 -> node1 ) -+ * Move rsc8 ( node2 -> node1 ) - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/order7.summary b/pengine/test10/order7.summary -index 6648bff..a8610e9 100644 ---- a/pengine/test10/order7.summary -+++ b/pengine/test10/order7.summary -@@ -13,7 +13,7 @@ Transition Summary: - * Start rsc2 (node1) - * Start rsc3 (node1) - * Start rscB (node1) -- * Start rscC (node1 - blocked) due to unrunnable rscA start -+ * Start rscC ( node1 ) due to unrunnable rscA start (blocked) - - Executing cluster transition: - * Resource action: rsc2 monitor on node1 -diff --git a/pengine/test10/ordered-set-basic-startup.summary b/pengine/test10/ordered-set-basic-startup.summary -index cfa8f8b..ef546ed 100644 ---- a/pengine/test10/ordered-set-basic-startup.summary -+++ b/pengine/test10/ordered-set-basic-startup.summary -@@ -12,10 +12,10 @@ OFFLINE: [ fc16-builder2 ] - F (ocf::pacemaker:Dummy): Stopped - - Transition Summary: -- * Start A (fc16-builder - blocked) due to unrunnable C start -+ * Start A ( fc16-builder ) due to unrunnable C start (blocked) - * Start B (fc16-builder) -- * Start E (fc16-builder - blocked) due to unrunnable A start -- * Start F (fc16-builder - blocked) due to unrunnable D start -+ * Start E ( fc16-builder ) due to unrunnable A start (blocked) -+ * Start F ( fc16-builder ) due to unrunnable D start (blocked) - - Executing cluster transition: - * Resource action: A monitor on fc16-builder -diff --git a/pengine/test10/ordered-set-natural.summary b/pengine/test10/ordered-set-natural.summary -index 1888d66..e9667fd 100644 ---- a/pengine/test10/ordered-set-natural.summary -+++ b/pengine/test10/ordered-set-natural.summary -@@ -21,12 +21,12 @@ Online: [ node1 node2 ] - dummy2-5 (ocf::heartbeat:Dummy): Stopped - - Transition Summary: -- * Start dummy1-1 (node1 - blocked) due to no quorum -- * Start dummy1-2 (node1 - blocked) due to no quorum -- * Start dummy2-1 (node2 - blocked) due to no quorum -- * Start dummy2-2 (node2 - blocked) due to no quorum -- * Start dummy3-4 (node1 - blocked) due to no quorum -- * Start dummy3-5 (node1 - blocked) due to no quorum -+ * Start dummy1-1 ( node1 ) due to no quorum (blocked) -+ * Start dummy1-2 ( node1 ) due to no quorum (blocked) -+ * Start dummy2-1 ( node2 ) due to no quorum (blocked) -+ * Start dummy2-2 ( node2 ) due to no quorum (blocked) -+ * Start dummy3-4 ( node1 ) due to no quorum (blocked) -+ * Start dummy3-5 ( node1 ) due to no quorum (blocked) - - Executing cluster transition: - -diff --git a/pengine/test10/params-1.summary b/pengine/test10/params-1.summary -index 357c2ac..26fdecf 100644 ---- a/pengine/test10/params-1.summary -+++ b/pengine/test10/params-1.summary -@@ -9,7 +9,7 @@ Online: [ c001n01 c001n02 c001n03 c001n08 ] - rsc_c001n01 (ocf::heartbeat:IPaddr): Started c001n01 - - Transition Summary: -- * Restart DcIPaddr (Started c001n02) -+ * Restart DcIPaddr ( c001n02 ) - - Executing cluster transition: - * Resource action: DcIPaddr monitor on c001n08 -diff --git a/pengine/test10/params-2.summary b/pengine/test10/params-2.summary -index f4169f2..1e73e77 100644 ---- a/pengine/test10/params-2.summary -+++ b/pengine/test10/params-2.summary -@@ -9,7 +9,7 @@ Online: [ node1 node2 node3 ] - Transition Summary: - * Shutdown node1 - * Stop rsc1 (node1) -- * Restart rsc2 (Started node2) -+ * Restart rsc2 ( node2 ) - * Start rsc3 (node3) - - Executing cluster transition: -diff --git a/pengine/test10/params-4.summary b/pengine/test10/params-4.summary -index 67b0426..dfd3122 100644 ---- a/pengine/test10/params-4.summary -+++ b/pengine/test10/params-4.summary -@@ -9,7 +9,7 @@ Online: [ c001n01 c001n02 c001n03 c001n08 ] - rsc_c001n01 (ocf::heartbeat:IPaddr): Started c001n01 - - Transition Summary: -- * Reload DcIPaddr (Started c001n02) -+ * Reload DcIPaddr ( c001n02 ) - - Executing cluster transition: - * Resource action: DcIPaddr monitor on c001n08 -diff --git a/pengine/test10/params-5.summary b/pengine/test10/params-5.summary -index 357c2ac..26fdecf 100644 ---- a/pengine/test10/params-5.summary -+++ b/pengine/test10/params-5.summary -@@ -9,7 +9,7 @@ Online: [ c001n01 c001n02 c001n03 c001n08 ] - rsc_c001n01 (ocf::heartbeat:IPaddr): Started c001n01 - - Transition Summary: -- * Restart DcIPaddr (Started c001n02) -+ * Restart DcIPaddr ( c001n02 ) - - Executing cluster transition: - * Resource action: DcIPaddr monitor on c001n08 -diff --git a/pengine/test10/params-6.summary b/pengine/test10/params-6.summary -index b7c9ff4..20ba745 100644 ---- a/pengine/test10/params-6.summary -+++ b/pengine/test10/params-6.summary -@@ -182,7 +182,7 @@ Online: [ mgmt01 v03-a v03-b ] - dist.fly-uni.org-vm (ocf::vds-ok:VirtualDomain): Stopped ( disabled ) - - Transition Summary: -- * Reload c5-x64-devel.vds-ok.com-vm (Started v03-a) -+ * Reload c5-x64-devel.vds-ok.com-vm ( v03-a ) - - Executing cluster transition: - * Resource action: vd01-b.cdev.ttc.prague.cz.vds-ok.com-vm monitor=10000 on v03-b -diff --git a/pengine/test10/probe-2.summary b/pengine/test10/probe-2.summary -index 05588c8..7e74efc 100644 ---- a/pengine/test10/probe-2.summary -+++ b/pengine/test10/probe-2.summary -@@ -32,16 +32,16 @@ Online: [ wc01 ] - - Transition Summary: - * Promote drbd_mysql:0 (Slave -> Master wc01) -- * Demote drbd_mysql:1 (Master -> Stopped wc02) -- * Move fs_mysql (Started wc02 -> wc01) -- * Move intip_sql (Started wc02 -> wc01) -- * Move mysql-server (Started wc02 -> wc01) -- * Stop drbd_www:1 (wc02) due to node availability -+ * Stop drbd_mysql:1 ( Master wc02 ) due to node availability -+ * Move fs_mysql ( wc02 -> wc01 ) -+ * Move intip_sql ( wc02 -> wc01 ) -+ * Move mysql-server ( wc02 -> wc01 ) -+ * Stop drbd_www:1 ( Slave wc02 ) due to node availability - * Stop nfs-common:1 (wc02) due to node availability - * 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 (Started wc01) -+ * Restart stonith_rackpdu:0 ( wc01 ) - * Stop stonith_rackpdu:1 (wc02) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/probe-4.summary b/pengine/test10/probe-4.summary -index 00ecbc2..691c4b6 100644 ---- a/pengine/test10/probe-4.summary -+++ b/pengine/test10/probe-4.summary -@@ -25,7 +25,7 @@ Online: [ pcmk-1 pcmk-2 pcmk-3 ] - Stopped: [ pcmk-4 ] - - Transition Summary: -- * Start migrator (pcmk-3 - blocked) -+ * Start migrator ( pcmk-3 ) blocked - - Executing cluster transition: - -diff --git a/pengine/test10/quorum-1.summary b/pengine/test10/quorum-1.summary -index 83428d4..fd01941 100644 ---- a/pengine/test10/quorum-1.summary -+++ b/pengine/test10/quorum-1.summary -@@ -7,7 +7,7 @@ Online: [ node1 node2 ] - rsc3 (heartbeat:apache): Stopped - - Transition Summary: -- * Move rsc2 (Started node1 -> node2) -+ * Move rsc2 ( node1 -> node2 ) - * Start rsc3 (node1) - - Executing cluster transition: -diff --git a/pengine/test10/quorum-2.summary b/pengine/test10/quorum-2.summary -index 1dce96c..f603bfa 100644 ---- a/pengine/test10/quorum-2.summary -+++ b/pengine/test10/quorum-2.summary -@@ -7,8 +7,8 @@ Online: [ node1 node2 ] - rsc3 (heartbeat:apache): Stopped - - Transition Summary: -- * Move rsc2 (Started node1 -> node2) -- * Start rsc3 (node1 - blocked) due to quorum freeze -+ * Move rsc2 ( node1 -> node2 ) -+ * Start rsc3 ( node1 ) due to quorum freeze (blocked) - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/quorum-3.summary b/pengine/test10/quorum-3.summary -index e8e4bf3..cda0278 100644 ---- a/pengine/test10/quorum-3.summary -+++ b/pengine/test10/quorum-3.summary -@@ -7,9 +7,9 @@ Online: [ node1 node2 ] - rsc3 (heartbeat:apache): Stopped - - Transition Summary: -- * Stop rsc1 (Started node1) due to no quorum -- * Stop rsc2 (Started node1) due to no quorum -- * Start rsc3 (node1 - blocked) due to no quorum -+ * Stop rsc1 ( node1 ) due to no quorum -+ * Stop rsc2 ( node1 ) due to no quorum -+ * Start rsc3 ( node1 ) due to no quorum (blocked) - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/rec-node-10.summary b/pengine/test10/rec-node-10.summary -index 503dd0d..296a018 100644 ---- a/pengine/test10/rec-node-10.summary -+++ b/pengine/test10/rec-node-10.summary -@@ -8,9 +8,9 @@ Online: [ node2 ] - rsc2 (heartbeat:apache): Started node1 (UNCLEAN) - - Transition Summary: -- * Start stonith-1 (node2 - blocked) due to no quorum -- * Stop rsc1 (Started node1 - blocked) due to no quorum -- * Stop rsc2 (Started node1 - blocked) due to no quorum -+ * Start stonith-1 ( node2 ) due to no quorum (blocked) -+ * Stop rsc1 ( node1 ) due to no quorum (blocked) -+ * Stop rsc2 ( node1 ) due to no quorum (blocked) - - Executing cluster transition: - * Resource action: stonith-1 monitor on node2 -diff --git a/pengine/test10/rec-node-11.summary b/pengine/test10/rec-node-11.summary -index e884ffa..a354e49 100644 ---- a/pengine/test10/rec-node-11.summary -+++ b/pengine/test10/rec-node-11.summary -@@ -12,9 +12,9 @@ Online: [ node2 ] - Transition Summary: - * Fence (reboot) node1 'peer process is no longer available' - * Start stonith-1 (node2) -- * Move rsc1 (Started node1 -> node2) -- * Move rsc2 (Started node1 -> node2) -- * Restart rsc3 (Started node2) -+ * Move rsc1 ( node1 -> node2 ) -+ * Move rsc2 ( node1 -> node2 ) -+ * Restart rsc3 ( node2 ) - - Executing cluster transition: - * Resource action: stonith-1 monitor on node2 -diff --git a/pengine/test10/rec-node-13.summary b/pengine/test10/rec-node-13.summary -index de2fa28..8bab0db 100644 ---- a/pengine/test10/rec-node-13.summary -+++ b/pengine/test10/rec-node-13.summary -@@ -35,7 +35,7 @@ OFFLINE: [ c001n03 c001n05 ] - - Transition Summary: - * Fence (reboot) c001n04 'ocf_msdummy:6 failed there' -- * Stop ocf_msdummy:6 (c001n04) due to node availability -+ * Stop ocf_msdummy:6 ( Slave c001n04 ) due to node availability - - Executing cluster transition: - * Fencing c001n04 (reboot) -diff --git a/pengine/test10/rec-node-15.summary b/pengine/test10/rec-node-15.summary -index 760942c..07355c7 100644 ---- a/pengine/test10/rec-node-15.summary -+++ b/pengine/test10/rec-node-15.summary -@@ -23,9 +23,9 @@ Online: [ sapcl01 ] - Transition Summary: - * Fence (reboot) sapcl03 'peer is no longer part of the cluster' - * Start stonith-1 (sapcl01) -- * Move IPaddr_192_168_1_102 (Started sapcl02 -> sapcl01) -- * Move LVM_12 (Started sapcl02 -> sapcl01) -- * Move Filesystem_13 (Started sapcl02 -> sapcl01) -+ * Move IPaddr_192_168_1_102 ( sapcl02 -> sapcl01 ) -+ * Move LVM_12 ( sapcl02 -> sapcl01 ) -+ * Move Filesystem_13 ( sapcl02 -> sapcl01 ) - * Start IPaddr_192_168_1_104 (sapcl01) - * Start LVM_22 (sapcl01) - * Start Filesystem_23 (sapcl01) -diff --git a/pengine/test10/rec-node-4.summary b/pengine/test10/rec-node-4.summary -index 4a39615..30c9667 100644 ---- a/pengine/test10/rec-node-4.summary -+++ b/pengine/test10/rec-node-4.summary -@@ -10,8 +10,8 @@ Online: [ node2 ] - Transition Summary: - * Fence (reboot) node1 'peer is no longer part of the cluster' - * Start stonith-1 (node2) -- * Move rsc1 (Started node1 -> node2) -- * Move rsc2 (Started node1 -> node2) -+ * Move rsc1 ( node1 -> node2 ) -+ * Move rsc2 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: stonith-1 monitor on node2 -diff --git a/pengine/test10/rec-node-6.summary b/pengine/test10/rec-node-6.summary -index 6cb8d01..9a45360 100644 ---- a/pengine/test10/rec-node-6.summary -+++ b/pengine/test10/rec-node-6.summary -@@ -10,8 +10,8 @@ Online: [ node2 ] - Transition Summary: - * Fence (reboot) node1 'peer process is no longer available' - * Start stonith-1 (node2) -- * Move rsc1 (Started node1 -> node2) -- * Move rsc2 (Started node1 -> node2) -+ * Move rsc1 ( node1 -> node2 ) -+ * Move rsc2 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: stonith-1 monitor on node2 -diff --git a/pengine/test10/rec-node-7.summary b/pengine/test10/rec-node-7.summary -index 4a39615..30c9667 100644 ---- a/pengine/test10/rec-node-7.summary -+++ b/pengine/test10/rec-node-7.summary -@@ -10,8 +10,8 @@ Online: [ node2 ] - Transition Summary: - * Fence (reboot) node1 'peer is no longer part of the cluster' - * Start stonith-1 (node2) -- * Move rsc1 (Started node1 -> node2) -- * Move rsc2 (Started node1 -> node2) -+ * Move rsc1 ( node1 -> node2 ) -+ * Move rsc2 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: stonith-1 monitor on node2 -diff --git a/pengine/test10/rec-node-8.summary b/pengine/test10/rec-node-8.summary -index 1a7232e..bc23fb4 100644 ---- a/pengine/test10/rec-node-8.summary -+++ b/pengine/test10/rec-node-8.summary -@@ -9,10 +9,10 @@ Online: [ node2 ] - rsc3 (heartbeat:apache): Stopped - - Transition Summary: -- * Start stonith-1 (node2 - blocked) due to quorum freeze -- * Stop rsc1 (Started node1 - blocked) -- * Stop rsc2 (Started node1 - blocked) -- * Start rsc3 (node2 - blocked) due to quorum freeze -+ * Start stonith-1 ( node2 ) due to quorum freeze (blocked) -+ * Stop rsc1 ( node1 ) blocked -+ * Stop rsc2 ( node1 ) blocked -+ * Start rsc3 ( node2 ) due to quorum freeze (blocked) - - Executing cluster transition: - * Resource action: stonith-1 monitor on node2 -diff --git a/pengine/test10/rec-node-9.summary b/pengine/test10/rec-node-9.summary -index 7f6d8ae..545d16c 100644 ---- a/pengine/test10/rec-node-9.summary -+++ b/pengine/test10/rec-node-9.summary -@@ -7,8 +7,8 @@ OFFLINE: [ node1 ] - rsc2 (heartbeat:apache): Stopped - - Transition Summary: -- * Start rsc1 (node2 - blocked) due to no quorum -- * Start rsc2 (node2 - blocked) due to no quorum -+ * Start rsc1 ( node2 ) due to no quorum (blocked) -+ * Start rsc2 ( node2 ) due to no quorum (blocked) - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/rec-rsc-1.summary b/pengine/test10/rec-rsc-1.summary -index 13e8f60..c8f27d6 100644 ---- a/pengine/test10/rec-rsc-1.summary -+++ b/pengine/test10/rec-rsc-1.summary -@@ -5,7 +5,7 @@ Online: [ node1 node2 ] - rsc1 (heartbeat:apache): FAILED node1 - - Transition Summary: -- * Recover rsc1 (Started node1 -> node2) -+ * Recover rsc1 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/rec-rsc-2.summary b/pengine/test10/rec-rsc-2.summary -index b639599..8dd3a5a 100644 ---- a/pengine/test10/rec-rsc-2.summary -+++ b/pengine/test10/rec-rsc-2.summary -@@ -5,7 +5,7 @@ Online: [ node1 node2 ] - rsc1 (heartbeat:apache): FAILED node1 - - Transition Summary: -- * Recover rsc1 (Started node1) -+ * Recover rsc1 ( node1 ) - - Executing cluster transition: - * Resource action: rsc1 monitor on node2 -diff --git a/pengine/test10/rec-rsc-5.summary b/pengine/test10/rec-rsc-5.summary -index 28e29b5..4717750 100644 ---- a/pengine/test10/rec-rsc-5.summary -+++ b/pengine/test10/rec-rsc-5.summary -@@ -10,8 +10,8 @@ Online: [ node1 ] - Transition Summary: - * Fence (reboot) node2 'rsc1 failed there' - * Start stonith-1 (node1) -- * Recover rsc1 (Started node2 -> node1) -- * Move rsc2 (Started node2 -> node1) -+ * Recover rsc1 ( node2 -> node1 ) -+ * Move rsc2 ( node2 -> node1 ) - - Executing cluster transition: - * Resource action: stonith-1 monitor on node1 -diff --git a/pengine/test10/rec-rsc-6.summary b/pengine/test10/rec-rsc-6.summary -index c782e98..40222fc 100644 ---- a/pengine/test10/rec-rsc-6.summary -+++ b/pengine/test10/rec-rsc-6.summary -@@ -5,7 +5,7 @@ Online: [ node1 node2 ] - rsc1 (heartbeat:apache): Started [ node1 node2 ] - - Transition Summary: -- * Restart rsc1 (Started node1) -+ * Restart rsc1 ( node1 ) - - Executing cluster transition: - * Resource action: rsc1 stop on node2 -diff --git a/pengine/test10/rec-rsc-9.summary b/pengine/test10/rec-rsc-9.summary -index 02a2fe5..f7beb14 100644 ---- a/pengine/test10/rec-rsc-9.summary -+++ b/pengine/test10/rec-rsc-9.summary -@@ -9,9 +9,9 @@ Online: [ node1 ] - rsc3 (heartbeat:apache): FAILED node1 - - Transition Summary: -- * Restart rsc1 (Started node1) due to required bar running -- * Restart rsc2 (Started node1) due to required bar running -- * Recover rsc3 (Started node1) -+ * Restart rsc1 ( node1 ) due to required bar running -+ * Restart rsc2 ( node1 ) due to required bar running -+ * Recover rsc3 ( node1 ) - - Executing cluster transition: - * Resource action: rsc1 stop on node1 -diff --git a/pengine/test10/remote-fence-before-reconnect.summary b/pengine/test10/remote-fence-before-reconnect.summary -index 7a22551..3aee89d 100644 ---- a/pengine/test10/remote-fence-before-reconnect.summary -+++ b/pengine/test10/remote-fence-before-reconnect.summary -@@ -14,7 +14,7 @@ Online: [ c7auto1 c7auto2 c7auto3 ] - Transition Summary: - * Fence (reboot) c7auto4 'remote connection is unrecoverable' - * Stop c7auto4 (c7auto1) -- * Move fake2 (Started c7auto4 -> c7auto1) -+ * Move fake2 ( c7auto4 -> c7auto1 ) - - Executing cluster transition: - * Fencing c7auto4 (reboot) -diff --git a/pengine/test10/remote-fence-unclean.summary b/pengine/test10/remote-fence-unclean.summary -index 9830b96..adfe730 100644 ---- a/pengine/test10/remote-fence-unclean.summary -+++ b/pengine/test10/remote-fence-unclean.summary -@@ -12,10 +12,10 @@ Online: [ 18builder 18node1 18node2 ] - - Transition Summary: - * Fence (reboot) remote1 'remote connection is unrecoverable' -- * Recover remote1 (Started 18node1) -- * Move FAKE2 (Started remote1 -> 18builder) -- * Move FAKE3 (Started 18builder -> 18node1) -- * Move FAKE4 (Started 18node1 -> 18node2) -+ * Recover remote1 ( 18node1 ) -+ * Move FAKE2 ( remote1 -> 18builder ) -+ * Move FAKE3 ( 18builder -> 18node1 ) -+ * Move FAKE4 ( 18node1 -> 18node2 ) - - Executing cluster transition: - * Resource action: FAKE3 stop on 18builder -diff --git a/pengine/test10/remote-move.summary b/pengine/test10/remote-move.summary -index de223fd..d876a3f 100644 ---- a/pengine/test10/remote-move.summary -+++ b/pengine/test10/remote-move.summary -@@ -11,8 +11,8 @@ RemoteOnline: [ remote1 ] - FAKE4 (ocf::heartbeat:Dummy): Started 18node1 - - Transition Summary: -- * Move shooter (Started 18node1 -> 18builder) -- * Migrate remote1 (Started 18builder -> 18node1) -+ * Move shooter ( 18node1 -> 18builder ) -+ * Migrate remote1 ( 18builder -> 18node1 ) - - Executing cluster transition: - * Resource action: shooter stop on 18node1 -diff --git a/pengine/test10/remote-orphaned.summary b/pengine/test10/remote-orphaned.summary -index 2b9add7..f205007 100644 ---- a/pengine/test10/remote-orphaned.summary -+++ b/pengine/test10/remote-orphaned.summary -@@ -25,7 +25,7 @@ RemoteOnline: [ remote1 ] - remote1 (ocf::pacemaker:remote): ORPHANED Started 18node1 - - Transition Summary: -- * Move rsc_18node2 (Started remote1 -> 18node1) -+ * Move rsc_18node2 ( remote1 -> 18node1 ) - * Stop ping-1:2 (remote1) due to node availability - * Stop remote1 (18node1) due to node availability - -diff --git a/pengine/test10/remote-partial-migrate.summary b/pengine/test10/remote-partial-migrate.summary -index e8abf92..7d28db4 100644 ---- a/pengine/test10/remote-partial-migrate.summary -+++ b/pengine/test10/remote-partial-migrate.summary -@@ -62,22 +62,22 @@ RemoteOFFLINE: [ pcmk_remote5 ] - FAKE50 (ocf::heartbeat:Dummy): Stopped - - Transition Summary: -- * Migrate pcmk_remote3 (Started pcmk1 -> pcmk2) -+ * Migrate pcmk_remote3 ( pcmk1 -> pcmk2 ) - * Start FAKE4 (pcmk_remote3) -- * Move FAKE9 (Started pcmk_remote3 -> pcmk1) -+ * Move FAKE9 ( pcmk_remote3 -> pcmk1 ) - * Start FAKE10 (pcmk1) - * Start FAKE13 (pcmk2) - * Start FAKE15 (pcmk3) -- * Move FAKE16 (Started pcmk1 -> pcmk_remote3) -+ * Move FAKE16 ( pcmk1 -> pcmk_remote3 ) - * Start FAKE22 (pcmk1) -- * Move FAKE23 (Started pcmk1 -> pcmk_remote1) -+ * Move FAKE23 ( pcmk1 -> pcmk_remote1 ) - * Start FAKE26 (pcmk1) - * Start FAKE29 (pcmk2) -- * Move FAKE30 (Started pcmk1 -> pcmk_remote2) -+ * Move FAKE30 ( pcmk1 -> pcmk_remote2 ) - * Start FAKE36 (pcmk1) -- * Move FAKE37 (Started pcmk1 -> pcmk2) -+ * Move FAKE37 ( pcmk1 -> pcmk2 ) - * Start FAKE43 (pcmk1) -- * Move FAKE44 (Started pcmk1 -> pcmk2) -+ * Move FAKE44 ( pcmk1 -> pcmk2 ) - * Start FAKE50 (pcmk1) - - Executing cluster transition: -diff --git a/pengine/test10/remote-partial-migrate2.summary b/pengine/test10/remote-partial-migrate2.summary -index 17fee27..2a242bd 100644 ---- a/pengine/test10/remote-partial-migrate2.summary -+++ b/pengine/test10/remote-partial-migrate2.summary -@@ -64,24 +64,24 @@ RemoteOFFLINE: [ pcmk_remote4 ] - - Transition Summary: - * Fence (reboot) pcmk4 'peer is no longer part of the cluster' -- * Migrate pcmk_remote2 (Started pcmk3 -> pcmk1) -+ * Migrate pcmk_remote2 ( pcmk3 -> pcmk1 ) - * Start pcmk_remote4 (pcmk2) -- * Migrate pcmk_remote5 (Started pcmk1 -> pcmk2) -- * Move FAKE5 (Started pcmk1 -> pcmk_remote4) -- * Move FAKE9 (Started pcmk2 -> pcmk_remote4) -- * Move FAKE12 (Started pcmk1 -> pcmk2) -- * Move FAKE14 (Started pcmk2 -> pcmk_remote1) -- * Move FAKE17 (Started pcmk_remote1 -> pcmk_remote4) -- * Move FAKE25 (Started pcmk_remote1 -> pcmk_remote4) -- * Move FAKE28 (Started pcmk3 -> pcmk1) -- * Move FAKE30 (Started pcmk1 -> pcmk_remote1) -- * Move FAKE33 (Started pcmk_remote1 -> pcmk_remote4) -- * Move FAKE38 (Started pcmk2 -> pcmk_remote1) -- * Move FAKE39 (Started pcmk1 -> pcmk_remote2) -- * Move FAKE41 (Started pcmk_remote2 -> pcmk_remote4) -- * Move FAKE47 (Started pcmk_remote1 -> pcmk_remote2) -- * Move FAKE48 (Started pcmk1 -> pcmk_remote3) -- * Move FAKE49 (Started pcmk_remote3 -> pcmk_remote4) -+ * Migrate pcmk_remote5 ( pcmk1 -> pcmk2 ) -+ * Move FAKE5 ( pcmk1 -> pcmk_remote4 ) -+ * Move FAKE9 ( pcmk2 -> pcmk_remote4 ) -+ * Move FAKE12 ( pcmk1 -> pcmk2 ) -+ * Move FAKE14 ( pcmk2 -> pcmk_remote1 ) -+ * Move FAKE17 ( pcmk_remote1 -> pcmk_remote4 ) -+ * Move FAKE25 ( pcmk_remote1 -> pcmk_remote4 ) -+ * Move FAKE28 ( pcmk3 -> pcmk1 ) -+ * Move FAKE30 ( pcmk1 -> pcmk_remote1 ) -+ * Move FAKE33 ( pcmk_remote1 -> pcmk_remote4 ) -+ * Move FAKE38 ( pcmk2 -> pcmk_remote1 ) -+ * Move FAKE39 ( pcmk1 -> pcmk_remote2 ) -+ * Move FAKE41 ( pcmk_remote2 -> pcmk_remote4 ) -+ * Move FAKE47 ( pcmk_remote1 -> pcmk_remote2 ) -+ * Move FAKE48 ( pcmk1 -> pcmk_remote3 ) -+ * Move FAKE49 ( pcmk_remote3 -> pcmk_remote4 ) - - Executing cluster transition: - * Resource action: FAKE5 stop on pcmk1 -diff --git a/pengine/test10/remote-recover-all.summary b/pengine/test10/remote-recover-all.summary -index a8dac38..de31212 100644 ---- a/pengine/test10/remote-recover-all.summary -+++ b/pengine/test10/remote-recover-all.summary -@@ -42,18 +42,18 @@ Transition Summary: - * Fence (reboot) galera-2 'resources are active and the connection is unrecoverable' - * Fence (reboot) controller-1 'peer is no longer part of the cluster' - * Stop messaging-1 (controller-1) due to node availability -- * Move galera-0 (Started controller-1 -> controller-2) -+ * Move galera-0 ( controller-1 -> controller-2 ) - * Stop galera-2 (controller-1) due to node availability - * Stop rabbitmq:2 (messaging-1) due to node availability -- * Demote galera:1 (Master -> Stopped galera-2) -- * Stop redis:0 (controller-1) due to node availability -- * Move ip-172.17.1.14 (Started controller-1 -> controller-2) -- * Move ip-172.17.1.17 (Started controller-1 -> controller-2) -- * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -+ * Stop galera:1 ( Master galera-2 ) 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 (Started controller-0) -- * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) -- * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -+ * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) -+ * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) -+ * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) - - Executing cluster transition: - * Pseudo action: galera-master_demote_0 -diff --git a/pengine/test10/remote-recover-connection.summary b/pengine/test10/remote-recover-connection.summary -index 7b5b5fc..8e91068 100644 ---- a/pengine/test10/remote-recover-connection.summary -+++ b/pengine/test10/remote-recover-connection.summary -@@ -39,17 +39,17 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - - Transition Summary: - * Fence (reboot) controller-1 'peer is no longer part of the cluster' -- * Move messaging-1 (Started controller-1 -> controller-2) -- * Move galera-0 (Started controller-1 -> controller-2) -- * Move galera-2 (Started controller-1 -> controller-2) -- * Stop redis:0 (controller-1) due to node availability -- * Move ip-172.17.1.14 (Started controller-1 -> controller-2) -- * Move ip-172.17.1.17 (Started controller-1 -> controller-2) -- * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -+ * Move messaging-1 ( controller-1 -> controller-2 ) -+ * Move galera-0 ( controller-1 -> controller-2 ) -+ * Move galera-2 ( controller-1 -> controller-2 ) -+ * 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 (Started controller-0) -- * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) -- * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -+ * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) -+ * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) -+ * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) - - Executing cluster transition: - * Pseudo action: redis-master_pre_notify_stop_0 -diff --git a/pengine/test10/remote-recover-fail.summary b/pengine/test10/remote-recover-fail.summary -index 302b716..d4e1aab 100644 ---- a/pengine/test10/remote-recover-fail.summary -+++ b/pengine/test10/remote-recover-fail.summary -@@ -15,10 +15,10 @@ OFFLINE: [ rhel7-auto1 ] - - Transition Summary: - * Fence (reboot) rhel7-auto4 'FAKE2 is thought to be active there' -- * Recover rhel7-auto4 (Started rhel7-auto2) -+ * Recover rhel7-auto4 ( rhel7-auto2 ) - * Start FAKE1 (rhel7-auto2) -- * Move FAKE2 (Started rhel7-auto4 -> rhel7-auto3) -- * Move FAKE6 (Started rhel7-auto4 -> rhel7-auto2) -+ * Move FAKE2 ( rhel7-auto4 -> rhel7-auto3 ) -+ * Move FAKE6 ( rhel7-auto4 -> rhel7-auto2 ) - - Executing cluster transition: - * Resource action: FAKE3 monitor=10000 on rhel7-auto2 -diff --git a/pengine/test10/remote-recover-no-resources.summary b/pengine/test10/remote-recover-no-resources.summary -index 4383e81..c05e355 100644 ---- a/pengine/test10/remote-recover-no-resources.summary -+++ b/pengine/test10/remote-recover-no-resources.summary -@@ -41,17 +41,17 @@ Transition Summary: - * Fence (reboot) messaging-1 'resources are active and the connection is unrecoverable' - * Fence (reboot) controller-1 'peer is no longer part of the cluster' - * Stop messaging-1 (controller-1) due to node availability -- * Move galera-0 (Started controller-1 -> controller-2) -+ * Move galera-0 ( controller-1 -> controller-2 ) - * Stop galera-2 (controller-1) - * Stop rabbitmq:2 (messaging-1) due to node availability -- * Stop redis:0 (controller-1) due to node availability -- * Move ip-172.17.1.14 (Started controller-1 -> controller-2) -- * Move ip-172.17.1.17 (Started controller-1 -> controller-2) -- * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -+ * Stop 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 (Started controller-0) -- * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) -- * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -+ * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) -+ * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) -+ * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) - - Executing cluster transition: - * Pseudo action: redis-master_pre_notify_stop_0 -diff --git a/pengine/test10/remote-recover-unknown.summary b/pengine/test10/remote-recover-unknown.summary -index 3ffb5f4..bfbe7d3 100644 ---- a/pengine/test10/remote-recover-unknown.summary -+++ b/pengine/test10/remote-recover-unknown.summary -@@ -42,17 +42,17 @@ Transition Summary: - * Fence (reboot) messaging-1 'resources are active and the connection is unrecoverable' - * Fence (reboot) controller-1 'peer is no longer part of the cluster' - * Stop messaging-1 (controller-1) due to node availability -- * Move galera-0 (Started controller-1 -> controller-2) -+ * Move galera-0 ( controller-1 -> controller-2 ) - * Stop galera-2 (controller-1) due to node availability - * Stop rabbitmq:2 (messaging-1) due to node availability -- * Stop redis:0 (controller-1) due to node availability -- * Move ip-172.17.1.14 (Started controller-1 -> controller-2) -- * Move ip-172.17.1.17 (Started controller-1 -> controller-2) -- * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -+ * Stop 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 (Started controller-0) -- * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) -- * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -+ * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) -+ * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) -+ * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) - - Executing cluster transition: - * Pseudo action: redis-master_pre_notify_stop_0 -diff --git a/pengine/test10/remote-recovery.summary b/pengine/test10/remote-recovery.summary -index 7b5b5fc..8e91068 100644 ---- a/pengine/test10/remote-recovery.summary -+++ b/pengine/test10/remote-recovery.summary -@@ -39,17 +39,17 @@ RemoteOnline: [ galera-0 galera-1 galera-2 messaging-0 messaging-1 messaging-2 ] - - Transition Summary: - * Fence (reboot) controller-1 'peer is no longer part of the cluster' -- * Move messaging-1 (Started controller-1 -> controller-2) -- * Move galera-0 (Started controller-1 -> controller-2) -- * Move galera-2 (Started controller-1 -> controller-2) -- * Stop redis:0 (controller-1) due to node availability -- * Move ip-172.17.1.14 (Started controller-1 -> controller-2) -- * Move ip-172.17.1.17 (Started controller-1 -> controller-2) -- * Move ip-172.17.4.11 (Started controller-1 -> controller-2) -+ * Move messaging-1 ( controller-1 -> controller-2 ) -+ * Move galera-0 ( controller-1 -> controller-2 ) -+ * Move galera-2 ( controller-1 -> controller-2 ) -+ * 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 (Started controller-0) -- * Restart stonith-fence_ipmilan-525400b4f6bd (Started controller-0) -- * Move stonith-fence_ipmilan-5254005bdbb5 (Started controller-1 -> controller-2) -+ * Restart stonith-fence_ipmilan-525400bbf613 ( controller-0 ) -+ * Restart stonith-fence_ipmilan-525400b4f6bd ( controller-0 ) -+ * Move stonith-fence_ipmilan-5254005bdbb5 ( controller-1 -> controller-2 ) - - Executing cluster transition: - * Pseudo action: redis-master_pre_notify_stop_0 -diff --git a/pengine/test10/remote-start-fail.summary b/pengine/test10/remote-start-fail.summary -index 4f64c75..aa08600 100644 ---- a/pengine/test10/remote-start-fail.summary -+++ b/pengine/test10/remote-start-fail.summary -@@ -7,7 +7,7 @@ RemoteOFFLINE: [ rhel7-auto4 ] - rhel7-auto4 (ocf::pacemaker:remote): FAILED rhel7-auto2 - - Transition Summary: -- * Recover rhel7-auto4 (Started rhel7-auto2 -> rhel7-auto3) -+ * Recover rhel7-auto4 ( rhel7-auto2 -> rhel7-auto3 ) - - Executing cluster transition: - * Resource action: rhel7-auto4 stop on rhel7-auto2 -diff --git a/pengine/test10/remote-startup-probes.summary b/pengine/test10/remote-startup-probes.summary -index d7a382e..f47bf47 100644 ---- a/pengine/test10/remote-startup-probes.summary -+++ b/pengine/test10/remote-startup-probes.summary -@@ -12,8 +12,8 @@ RemoteOFFLINE: [ remote1 ] - - Transition Summary: - * Start remote1 (18builder) -- * Move FAKE1 (Started 18builder -> 18node2) -- * Move FAKE2 (Started 18node2 -> remote1) -+ * Move FAKE1 ( 18builder -> 18node2 ) -+ * Move FAKE2 ( 18node2 -> remote1 ) - - Executing cluster transition: - * Resource action: remote1 start on 18builder -diff --git a/pengine/test10/remote-startup.summary b/pengine/test10/remote-startup.summary -index 56c9a95..4eb6887 100644 ---- a/pengine/test10/remote-startup.summary -+++ b/pengine/test10/remote-startup.summary -@@ -8,7 +8,7 @@ Online: [ 18builder 18node1 18node2 ] - remote1 (ocf::pacemaker:remote): Stopped - - Transition Summary: -- * Move shooter (Started 18builder -> 18node1) -+ * Move shooter ( 18builder -> 18node1 ) - * Start fake (18node2) - * Start remote1 (18builder) - -diff --git a/pengine/test10/remote-unclean2.summary b/pengine/test10/remote-unclean2.summary -index 1408c09..e1666b5 100644 ---- a/pengine/test10/remote-unclean2.summary -+++ b/pengine/test10/remote-unclean2.summary -@@ -8,7 +8,7 @@ Online: [ rhel7-auto1 rhel7-auto2 rhel7-auto3 ] - - Transition Summary: - * Fence (reboot) rhel7-auto4 'remote connection is unrecoverable' -- * Recover rhel7-auto4 (Started rhel7-auto1) -+ * Recover rhel7-auto4 ( rhel7-auto1 ) - - Executing cluster transition: - * Resource action: rhel7-auto4 stop on rhel7-auto1 -diff --git a/pengine/test10/rsc-discovery-per-node.summary b/pengine/test10/rsc-discovery-per-node.summary -index ea82c3e..13dff85 100644 ---- a/pengine/test10/rsc-discovery-per-node.summary -+++ b/pengine/test10/rsc-discovery-per-node.summary -@@ -18,9 +18,9 @@ RemoteOFFLINE: [ remote1 ] - Transition Summary: - * Start remote1 (18builder) - * Start FAKE1 (18node2) -- * Move FAKE2 (Started 18node2 -> 18node3) -- * Move FAKE3 (Started 18builder -> 18node4) -- * Move FAKE4 (Started 18node1 -> remote1) -+ * Move FAKE2 ( 18node2 -> 18node3 ) -+ * Move FAKE3 ( 18builder -> 18node4 ) -+ * Move FAKE4 ( 18node1 -> remote1 ) - * Start FAKE5 (18builder) - * Start FAKECLONE1:0 (18node1) - * Start FAKECLONE1:1 (18node2) -diff --git a/pengine/test10/rsc-sets-clone-1.summary b/pengine/test10/rsc-sets-clone-1.summary -index afafc55..211ad97 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 (Started sys2) -+ * Restart stonithsys3 ( sys2 ) - * Start controld:1 (sys3) - * Start clvmd:1 (sys3) - * Start o2cb:1 (sys3) -diff --git a/pengine/test10/rsc-sets-clone.summary b/pengine/test10/rsc-sets-clone.summary -index 70570e6..43f9e0f 100644 ---- a/pengine/test10/rsc-sets-clone.summary -+++ b/pengine/test10/rsc-sets-clone.summary -@@ -10,8 +10,8 @@ Online: [ node2 ] - Started: [ node1 node2 ] - - Transition Summary: -- * Move rsc1 (Started node1 -> node2) -- * Move rsc3 (Started node1 -> node2) -+ * Move rsc1 ( node1 -> node2 ) -+ * Move rsc3 ( node1 -> node2 ) - * Stop rsc:0 (node1) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/rsc-sets-master.summary b/pengine/test10/rsc-sets-master.summary -index 5415cda..126edc7 100644 ---- a/pengine/test10/rsc-sets-master.summary -+++ b/pengine/test10/rsc-sets-master.summary -@@ -11,11 +11,11 @@ Online: [ node2 ] - rsc3 (ocf::pacemaker:Dummy): Started node1 - - Transition Summary: -- * Demote rsc:0 (Master -> Stopped node1) -+ * Stop rsc:0 ( Master node1 ) due to node availability - * Promote rsc:1 (Slave -> Master node2) -- * Move rsc1 (Started node1 -> node2) -- * Move rsc2 (Started node1 -> node2) -- * Move rsc3 (Started node1 -> node2) -+ * Move rsc1 ( node1 -> node2 ) -+ * Move rsc2 ( node1 -> node2 ) -+ * Move rsc3 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc1 stop on node1 -diff --git a/pengine/test10/rsc-sets-seq-false.summary b/pengine/test10/rsc-sets-seq-false.summary -index 2d6dccf..5774f69 100644 ---- a/pengine/test10/rsc-sets-seq-false.summary -+++ b/pengine/test10/rsc-sets-seq-false.summary -@@ -11,12 +11,12 @@ Online: [ node2 ] - rsc6 (ocf::pacemaker:Dummy): Started node1 - - Transition Summary: -- * Move rsc1 (Started node1 -> node2) -- * Move rsc2 (Started node1 -> node2) -- * Move rsc3 (Started node1 -> node2) -- * Move rsc4 (Started node1 -> node2) -- * Move rsc5 (Started node1 -> node2) -- * Move rsc6 (Started node1 -> node2) -+ * Move rsc1 ( node1 -> node2 ) -+ * Move rsc2 ( node1 -> node2 ) -+ * Move rsc3 ( node1 -> node2 ) -+ * Move rsc4 ( node1 -> node2 ) -+ * Move rsc5 ( node1 -> node2 ) -+ * Move rsc6 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc4 stop on node1 -diff --git a/pengine/test10/rsc-sets-seq-true.summary b/pengine/test10/rsc-sets-seq-true.summary -index e4fca51..aba86c6 100644 ---- a/pengine/test10/rsc-sets-seq-true.summary -+++ b/pengine/test10/rsc-sets-seq-true.summary -@@ -11,12 +11,12 @@ Online: [ node2 ] - rsc6 (ocf::pacemaker:Dummy): Started node1 - - Transition Summary: -- * Move rsc1 (Started node1 -> node2) -- * Move rsc2 (Started node1 -> node2) -- * Move rsc3 (Started node1 -> node2) -- * Move rsc4 (Started node1 -> node2) -- * Move rsc5 (Started node1 -> node2) -- * Move rsc6 (Started node1 -> node2) -+ * Move rsc1 ( node1 -> node2 ) -+ * Move rsc2 ( node1 -> node2 ) -+ * Move rsc3 ( node1 -> node2 ) -+ * Move rsc4 ( node1 -> node2 ) -+ * Move rsc5 ( node1 -> node2 ) -+ * Move rsc6 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc6 stop on node1 -diff --git a/pengine/test10/rsc_dep4.summary b/pengine/test10/rsc_dep4.summary -index 2fe21cf..b911b46 100644 ---- a/pengine/test10/rsc_dep4.summary -+++ b/pengine/test10/rsc_dep4.summary -@@ -9,7 +9,7 @@ Online: [ node1 node2 ] - - Transition Summary: - * Start rsc2 (node1) -- * Move rsc4 (Started node1 -> node2) -+ * Move rsc4 ( node1 -> node2 ) - * Start rsc3 (node2) - - Executing cluster transition: -diff --git a/pengine/test10/standby.summary b/pengine/test10/standby.summary -index 89534cb..f4d53a1 100644 ---- a/pengine/test10/standby.summary -+++ b/pengine/test10/standby.summary -@@ -20,14 +20,14 @@ Online: [ sapcl01 ] - oralsnr_25 (ocf::heartbeat:oralsnr): Started sapcl03 - - Transition Summary: -- * Move IPaddr_192_168_1_102 (Started sapcl02 -> sapcl01) -- * Move LVM_12 (Started sapcl02 -> sapcl01) -- * Move Filesystem_13 (Started sapcl02 -> sapcl01) -- * Move IPaddr_192_168_1_104 (Started sapcl03 -> sapcl01) -- * Move LVM_22 (Started sapcl03 -> sapcl01) -- * Move Filesystem_23 (Started sapcl03 -> sapcl01) -- * Move oracle_24 (Started sapcl03 -> sapcl01) -- * Move oralsnr_25 (Started sapcl03 -> sapcl01) -+ * Move IPaddr_192_168_1_102 ( sapcl02 -> sapcl01 ) -+ * Move LVM_12 ( sapcl02 -> sapcl01 ) -+ * Move Filesystem_13 ( sapcl02 -> sapcl01 ) -+ * Move IPaddr_192_168_1_104 ( sapcl03 -> sapcl01 ) -+ * Move LVM_22 ( sapcl03 -> sapcl01 ) -+ * Move Filesystem_23 ( sapcl03 -> sapcl01 ) -+ * Move oracle_24 ( sapcl03 -> sapcl01 ) -+ * Move oralsnr_25 ( sapcl03 -> sapcl01 ) - - Executing cluster transition: - * Pseudo action: app02_stop_0 -diff --git a/pengine/test10/start-then-stop-with-unfence.summary b/pengine/test10/start-then-stop-with-unfence.summary -index 5e127f7..2e02a21 100644 ---- a/pengine/test10/start-then-stop-with-unfence.summary -+++ b/pengine/test10/start-then-stop-with-unfence.summary -@@ -13,7 +13,7 @@ Online: [ rhel7-node1.example.com rhel7-node2.example.com ] - Transition Summary: - * Fence (on) rhel7-node1.example.com 'Required by ip1' - * Start mpath-node1 (rhel7-node1.example.com) -- * Move ip1 (Started rhel7-node2.example.com -> rhel7-node1.example.com) -+ * Move ip1 ( rhel7-node2.example.com -> rhel7-node1.example.com ) - * Start jrummy:1 (rhel7-node1.example.com) - - Executing cluster transition: -diff --git a/pengine/test10/stonith-0.summary b/pengine/test10/stonith-0.summary -index 1062520..78f0bbc 100644 ---- a/pengine/test10/stonith-0.summary -+++ b/pengine/test10/stonith-0.summary -@@ -39,11 +39,11 @@ Online: [ c001n02 c001n04 c001n06 c001n07 c001n08 ] - Transition Summary: - * Fence (reboot) c001n05 'ocf_192.168.100.183 failed there' - * Fence (reboot) c001n03 'ocf_192.168.100.183 failed there' -- * Move ocf_192.168.100.181 (Started c001n03 -> c001n02) -- * Move heartbeat_192.168.100.182 (Started c001n03 -> c001n02) -- * Recover ocf_192.168.100.183 (Started c001n03 -> c001n02) -- * Move rsc_c001n05 (Started c001n05 -> c001n07) -- * Move rsc_c001n07 (Started c001n03 -> c001n07) -+ * Move ocf_192.168.100.181 ( c001n03 -> c001n02 ) -+ * Move heartbeat_192.168.100.182 ( c001n03 -> c001n02 ) -+ * Recover ocf_192.168.100.183 ( c001n03 -> c001n02 ) -+ * Move rsc_c001n05 ( c001n05 -> c001n07 ) -+ * Move rsc_c001n07 ( c001n03 -> c001n07 ) - - Executing cluster transition: - * Resource action: child_DoFencing:4 monitor=20000 on c001n08 -diff --git a/pengine/test10/stonith-1.summary b/pengine/test10/stonith-1.summary -index 03c8a39..0e9c2a1 100644 ---- a/pengine/test10/stonith-1.summary -+++ b/pengine/test10/stonith-1.summary -@@ -30,15 +30,15 @@ Online: [ sles-1 sles-2 sles-4 ] - Transition Summary: - * Fence (reboot) sles-3 'peer is no longer part of the cluster' - * Start r192.168.100.183 (sles-1) -- * Move migrator (Started sles-3 -> sles-4) -- * Move rsc_sles-3 (Started sles-3 -> sles-4) -- * Move child_DoFencing:2 (Started sles-3 -> sles-4) -+ * Move migrator ( sles-3 -> sles-4 ) -+ * Move rsc_sles-3 ( sles-3 -> sles-4 ) -+ * Move child_DoFencing:2 ( sles-3 -> sles-4 ) - * Start ocf_msdummy:0 (sles-4) - * Start ocf_msdummy:1 (sles-1) -- * Move ocf_msdummy:2 (Slave sles-3 -> sles-2) -+ * Move ocf_msdummy:2 ( sles-3 -> sles-2 Slave ) - * Start ocf_msdummy:3 (sles-4) - * Start ocf_msdummy:4 (sles-1) -- * Move ocf_msdummy:5 (Slave sles-3 -> sles-2) -+ * Move ocf_msdummy:5 ( sles-3 -> sles-2 Slave ) - - Executing cluster transition: - * Pseudo action: group-1_start_0 -diff --git a/pengine/test10/stonith-4.summary b/pengine/test10/stonith-4.summary -index 76b1f44..7502dad 100644 ---- a/pengine/test10/stonith-4.summary -+++ b/pengine/test10/stonith-4.summary -@@ -18,7 +18,7 @@ Transition Summary: - * Fence (reboot) pcmk-8 'peer has not been seen by the cluster' - * Fence (reboot) pcmk-7 'peer failed the pacemaker membership criteria' - * Fence (reboot) pcmk-5 'peer has not been seen by the cluster' -- * Start Fencing (pcmk-1 - blocked) -+ * Start Fencing ( pcmk-1 ) blocked - - Executing cluster transition: - * Fencing pcmk-10 (reboot) -diff --git a/pengine/test10/stop-failure-no-quorum.summary b/pengine/test10/stop-failure-no-quorum.summary -index 75945b1..52ec84f 100644 ---- a/pengine/test10/stop-failure-no-quorum.summary -+++ b/pengine/test10/stop-failure-no-quorum.summary -@@ -16,11 +16,11 @@ Online: [ pcmk-1 ] - - Transition Summary: - * Fence (reboot) pcmk-2 'clvm:0 failed there' -- * Start dlm:0 (pcmk-1 - blocked) due to no quorum -+ * Start dlm:0 ( pcmk-1 ) due to no quorum (blocked) - * Stop clvm:0 (pcmk-2) due to node availability -- * Start clvm:2 (pcmk-1 - blocked) due to no quorum -- * Start ClusterIP (pcmk-1 - blocked) due to no quorum -- * Start Fencing (pcmk-1 - blocked) due to no quorum -+ * Start clvm:2 ( pcmk-1 ) due to no quorum (blocked) -+ * Start ClusterIP ( pcmk-1 ) due to no quorum (blocked) -+ * Start Fencing ( pcmk-1 ) due to no quorum (blocked) - - Executing cluster transition: - * Fencing pcmk-2 (reboot) -diff --git a/pengine/test10/stop-failure-with-fencing.summary b/pengine/test10/stop-failure-with-fencing.summary -index 09680c8..50c5f97 100644 ---- a/pengine/test10/stop-failure-with-fencing.summary -+++ b/pengine/test10/stop-failure-with-fencing.summary -@@ -15,11 +15,11 @@ Online: [ pcmk-1 ] - - Transition Summary: - * Fence (reboot) pcmk-2 'clvm:0 failed there' -- * Start dlm:0 (pcmk-1 - blocked) due to no quorum -+ * Start dlm:0 ( pcmk-1 ) due to no quorum (blocked) - * Stop clvm:0 (pcmk-2) due to node availability -- * Start clvm:1 (pcmk-1 - blocked) due to no quorum -- * Start ClusterIP (pcmk-1 - blocked) due to no quorum -- * Start Fencing (pcmk-1 - blocked) due to no quorum -+ * Start clvm:1 ( pcmk-1 ) due to no quorum (blocked) -+ * Start ClusterIP ( pcmk-1 ) due to no quorum (blocked) -+ * Start Fencing ( pcmk-1 ) due to no quorum (blocked) - - Executing cluster transition: - * Resource action: Fencing monitor on pcmk-1 -diff --git a/pengine/test10/stopped-monitor-01.summary b/pengine/test10/stopped-monitor-01.summary -index 43cc177..7baf2b9 100644 ---- a/pengine/test10/stopped-monitor-01.summary -+++ b/pengine/test10/stopped-monitor-01.summary -@@ -5,7 +5,7 @@ Online: [ node1 node2 ] - rsc1 (ocf::pacemaker:Dummy): FAILED node1 - - Transition Summary: -- * Recover rsc1 (Started node1) -+ * Recover rsc1 ( node1 ) - - Executing cluster transition: - * Resource action: rsc1 stop on node1 -diff --git a/pengine/test10/stopped-monitor-02.summary b/pengine/test10/stopped-monitor-02.summary -index 6d97bfb..e1d44b5 100644 ---- a/pengine/test10/stopped-monitor-02.summary -+++ b/pengine/test10/stopped-monitor-02.summary -@@ -5,7 +5,7 @@ Online: [ node1 node2 ] - rsc1 (ocf::pacemaker:Dummy): FAILED [ node1 node2 ] - - Transition Summary: -- * Recover rsc1 (Started node1) -+ * Recover rsc1 ( node1 ) - - Executing cluster transition: - * Resource action: rsc1 stop on node1 -diff --git a/pengine/test10/stopped-monitor-08.summary b/pengine/test10/stopped-monitor-08.summary -index 6646859..a15a906 100644 ---- a/pengine/test10/stopped-monitor-08.summary -+++ b/pengine/test10/stopped-monitor-08.summary -@@ -6,7 +6,7 @@ Online: [ node2 ] - rsc1 (ocf::pacemaker:Dummy): Started node1 - - Transition Summary: -- * Move rsc1 (Started node1 -> node2) -+ * Move rsc1 ( node1 -> node2 ) - - Executing cluster transition: - * Resource action: rsc1 stop on node1 -diff --git a/pengine/test10/ticket-master-14.summary b/pengine/test10/ticket-master-14.summary -index 9a42d78..fa14935 100644 ---- a/pengine/test10/ticket-master-14.summary -+++ b/pengine/test10/ticket-master-14.summary -@@ -8,8 +8,8 @@ Online: [ node1 node2 ] - Slaves: [ node2 ] - - Transition Summary: -- * Demote rsc1:0 (Master -> Stopped node1) -- * Stop rsc1:1 (node2) due to node availability -+ * Stop rsc1:0 ( Master node1 ) due to node availability -+ * Stop rsc1:1 ( Slave node2 ) due to node availability - - Executing cluster transition: - * Pseudo action: ms1_demote_0 -diff --git a/pengine/test10/ticket-master-15.summary b/pengine/test10/ticket-master-15.summary -index 9a42d78..fa14935 100644 ---- a/pengine/test10/ticket-master-15.summary -+++ b/pengine/test10/ticket-master-15.summary -@@ -8,8 +8,8 @@ Online: [ node1 node2 ] - Slaves: [ node2 ] - - Transition Summary: -- * Demote rsc1:0 (Master -> Stopped node1) -- * Stop rsc1:1 (node2) due to node availability -+ * Stop rsc1:0 ( Master node1 ) due to node availability -+ * Stop rsc1:1 ( Slave node2 ) due to node availability - - Executing cluster transition: - * Pseudo action: ms1_demote_0 -diff --git a/pengine/test10/ticket-master-2.summary b/pengine/test10/ticket-master-2.summary -index 96a797e..6f5be53 100644 ---- a/pengine/test10/ticket-master-2.summary -+++ b/pengine/test10/ticket-master-2.summary -@@ -8,7 +8,6 @@ Online: [ node1 node2 ] - - Transition Summary: - * Start rsc1:0 (node2) -- * Start rsc1:1 (node1) - * Promote rsc1:1 (Stopped -> Master node1) - - Executing cluster transition: -diff --git a/pengine/test10/ticket-master-21.summary b/pengine/test10/ticket-master-21.summary -index 8fc50eb..88f62fd 100644 ---- a/pengine/test10/ticket-master-21.summary -+++ b/pengine/test10/ticket-master-21.summary -@@ -9,8 +9,8 @@ Online: [ node1 node2 ] - - Transition Summary: - * Fence (reboot) node1 'deadman ticket was lost' -- * Move rsc_stonith (Started node1 -> node2) -- * Demote rsc1:0 (Master -> Stopped node1) -+ * Move rsc_stonith ( node1 -> node2 ) -+ * Stop rsc1:0 ( Master node1 ) due to node availability - - Executing cluster transition: - * Pseudo action: rsc_stonith_stop_0 -diff --git a/pengine/test10/ticket-master-3.summary b/pengine/test10/ticket-master-3.summary -index 9a42d78..fa14935 100644 ---- a/pengine/test10/ticket-master-3.summary -+++ b/pengine/test10/ticket-master-3.summary -@@ -8,8 +8,8 @@ Online: [ node1 node2 ] - Slaves: [ node2 ] - - Transition Summary: -- * Demote rsc1:0 (Master -> Stopped node1) -- * Stop rsc1:1 (node2) due to node availability -+ * Stop rsc1:0 ( Master node1 ) due to node availability -+ * Stop rsc1:1 ( Slave node2 ) due to node availability - - Executing cluster transition: - * Pseudo action: ms1_demote_0 -diff --git a/pengine/test10/ticket-master-9.summary b/pengine/test10/ticket-master-9.summary -index 8fc50eb..88f62fd 100644 ---- a/pengine/test10/ticket-master-9.summary -+++ b/pengine/test10/ticket-master-9.summary -@@ -9,8 +9,8 @@ Online: [ node1 node2 ] - - Transition Summary: - * Fence (reboot) node1 'deadman ticket was lost' -- * Move rsc_stonith (Started node1 -> node2) -- * Demote rsc1:0 (Master -> Stopped node1) -+ * Move rsc_stonith ( node1 -> node2 ) -+ * Stop rsc1:0 ( Master node1 ) due to node availability - - Executing cluster transition: - * Pseudo action: rsc_stonith_stop_0 -diff --git a/pengine/test10/unfence-definition.summary b/pengine/test10/unfence-definition.summary -index f728e39..4ca9344 100644 ---- a/pengine/test10/unfence-definition.summary -+++ b/pengine/test10/unfence-definition.summary -@@ -15,10 +15,10 @@ Transition Summary: - * Fence (reboot) virt-4 'node is unclean' - * Fence (on) virt-3 'Required by dlm:2' - * Fence (on) virt-1 'Device definition changed' -- * Restart fencing (Started virt-1) -- * Restart dlm:0 (Started virt-1) due to required stonith -+ * Restart fencing ( virt-1 ) -+ * Restart dlm:0 ( virt-1 ) due to required stonith - * Start dlm:2 (virt-3) -- * Restart clvmd:0 (Started virt-1) due to required stonith -+ * Restart clvmd:0 ( virt-1 ) due to required stonith - * Start clvmd:1 (virt-2) - * Start clvmd:2 (virt-3) - -diff --git a/pengine/test10/unfence-parameters.summary b/pengine/test10/unfence-parameters.summary -index e8b15ec..8a6356c 100644 ---- a/pengine/test10/unfence-parameters.summary -+++ b/pengine/test10/unfence-parameters.summary -@@ -16,11 +16,11 @@ Transition Summary: - * Fence (on) virt-3 'Device parameters changed (reload)' - * Fence (on) virt-2 'Device parameters changed (reload)' - * Fence (on) virt-1 'Device parameters changed (reload)' -- * Restart fencing (Started virt-1) -- * Restart dlm:0 (Started virt-1) due to required stonith -- * Restart dlm:1 (Started virt-2) due to required stonith -+ * Restart fencing ( virt-1 ) -+ * Restart dlm:0 ( virt-1 ) due to required stonith -+ * Restart dlm:1 ( virt-2 ) due to required stonith - * Start dlm:2 (virt-3) -- * Restart clvmd:0 (Started virt-1) due to required stonith -+ * Restart clvmd:0 ( virt-1 ) due to required stonith - * Start clvmd:1 (virt-2) - * Start clvmd:2 (virt-3) - -diff --git a/pengine/test10/unmanaged-block-restart.summary b/pengine/test10/unmanaged-block-restart.summary -index 01dffeb..d7725c9 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 (Started yingying.site - blocked) due to required rsc1 start -- * Stop rsc3 (Started yingying.site - blocked) due to required rsc2 start -+ * Stop rsc2 ( yingying.site ) due to required rsc1 start (blocked) -+ * Stop rsc3 ( yingying.site ) due to required rsc2 start (blocked) - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/unmanaged-stop-1.summary b/pengine/test10/unmanaged-stop-1.summary -index 94e0908..b02c7dc 100644 ---- a/pengine/test10/unmanaged-stop-1.summary -+++ b/pengine/test10/unmanaged-stop-1.summary -@@ -7,7 +7,7 @@ Online: [ yingying.site ] - rsc2 (ocf::pacemaker:Dummy): FAILED yingying.site ( blocked ) - - Transition Summary: -- * Stop rsc1 (yingying.site - blocked) due to node availability -+ * Stop rsc1 ( yingying.site ) due to node availability (blocked) - - Executing cluster transition: - -diff --git a/pengine/test10/unmanaged-stop-2.summary b/pengine/test10/unmanaged-stop-2.summary -index 94e0908..b02c7dc 100644 ---- a/pengine/test10/unmanaged-stop-2.summary -+++ b/pengine/test10/unmanaged-stop-2.summary -@@ -7,7 +7,7 @@ Online: [ yingying.site ] - rsc2 (ocf::pacemaker:Dummy): FAILED yingying.site ( blocked ) - - Transition Summary: -- * Stop rsc1 (yingying.site - blocked) due to node availability -+ * Stop rsc1 ( yingying.site ) due to node availability (blocked) - - Executing cluster transition: - -diff --git a/pengine/test10/unmanaged-stop-3.summary b/pengine/test10/unmanaged-stop-3.summary -index c72d451..d457157 100644 ---- a/pengine/test10/unmanaged-stop-3.summary -+++ b/pengine/test10/unmanaged-stop-3.summary -@@ -8,7 +8,7 @@ Online: [ yingying.site ] - rsc2 (ocf::pacemaker:Dummy): FAILED yingying.site ( disabled, blocked ) - - Transition Summary: -- * Stop rsc1 (yingying.site - blocked) unrunnable rsc2 stop due to node availability -+ * Stop rsc1 ( yingying.site ) due to node availability (blocked) - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/unmanaged-stop-4.summary b/pengine/test10/unmanaged-stop-4.summary -index 2704e98..1ddd68b 100644 ---- a/pengine/test10/unmanaged-stop-4.summary -+++ b/pengine/test10/unmanaged-stop-4.summary -@@ -9,7 +9,7 @@ Online: [ yingying.site ] - rsc3 (ocf::heartbeat:Dummy): Stopped ( disabled ) - - Transition Summary: -- * Stop rsc1 (yingying.site - blocked) unrunnable rsc2 stop due to node availability -+ * Stop rsc1 ( yingying.site ) due to node availability (blocked) - - Executing cluster transition: - * Pseudo action: group1_stop_0 -diff --git a/pengine/test10/unrunnable-1.summary b/pengine/test10/unrunnable-1.summary -index 8c27e45..54ca0d7 100644 ---- a/pengine/test10/unrunnable-1.summary -+++ b/pengine/test10/unrunnable-1.summary -@@ -19,15 +19,15 @@ Online: [ c001n03 ] - child_DoFencing:3 (stonith:ssh): Stopped - - Transition Summary: -- * Start DcIPaddr (c001n03 - blocked) due to no quorum -- * Start child_192.168.100.181 (c001n03 - blocked) due to no quorum -- * Start child_192.168.100.182 (c001n03 - blocked) due to no quorum -- * Start child_192.168.100.183 (c001n03 - blocked) due to no quorum -- * Start rsc_c001n08 (c001n03 - blocked) due to no quorum -- * Start rsc_c001n02 (c001n03 - blocked) due to no quorum -- * Start rsc_c001n03 (c001n03 - blocked) due to no quorum -- * Start rsc_c001n01 (c001n03 - blocked) due to no quorum -- * Stop child_DoFencing:1 (c001n02 - blocked) due to node availability -+ * Start DcIPaddr ( c001n03 ) due to no quorum (blocked) -+ * Start child_192.168.100.181 ( c001n03 ) due to no quorum (blocked) -+ * Start child_192.168.100.182 ( c001n03 ) due to no quorum (blocked) -+ * Start child_192.168.100.183 ( c001n03 ) due to no quorum (blocked) -+ * Start rsc_c001n08 ( c001n03 ) due to no quorum (blocked) -+ * Start rsc_c001n02 ( c001n03 ) due to no quorum (blocked) -+ * Start rsc_c001n03 ( c001n03 ) due to no quorum (blocked) -+ * Start rsc_c001n01 ( c001n03 ) due to no quorum (blocked) -+ * Stop child_DoFencing:1 ( c001n02 ) due to node availability (blocked) - - Executing cluster transition: - * Resource action: DcIPaddr monitor on c001n03 -diff --git a/pengine/test10/unrunnable-2.summary b/pengine/test10/unrunnable-2.summary -index b67f7cb..4bbacec 100644 ---- a/pengine/test10/unrunnable-2.summary -+++ b/pengine/test10/unrunnable-2.summary -@@ -85,7 +85,7 @@ Online: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ] - Stopped: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ] - - Transition Summary: -- * Start openstack-cinder-volume (overcloud-controller-2 - blocked) due to unrunnable openstack-cinder-scheduler-clone running -+ * Start openstack-cinder-volume ( overcloud-controller-2 ) due to unrunnable openstack-cinder-scheduler-clone running (blocked) - - Executing cluster transition: - -diff --git a/pengine/test10/utilization-order2.summary b/pengine/test10/utilization-order2.summary -index db65a16..ad3fd38 100644 ---- a/pengine/test10/utilization-order2.summary -+++ b/pengine/test10/utilization-order2.summary -@@ -10,7 +10,7 @@ Online: [ node1 node2 ] - - Transition Summary: - * Start rsc4 (node1) -- * Move rsc3 (Started node1 -> node2) -+ * Move rsc3 ( node1 -> node2 ) - * Stop rsc2:0 (node1) due to node availability - * Stop rsc1 (node2) - -diff --git a/pengine/test10/utilization-order3.summary b/pengine/test10/utilization-order3.summary -index cfeea48..9d59f37 100644 ---- a/pengine/test10/utilization-order3.summary -+++ b/pengine/test10/utilization-order3.summary -@@ -7,7 +7,7 @@ Online: [ node1 node2 ] - - Transition Summary: - * Start rsc2 (node1) -- * Migrate rsc1 (Started node1 -> node2) -+ * Migrate rsc1 ( node1 -> node2 ) - - Executing cluster transition: - * Pseudo action: load_stopped_node2 -diff --git a/pengine/test10/utilization-order4.summary b/pengine/test10/utilization-order4.summary -index 09a8c31..04c5f93 100644 ---- a/pengine/test10/utilization-order4.summary -+++ b/pengine/test10/utilization-order4.summary -@@ -15,7 +15,7 @@ Online: [ deglxen001 ] - Started: [ deglxen001 deglxen002 ] - - Transition Summary: -- * Migrate degllx62-vm (Started deglxen002 -> deglxen001) -+ * Migrate degllx62-vm ( deglxen002 -> deglxen001 ) - * Stop degllx61-vm (deglxen001) - * Stop nfs-xen_config:1 (deglxen002) due to node availability - * Stop nfs-xen_swapfiles:1 (deglxen002) due to node availability -diff --git a/pengine/test10/whitebox-fail1.summary b/pengine/test10/whitebox-fail1.summary -index 1d06552..1271d4f 100644 ---- a/pengine/test10/whitebox-fail1.summary -+++ b/pengine/test10/whitebox-fail1.summary -@@ -15,10 +15,10 @@ Containers: [ lxc2:container2 ] - - Transition Summary: - * Fence (reboot) lxc1 (resource: container1) 'guest is unclean' -- * Recover container1 (Started 18node2) -- * Recover M:4 (Started lxc1) -- * Recover B (Started lxc1) -- * Restart lxc1 (Started 18node2) due to required container1 start -+ * Recover container1 ( 18node2 ) -+ * Recover M:4 ( lxc1 ) -+ * Recover B ( lxc1 ) -+ * Restart lxc1 ( 18node2 ) due to required container1 start - - Executing cluster transition: - * Resource action: lxc1 stop on 18node2 -diff --git a/pengine/test10/whitebox-fail2.summary b/pengine/test10/whitebox-fail2.summary -index 06364fb..5fd1ebd 100644 ---- a/pengine/test10/whitebox-fail2.summary -+++ b/pengine/test10/whitebox-fail2.summary -@@ -15,10 +15,10 @@ Containers: [ lxc2:container2 ] - - Transition Summary: - * Fence (reboot) lxc1 (resource: container1) 'guest is unclean' -- * Recover container1 (Started 18node2) -- * Recover M:4 (Started lxc1) -- * Recover B (Started lxc1) -- * Recover lxc1 (Started 18node2) -+ * Recover container1 ( 18node2 ) -+ * Recover M:4 ( lxc1 ) -+ * Recover B ( lxc1 ) -+ * Recover lxc1 ( 18node2 ) - - Executing cluster transition: - * Resource action: lxc1 stop on 18node2 -diff --git a/pengine/test10/whitebox-fail3.summary b/pengine/test10/whitebox-fail3.summary -index 19b2e3d..eded099 100644 ---- a/pengine/test10/whitebox-fail3.summary -+++ b/pengine/test10/whitebox-fail3.summary -@@ -14,7 +14,7 @@ Online: [ dvossel-laptop2 ] - - Transition Summary: - * Start vm (dvossel-laptop2) -- * Move FAKE (Started dvossel-laptop2 -> 18builder) -+ * Move FAKE ( dvossel-laptop2 -> 18builder ) - * Start W:1 (18builder) - * Start X:1 (18builder) - * Start 18builder (dvossel-laptop2) -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.summary b/pengine/test10/whitebox-imply-stop-on-fence.summary -index bea75a2..a3e9ce8 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.summary -+++ b/pengine/test10/whitebox-imply-stop-on-fence.summary -@@ -28,15 +28,15 @@ Transition Summary: - * Fence (reboot) lxc-02_kiff-01 (resource: R-lxc-02_kiff-01) 'guest is unclean' - * Fence (reboot) lxc-01_kiff-01 (resource: R-lxc-01_kiff-01) 'guest is unclean' - * Fence (reboot) kiff-01 'peer is no longer part of the cluster' -- * Move fence-kiff-02 (Started kiff-01 -> kiff-02) -+ * Move fence-kiff-02 ( kiff-01 -> kiff-02 ) - * Stop dlm:0 (kiff-01) due to node availability - * Stop clvmd:0 (kiff-01) due to node availability - * Stop shared0:0 (kiff-01) due to node availability -- * Recover R-lxc-01_kiff-01 (Started kiff-01 -> kiff-02) -- * Move R-lxc-02_kiff-01 (Started kiff-01 -> kiff-02) -- * Recover vm-fs (Started lxc-01_kiff-01) -- * Move lxc-01_kiff-01 (Started kiff-01 -> kiff-02) -- * Move lxc-02_kiff-01 (Started kiff-01 -> kiff-02) -+ * Recover R-lxc-01_kiff-01 ( kiff-01 -> kiff-02 ) -+ * Move R-lxc-02_kiff-01 ( kiff-01 -> kiff-02 ) -+ * Recover vm-fs ( lxc-01_kiff-01 ) -+ * Move lxc-01_kiff-01 ( kiff-01 -> kiff-02 ) -+ * Move lxc-02_kiff-01 ( kiff-01 -> kiff-02 ) - - Executing cluster transition: - * Pseudo action: fence-kiff-02_stop_0 -diff --git a/pengine/test10/whitebox-migrate1.summary b/pengine/test10/whitebox-migrate1.summary -index a6e4c00..0fc0f9a 100644 ---- a/pengine/test10/whitebox-migrate1.summary -+++ b/pengine/test10/whitebox-migrate1.summary -@@ -14,10 +14,10 @@ Containers: [ rhel7-node1:remote-rsc ] - remote-rsc (ocf::heartbeat:Dummy): Started rhel7-node2 - - Transition Summary: -- * Move shooter1 (Started rhel7-node3 -> rhel7-node2) -- * Move FAKE3 (Started rhel7-node3 -> rhel7-node2) -- * Migrate remote-rsc (Started rhel7-node2 -> rhel7-node3) -- * Migrate rhel7-node1 (Started rhel7-node2 -> rhel7-node3) -+ * Move shooter1 ( rhel7-node3 -> rhel7-node2 ) -+ * Move FAKE3 ( rhel7-node3 -> rhel7-node2 ) -+ * Migrate remote-rsc ( rhel7-node2 -> rhel7-node3 ) -+ * Migrate rhel7-node1 ( rhel7-node2 -> rhel7-node3 ) - - Executing cluster transition: - * Resource action: shooter1 stop on rhel7-node3 -diff --git a/pengine/test10/whitebox-move.summary b/pengine/test10/whitebox-move.summary -index dbf0780..5e27a67 100644 ---- a/pengine/test10/whitebox-move.summary -+++ b/pengine/test10/whitebox-move.summary -@@ -11,10 +11,10 @@ Containers: [ lxc1:container1 lxc2:container2 ] - A (ocf::pacemaker:Dummy): Started lxc1 - - Transition Summary: -- * Move container1 (Started 18node1 -> 18node2) -- * Restart M:3 (Started lxc1) due to required container1 start -- * Restart A (Started lxc1) due to required container1 start -- * Move lxc1 (Started 18node1 -> 18node2) -+ * Move container1 ( 18node1 -> 18node2 ) -+ * Restart M:3 ( lxc1 ) due to required container1 start -+ * Restart A ( lxc1 ) due to required container1 start -+ * Move lxc1 ( 18node1 -> 18node2 ) - - Executing cluster transition: - * Pseudo action: M-clone_stop_0 -diff --git a/pengine/test10/whitebox-ms-ordering-move.summary b/pengine/test10/whitebox-ms-ordering-move.summary -index b48d988..80156b0 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.summary -+++ b/pengine/test10/whitebox-ms-ordering-move.summary -@@ -30,9 +30,9 @@ Containers: [ lxc1:container1 lxc2:container2 ] - Slaves: [ lxc2 ] - - Transition Summary: -- * Move container1 (Started rhel7-1 -> rhel7-2) -+ * Move container1 ( rhel7-1 -> rhel7-2 ) - * Restart lxc-ms:0 (Master lxc1) due to required container1 start -- * Move lxc1 (Started rhel7-1 -> rhel7-2) -+ * Move lxc1 ( rhel7-1 -> rhel7-2 ) - - Executing cluster transition: - * Pseudo action: lxc-ms-master_demote_0 -diff --git a/pengine/test10/whitebox-orphan-ms.summary b/pengine/test10/whitebox-orphan-ms.summary -index 3efa6bd..2b0234b 100644 ---- a/pengine/test10/whitebox-orphan-ms.summary -+++ b/pengine/test10/whitebox-orphan-ms.summary -@@ -27,10 +27,11 @@ Containers: [ lxc1:container1 lxc2:container2 ] - container1 (ocf::heartbeat:VirtualDomain): ORPHANED Started 18node1 - - Transition Summary: -- * Move FencingFail (Started 18node3 -> 18node1) -+ * Move FencingFail ( 18node3 -> 18node1 ) - * Stop container2 (18node1) due to node availability - * Stop lxc1 (18node1) due to node availability -- * Demote lxc-ms (Master -> Stopped lxc1) -+ * Stop lxc-ms ( Master lxc1 ) -+ * Stop lxc-ms ( Master lxc2 ) - * Stop lxc2 (18node1) due to node availability - * Stop container1 (18node1) due to node availability - -diff --git a/pengine/test10/whitebox-orphaned.summary b/pengine/test10/whitebox-orphaned.summary -index 52b54aa..7d173b2 100644 ---- a/pengine/test10/whitebox-orphaned.summary -+++ b/pengine/test10/whitebox-orphaned.summary -@@ -17,7 +17,7 @@ Containers: [ lxc1:container1 lxc2:container2 ] - - Transition Summary: - * Stop M:4 (lxc1) due to node availability -- * Move B (Started lxc1 -> lxc2) -+ * Move B ( lxc1 -> lxc2 ) - * Stop container1 (18node2) due to node availability - * Stop lxc1 (18node2) due to node availability - -diff --git a/pengine/test10/whitebox-start.summary b/pengine/test10/whitebox-start.summary -index 6819ebc..e76e28a 100644 ---- a/pengine/test10/whitebox-start.summary -+++ b/pengine/test10/whitebox-start.summary -@@ -17,8 +17,8 @@ Containers: [ lxc2:container2 ] - Transition Summary: - * Start container1 (18node1) - * Start M:4 (lxc1) -- * Move A (Started 18node1 -> lxc1) -- * Move B (Started lxc2 -> 18node3) -+ * Move A ( 18node1 -> lxc1 ) -+ * Move B ( lxc2 -> 18node3 ) - * Start lxc1 (18node1) - - Executing cluster transition: -diff --git a/pengine/test10/whitebox-stop.summary b/pengine/test10/whitebox-stop.summary -index 89094da..9b15ea0 100644 ---- a/pengine/test10/whitebox-stop.summary -+++ b/pengine/test10/whitebox-stop.summary -@@ -17,7 +17,7 @@ Containers: [ lxc1:container1 lxc2:container2 ] - Transition Summary: - * Stop container1 (18node2) due to node availability - * Stop M:4 (lxc1) due to node availability -- * Move B (Started lxc1 -> lxc2) -+ * Move B ( lxc1 -> lxc2 ) - * Stop lxc1 (18node2) due to node availability - - Executing cluster transition: -diff --git a/pengine/test10/whitebox-unexpectedly-running.summary b/pengine/test10/whitebox-unexpectedly-running.summary -index 0e69d3c..eef4f63 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.summary -+++ b/pengine/test10/whitebox-unexpectedly-running.summary -@@ -6,7 +6,7 @@ Online: [ 18builder ] - - Transition Summary: - * Fence (reboot) remote1 (resource: FAKE) 'guest is unclean' -- * Recover FAKE (Started 18builder) -+ * Recover FAKE ( 18builder ) - * Start remote1 (18builder) - - Executing cluster transition: --- -1.8.3.1 - - -From b5c48ca0bf52c9a03c81ba4fb74dbc5c1a7f6dbc Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 1 Aug 2017 13:36:04 +1000 -Subject: [PATCH 07/12] Fix: PE: Only retrigger unfencing on nodes that ran - operations with the old parameters - ---- - pengine/allocate.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index ef26245..f169db3 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -329,7 +329,7 @@ check_action_definition(resource_t * rsc, node_t * active_node, xmlNode * xml_op - op_version, crm_element_value(xml_op, XML_ATTR_TRANSITION_MAGIC)); - - custom_action(rsc, key, task, NULL, FALSE, TRUE, data_set); -- trigger_unfencing(rsc, NULL, "Device parameters changed", NULL, data_set); -+ 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)) { - /* Changes that can potentially be handled by a reload */ -@@ -337,7 +337,7 @@ check_action_definition(resource_t * rsc, node_t * active_node, xmlNode * xml_op - const char *digest_all = crm_element_value(xml_op, XML_LRM_ATTR_OP_DIGEST); - - did_change = TRUE; -- trigger_unfencing(rsc, NULL, "Device parameters changed (reload)", NULL, data_set); -+ trigger_unfencing(rsc, active_node, "Device parameters changed (reload)", NULL, data_set); - crm_log_xml_info(digest_data->params_all, "params:reload"); - key = generate_op_key(rsc->id, task, interval); - pe_rsc_info(rsc, "Parameters to %s on %s changed: was %s vs. now %s (reload:%s) %s", --- -1.8.3.1 - - -From a8e0c440577bd082b70e69bc5b6539fc999cbac7 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 14 Aug 2017 12:35:16 +1000 -Subject: [PATCH 08/12] PE: Unfencing: Correctly detect changes to device - definitions - ---- - lib/pengine/utils.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 222a3e2..d4943a7 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -1952,7 +1952,7 @@ fencing_action_digest_cmp(resource_t * rsc, node_t * node, pe_working_set_t * da - * We use the resource id + agent + digest so that we can detect - * changes to the agent and/or the parameters used - */ -- char *search_all = crm_strdup_printf("%s:%s:%s", rsc->id, (const char*)g_hash_table_lookup(rsc->meta, XML_ATTR_TYPE), data->digest_secure_calc); -+ char *search_all = crm_strdup_printf("%s:%s:%s", rsc->id, (const char*)g_hash_table_lookup(rsc->meta, XML_ATTR_TYPE), data->digest_all_calc); - char *search_secure = crm_strdup_printf("%s:%s:%s", rsc->id, (const char*)g_hash_table_lookup(rsc->meta, XML_ATTR_TYPE), data->digest_secure_calc); - - data->rc = RSC_DIGEST_ALL; --- -1.8.3.1 - - -From 7a3dbd5fd5481ecc3a375d9874f01daac6512943 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 16 Aug 2017 13:50:07 +1000 -Subject: [PATCH 09/12] Test: PE: Update unfencing device change test output - ---- - pengine/test10/unfence-parameters.dot | 22 ------ - pengine/test10/unfence-parameters.exp | 117 ++++++------------------------ - pengine/test10/unfence-parameters.summary | 9 +-- - 3 files changed, 23 insertions(+), 125 deletions(-) - -diff --git a/pengine/test10/unfence-parameters.dot b/pengine/test10/unfence-parameters.dot -index dee850e..ccbddbd 100644 ---- a/pengine/test10/unfence-parameters.dot -+++ b/pengine/test10/unfence-parameters.dot -@@ -21,10 +21,7 @@ digraph "g" { - "clvmd:2_monitor_0 virt-3" -> "clvmd-clone_start_0" [ style = bold] - "clvmd:2_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] - "clvmd:2_start_0 virt-3" -> "clvmd-clone_running_0" [ style = bold] --"clvmd:2_start_0 virt-3" -> "clvmd:3_start_0 " [ style = dashed] - "clvmd:2_start_0 virt-3" [ style=bold color="green" fontcolor="black"] --"clvmd:3_start_0 " -> "clvmd-clone_running_0" [ style = dashed] --"clvmd:3_start_0 " [ style=dashed color="red" fontcolor="black"] - "clvmd_start_0 virt-1" -> "clvmd-clone_running_0" [ style = bold] - "clvmd_start_0 virt-1" -> "clvmd:1_start_0 virt-2" [ style = bold] - "clvmd_start_0 virt-1" [ style=bold color="green" fontcolor="black"] -@@ -39,11 +36,9 @@ digraph "g" { - "dlm-clone_start_0" -> "dlm-clone_running_0" [ style = bold] - "dlm-clone_start_0" -> "dlm:2_start_0 virt-3" [ style = bold] - "dlm-clone_start_0" -> "dlm_start_0 virt-1" [ style = bold] --"dlm-clone_start_0" -> "dlm_start_0 virt-2" [ style = bold] - "dlm-clone_start_0" [ style=bold color="green" fontcolor="orange"] - "dlm-clone_stop_0" -> "dlm-clone_stopped_0" [ style = bold] - "dlm-clone_stop_0" -> "dlm_stop_0 virt-1" [ style = bold] --"dlm-clone_stop_0" -> "dlm_stop_0 virt-2" [ style = bold] - "dlm-clone_stop_0" [ style=bold color="green" fontcolor="orange"] - "dlm-clone_stopped_0" -> "dlm-clone_start_0" [ style = bold] - "dlm-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -@@ -54,24 +49,12 @@ digraph "g" { - "dlm:2_start_0 virt-3" [ style=bold color="green" fontcolor="black"] - "dlm_start_0 virt-1" -> "clvmd_start_0 virt-1" [ style = bold] - "dlm_start_0 virt-1" -> "dlm-clone_running_0" [ style = bold] --"dlm_start_0 virt-1" -> "dlm_start_0 virt-2" [ style = bold] - "dlm_start_0 virt-1" [ style=bold color="green" fontcolor="black"] --"dlm_start_0 virt-2" -> "clvmd:1_start_0 virt-2" [ style = bold] --"dlm_start_0 virt-2" -> "clvmd:3_start_0 " [ style = dashed] --"dlm_start_0 virt-2" -> "dlm-clone_running_0" [ style = bold] --"dlm_start_0 virt-2" -> "dlm:2_start_0 virt-3" [ style = bold] --"dlm_start_0 virt-2" [ style=bold color="green" fontcolor="black"] - "dlm_stop_0 virt-1" -> "all_stopped" [ style = bold] - "dlm_stop_0 virt-1" -> "dlm-clone_stopped_0" [ style = bold] - "dlm_stop_0 virt-1" -> "dlm_start_0 virt-1" [ style = bold] - "dlm_stop_0 virt-1" -> "stonith 'on' virt-1" [ style = bold] - "dlm_stop_0 virt-1" [ style=bold color="green" fontcolor="black"] --"dlm_stop_0 virt-2" -> "all_stopped" [ style = bold] --"dlm_stop_0 virt-2" -> "dlm-clone_stopped_0" [ style = bold] --"dlm_stop_0 virt-2" -> "dlm_start_0 virt-2" [ style = bold] --"dlm_stop_0 virt-2" -> "dlm_stop_0 virt-1" [ style = bold] --"dlm_stop_0 virt-2" -> "stonith 'on' virt-2" [ style = bold] --"dlm_stop_0 virt-2" [ 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"] -@@ -82,10 +65,6 @@ digraph "g" { - "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" [ style=bold color="green" fontcolor="black"] --"stonith 'on' virt-2" -> "clvmd:1_monitor_0 virt-2" [ style = bold] --"stonith 'on' virt-2" -> "clvmd:1_start_0 virt-2" [ style = bold] --"stonith 'on' virt-2" -> "dlm_start_0 virt-2" [ style = bold] --"stonith 'on' virt-2" [ 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] -@@ -99,6 +78,5 @@ digraph "g" { - "stonith_complete" -> "clvmd_start_0 virt-1" [ style = bold] - "stonith_complete" -> "dlm:2_start_0 virt-3" [ style = bold] - "stonith_complete" -> "dlm_start_0 virt-1" [ style = bold] --"stonith_complete" -> "dlm_start_0 virt-2" [ style = bold] - "stonith_complete" [ style=bold color="green" fontcolor="orange"] - } -diff --git a/pengine/test10/unfence-parameters.exp b/pengine/test10/unfence-parameters.exp -index 54c242a..64286a8 100644 ---- a/pengine/test10/unfence-parameters.exp -+++ b/pengine/test10/unfence-parameters.exp -@@ -71,9 +71,6 @@ - - - -- -- -- - - - -@@ -83,44 +80,6 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -@@ -131,9 +90,6 @@ - - - -- -- -- - - - -@@ -141,7 +97,7 @@ - - - -- -+ - - - -@@ -154,7 +110,7 @@ - - - -- -+ - - - -@@ -165,14 +121,11 @@ - - - -- -- -- - - - - -- -+ - - - -@@ -184,7 +137,7 @@ - - - -- -+ - - - -@@ -195,9 +148,6 @@ - - - -- -- -- - - - -@@ -205,7 +155,7 @@ - - - -- -+ - - - -@@ -220,7 +170,7 @@ - - - -- -+ - - - -@@ -245,7 +195,7 @@ - - - -- -+ - - - -@@ -258,7 +208,7 @@ - - - -- -+ - - - -@@ -267,12 +217,6 @@ - - - -- -- -- -- -- -- - - - -@@ -283,20 +227,16 @@ - - - -- -+ - - - - - - -- -- -- -- -- -+ - -- -+ - - - -@@ -321,7 +261,7 @@ - - - -- -+ - - - -@@ -334,7 +274,7 @@ - - - -- -+ - - - -@@ -349,7 +289,7 @@ - - - -- -+ - - - -@@ -357,7 +297,7 @@ - - - -- -+ - - - -@@ -378,7 +318,7 @@ - - - -- -+ - - - -@@ -399,7 +339,7 @@ - - - -- -+ - - - -@@ -410,7 +350,7 @@ - - - -- -+ - - - -@@ -422,7 +362,7 @@ - - - -- -+ - - - -@@ -430,19 +370,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -457,7 +385,7 @@ - - - -- -+ - - - -@@ -471,9 +399,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/unfence-parameters.summary b/pengine/test10/unfence-parameters.summary -index 8a6356c..b9f4953 100644 ---- a/pengine/test10/unfence-parameters.summary -+++ b/pengine/test10/unfence-parameters.summary -@@ -13,12 +13,10 @@ Online: [ virt-1 virt-2 virt-3 ] - - Transition Summary: - * Fence (reboot) virt-4 'node is unclean' -- * Fence (on) virt-3 'Device parameters changed (reload)' -- * Fence (on) virt-2 'Device parameters changed (reload)' -+ * Fence (on) virt-3 'Required by dlm:2' - * Fence (on) virt-1 'Device parameters changed (reload)' - * Restart fencing ( virt-1 ) - * Restart dlm:0 ( virt-1 ) due to required stonith -- * Restart dlm:1 ( virt-2 ) due to required stonith - * Start dlm:2 (virt-3) - * Restart clvmd:0 ( virt-1 ) due to required stonith - * Start clvmd:1 (virt-2) -@@ -26,6 +24,7 @@ Transition Summary: - - Executing cluster transition: - * 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 -@@ -36,17 +35,13 @@ Executing cluster transition: - * Resource action: clvmd monitor on virt-3 - * Pseudo action: clvmd-clone_stopped_0 - * Pseudo action: dlm-clone_stop_0 -- * Resource action: dlm stop on virt-2 -- * Fencing virt-2 (on) - * Resource action: dlm stop on virt-1 - * Pseudo action: dlm-clone_stopped_0 - * Pseudo action: dlm-clone_start_0 -- * Resource action: clvmd monitor on virt-2 - * Fencing virt-1 (on) - * Pseudo action: all_stopped - * Resource action: fencing start on virt-1 - * Resource action: dlm start on virt-1 -- * Resource action: dlm start on virt-2 - * Resource action: dlm start on virt-3 - * Pseudo action: dlm-clone_running_0 - * Pseudo action: clvmd-clone_start_0 --- -1.8.3.1 - - -From d86c8d491d8ed2beb13c86a32e96658f54caae62 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 14 Aug 2017 12:51:25 +1000 -Subject: [PATCH 10/12] Fix: crmd: Correctly record that unfencing is complete - ---- - crmd/te_callbacks.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/crmd/te_callbacks.c b/crmd/te_callbacks.c -index b5c857d..4476d4a 100644 ---- a/crmd/te_callbacks.c -+++ b/crmd/te_callbacks.c -@@ -799,10 +799,11 @@ tengine_stonith_callback(stonith_t * stonith, stonith_callback_data_t * data) - if (safe_str_eq("on", op)) { - const char *key = NULL; - const char *value = NULL; -+ char *now = crm_itoa(time(NULL)); - - key = XML_NODE_IS_UNFENCED; -- value = crm_meta_value(action->params, key); -- update_attrd(target, key, value, NULL, FALSE); -+ update_attrd(target, key, now, NULL, FALSE); -+ free(now); - - key = "digests-all"; - value = crm_meta_value(action->params, key); --- -1.8.3.1 - - -From 31d4f2e01d47312ff21da845f0fc6816630c00ec Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 7 Aug 2017 17:07:54 +1000 -Subject: [PATCH 11/12] Fix: PE: Allow resources inside bundles to receive - notifications - ---- - lib/pengine/container.c | 5 +++++ - pengine/container.c | 8 +++++--- - 2 files changed, 10 insertions(+), 3 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 175a366..118e716 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -757,6 +757,11 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - tuple->child = childIter->data; - tuple->offset = lpc++; - -+ // Ensure the child's notify gets set based on the underlying primitive's value -+ if(is_set(tuple->child->flags, pe_rsc_notify)) { -+ set_bit(container_data->child->flags, pe_rsc_notify); -+ } -+ - offset += allocate_ip(container_data, tuple, buffer+offset, max-offset); - container_data->tuples = g_list_append(container_data->tuples, tuple); - } -diff --git a/pengine/container.c b/pengine/container.c -index 280a61a..1e9b971 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -770,6 +770,11 @@ container_expand(resource_t * rsc, pe_working_set_t * data_set) - CRM_CHECK(rsc != NULL, return); - - get_container_variant_data(container_data, rsc); -+ -+ if(container_data->child) { -+ container_data->child->cmds->expand(container_data->child, data_set); -+ } -+ - for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - -@@ -787,9 +792,6 @@ container_expand(resource_t * rsc, pe_working_set_t * data_set) - if(tuple->ip) { - tuple->ip->cmds->expand(tuple->ip, data_set); - } -- if(tuple->child) { -- tuple->child->cmds->expand(tuple->child, data_set); -- } - if(tuple->docker) { - tuple->docker->cmds->expand(tuple->docker, data_set); - } --- -1.8.3.1 - - -From 5ce481caa150564ae04b71d87b8737fcf88b5852 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 16 Aug 2017 14:09:56 +1000 -Subject: [PATCH 12/12] Test: PE: Update bundle regression tests now that - notify works - ---- - pengine/test10/bundle-nested-colocation.dot | 23 +- - pengine/test10/bundle-nested-colocation.exp | 355 +++--- - pengine/test10/bundle-nested-colocation.summary | 15 +- - pengine/test10/bundle-order-partial-start-2.dot | 33 +- - pengine/test10/bundle-order-partial-start-2.exp | 414 ++++--- - .../test10/bundle-order-partial-start-2.summary | 25 +- - pengine/test10/bundle-order-partial-start.dot | 33 +- - pengine/test10/bundle-order-partial-start.exp | 400 ++++--- - pengine/test10/bundle-order-partial-start.summary | 27 +- - pengine/test10/bundle-order-partial-stop.dot | 78 +- - pengine/test10/bundle-order-partial-stop.exp | 772 ++++++++----- - pengine/test10/bundle-order-partial-stop.summary | 40 +- - pengine/test10/bundle-order-startup-clone-2.dot | 56 +- - pengine/test10/bundle-order-startup-clone-2.exp | 1146 ++++++++++++-------- - .../test10/bundle-order-startup-clone-2.summary | 37 +- - pengine/test10/bundle-order-startup-clone.dot | 16 +- - pengine/test10/bundle-order-startup-clone.exp | 162 ++- - pengine/test10/bundle-order-startup-clone.summary | 9 +- - pengine/test10/bundle-order-startup.dot | 31 +- - pengine/test10/bundle-order-startup.exp | 597 ++++++---- - pengine/test10/bundle-order-startup.summary | 26 +- - pengine/test10/bundle-order-stop-clone.exp | 88 +- - pengine/test10/bundle-order-stop-clone.summary | 2 +- - pengine/test10/bundle-order-stop.dot | 78 +- - pengine/test10/bundle-order-stop.exp | 772 ++++++++----- - pengine/test10/bundle-order-stop.summary | 40 +- - pengine/test10/remote-fence-unclean-3.exp | 4 +- - 27 files changed, 3511 insertions(+), 1768 deletions(-) - -diff --git a/pengine/test10/bundle-nested-colocation.dot b/pengine/test10/bundle-nested-colocation.dot -index a84f857..2a2d71a 100644 ---- a/pengine/test10/bundle-nested-colocation.dot -+++ b/pengine/test10/bundle-nested-colocation.dot -@@ -15,7 +15,22 @@ digraph "g" { - "rabbitmq-bundle-2_start_0 overcloud-controller-2" -> "rabbitmq:2_monitor_10000 rabbitmq-bundle-2" [ style = bold] - "rabbitmq-bundle-2_start_0 overcloud-controller-2" -> "rabbitmq:2_start_0 rabbitmq-bundle-2" [ style = bold] - "rabbitmq-bundle-2_start_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] --"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq:2_monitor_10000 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq:1_post_notify_start_0 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq:2_post_notify_start_0 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_pre_notify_start_0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = bold] - "rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] -@@ -56,16 +71,22 @@ digraph "g" { - "rabbitmq-bundle_start_0" -> "rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" [ style = bold] - "rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:1_start_0 rabbitmq-bundle-1" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:1_post_notify_start_0 rabbitmq-bundle-1" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq:1_post_notify_start_0 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] - "rabbitmq:1_start_0 rabbitmq-bundle-1" -> "rabbitmq-bundle-clone_running_0" [ style = bold] - "rabbitmq:1_start_0 rabbitmq-bundle-1" -> "rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style = bold] - "rabbitmq:1_start_0 rabbitmq-bundle-1" -> "rabbitmq:2_start_0 rabbitmq-bundle-2" [ style = bold] - "rabbitmq:1_start_0 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] - "rabbitmq:2_monitor_10000 rabbitmq-bundle-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:2_post_notify_start_0 rabbitmq-bundle-2" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq:2_post_notify_start_0 rabbitmq-bundle-2" [ style=bold color="green" fontcolor="black"] - "rabbitmq:2_start_0 rabbitmq-bundle-2" -> "rabbitmq-bundle-clone_running_0" [ style = bold] - "rabbitmq:2_start_0 rabbitmq-bundle-2" -> "rabbitmq:2_monitor_10000 rabbitmq-bundle-2" [ style = bold] - "rabbitmq:2_start_0 rabbitmq-bundle-2" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bundle-nested-colocation.exp b/pengine/test10/bundle-nested-colocation.exp -index 3daf7d6..c82ee16 100644 ---- a/pengine/test10/bundle-nested-colocation.exp -+++ b/pengine/test10/bundle-nested-colocation.exp -@@ -1,9 +1,22 @@ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - - - -@@ -13,13 +26,16 @@ - - - -+ -+ -+ - - -- -+ - - - -- -+ - - - -@@ -34,211 +50,335 @@ - - - -- -+ - -- -- -- -+ -+ -+ - - -- -+ -+ -+ -+ -+ - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ -+ -+ -+ - - - - -+ -+ -+ - - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - -+ -+ -+ -+ -+ -+ - - - - -- -+ - -- -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - - - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - -- -+ - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -- -- -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - -- -+ - - - -@@ -247,7 +387,7 @@ - - - -- -+ - - - -@@ -263,7 +403,7 @@ - - - -- -+ - - - -@@ -276,7 +416,7 @@ - - - -- -+ - - - -@@ -289,7 +429,7 @@ - - - -- -+ - - - -@@ -302,40 +442,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -352,11 +459,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -364,7 +471,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-nested-colocation.summary b/pengine/test10/bundle-nested-colocation.summary -index 0e2a68d..b2cec51 100644 ---- a/pengine/test10/bundle-nested-colocation.summary -+++ b/pengine/test10/bundle-nested-colocation.summary -@@ -28,11 +28,14 @@ Transition Summary: - * Start rabbitmq:2 (rabbitmq-bundle-2) - - Executing cluster transition: -+ * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 - * Resource action: rabbitmq-bundle-docker-0 stop on overcloud-rabbit-0 - * Resource action: rabbitmq-bundle-docker-1 stop on overcloud-rabbit-1 - * Resource action: rabbitmq-bundle-docker-2 stop on overcloud-rabbit-2 - * Pseudo action: rabbitmq-bundle_start_0 - * Pseudo action: all_stopped -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0 -+ * Pseudo action: rabbitmq-bundle-clone_start_0 - * Resource action: rabbitmq-bundle-docker-0 start on overcloud-rabbit-0 - * Resource action: rabbitmq-bundle-docker-0 monitor=60000 on overcloud-rabbit-0 - * Resource action: rabbitmq-bundle-0 start on overcloud-controller-0 -@@ -42,14 +45,18 @@ Executing cluster transition: - * Resource action: rabbitmq-bundle-docker-2 start on overcloud-rabbit-2 - * Resource action: rabbitmq-bundle-docker-2 monitor=60000 on overcloud-rabbit-2 - * Resource action: rabbitmq-bundle-2 start on overcloud-controller-2 -- * Pseudo action: rabbitmq-bundle-clone_start_0 - * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 -- * Resource action: rabbitmq-bundle-0 monitor=60000 on overcloud-controller-0 - * Resource action: rabbitmq:1 start on rabbitmq-bundle-1 -- * Resource action: rabbitmq-bundle-1 monitor=60000 on overcloud-controller-1 - * Resource action: rabbitmq:2 start on rabbitmq-bundle-2 -- * Resource action: rabbitmq-bundle-2 monitor=60000 on overcloud-controller-2 - * Pseudo action: rabbitmq-bundle-clone_running_0 -+ * Resource action: rabbitmq-bundle-0 monitor=60000 on overcloud-controller-0 -+ * Resource action: rabbitmq-bundle-1 monitor=60000 on overcloud-controller-1 -+ * Resource action: rabbitmq-bundle-2 monitor=60000 on overcloud-controller-2 -+ * Pseudo action: rabbitmq-bundle-clone_post_notify_running_0 -+ * Resource action: rabbitmq:0 notify on rabbitmq-bundle-0 -+ * Resource action: rabbitmq:1 notify on rabbitmq-bundle-1 -+ * Resource action: rabbitmq:2 notify on rabbitmq-bundle-2 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-post_notify_running_0 - * Pseudo action: rabbitmq-bundle_running_0 - * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 - * Resource action: rabbitmq:1 monitor=10000 on rabbitmq-bundle-1 -diff --git a/pengine/test10/bundle-order-partial-start-2.dot b/pengine/test10/bundle-order-partial-start-2.dot -index b5ecaf5..d58e809 100644 ---- a/pengine/test10/bundle-order-partial-start-2.dot -+++ b/pengine/test10/bundle-order-partial-start-2.dot -@@ -44,7 +44,18 @@ digraph "g" { - "haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] - "haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] - "haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] --"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_pre_notify_start_0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = bold] - "rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] -@@ -54,18 +65,36 @@ digraph "g" { - "rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] - "rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" [ 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_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-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_post_notify_promoted_0" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ 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" [ 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_pre_notify_promote_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_pre_notify_promote_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_promoted_0" [ style = bold] -+"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_promote_0" -> "redis-bundle-master_promote_0" [ style = bold] - "redis-bundle_promote_0" [ style=bold color="green" fontcolor="orange"] - "redis-bundle_promoted_0" -> "galera-bundle_start_0" [ style = bold] - "redis-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] - "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_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_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"] -diff --git a/pengine/test10/bundle-order-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp -index a2740d7..b533469 100644 ---- a/pengine/test10/bundle-order-partial-start-2.exp -+++ b/pengine/test10/bundle-order-partial-start-2.exp -@@ -1,22 +1,38 @@ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - - - - - - -+ -+ -+ - - -- -+ - - - -- -+ - - - -@@ -25,87 +41,194 @@ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - - - -@@ -114,29 +237,29 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -146,7 +269,7 @@ - - - -- -+ - - - -@@ -155,226 +278,257 @@ - - - -- -+ - - - -- -+ - -- -+ - -- -+ - - - - -- -+ - - - -- -+ - -- -+ - -- -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -- -- -- -+ - - - -- -- -- -- -- -- -- -- -- -- -+ - -- -- -+ -+ - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -+ -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - -- -- -+ -+ - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ - -- -- -+ -+ - - - - -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -- -- -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - -- -- -- -- -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - -- -- -- -- -- -- -- -+ - - - -- -+ - -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - -- -+ - - -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - - - -@@ -382,11 +536,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -394,7 +548,7 @@ - - - -- -+ - - - -@@ -402,10 +556,10 @@ - - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start-2.summary b/pengine/test10/bundle-order-partial-start-2.summary -index 790bd17..bf14db0 100644 ---- a/pengine/test10/bundle-order-partial-start-2.summary -+++ b/pengine/test10/bundle-order-partial-start-2.summary -@@ -29,32 +29,43 @@ Transition Summary: - * Start haproxy-bundle-docker-0 (undercloud) - - Executing cluster transition: -+ * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 - * Resource action: galera-bundle-0 stop on undercloud -+ * Pseudo action: redis-bundle-master_pre_notify_promote_0 - * Resource action: haproxy-bundle-docker-0 monitor on undercloud - * Pseudo action: haproxy-bundle_start_0 - * Pseudo action: redis-bundle_promote_0 -- * Pseudo action: redis-bundle-master_promote_0 - * Pseudo action: rabbitmq-bundle_start_0 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0 -+ * Pseudo action: rabbitmq-bundle-clone_start_0 - * Resource action: galera-bundle-docker-0 stop on undercloud -- * Resource action: redis promote on redis-bundle-0 -+ * Resource action: redis notify on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_confirmed-pre_notify_promote_0 -+ * Pseudo action: redis-bundle-master_promote_0 - * Resource action: haproxy-bundle-docker-0 start on undercloud - * Pseudo action: haproxy-bundle_running_0 -- * Pseudo action: redis-bundle-master_promoted_0 -- * Pseudo action: rabbitmq-bundle-clone_start_0 - * Pseudo action: all_stopped - * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 -- * Resource action: redis monitor=20000 on redis-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_running_0 -+ * Resource action: redis promote on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_promoted_0 - * Resource action: haproxy-bundle-docker-0 monitor=60000 on undercloud -+ * Pseudo action: rabbitmq-bundle-clone_post_notify_running_0 -+ * Pseudo action: redis-bundle-master_post_notify_promoted_0 -+ * Resource action: rabbitmq:0 notify on rabbitmq-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-post_notify_running_0 -+ * Resource action: redis notify on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_confirmed-post_notify_promoted_0 - * Pseudo action: redis-bundle_promoted_0 -- * Pseudo action: rabbitmq-bundle-clone_running_0 - * Pseudo action: rabbitmq-bundle_running_0 - * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 -+ * Resource action: redis monitor=20000 on redis-bundle-0 - * Pseudo action: galera-bundle_start_0 -+ * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera-bundle-docker-0 start on undercloud - * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud - * Resource action: galera-bundle-0 start on undercloud - * Resource action: galera-bundle-0 monitor=60000 on undercloud -- * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera:0 start on galera-bundle-0 - * Pseudo action: galera-bundle-master_running_0 - * Pseudo action: galera-bundle_running_0 -diff --git a/pengine/test10/bundle-order-partial-start.dot b/pengine/test10/bundle-order-partial-start.dot -index 756acfd..796749d 100644 ---- a/pengine/test10/bundle-order-partial-start.dot -+++ b/pengine/test10/bundle-order-partial-start.dot -@@ -38,7 +38,18 @@ digraph "g" { - "haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] - "haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] - "haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] --"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_pre_notify_start_0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = bold] - "rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] -@@ -48,18 +59,36 @@ digraph "g" { - "rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] - "rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" [ 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_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-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_post_notify_promoted_0" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ 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" [ 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_pre_notify_promote_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_pre_notify_promote_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_promoted_0" [ style = bold] -+"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_promote_0" -> "redis-bundle-master_promote_0" [ style = bold] - "redis-bundle_promote_0" [ style=bold color="green" fontcolor="orange"] - "redis-bundle_promoted_0" -> "galera-bundle_start_0" [ style = bold] - "redis-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] - "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_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_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"] -diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp -index ebd5785..1f8a3e1 100644 ---- a/pengine/test10/bundle-order-partial-start.exp -+++ b/pengine/test10/bundle-order-partial-start.exp -@@ -1,22 +1,38 @@ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - - - - - - -+ -+ -+ - - -- -+ - - - -- -+ - - - -@@ -25,73 +41,180 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -101,11 +224,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -114,248 +237,279 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - -- -+ - - - - -- -+ - - - -- -+ - -- -+ - -- -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -- -- -- -+ - - - -- -- -- -- -- -- -- -- -- -- -+ - -- -- -+ -+ - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -+ -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - -- -- -+ -+ - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ - -- -- -+ -+ - - - - -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -- -- -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - -- -- -- -- -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - -- -- -- -- -- -- -- -+ - - - -- -+ - -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - -- -+ - - -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - - - -@@ -363,11 +517,11 @@ - - - -- -+ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start.summary b/pengine/test10/bundle-order-partial-start.summary -index e56e55f..4e02e88 100644 ---- a/pengine/test10/bundle-order-partial-start.summary -+++ b/pengine/test10/bundle-order-partial-start.summary -@@ -29,32 +29,43 @@ Transition Summary: - * Start haproxy-bundle-docker-0 (undercloud) - - Executing cluster transition: -+ * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 - * Resource action: galera-bundle-docker-0 monitor on undercloud -+ * Pseudo action: redis-bundle-master_pre_notify_promote_0 - * Resource action: haproxy-bundle-docker-0 monitor on undercloud - * Pseudo action: haproxy-bundle_start_0 - * Pseudo action: redis-bundle_promote_0 -- * Pseudo action: redis-bundle-master_promote_0 - * Pseudo action: rabbitmq-bundle_start_0 -- * Resource action: redis promote on redis-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0 -+ * Pseudo action: rabbitmq-bundle-clone_start_0 -+ * Resource action: redis notify on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_confirmed-pre_notify_promote_0 -+ * Pseudo action: redis-bundle-master_promote_0 - * Resource action: haproxy-bundle-docker-0 start on undercloud - * Pseudo action: haproxy-bundle_running_0 -- * Pseudo action: redis-bundle-master_promoted_0 -- * Pseudo action: rabbitmq-bundle-clone_start_0 - * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 -- * Resource action: redis monitor=20000 on redis-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_running_0 -+ * Resource action: redis promote on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_promoted_0 - * Resource action: haproxy-bundle-docker-0 monitor=60000 on undercloud -+ * Pseudo action: rabbitmq-bundle-clone_post_notify_running_0 -+ * Pseudo action: redis-bundle-master_post_notify_promoted_0 -+ * Resource action: rabbitmq:0 notify on rabbitmq-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-post_notify_running_0 -+ * Resource action: redis notify on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_confirmed-post_notify_promoted_0 - * Pseudo action: redis-bundle_promoted_0 -- * Pseudo action: rabbitmq-bundle-clone_running_0 - * Pseudo action: rabbitmq-bundle_running_0 - * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 -+ * Resource action: redis monitor=20000 on redis-bundle-0 - * Pseudo action: galera-bundle_start_0 -+ * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera-bundle-docker-0 start on undercloud - * Resource action: galera-bundle-0 start on undercloud -- * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera:0 start on galera-bundle-0 -+ * Pseudo action: galera-bundle-master_running_0 - * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud - * Resource action: galera-bundle-0 monitor=60000 on undercloud -- * Pseudo action: galera-bundle-master_running_0 - * Pseudo action: galera-bundle_running_0 - * Resource action: galera:0 monitor=30000 on galera-bundle-0 - * Resource action: galera:0 monitor=20000 on galera-bundle-0 -diff --git a/pengine/test10/bundle-order-partial-stop.dot b/pengine/test10/bundle-order-partial-stop.dot -index c0e6616..3fade95 100644 ---- a/pengine/test10/bundle-order-partial-stop.dot -+++ b/pengine/test10/bundle-order-partial-stop.dot -@@ -118,7 +118,29 @@ digraph "g" { - "rabbitmq-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] - "rabbitmq-bundle-0_stop_0 undercloud" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] - "rabbitmq-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] --"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq-bundle_running_0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" -> "rabbitmq-bundle-clone_pre_notify_start_0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" -> "rabbitmq-bundle_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style=dashed color="red" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" -> "rabbitmq-bundle-clone_post_notify_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = dashed] -+"rabbitmq-bundle-clone_post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] -+"rabbitmq-bundle-clone_post_notify_stopped_0" -> "rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_pre_notify_start_0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style = dashed] -+"rabbitmq-bundle-clone_pre_notify_start_0" [ style=dashed color="red" fontcolor="orange"] -+"rabbitmq-bundle-clone_pre_notify_stop_0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_stop_0" -> "rabbitmq_pre_notify_stop_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = dashed] - "rabbitmq-bundle-clone_running_0" [ style=dashed color="red" fontcolor="orange"] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] -@@ -126,8 +148,8 @@ digraph "g" { - "rabbitmq-bundle-clone_stop_0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] - "rabbitmq-bundle-clone_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle-clone_post_notify_stopped_0" [ style = bold] - "rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle-clone_start_0" [ style = dashed] --"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle_stopped_0" [ style = bold] - "rabbitmq-bundle-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -@@ -140,6 +162,8 @@ digraph "g" { - "rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"rabbitmq_pre_notify_stop_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" [ style = bold] -+"rabbitmq_pre_notify_stop_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] - "rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] - "rabbitmq_start_0 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] -@@ -156,14 +180,52 @@ digraph "g" { - "redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] - "redis-bundle-docker-0_stop_0 undercloud" -> "redis-bundle_stopped_0" [ style = bold] - "redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis-bundle-master_pre_notify_start_0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis-bundle-master_pre_notify_stop_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_confirmed-post_notify_running_0" -> "redis-bundle_running_0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_running_0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_running_0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle-master_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_stopped_0" -> "redis-bundle-master_pre_notify_start_0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_stopped_0" -> "redis-bundle_stopped_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_confirmed-pre_notify_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] -+"redis-bundle-master_confirmed-pre_notify_demote_0" -> "redis-bundle-master_post_notify_demoted_0" [ style = bold] -+"redis-bundle-master_confirmed-pre_notify_demote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_confirmed-pre_notify_start_0" -> "redis-bundle-master_post_notify_running_0" [ style = dashed] -+"redis-bundle-master_confirmed-pre_notify_start_0" -> "redis-bundle-master_start_0" [ style = dashed] -+"redis-bundle-master_confirmed-pre_notify_start_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle-master_confirmed-pre_notify_stop_0" -> "redis-bundle-master_post_notify_stopped_0" [ style = bold] -+"redis-bundle-master_confirmed-pre_notify_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] -+"redis-bundle-master_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] - "redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] - "redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] - "redis-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_demoted_0" -> "redis-bundle-master_post_notify_demoted_0" [ style = bold] - "redis-bundle-master_demoted_0" -> "redis-bundle-master_start_0" [ style = dashed] - "redis-bundle-master_demoted_0" -> "redis-bundle-master_stop_0" [ style = bold] --"redis-bundle-master_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] - "redis-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] --"redis-bundle-master_running_0" -> "redis-bundle_running_0" [ style = dashed] -+"redis-bundle-master_post_notify_demoted_0" -> "redis-bundle-master_confirmed-post_notify_demoted_0" [ style = bold] -+"redis-bundle-master_post_notify_demoted_0" -> "redis_post_notify_demoted_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_post_notify_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_post_notify_running_0" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = dashed] -+"redis-bundle-master_post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle-master_post_notify_stopped_0" -> "redis-bundle-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis-bundle-master_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_pre_notify_demote_0" -> "redis-bundle-master_confirmed-pre_notify_demote_0" [ style = bold] -+"redis-bundle-master_pre_notify_demote_0" -> "redis_pre_notify_demote_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_pre_notify_demote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_pre_notify_start_0" -> "redis-bundle-master_confirmed-pre_notify_start_0" [ style = dashed] -+"redis-bundle-master_pre_notify_start_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle-master_pre_notify_stop_0" -> "redis-bundle-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis-bundle-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_running_0" -> "redis-bundle-master_post_notify_running_0" [ style = dashed] - "redis-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] - "redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = dashed] - "redis-bundle-master_start_0" -> "redis_start_0 redis-bundle-0" [ style = dashed] -@@ -171,8 +233,8 @@ digraph "g" { - "redis-bundle-master_stop_0" -> "redis-bundle-master_stopped_0" [ style = bold] - "redis-bundle-master_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] - "redis-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_stopped_0" -> "redis-bundle-master_post_notify_stopped_0" [ style = bold] - "redis-bundle-master_stopped_0" -> "redis-bundle-master_start_0" [ style = dashed] --"redis-bundle-master_stopped_0" -> "redis-bundle_stopped_0" [ style = bold] - "redis-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] - "redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] - "redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] -@@ -199,6 +261,12 @@ digraph "g" { - "redis_demote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] - "redis_monitor_45000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] - "redis_monitor_60000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"redis_post_notify_demoted_0 redis-bundle-0" -> "redis-bundle-master_confirmed-post_notify_demoted_0" [ style = bold] -+"redis_post_notify_demoted_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis_pre_notify_demote_0 redis-bundle-0" -> "redis-bundle-master_confirmed-pre_notify_demote_0" [ style = bold] -+"redis_pre_notify_demote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis_pre_notify_stop_0 redis-bundle-0" -> "redis-bundle-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] - "redis_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = dashed] - "redis_start_0 redis-bundle-0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] - "redis_start_0 redis-bundle-0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -diff --git a/pengine/test10/bundle-order-partial-stop.exp b/pengine/test10/bundle-order-partial-stop.exp -index 27ae320..937bc59 100644 ---- a/pengine/test10/bundle-order-partial-stop.exp -+++ b/pengine/test10/bundle-order-partial-stop.exp -@@ -1,9 +1,22 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -- -+ - - - -@@ -11,11 +24,91 @@ - - - -- -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -31,7 +124,7 @@ - - - -- -+ - - - -@@ -47,28 +140,28 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -78,11 +171,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -91,567 +184,692 @@ - - - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -+ - - -- -+ - - - -- -+ - -- -- -- -- -- -- -- -+ -+ -+ - - - -- -- -- -- -+ - - - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -+ - - -- -- -- -- -+ - - - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -+ - - -- -+ - - - -- -- -- -- -- -- -- -- -- -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ - - -- -- -- -- -- -+ - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -- -- -- -+ -+ -+ - - - -- -- -- -- -- -- -- -+ - - -- -- -- -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ - - - -- -+ - -- -- -+ -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - -- -- -+ -+ - - - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - -- -+ -+ -+ -+ -+ - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -- -- -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -- -- -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - - -- -- -- -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -- -+ -+ - - - - -- -- -- -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ - - -- -+ - - - -- -+ - -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - -- -+ - - -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ - - - -- -+ - - - -@@ -662,11 +880,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -674,7 +892,7 @@ - - - -- -+ - - - -@@ -691,46 +909,52 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-stop.summary b/pengine/test10/bundle-order-partial-stop.summary -index 7bc24d2..29cf490 100644 ---- a/pengine/test10/bundle-order-partial-stop.summary -+++ b/pengine/test10/bundle-order-partial-stop.summary -@@ -41,41 +41,57 @@ Transition Summary: - * Stop openstack-cinder-volume-docker-0 (undercloud) due to node availability - - Executing cluster transition: -+ * Pseudo action: rabbitmq-bundle-clone_pre_notify_stop_0 - * Resource action: galera cancel=10000 on galera-bundle-0 - * Resource action: redis cancel=20000 on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_pre_notify_demote_0 - * Pseudo action: openstack-cinder-volume_stop_0 - * Pseudo action: redis-bundle_demote_0 -- * Pseudo action: redis-bundle-master_demote_0 - * Pseudo action: galera-bundle_demote_0 -- * Pseudo action: galera-bundle-master_demote_0 - * Pseudo action: rabbitmq-bundle_stop_0 -- * Resource action: galera demote on galera-bundle-0 -- * Resource action: redis demote on redis-bundle-0 -+ * Resource action: rabbitmq notify on rabbitmq-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_stop_0 -+ * Pseudo action: rabbitmq-bundle-clone_stop_0 -+ * Pseudo action: galera-bundle-master_demote_0 -+ * Resource action: redis notify on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_confirmed-pre_notify_demote_0 -+ * Pseudo action: redis-bundle-master_demote_0 - * Resource action: openstack-cinder-volume-docker-0 stop on undercloud - * Pseudo action: openstack-cinder-volume_stopped_0 -- * Pseudo action: redis-bundle-master_demoted_0 -- * Pseudo action: galera-bundle-master_demoted_0 -- * Pseudo action: rabbitmq-bundle-clone_stop_0 - * Resource action: rabbitmq stop on rabbitmq-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_stopped_0 - * Resource action: rabbitmq-bundle-0 stop on undercloud -- * Pseudo action: redis-bundle_demoted_0 -+ * Resource action: galera demote on galera-bundle-0 -+ * Pseudo action: galera-bundle-master_demoted_0 -+ * Resource action: redis demote on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_demoted_0 - * Pseudo action: galera-bundle_demoted_0 - * Pseudo action: galera-bundle_stop_0 -- * Pseudo action: rabbitmq-bundle-clone_stopped_0 -+ * Pseudo action: rabbitmq-bundle-clone_post_notify_stopped_0 - * Resource action: rabbitmq-bundle-docker-0 stop on undercloud - * Pseudo action: galera-bundle-master_stop_0 -- * Pseudo action: rabbitmq-bundle_stopped_0 -+ * Pseudo action: redis-bundle-master_post_notify_demoted_0 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-post_notify_stopped_0 - * Resource action: galera stop on galera-bundle-0 -- * Resource action: galera-bundle-0 stop on undercloud - * Pseudo action: galera-bundle-master_stopped_0 -+ * Resource action: galera-bundle-0 stop on undercloud -+ * Resource action: redis notify on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_confirmed-post_notify_demoted_0 -+ * Pseudo action: redis-bundle-master_pre_notify_stop_0 -+ * Pseudo action: redis-bundle_demoted_0 -+ * Pseudo action: rabbitmq-bundle_stopped_0 - * Resource action: galera-bundle-docker-0 stop on undercloud -+ * Resource action: redis notify on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_confirmed-pre_notify_stop_0 - * Pseudo action: galera-bundle_stopped_0 - * Pseudo action: redis-bundle_stop_0 - * Pseudo action: redis-bundle-master_stop_0 - * Resource action: redis stop on redis-bundle-0 -- * Resource action: redis-bundle-0 stop on undercloud - * Pseudo action: redis-bundle-master_stopped_0 -+ * Resource action: redis-bundle-0 stop on undercloud -+ * Pseudo action: redis-bundle-master_post_notify_stopped_0 - * Resource action: redis-bundle-docker-0 stop on undercloud -+ * Pseudo action: redis-bundle-master_confirmed-post_notify_stopped_0 - * Pseudo action: redis-bundle_stopped_0 - * Pseudo action: haproxy-bundle_stop_0 - * Resource action: haproxy-bundle-docker-0 stop on undercloud -diff --git a/pengine/test10/bundle-order-startup-clone-2.dot b/pengine/test10/bundle-order-startup-clone-2.dot -index af90261..8726909 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.dot -+++ b/pengine/test10/bundle-order-startup-clone-2.dot -@@ -233,14 +233,48 @@ digraph "g" { - "redis-bundle-docker-2_start_0 metal-3" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] - "redis-bundle-docker-2_start_0 metal-3" -> "redis:2_start_0 redis-bundle-2" [ style = bold] - "redis-bundle-docker-2_start_0 metal-3" [ 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:0_monitor_20000 redis-bundle-0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis:1_monitor_20000 redis-bundle-1" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis:2_monitor_20000 redis-bundle-2" [ 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:0_monitor_20000 redis-bundle-0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_running_0" -> "redis:1_monitor_20000 redis-bundle-1" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_running_0" -> "redis:2_monitor_20000 redis-bundle-2" [ 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:0_post_notify_promote_0 redis-bundle-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:2_post_notify_promote_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:0_post_notify_start_0 redis-bundle-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:2_post_notify_start_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:0_pre_notify_promote_0 redis-bundle-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:2_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" [ style=bold color="green" fontcolor="orange"] - "redis-bundle-master_promote_0" -> "redis:0_promote_0 redis-bundle-0" [ style = bold] - "redis-bundle-master_promote_0" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] - "redis-bundle-master_promote_0" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] - "redis-bundle-master_promote_0" [ style=bold color="green" fontcolor="orange"] --"redis-bundle-master_promoted_0" -> "redis-bundle_promoted_0" [ style = bold] -+"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" -> "redis-bundle_running_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:0_start_0 redis-bundle-0" [ style = bold] -@@ -259,6 +293,12 @@ digraph "g" { - "redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] - "redis:0_monitor_20000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis:0_post_notify_promote_0 redis-bundle-0" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ style = bold] -+"redis:0_post_notify_promote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis:0_post_notify_start_0 redis-bundle-0" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] -+"redis:0_post_notify_start_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis:0_pre_notify_promote_0 redis-bundle-0" -> "redis-bundle-master_confirmed-pre_notify_promote_0" [ style = bold] -+"redis:0_pre_notify_promote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] - "redis:0_promote_0 redis-bundle-0" -> "redis-bundle-master_promoted_0" [ style = bold] - "redis:0_promote_0 redis-bundle-0" -> "redis:0_monitor_20000 redis-bundle-0" [ style = bold] - "redis:0_promote_0 redis-bundle-0" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] -@@ -269,6 +309,12 @@ digraph "g" { - "redis:0_start_0 redis-bundle-0" -> "redis:1_start_0 redis-bundle-1" [ style = bold] - "redis:0_start_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] - "redis:1_monitor_20000 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_promote_0 redis-bundle-1" -> "redis-bundle-master_promoted_0" [ style = bold] - "redis:1_promote_0 redis-bundle-1" -> "redis:1_monitor_20000 redis-bundle-1" [ style = bold] - "redis:1_promote_0 redis-bundle-1" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] -@@ -279,6 +325,12 @@ digraph "g" { - "redis:1_start_0 redis-bundle-1" -> "redis:2_start_0 redis-bundle-2" [ style = bold] - "redis:1_start_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] - "redis:2_monitor_20000 redis-bundle-2" [ style=bold color="green" fontcolor="black"] -+"redis:2_post_notify_promote_0 redis-bundle-2" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ style = bold] -+"redis:2_post_notify_promote_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] -+"redis:2_post_notify_start_0 redis-bundle-2" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] -+"redis:2_post_notify_start_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] -+"redis:2_pre_notify_promote_0 redis-bundle-2" -> "redis-bundle-master_confirmed-pre_notify_promote_0" [ style = bold] -+"redis:2_pre_notify_promote_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] - "redis:2_promote_0 redis-bundle-2" -> "redis-bundle-master_promoted_0" [ style = bold] - "redis:2_promote_0 redis-bundle-2" -> "redis:2_monitor_20000 redis-bundle-2" [ style = bold] - "redis:2_promote_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bundle-order-startup-clone-2.exp b/pengine/test10/bundle-order-startup-clone-2.exp -index d05eb96..c0910a7 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.exp -+++ b/pengine/test10/bundle-order-startup-clone-2.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -103,7 +103,7 @@ - - - -- -+ - - - -@@ -163,13 +163,13 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -@@ -252,7 +252,7 @@ - - - -- -+ - - - -@@ -309,6 +309,147 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -320,7 +461,7 @@ - - - -- -+ - - - -@@ -360,7 +501,7 @@ - - - -- -+ - - - -@@ -369,7 +510,7 @@ - - - -- -+ - - - -@@ -378,7 +519,7 @@ - - - -- -+ - - - -@@ -387,7 +528,7 @@ - - - -- -+ - - - -@@ -400,7 +541,7 @@ - - - -- -+ - - - -@@ -413,61 +554,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -480,7 +567,7 @@ - - - -- -+ - - - -@@ -520,7 +607,7 @@ - - - -- -+ - - - -@@ -529,7 +616,7 @@ - - - -- -+ - - - -@@ -538,7 +625,7 @@ - - - -- -+ - - - -@@ -547,7 +634,7 @@ - - - -- -+ - - - -@@ -560,7 +647,7 @@ - - - -- -+ - - - -@@ -573,89 +660,35 @@ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -- -- -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - -- -+ - -- -- -- -- -- -- -- -- -- -- - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -680,7 +713,7 @@ - - - -- -+ - - - -@@ -689,7 +722,7 @@ - - - -- -+ - - - -@@ -698,7 +731,7 @@ - - - -- -+ - - - -@@ -707,7 +740,7 @@ - - - -- -+ - - - -@@ -720,7 +753,7 @@ - - - -- -+ - - - -@@ -733,7 +766,7 @@ - - - -- -+ - - - -@@ -746,7 +779,7 @@ - - - -- -+ - - - -@@ -786,7 +819,7 @@ - - - -- -+ - - - -@@ -795,7 +828,7 @@ - - - -- -+ - - - -@@ -804,7 +837,7 @@ - - - -- -+ - - - -@@ -813,7 +846,7 @@ - - - -- -+ - - - -@@ -826,7 +859,7 @@ - - - -- -+ - - - -@@ -866,7 +899,7 @@ - - - -- -+ - - - -@@ -875,7 +908,7 @@ - - - -- -+ - - - -@@ -884,7 +917,7 @@ - - - -- -+ - - - -@@ -893,7 +926,7 @@ - - - -- -+ - - - -@@ -906,7 +939,7 @@ - - - -- -+ - - - -@@ -946,7 +979,7 @@ - - - -- -+ - - - -@@ -955,7 +988,7 @@ - - - -- -+ - - - -@@ -964,7 +997,7 @@ - - - -- -+ - - - -@@ -973,11 +1006,50 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - - - -@@ -990,13 +1062,19 @@ - - - -+ -+ -+ -+ -+ -+ - - -- -+ - - - -- -+ - - - -@@ -1007,33 +1085,452 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -- -+ - - - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -- -- -- -+ - - -- -+ - - - -- -+ - - - -@@ -1046,7 +1543,7 @@ - - - -- -+ - - - -@@ -1086,7 +1583,7 @@ - - - -- -+ - - - -@@ -1095,7 +1592,7 @@ - - - -- -+ - - - -@@ -1104,7 +1601,7 @@ - - - -- -+ - - - -@@ -1113,7 +1610,7 @@ - - - -- -+ - - - -@@ -1126,7 +1623,7 @@ - - - -- -+ - - - -@@ -1139,73 +1636,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -1218,7 +1649,7 @@ - - - -- -+ - - - -@@ -1258,7 +1689,7 @@ - - - -- -+ - - - -@@ -1267,7 +1698,7 @@ - - - -- -+ - - - -@@ -1276,7 +1707,7 @@ - - - -- -+ - - - -@@ -1285,7 +1716,7 @@ - - - -- -+ - - - -@@ -1298,7 +1729,7 @@ - - - -- -+ - - - -@@ -1311,73 +1742,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -1390,7 +1755,7 @@ - - - -- -+ - - - -@@ -1430,7 +1795,7 @@ - - - -- -+ - - - -@@ -1439,7 +1804,7 @@ - - - -- -+ - - - -@@ -1448,7 +1813,7 @@ - - - -- -+ - - - -@@ -1457,7 +1822,7 @@ - - - -- -+ - - - -@@ -1470,7 +1835,7 @@ - - - -- -+ - - - -@@ -1483,21 +1848,21 @@ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -1507,73 +1872,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -1590,11 +1889,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -1602,7 +1901,7 @@ - - - -- -+ - - - -@@ -1620,7 +1919,7 @@ - - - -- -+ - - - -@@ -1628,40 +1927,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -1682,7 +1948,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone-2.summary b/pengine/test10/bundle-order-startup-clone-2.summary -index 9b0eeaa..a2c2146 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.summary -+++ b/pengine/test10/bundle-order-startup-clone-2.summary -@@ -67,6 +67,7 @@ Executing cluster transition: - * Resource action: haproxy-bundle-docker-2 monitor on metal-3 - * Resource action: haproxy-bundle-docker-2 monitor on metal-2 - * Resource action: haproxy-bundle-docker-2 monitor on metal-1 -+ * Pseudo action: redis-bundle-master_pre_notify_start_0 - * Resource action: redis-bundle-docker-0 monitor on metal-3 - * Resource action: redis-bundle-docker-0 monitor on metal-2 - * Resource action: redis-bundle-docker-0 monitor on metal-1 -@@ -82,39 +83,55 @@ Executing cluster transition: - * Resource action: haproxy-bundle-docker-0 start on metal-1 - * Resource action: haproxy-bundle-docker-1 start on metal-2 - * Resource action: haproxy-bundle-docker-2 start on metal-3 -+ * Pseudo action: redis-bundle-master_confirmed-pre_notify_start_0 -+ * Pseudo action: redis-bundle-master_start_0 - * Resource action: redis-bundle-docker-0 start on metal-1 - * Resource action: redis-bundle-0 start on metal-1 - * Resource action: redis-bundle-docker-1 start on metal-2 - * Resource action: redis-bundle-1 start on metal-2 - * Resource action: redis-bundle-docker-2 start on metal-3 - * Resource action: redis-bundle-2 start on metal-3 -- * Pseudo action: redis-bundle-master_start_0 - * Pseudo action: haproxy-bundle_running_0 - * Resource action: haproxy-bundle-docker-0 monitor=60000 on metal-1 - * Resource action: haproxy-bundle-docker-1 monitor=60000 on metal-2 - * Resource action: haproxy-bundle-docker-2 monitor=60000 on metal-3 - * Resource action: redis:0 start on redis-bundle-0 -+ * Resource action: redis:1 start on redis-bundle-1 -+ * Resource action: redis:2 start on redis-bundle-2 -+ * Pseudo action: redis-bundle-master_running_0 - * Resource action: redis-bundle-docker-0 monitor=60000 on metal-1 - * Resource action: redis-bundle-0 monitor=60000 on metal-1 -- * Resource action: redis:1 start on redis-bundle-1 - * Resource action: redis-bundle-docker-1 monitor=60000 on metal-2 - * Resource action: redis-bundle-1 monitor=60000 on metal-2 -- * Resource action: redis:2 start on redis-bundle-2 - * Resource action: redis-bundle-docker-2 monitor=60000 on metal-3 - * Resource action: redis-bundle-2 monitor=60000 on metal-3 -- * Pseudo action: redis-bundle-master_running_0 -+ * Pseudo action: redis-bundle-master_post_notify_running_0 -+ * Resource action: redis:0 notify on redis-bundle-0 -+ * Resource action: redis:1 notify on redis-bundle-1 -+ * Resource action: redis:2 notify on redis-bundle-2 -+ * Pseudo action: redis-bundle-master_confirmed-post_notify_running_0 - * Pseudo action: redis-bundle_running_0 -+ * Pseudo action: redis-bundle-master_pre_notify_promote_0 - * Pseudo action: redis-bundle_promote_0 -+ * Resource action: redis:0 notify on redis-bundle-0 -+ * Resource action: redis:1 notify on redis-bundle-1 -+ * Resource action: redis:2 notify on redis-bundle-2 -+ * Pseudo action: redis-bundle-master_confirmed-pre_notify_promote_0 - * Pseudo action: redis-bundle-master_promote_0 - * Resource action: redis:0 promote on redis-bundle-0 - * Resource action: redis:1 promote on redis-bundle-1 - * Resource action: redis:2 promote on redis-bundle-2 - * Pseudo action: redis-bundle-master_promoted_0 -+ * Pseudo action: redis-bundle-master_post_notify_promoted_0 -+ * Resource action: redis:0 notify on redis-bundle-0 -+ * Resource action: redis:1 notify on redis-bundle-1 -+ * Resource action: redis:2 notify on redis-bundle-2 -+ * Pseudo action: redis-bundle-master_confirmed-post_notify_promoted_0 -+ * Pseudo action: redis-bundle_promoted_0 -+ * Pseudo action: storage-clone_start_0 - * Resource action: redis:0 monitor=20000 on redis-bundle-0 - * Resource action: redis:1 monitor=20000 on redis-bundle-1 - * Resource action: redis:2 monitor=20000 on redis-bundle-2 -- * Pseudo action: redis-bundle_promoted_0 -- * Pseudo action: storage-clone_start_0 - * Resource action: storage:0 start on metal-1 - * Resource action: storage:1 start on metal-2 - * Resource action: storage:2 start on metal-3 -@@ -128,23 +145,23 @@ Executing cluster transition: - * Resource action: storage:0 monitor=30000 on metal-1 - * Resource action: storage:1 monitor=30000 on metal-2 - * Resource action: storage:2 monitor=30000 on metal-3 -+ * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera-bundle-docker-0 start on metal-1 - * Resource action: galera-bundle-0 start on metal-1 - * Resource action: galera-bundle-docker-1 start on metal-2 - * Resource action: galera-bundle-1 start on metal-2 - * Resource action: galera-bundle-docker-2 start on metal-3 - * Resource action: galera-bundle-2 start on metal-3 -- * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera:0 start on galera-bundle-0 -+ * Resource action: galera:1 start on galera-bundle-1 -+ * Resource action: galera:2 start on galera-bundle-2 -+ * Pseudo action: galera-bundle-master_running_0 - * Resource action: galera-bundle-docker-0 monitor=60000 on metal-1 - * Resource action: galera-bundle-0 monitor=60000 on metal-1 -- * Resource action: galera:1 start on galera-bundle-1 - * Resource action: galera-bundle-docker-1 monitor=60000 on metal-2 - * Resource action: galera-bundle-1 monitor=60000 on metal-2 -- * Resource action: galera:2 start on galera-bundle-2 - * Resource action: galera-bundle-docker-2 monitor=60000 on metal-3 - * Resource action: galera-bundle-2 monitor=60000 on metal-3 -- * Pseudo action: galera-bundle-master_running_0 - * Pseudo action: galera-bundle_running_0 - * Resource action: galera:0 monitor=30000 on galera-bundle-0 - * Resource action: galera:0 monitor=20000 on galera-bundle-0 -diff --git a/pengine/test10/bundle-order-startup-clone.dot b/pengine/test10/bundle-order-startup-clone.dot -index 92f019f..219b676 100644 ---- a/pengine/test10/bundle-order-startup-clone.dot -+++ b/pengine/test10/bundle-order-startup-clone.dot -@@ -64,7 +64,19 @@ digraph "g" { - "redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle_running_0" [ style = bold] - "redis-bundle-docker-0_start_0 metal-2" -> "redis:0_start_0 redis-bundle-0" [ style = bold] - "redis-bundle-docker-0_start_0 metal-2" [ style=bold color="green" fontcolor="black"] --"redis-bundle-master_running_0" -> "redis-bundle_running_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:0_monitor_45000 redis-bundle-0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_running_0" -> "redis:0_monitor_60000 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_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_running_0" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] -+"redis-bundle-master_post_notify_running_0" -> "redis:0_post_notify_start_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_post_notify_running_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" [ 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" [ style=bold color="green" fontcolor="orange"] - "redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = bold] - "redis-bundle-master_start_0" -> "redis:0_start_0 redis-bundle-0" [ style = bold] -@@ -75,6 +87,8 @@ digraph "g" { - "redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] - "redis:0_monitor_45000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] - "redis:0_monitor_60000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis:0_post_notify_start_0 redis-bundle-0" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] -+"redis:0_post_notify_start_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] - "redis:0_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = bold] - "redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_45000 redis-bundle-0" [ style = bold] - "redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_60000 redis-bundle-0" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup-clone.exp b/pengine/test10/bundle-order-startup-clone.exp -index c736cb9..197529f 100644 ---- a/pengine/test10/bundle-order-startup-clone.exp -+++ b/pengine/test10/bundle-order-startup-clone.exp -@@ -115,11 +115,24 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - - - -@@ -129,13 +142,16 @@ - - - -+ -+ -+ - - -- -+ - - - -- -+ - - - -@@ -145,13 +161,16 @@ - - - -+ -+ -+ - - -- -+ - - - -- -+ - - - -@@ -166,7 +185,87 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -179,7 +278,7 @@ - - - -- -+ - - - -@@ -201,7 +300,7 @@ - - - -- -+ - - - -@@ -210,7 +309,7 @@ - - - -- -+ - - - -@@ -219,7 +318,7 @@ - - - -- -+ - - - -@@ -228,7 +327,7 @@ - - - -- -+ - - - -@@ -241,7 +340,7 @@ - - - -- -+ - - - -@@ -254,34 +353,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -292,11 +364,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -304,7 +376,7 @@ - - - -- -+ - - - -@@ -316,7 +388,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone.summary b/pengine/test10/bundle-order-startup-clone.summary -index 5e826dc..c2b46de 100644 ---- a/pengine/test10/bundle-order-startup-clone.summary -+++ b/pengine/test10/bundle-order-startup-clone.summary -@@ -34,21 +34,26 @@ Executing cluster transition: - * Resource action: haproxy-bundle-docker-0 monitor on metal-3 - * Resource action: haproxy-bundle-docker-0 monitor on metal-2 - * Resource action: haproxy-bundle-docker-0 monitor on metal-1 -+ * Pseudo action: redis-bundle-master_pre_notify_start_0 - * Resource action: redis-bundle-docker-0 monitor on metal-3 - * Resource action: redis-bundle-docker-0 monitor on metal-2 - * Resource action: redis-bundle-docker-0 monitor on metal-1 - * Pseudo action: redis-bundle_start_0 - * Pseudo action: haproxy-bundle_start_0 - * Resource action: haproxy-bundle-docker-0 start on metal-2 -+ * Pseudo action: redis-bundle-master_confirmed-pre_notify_start_0 -+ * Pseudo action: redis-bundle-master_start_0 - * Resource action: redis-bundle-docker-0 start on metal-2 - * Resource action: redis-bundle-0 start on metal-2 -- * Pseudo action: redis-bundle-master_start_0 - * Pseudo action: haproxy-bundle_running_0 - * Resource action: haproxy-bundle-docker-0 monitor=60000 on metal-2 - * Resource action: redis:0 start on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_running_0 - * Resource action: redis-bundle-docker-0 monitor=60000 on metal-2 - * Resource action: redis-bundle-0 monitor=60000 on metal-2 -- * Pseudo action: redis-bundle-master_running_0 -+ * Pseudo action: redis-bundle-master_post_notify_running_0 -+ * Resource action: redis:0 notify on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_confirmed-post_notify_running_0 - * Pseudo action: redis-bundle_running_0 - * Resource action: redis:0 monitor=60000 on redis-bundle-0 - * Resource action: redis:0 monitor=45000 on redis-bundle-0 -diff --git a/pengine/test10/bundle-order-startup.dot b/pengine/test10/bundle-order-startup.dot -index 66053b9..3ec10fa 100644 ---- a/pengine/test10/bundle-order-startup.dot -+++ b/pengine/test10/bundle-order-startup.dot -@@ -88,7 +88,18 @@ digraph "g" { - "rabbitmq-bundle-0_start_0 undercloud" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle-0_start_0 undercloud" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] --"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_pre_notify_start_0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = bold] - "rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] -@@ -106,6 +117,8 @@ digraph "g" { - "rabbitmq-bundle_start_0" -> "rabbitmq-bundle-docker-0_start_0 undercloud" [ style = bold] - "rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -@@ -123,7 +136,19 @@ digraph "g" { - "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle_running_0" [ style = bold] - "redis-bundle-docker-0_start_0 undercloud" -> "redis:0_start_0 redis-bundle-0" [ style = bold] - "redis-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] --"redis-bundle-master_running_0" -> "redis-bundle_running_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:0_monitor_45000 redis-bundle-0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_running_0" -> "redis:0_monitor_60000 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_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_running_0" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] -+"redis-bundle-master_post_notify_running_0" -> "redis:0_post_notify_start_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_post_notify_running_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" [ 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" [ style=bold color="green" fontcolor="orange"] - "redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = bold] - "redis-bundle-master_start_0" -> "redis:0_start_0 redis-bundle-0" [ style = bold] -@@ -135,6 +160,8 @@ digraph "g" { - "redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] - "redis:0_monitor_45000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] - "redis:0_monitor_60000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis:0_post_notify_start_0 redis-bundle-0" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] -+"redis:0_post_notify_start_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] - "redis:0_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = bold] - "redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_45000 redis-bundle-0" [ style = bold] - "redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_60000 redis-bundle-0" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp -index 2128d7c..161c1ae 100644 ---- a/pengine/test10/bundle-order-startup.exp -+++ b/pengine/test10/bundle-order-startup.exp -@@ -1,9 +1,22 @@ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - - - -@@ -13,13 +26,16 @@ - - - -+ -+ -+ - - -- -+ - - - -- -+ - - - -@@ -34,7 +50,87 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -47,7 +143,7 @@ - - - -- -+ - - - -@@ -63,7 +159,7 @@ - - - -- -+ - - - -@@ -72,7 +168,7 @@ - - - -- -+ - - - -@@ -85,7 +181,7 @@ - - - -- -+ - - - -@@ -98,73 +194,100 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -174,11 +297,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -187,99 +310,198 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - -- -+ - - - - -- -+ -+ -+ -+ - - -- -+ - - - -- -+ - -- -+ - -- -+ - - - - -- -+ -+ -+ -+ - - -- -+ - - - -- -+ - -- -+ - -- -+ - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -289,11 +511,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -302,48 +524,48 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -354,7 +576,7 @@ - - - -- -+ - - - -@@ -363,22 +585,22 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -389,7 +611,7 @@ - - - -- -+ - - - -@@ -398,22 +620,22 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -424,7 +646,7 @@ - - - -- -+ - - - -@@ -433,22 +655,22 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -459,7 +681,7 @@ - - - -- -+ - - - -@@ -468,22 +690,22 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -494,7 +716,7 @@ - - - -- -+ - - - -@@ -503,22 +725,22 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -529,7 +751,7 @@ - - - -- -+ - - - -@@ -538,22 +760,22 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -563,11 +785,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -576,22 +798,22 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -601,11 +823,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -614,201 +836,120 @@ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -- -- -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - -- -- -- -- -- -- -- -- -- - -- -- -- -- -+ - - - -- -+ - -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ - - - -@@ -819,11 +960,11 @@ - - - -- -+ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup.summary b/pengine/test10/bundle-order-startup.summary -index b5c2091..8da71d0 100644 ---- a/pengine/test10/bundle-order-startup.summary -+++ b/pengine/test10/bundle-order-startup.summary -@@ -39,8 +39,10 @@ Transition Summary: - * Start openstack-cinder-volume-docker-0 (undercloud) - - Executing cluster transition: -+ * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 - * Resource action: rabbitmq-bundle-docker-0 monitor on undercloud - * Resource action: galera-bundle-docker-0 monitor on undercloud -+ * Pseudo action: redis-bundle-master_pre_notify_start_0 - * Resource action: redis-bundle-docker-0 monitor on undercloud - * Resource action: ip-192.168.122.254 monitor on undercloud - * Resource action: ip-192.168.122.250 monitor on undercloud -@@ -52,8 +54,11 @@ Executing cluster transition: - * Resource action: openstack-cinder-volume-docker-0 monitor on undercloud - * Pseudo action: openstack-cinder-volume_start_0 - * Pseudo action: rabbitmq-bundle_start_0 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0 -+ * Pseudo action: rabbitmq-bundle-clone_start_0 - * Resource action: rabbitmq-bundle-docker-0 start on undercloud - * Resource action: rabbitmq-bundle-0 start on undercloud -+ * Pseudo action: redis-bundle-master_confirmed-pre_notify_start_0 - * Resource action: ip-192.168.122.254 start on undercloud - * Resource action: ip-192.168.122.250 start on undercloud - * Resource action: ip-192.168.122.249 start on undercloud -@@ -63,8 +68,8 @@ Executing cluster transition: - * Resource action: openstack-cinder-volume-docker-0 start on undercloud - * Pseudo action: openstack-cinder-volume_running_0 - * Pseudo action: haproxy-bundle_start_0 -- * Pseudo action: rabbitmq-bundle-clone_start_0 - * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_running_0 - * Resource action: rabbitmq-bundle-docker-0 monitor=60000 on undercloud - * Resource action: rabbitmq-bundle-0 monitor=60000 on undercloud - * Resource action: ip-192.168.122.254 monitor=10000 on undercloud -@@ -77,28 +82,33 @@ Executing cluster transition: - * Resource action: openstack-cinder-volume-docker-0 monitor=60000 on undercloud - * Pseudo action: haproxy-bundle_running_0 - * Pseudo action: redis-bundle_start_0 -- * Pseudo action: rabbitmq-bundle-clone_running_0 -- * Pseudo action: rabbitmq-bundle_running_0 -- * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_post_notify_running_0 -+ * Pseudo action: redis-bundle-master_start_0 - * Resource action: redis-bundle-docker-0 start on undercloud - * Resource action: redis-bundle-0 start on undercloud - * Resource action: haproxy-bundle-docker-0 monitor=60000 on undercloud -- * Pseudo action: redis-bundle-master_start_0 -+ * Resource action: rabbitmq:0 notify on rabbitmq-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-post_notify_running_0 - * Resource action: redis:0 start on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_running_0 - * Resource action: redis-bundle-docker-0 monitor=60000 on undercloud - * Resource action: redis-bundle-0 monitor=60000 on undercloud -- * Pseudo action: redis-bundle-master_running_0 -+ * Pseudo action: rabbitmq-bundle_running_0 -+ * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 -+ * Pseudo action: redis-bundle-master_post_notify_running_0 -+ * Resource action: redis:0 notify on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_confirmed-post_notify_running_0 - * Pseudo action: redis-bundle_running_0 - * Pseudo action: galera-bundle_start_0 -+ * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera-bundle-docker-0 start on undercloud - * Resource action: galera-bundle-0 start on undercloud - * Resource action: redis:0 monitor=60000 on redis-bundle-0 - * Resource action: redis:0 monitor=45000 on redis-bundle-0 -- * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera:0 start on galera-bundle-0 -+ * Pseudo action: galera-bundle-master_running_0 - * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud - * Resource action: galera-bundle-0 monitor=60000 on undercloud -- * Pseudo action: galera-bundle-master_running_0 - * Pseudo action: galera-bundle_running_0 - * Resource action: galera:0 monitor=30000 on galera-bundle-0 - * Resource action: galera:0 monitor=20000 on galera-bundle-0 -diff --git a/pengine/test10/bundle-order-stop-clone.exp b/pengine/test10/bundle-order-stop-clone.exp -index ac0ae05..c359e00 100644 ---- a/pengine/test10/bundle-order-stop-clone.exp -+++ b/pengine/test10/bundle-order-stop-clone.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -27,7 +27,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -53,7 +53,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -@@ -88,10 +88,10 @@ - - - -- -+ - - -- -+ - - - -@@ -121,13 +121,13 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -@@ -185,89 +185,89 @@ - - - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -+ - - -- -+ - - - - - -- -- -- -- -- -- -- -+ -+ -+ - - - -- -+ - - - - - -- -+ - - - - - -- -- -- -- -+ - - - - - -- -+ - - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -+ -+ -+ -+ - - - - - -- -- -- -+ -+ -+ -+ -+ -+ -+ - - - -- -- -- -- -+ - - - -diff --git a/pengine/test10/bundle-order-stop-clone.summary b/pengine/test10/bundle-order-stop-clone.summary -index 66cb82a..70e0f21 100644 ---- a/pengine/test10/bundle-order-stop-clone.summary -+++ b/pengine/test10/bundle-order-stop-clone.summary -@@ -35,8 +35,8 @@ Executing cluster transition: - * Pseudo action: storage-clone_confirmed-pre_notify_stop_0 - * Pseudo action: galera-bundle-master_stop_0 - * Resource action: galera:0 stop on galera-bundle-0 -- * Resource action: galera-bundle-0 stop on metal-1 - * Pseudo action: galera-bundle-master_stopped_0 -+ * Resource action: galera-bundle-0 stop on metal-1 - * Resource action: galera-bundle-docker-0 stop on metal-1 - * Pseudo action: galera-bundle_stopped_0 - * Pseudo action: galera-bundle_start_0 -diff --git a/pengine/test10/bundle-order-stop.dot b/pengine/test10/bundle-order-stop.dot -index c0e6616..3fade95 100644 ---- a/pengine/test10/bundle-order-stop.dot -+++ b/pengine/test10/bundle-order-stop.dot -@@ -118,7 +118,29 @@ digraph "g" { - "rabbitmq-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] - "rabbitmq-bundle-0_stop_0 undercloud" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] - "rabbitmq-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] --"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq-bundle_running_0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" -> "rabbitmq-bundle-clone_pre_notify_start_0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" -> "rabbitmq-bundle_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style=dashed color="red" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" -> "rabbitmq-bundle-clone_post_notify_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = dashed] -+"rabbitmq-bundle-clone_post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] -+"rabbitmq-bundle-clone_post_notify_stopped_0" -> "rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_pre_notify_start_0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style = dashed] -+"rabbitmq-bundle-clone_pre_notify_start_0" [ style=dashed color="red" fontcolor="orange"] -+"rabbitmq-bundle-clone_pre_notify_stop_0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_stop_0" -> "rabbitmq_pre_notify_stop_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = dashed] - "rabbitmq-bundle-clone_running_0" [ style=dashed color="red" fontcolor="orange"] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] -@@ -126,8 +148,8 @@ digraph "g" { - "rabbitmq-bundle-clone_stop_0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] - "rabbitmq-bundle-clone_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle-clone_post_notify_stopped_0" [ style = bold] - "rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle-clone_start_0" [ style = dashed] --"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle_stopped_0" [ style = bold] - "rabbitmq-bundle-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -@@ -140,6 +162,8 @@ digraph "g" { - "rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"rabbitmq_pre_notify_stop_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" [ style = bold] -+"rabbitmq_pre_notify_stop_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] - "rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] - "rabbitmq_start_0 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] -@@ -156,14 +180,52 @@ digraph "g" { - "redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] - "redis-bundle-docker-0_stop_0 undercloud" -> "redis-bundle_stopped_0" [ style = bold] - "redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis-bundle-master_pre_notify_start_0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis-bundle-master_pre_notify_stop_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_confirmed-post_notify_running_0" -> "redis-bundle_running_0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_running_0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_running_0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle-master_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_stopped_0" -> "redis-bundle-master_pre_notify_start_0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_stopped_0" -> "redis-bundle_stopped_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_confirmed-pre_notify_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] -+"redis-bundle-master_confirmed-pre_notify_demote_0" -> "redis-bundle-master_post_notify_demoted_0" [ style = bold] -+"redis-bundle-master_confirmed-pre_notify_demote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_confirmed-pre_notify_start_0" -> "redis-bundle-master_post_notify_running_0" [ style = dashed] -+"redis-bundle-master_confirmed-pre_notify_start_0" -> "redis-bundle-master_start_0" [ style = dashed] -+"redis-bundle-master_confirmed-pre_notify_start_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle-master_confirmed-pre_notify_stop_0" -> "redis-bundle-master_post_notify_stopped_0" [ style = bold] -+"redis-bundle-master_confirmed-pre_notify_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] -+"redis-bundle-master_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] - "redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] - "redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] - "redis-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_demoted_0" -> "redis-bundle-master_post_notify_demoted_0" [ style = bold] - "redis-bundle-master_demoted_0" -> "redis-bundle-master_start_0" [ style = dashed] - "redis-bundle-master_demoted_0" -> "redis-bundle-master_stop_0" [ style = bold] --"redis-bundle-master_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] - "redis-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] --"redis-bundle-master_running_0" -> "redis-bundle_running_0" [ style = dashed] -+"redis-bundle-master_post_notify_demoted_0" -> "redis-bundle-master_confirmed-post_notify_demoted_0" [ style = bold] -+"redis-bundle-master_post_notify_demoted_0" -> "redis_post_notify_demoted_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_post_notify_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_post_notify_running_0" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = dashed] -+"redis-bundle-master_post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle-master_post_notify_stopped_0" -> "redis-bundle-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis-bundle-master_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_pre_notify_demote_0" -> "redis-bundle-master_confirmed-pre_notify_demote_0" [ style = bold] -+"redis-bundle-master_pre_notify_demote_0" -> "redis_pre_notify_demote_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_pre_notify_demote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_pre_notify_start_0" -> "redis-bundle-master_confirmed-pre_notify_start_0" [ style = dashed] -+"redis-bundle-master_pre_notify_start_0" [ style=dashed color="red" fontcolor="orange"] -+"redis-bundle-master_pre_notify_stop_0" -> "redis-bundle-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis-bundle-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_running_0" -> "redis-bundle-master_post_notify_running_0" [ style = dashed] - "redis-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] - "redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = dashed] - "redis-bundle-master_start_0" -> "redis_start_0 redis-bundle-0" [ style = dashed] -@@ -171,8 +233,8 @@ digraph "g" { - "redis-bundle-master_stop_0" -> "redis-bundle-master_stopped_0" [ style = bold] - "redis-bundle-master_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] - "redis-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_stopped_0" -> "redis-bundle-master_post_notify_stopped_0" [ style = bold] - "redis-bundle-master_stopped_0" -> "redis-bundle-master_start_0" [ style = dashed] --"redis-bundle-master_stopped_0" -> "redis-bundle_stopped_0" [ style = bold] - "redis-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] - "redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] - "redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] -@@ -199,6 +261,12 @@ digraph "g" { - "redis_demote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] - "redis_monitor_45000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] - "redis_monitor_60000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"redis_post_notify_demoted_0 redis-bundle-0" -> "redis-bundle-master_confirmed-post_notify_demoted_0" [ style = bold] -+"redis_post_notify_demoted_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis_pre_notify_demote_0 redis-bundle-0" -> "redis-bundle-master_confirmed-pre_notify_demote_0" [ style = bold] -+"redis_pre_notify_demote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis_pre_notify_stop_0 redis-bundle-0" -> "redis-bundle-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] - "redis_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = dashed] - "redis_start_0 redis-bundle-0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] - "redis_start_0 redis-bundle-0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -diff --git a/pengine/test10/bundle-order-stop.exp b/pengine/test10/bundle-order-stop.exp -index 27ae320..937bc59 100644 ---- a/pengine/test10/bundle-order-stop.exp -+++ b/pengine/test10/bundle-order-stop.exp -@@ -1,9 +1,22 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -- -+ - - - -@@ -11,11 +24,91 @@ - - - -- -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -31,7 +124,7 @@ - - - -- -+ - - - -@@ -47,28 +140,28 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -78,11 +171,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -91,567 +184,692 @@ - - - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -+ - - -- -+ - - - -- -+ - -- -- -- -- -- -- -- -+ -+ -+ - - - -- -- -- -- -+ - - - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -+ - - -- -- -- -- -+ - - - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -+ - - -- -+ - - - -- -- -- -- -- -- -- -- -- -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ - - -- -- -- -- -- -+ - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -- -+ -+ -+ - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -- -- -- -+ -+ -+ - - - -- -- -- -- -- -- -- -+ - - -- -- -- -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ - - - -- -+ - -- -- -+ -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - -- -- -+ -+ - - - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - -- -+ -+ -+ -+ -+ - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -- -- -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -- -- -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ - - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - - -- -- -- -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -- -+ -+ - - - - -- -- -- -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ - - -- -+ - - - -- -+ - -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - -- -+ - - -- -+ - - - -- -+ - -- -- -+ -+ - - - - -- -+ - - - -- -+ - - - -@@ -662,11 +880,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -674,7 +892,7 @@ - - - -- -+ - - - -@@ -691,46 +909,52 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-stop.summary b/pengine/test10/bundle-order-stop.summary -index 7bc24d2..29cf490 100644 ---- a/pengine/test10/bundle-order-stop.summary -+++ b/pengine/test10/bundle-order-stop.summary -@@ -41,41 +41,57 @@ Transition Summary: - * Stop openstack-cinder-volume-docker-0 (undercloud) due to node availability - - Executing cluster transition: -+ * Pseudo action: rabbitmq-bundle-clone_pre_notify_stop_0 - * Resource action: galera cancel=10000 on galera-bundle-0 - * Resource action: redis cancel=20000 on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_pre_notify_demote_0 - * Pseudo action: openstack-cinder-volume_stop_0 - * Pseudo action: redis-bundle_demote_0 -- * Pseudo action: redis-bundle-master_demote_0 - * Pseudo action: galera-bundle_demote_0 -- * Pseudo action: galera-bundle-master_demote_0 - * Pseudo action: rabbitmq-bundle_stop_0 -- * Resource action: galera demote on galera-bundle-0 -- * Resource action: redis demote on redis-bundle-0 -+ * Resource action: rabbitmq notify on rabbitmq-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_stop_0 -+ * Pseudo action: rabbitmq-bundle-clone_stop_0 -+ * Pseudo action: galera-bundle-master_demote_0 -+ * Resource action: redis notify on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_confirmed-pre_notify_demote_0 -+ * Pseudo action: redis-bundle-master_demote_0 - * Resource action: openstack-cinder-volume-docker-0 stop on undercloud - * Pseudo action: openstack-cinder-volume_stopped_0 -- * Pseudo action: redis-bundle-master_demoted_0 -- * Pseudo action: galera-bundle-master_demoted_0 -- * Pseudo action: rabbitmq-bundle-clone_stop_0 - * Resource action: rabbitmq stop on rabbitmq-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_stopped_0 - * Resource action: rabbitmq-bundle-0 stop on undercloud -- * Pseudo action: redis-bundle_demoted_0 -+ * Resource action: galera demote on galera-bundle-0 -+ * Pseudo action: galera-bundle-master_demoted_0 -+ * Resource action: redis demote on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_demoted_0 - * Pseudo action: galera-bundle_demoted_0 - * Pseudo action: galera-bundle_stop_0 -- * Pseudo action: rabbitmq-bundle-clone_stopped_0 -+ * Pseudo action: rabbitmq-bundle-clone_post_notify_stopped_0 - * Resource action: rabbitmq-bundle-docker-0 stop on undercloud - * Pseudo action: galera-bundle-master_stop_0 -- * Pseudo action: rabbitmq-bundle_stopped_0 -+ * Pseudo action: redis-bundle-master_post_notify_demoted_0 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-post_notify_stopped_0 - * Resource action: galera stop on galera-bundle-0 -- * Resource action: galera-bundle-0 stop on undercloud - * Pseudo action: galera-bundle-master_stopped_0 -+ * Resource action: galera-bundle-0 stop on undercloud -+ * Resource action: redis notify on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_confirmed-post_notify_demoted_0 -+ * Pseudo action: redis-bundle-master_pre_notify_stop_0 -+ * Pseudo action: redis-bundle_demoted_0 -+ * Pseudo action: rabbitmq-bundle_stopped_0 - * Resource action: galera-bundle-docker-0 stop on undercloud -+ * Resource action: redis notify on redis-bundle-0 -+ * Pseudo action: redis-bundle-master_confirmed-pre_notify_stop_0 - * Pseudo action: galera-bundle_stopped_0 - * Pseudo action: redis-bundle_stop_0 - * Pseudo action: redis-bundle-master_stop_0 - * Resource action: redis stop on redis-bundle-0 -- * Resource action: redis-bundle-0 stop on undercloud - * Pseudo action: redis-bundle-master_stopped_0 -+ * Resource action: redis-bundle-0 stop on undercloud -+ * Pseudo action: redis-bundle-master_post_notify_stopped_0 - * Resource action: redis-bundle-docker-0 stop on undercloud -+ * Pseudo action: redis-bundle-master_confirmed-post_notify_stopped_0 - * Pseudo action: redis-bundle_stopped_0 - * Pseudo action: haproxy-bundle_stop_0 - * Resource action: haproxy-bundle-docker-0 stop on undercloud -diff --git a/pengine/test10/remote-fence-unclean-3.exp b/pengine/test10/remote-fence-unclean-3.exp -index 5bf7eb3..b7bb735 100644 ---- a/pengine/test10/remote-fence-unclean-3.exp -+++ b/pengine/test10/remote-fence-unclean-3.exp -@@ -75,7 +75,7 @@ - - - -- -+ - - - -@@ -107,7 +107,7 @@ - - - -- -+ - - - --- -1.8.3.1 - diff --git a/SOURCES/090-remote-fence-loop.patch b/SOURCES/090-remote-fence-loop.patch deleted file mode 100644 index 5f81e6f..0000000 --- a/SOURCES/090-remote-fence-loop.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 00fed62ed4899412f65644e6b84e49fbf89d09bb Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 2 Aug 2017 19:18:25 -0500 -Subject: [PATCH] Fix: pengine: avoid fence loop for remote nodes - -This leaves the original issue unaddressed, for investigation later. ---- - pengine/allocate.c | 3 +++ - pengine/test10/remote-fence-unclean-3.dot | 5 ----- - pengine/test10/remote-fence-unclean-3.exp | 29 --------------------------- - pengine/test10/remote-fence-unclean-3.summary | 3 --- - 4 files changed, 3 insertions(+), 37 deletions(-) - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 3a883ad..e3cb4cc 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -905,10 +905,13 @@ probe_resources(pe_working_set_t * data_set) - continue; - - } else if (node->details->online == FALSE && node->details->remote_rsc) { -+ // TODO figure out why this results in fence loop -+ /* - enum remote_connection_state state = get_remote_node_state(node); - if(state == remote_state_failed) { - pe_fence_node(data_set, node, "the connection is unrecoverable"); - } -+ */ - continue; - - } else if(node->details->online == FALSE) { -diff --git a/pengine/test10/remote-fence-unclean-3.dot b/pengine/test10/remote-fence-unclean-3.dot -index b32b77e..14adaef 100644 ---- a/pengine/test10/remote-fence-unclean-3.dot -+++ b/pengine/test10/remote-fence-unclean-3.dot -@@ -1,5 +1,4 @@ - digraph "g" { --"all_stopped" -> "fence1_start_0 overcloud-controller-0" [ style = bold] - "all_stopped" [ style=bold color="green" fontcolor="orange"] - "fence1_monitor_0 overcloud-controller-0" -> "fence1_start_0 overcloud-controller-0" [ style = bold] - "fence1_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -@@ -12,8 +11,4 @@ digraph "g" { - "fence1_start_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] - "overcloud-novacompute-0_stop_0 overcloud-controller-0" -> "all_stopped" [ style = bold] - "overcloud-novacompute-0_stop_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] --"stonith 'reboot' overcloud-novacompute-0" -> "stonith_complete" [ style = bold] --"stonith 'reboot' overcloud-novacompute-0" [ style=bold color="green" fontcolor="black"] --"stonith_complete" -> "all_stopped" [ style = bold] --"stonith_complete" [ style=bold color="green" fontcolor="orange"] - } -diff --git a/pengine/test10/remote-fence-unclean-3.exp b/pengine/test10/remote-fence-unclean-3.exp -index 2e341bd..64e5a62 100644 ---- a/pengine/test10/remote-fence-unclean-3.exp -+++ b/pengine/test10/remote-fence-unclean-3.exp -@@ -21,9 +21,6 @@ - - - -- -- -- - - - -@@ -75,29 +72,6 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -@@ -106,9 +80,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/remote-fence-unclean-3.summary b/pengine/test10/remote-fence-unclean-3.summary -index ec24500..ec54d8e 100644 ---- a/pengine/test10/remote-fence-unclean-3.summary -+++ b/pengine/test10/remote-fence-unclean-3.summary -@@ -34,7 +34,6 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bund - openstack-cinder-backup-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-1 - - Transition Summary: -- * Fence (reboot) overcloud-novacompute-0 'the connection is unrecoverable' - * Start fence1 (overcloud-controller-0) - * Stop overcloud-novacompute-0 (overcloud-controller-0) - -@@ -43,8 +42,6 @@ Executing cluster transition: - * Resource action: fence1 monitor on overcloud-controller-1 - * Resource action: fence1 monitor on overcloud-controller-0 - * Resource action: overcloud-novacompute-0 stop on overcloud-controller-0 -- * Fencing overcloud-novacompute-0 (reboot) -- * Pseudo action: stonith_complete - * Pseudo action: all_stopped - * Resource action: fence1 start on overcloud-controller-0 - * Resource action: fence1 monitor=60000 on overcloud-controller-0 --- -1.8.3.1 - diff --git a/SOURCES/091-compat.patch b/SOURCES/091-compat.patch deleted file mode 100644 index 789b933..0000000 --- a/SOURCES/091-compat.patch +++ /dev/null @@ -1,316 +0,0 @@ -From cef0ff51879e965c3b7d214a23b61e6bf61aa33d Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 17 Aug 2017 15:53:27 -0500 -Subject: [PATCH 1/3] Refactor: crmd,pengine: prefix internal node attributes - with '#' - -so crm_mon will hide them. Also, define constants for them. - -As a positive side effect, node_unfenced is no longer added as a -meta-attribute to stonith "on" operations. ---- - crmd/te_callbacks.c | 14 +++++--------- - include/crm/crm.h | 5 +++++ - include/crm/msg_xml.h | 3 ++- - lib/pengine/utils.c | 12 ++++++++---- - pengine/native.c | 4 ++-- - pengine/test10/start-then-stop-with-unfence.xml | 2 +- - pengine/test10/unfence-definition.exp | 2 +- - pengine/test10/unfence-definition.xml | 4 ++-- - pengine/test10/unfence-parameters.exp | 2 +- - pengine/test10/unfence-parameters.xml | 4 ++-- - pengine/test10/unfence-startup.xml | 4 ++-- - 11 files changed, 31 insertions(+), 25 deletions(-) - -diff --git a/crmd/te_callbacks.c b/crmd/te_callbacks.c -index 4476d4a..2273b86 100644 ---- a/crmd/te_callbacks.c -+++ b/crmd/te_callbacks.c -@@ -798,21 +797,17 @@ tengine_stonith_callback(stonith_t * stonith, stonith_callback_data_t * data) - if (action->confirmed == FALSE) { - te_action_confirmed(action); - if (safe_str_eq("on", op)) { -- const char *key = NULL; - const char *value = NULL; - char *now = crm_itoa(time(NULL)); - -- key = XML_NODE_IS_UNFENCED; -- update_attrd(target, key, now, NULL, FALSE); -+ update_attrd(target, CRM_ATTR_UNFENCED, now, NULL, FALSE); - free(now); - -- key = "digests-all"; -- value = crm_meta_value(action->params, key); -- update_attrd(target, key, value, NULL, FALSE); -+ value = crm_meta_value(action->params, XML_OP_ATTR_DIGESTS_ALL); -+ update_attrd(target, CRM_ATTR_DIGESTS_ALL, value, NULL, FALSE); - -- key = "digests-secure"; -- value = crm_meta_value(action->params, key); -- update_attrd(target, key, value, NULL, FALSE); -+ value = crm_meta_value(action->params, XML_OP_ATTR_DIGESTS_SECURE); -+ update_attrd(target, CRM_ATTR_DIGESTS_SECURE, value, NULL, FALSE); - - } else if (action->sent_update == FALSE) { - send_stonith_update(action, target, uuid); -diff --git a/include/crm/crm.h b/include/crm/crm.h -index 0da6bfe..35ab6ca 100644 ---- a/include/crm/crm.h -+++ b/include/crm/crm.h -@@ -94,6 +94,11 @@ extern char *crm_system_name; - # define CRM_SYSTEM_STONITHD "stonithd" - # define CRM_SYSTEM_MCP "pacemakerd" - -+// Names of internally generated node attributes -+# define CRM_ATTR_UNFENCED "#node-unfenced" -+# define CRM_ATTR_DIGESTS_ALL "#digests-all" -+# define CRM_ATTR_DIGESTS_SECURE "#digests-secure" -+ - /* Valid operations */ - # define CRM_OP_NOOP "noop" - -diff --git a/include/crm/msg_xml.h b/include/crm/msg_xml.h -index 8cf22f3..38183b5 100644 ---- a/include/crm/msg_xml.h -+++ b/include/crm/msg_xml.h -@@ -228,6 +234,8 @@ - # define XML_OP_ATTR_DEPENDENT "dependent-on" - # define XML_OP_ATTR_ORIGIN "interval-origin" - # define XML_OP_ATTR_PENDING "record-pending" -+# define XML_OP_ATTR_DIGESTS_ALL "digests-all" -+# define XML_OP_ATTR_DIGESTS_SECURE "digests-secure" - - # define XML_CIB_TAG_LRM "lrm" - # define XML_LRM_TAG_RESOURCES "lrm_resources" -@@ -254,7 +264,6 @@ - # define XML_NODE_IS_PEER "crmd" - # define XML_NODE_IS_REMOTE "remote_node" - # define XML_NODE_IS_FENCED "node_fenced" --# define XML_NODE_IS_UNFENCED "node_unfenced" - # define XML_NODE_IS_MAINTENANCE "node_in_maintenance" - - # define XML_CIB_ATTR_SHUTDOWN "shutdown" -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index cb1ed08..848b311 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -2115,8 +1987,10 @@ fencing_action_digest_cmp(resource_t * rsc, node_t * node, pe_working_set_t * da - char *key = generate_op_key(rsc->id, STONITH_DIGEST_TASK, 0); - op_digest_cache_t *data = rsc_action_digest(rsc, STONITH_DIGEST_TASK, key, node, NULL, data_set); - -- const char *digest_all = g_hash_table_lookup(node->details->attrs, "digests-all"); -- const char *digest_secure = g_hash_table_lookup(node->details->attrs, "digests-secure"); -+ const char *digest_all = g_hash_table_lookup(node->details->attrs, -+ CRM_ATTR_DIGESTS_ALL); -+ const char *digest_secure = g_hash_table_lookup(node->details->attrs, -+ CRM_ATTR_DIGESTS_SECURE); - - /* No 'reloads' for fencing device changes - * -@@ -2269,8 +2146,10 @@ pe_fence_op(node_t * node, const char *op, bool optional, const char *reason, pe - digests_secure+digests_secure_offset, max-digests_secure_offset, - "%s:%s:%s,", match->id, (const char*)g_hash_table_lookup(match->meta, XML_ATTR_TYPE), data->digest_secure_calc); - } -- add_hash_param(stonith_op->meta, strdup("digests-all"), digests_all); -- add_hash_param(stonith_op->meta, strdup("digests-secure"), digests_secure); -+ add_hash_param(stonith_op->meta, strdup(XML_OP_ATTR_DIGESTS_ALL), -+ digests_all); -+ add_hash_param(stonith_op->meta, strdup(XML_OP_ATTR_DIGESTS_SECURE), -+ digests_secure); - } - - } else { -diff --git a/pengine/native.c b/pengine/native.c -index fdbbf0c..18efa1d 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -2490,7 +2501,7 @@ 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 = g_hash_table_lookup(current->details->attrs, XML_NODE_IS_UNFENCED); -+ const char *unfenced = g_hash_table_lookup(current->details->attrs, CRM_ATTR_UNFENCED); - - order_actions(stop, unfence, pe_order_implies_first); - if (unfenced == NULL || safe_str_eq("0", unfenced)) { -@@ -2513,7 +2524,7 @@ 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 = g_hash_table_lookup(next->details->attrs, XML_NODE_IS_UNFENCED); -+ const char *unfenced = g_hash_table_lookup(next->details->attrs, CRM_ATTR_UNFENCED); - - order_actions(unfence, start, pe_order_implies_then); - -diff --git a/pengine/test10/start-then-stop-with-unfence.xml b/pengine/test10/start-then-stop-with-unfence.xml -index b856250..587b05a 100644 ---- a/pengine/test10/start-then-stop-with-unfence.xml -+++ b/pengine/test10/start-then-stop-with-unfence.xml -@@ -95,7 +95,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/unfence-definition.exp b/pengine/test10/unfence-definition.exp -index f9ad4c1..4e619fe 100644 ---- a/pengine/test10/unfence-definition.exp -+++ b/pengine/test10/unfence-definition.exp -@@ -389,7 +389,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/unfence-definition.xml b/pengine/test10/unfence-definition.xml -index cb189cd..90aa3da 100644 ---- a/pengine/test10/unfence-definition.xml -+++ b/pengine/test10/unfence-definition.xml -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/unfence-parameters.exp b/pengine/test10/unfence-parameters.exp -index 64286a8..8022591 100644 ---- a/pengine/test10/unfence-parameters.exp -+++ b/pengine/test10/unfence-parameters.exp -@@ -373,7 +373,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/unfence-parameters.xml b/pengine/test10/unfence-parameters.xml -index 26588bf..e1975b9 100644 ---- a/pengine/test10/unfence-parameters.xml -+++ b/pengine/test10/unfence-parameters.xml -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/unfence-startup.xml b/pengine/test10/unfence-startup.xml -index 28637e3..69e2df7 100644 ---- a/pengine/test10/unfence-startup.xml -+++ b/pengine/test10/unfence-startup.xml -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -63,7 +63,7 @@ - - - -- -+ - - - --- -1.8.3.1 - - -From 8440151215e39a69eea55aae996329a11d7800a5 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 17 Aug 2017 17:38:30 -0500 -Subject: [PATCH 2/3] Refactor: libpe_status: remove redundant constant - definition - ---- - lib/pengine/utils.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 848b311..b5794fb 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -2211,8 +2083,6 @@ find_unfencing_devices(GListPtr candidates, GListPtr matches) - } - - --#define STONITH_DIGEST_TASK "stonith-on" -- - action_t * - pe_fence_op(node_t * node, const char *op, bool optional, const char *reason, pe_working_set_t * data_set) - { --- -1.8.3.1 - - -From 04656184bcd4598a9b9d83b344c6f9f9cafe4df7 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 17 Aug 2017 17:42:55 -0500 -Subject: [PATCH 3/3] Refactor: libpe_status: preserve backward API - compatibility - -There isn't a well-defined line in the pengine libraries as to what's part of -the public API, but be on the safe side ... ---- - include/crm/pengine/status.h | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index fcd5226..b1f4d30 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -329,7 +329,6 @@ struct pe_action_s { - - char *task; - char *uuid; -- char *reason; - char *cancel_task; - - enum pe_action_flags flags; -@@ -374,6 +373,8 @@ struct pe_action_s { - - GListPtr actions_before; /* action_wrapper_t* */ - GListPtr actions_after; /* action_wrapper_t* */ -+ -+ char *reason; - }; - - struct ticket_s { --- -1.8.3.1 - diff --git a/SOURCES/092-remote-fencing.patch b/SOURCES/092-remote-fencing.patch deleted file mode 100644 index 793f434..0000000 --- a/SOURCES/092-remote-fencing.patch +++ /dev/null @@ -1,1082 +0,0 @@ -From a72ef2be2240aac04b784710ae81c4671a8189cd Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Sat, 19 Aug 2017 15:45:27 -0500 -Subject: [PATCH 1/2] Fix: pengine: re-enable unrecoverable remote fencing - -The fence loop referenced by 00fed62 was due to get_remote_node_state() -considering a failed remote connection resource unrecoverable, even if it was -waiting for its reconnect interval to expire before attempting reconnection. ---- - pengine/allocate.c | 43 +++++++++++++++++---------- - pengine/test10/remote-fence-unclean-3.dot | 5 ++++ - pengine/test10/remote-fence-unclean-3.exp | 35 ++++++++++++++++++++-- - pengine/test10/remote-fence-unclean-3.summary | 3 ++ - 4 files changed, 68 insertions(+), 18 deletions(-) - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 01b5b98..7956916 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -905,13 +905,10 @@ probe_resources(pe_working_set_t * data_set) - continue; - - } else if (node->details->online == FALSE && node->details->remote_rsc) { -- // TODO figure out why this results in fence loop -- /* - enum remote_connection_state state = get_remote_node_state(node); - if(state == remote_state_failed) { - pe_fence_node(data_set, node, "the connection is unrecoverable"); - } -- */ - continue; - - } else if(node->details->online == FALSE) { -@@ -1904,22 +1901,38 @@ get_remote_node_state(pe_node_t *node) - * on that remote node until after it starts elsewhere. - */ - if(remote_rsc->next_role == RSC_ROLE_STOPPED || remote_rsc->allocated_to == NULL) { -- /* There is nowhere left to run the connection resource, -- * and the resource is in a failed state (either directly -- * or because it is located on a failed node). -- * -- * If there are any resources known to be active on it (stop), -- * or if there are resources in an unknown state (probe), we -- * must assume the worst and fence it. -- */ -- if (is_set(remote_rsc->flags, pe_rsc_failed)) { -- return remote_state_failed; -- } else if(cluster_node && cluster_node->details->unclean) { -+ /* The connection resource is not going to run anywhere */ -+ -+ if (cluster_node && cluster_node->details->unclean) { -+ /* The remote connection is failed because its resource is on a -+ * failed node and can't be recovered elsewhere, so we must fence. -+ */ - return remote_state_failed; -- } else { -+ } -+ -+ if (is_not_set(remote_rsc->flags, pe_rsc_failed)) { -+ /* Connection resource is cleanly stopped */ - return remote_state_stopped; - } - -+ /* Connection resource is failed */ -+ -+ if ((remote_rsc->next_role == RSC_ROLE_STOPPED) -+ && remote_rsc->remote_reconnect_interval -+ && node->details->remote_was_fenced) { -+ -+ /* We won't know whether the connection is recoverable until the -+ * reconnect interval expires and we reattempt connection. -+ */ -+ return remote_state_unknown; -+ } -+ -+ /* The remote connection is in a failed state. If there are any -+ * resources known to be active on it (stop) or in an unknown state -+ * (probe), we must assume the worst and fence it. -+ */ -+ return remote_state_failed; -+ - } else if (cluster_node == NULL) { - /* Connection is recoverable but not currently running anywhere, see if we can recover it first */ - return remote_state_unknown; -diff --git a/pengine/test10/remote-fence-unclean-3.dot b/pengine/test10/remote-fence-unclean-3.dot -index 14adaef..b32b77e 100644 ---- a/pengine/test10/remote-fence-unclean-3.dot -+++ b/pengine/test10/remote-fence-unclean-3.dot -@@ -1,4 +1,5 @@ - digraph "g" { -+"all_stopped" -> "fence1_start_0 overcloud-controller-0" [ style = bold] - "all_stopped" [ style=bold color="green" fontcolor="orange"] - "fence1_monitor_0 overcloud-controller-0" -> "fence1_start_0 overcloud-controller-0" [ style = bold] - "fence1_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -@@ -11,4 +12,8 @@ digraph "g" { - "fence1_start_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] - "overcloud-novacompute-0_stop_0 overcloud-controller-0" -> "all_stopped" [ style = bold] - "overcloud-novacompute-0_stop_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' overcloud-novacompute-0" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' overcloud-novacompute-0" [ style=bold color="green" fontcolor="black"] -+"stonith_complete" -> "all_stopped" [ style = bold] -+"stonith_complete" [ style=bold color="green" fontcolor="orange"] - } -diff --git a/pengine/test10/remote-fence-unclean-3.exp b/pengine/test10/remote-fence-unclean-3.exp -index 64e5a62..b7bb735 100644 ---- a/pengine/test10/remote-fence-unclean-3.exp -+++ b/pengine/test10/remote-fence-unclean-3.exp -@@ -21,6 +21,9 @@ - - - -+ -+ -+ - - - -@@ -72,6 +75,29 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -80,6 +106,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/remote-fence-unclean-3.summary b/pengine/test10/remote-fence-unclean-3.summary -index ec54d8e..6d15598 100644 ---- a/pengine/test10/remote-fence-unclean-3.summary -+++ b/pengine/test10/remote-fence-unclean-3.summary -@@ -34,6 +34,7 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bund - openstack-cinder-backup-docker-0 (ocf::heartbeat:docker): Started overcloud-controller-1 - - Transition Summary: -+ * Fence (reboot) overcloud-novacompute-0 'the connection is unrecoverable' - * Start fence1 (overcloud-controller-0) - * Stop overcloud-novacompute-0 (overcloud-controller-0) - -@@ -42,6 +43,8 @@ Executing cluster transition: - * Resource action: fence1 monitor on overcloud-controller-1 - * Resource action: fence1 monitor on overcloud-controller-0 - * Resource action: overcloud-novacompute-0 stop on overcloud-controller-0 -+ * Fencing overcloud-novacompute-0 (reboot) -+ * Pseudo action: stonith_complete - * Pseudo action: all_stopped - * Resource action: fence1 start on overcloud-controller-0 - * Resource action: fence1 monitor=60000 on overcloud-controller-0 --- -1.8.3.1 - - -From c700136f437ca74d3981a419dc07bbf9a7f692fb Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 21 Aug 2017 15:23:04 -0500 -Subject: [PATCH 2/2] Test: pengine: add regression test for remote connect - interval wait - ---- - pengine/regression.sh | 1 + - pengine/test10/remote-reconnect-delay.dot | 9 + - pengine/test10/remote-reconnect-delay.exp | 49 +++ - pengine/test10/remote-reconnect-delay.scores | 207 +++++++++++ - pengine/test10/remote-reconnect-delay.summary | 66 ++++ - pengine/test10/remote-reconnect-delay.xml | 504 ++++++++++++++++++++++++++ - 6 files changed, 836 insertions(+) - create mode 100644 pengine/test10/remote-reconnect-delay.dot - create mode 100644 pengine/test10/remote-reconnect-delay.exp - create mode 100644 pengine/test10/remote-reconnect-delay.scores - create mode 100644 pengine/test10/remote-reconnect-delay.summary - create mode 100644 pengine/test10/remote-reconnect-delay.xml - -diff --git a/pengine/regression.sh b/pengine/regression.sh -index d1a8a3f..7dc3a04 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -853,6 +853,7 @@ do_test remote-recover-connection "Optimistically recovery of only the connectio - do_test remote-recover-all "Fencing when the connection has no home" - do_test remote-recover-no-resources "Fencing when the connection has no home and no active resources" - do_test remote-recover-unknown "Fencing when the connection has no home and the remote has no operation history" -+do_test remote-reconnect-delay "Waiting for remote reconnect interval to expire" - - echo "" - do_test resource-discovery "Exercises resource-discovery location constraint option." -diff --git a/pengine/test10/remote-reconnect-delay.dot b/pengine/test10/remote-reconnect-delay.dot -new file mode 100644 -index 0000000..42c2cef ---- /dev/null -+++ b/pengine/test10/remote-reconnect-delay.dot -@@ -0,0 +1,9 @@ -+digraph "g" { -+"Fencing_monitor_120000 rhel7-2" [ style=bold color="green" fontcolor="black"] -+"Fencing_start_0 rhel7-2" -> "Fencing_monitor_120000 rhel7-2" [ style = bold] -+"Fencing_start_0 rhel7-2" [ style=bold color="green" fontcolor="black"] -+"Fencing_stop_0 rhel7-2" -> "Fencing_start_0 rhel7-2" [ style = bold] -+"Fencing_stop_0 rhel7-2" -> "all_stopped" [ style = bold] -+"Fencing_stop_0 rhel7-2" [ style=bold color="green" fontcolor="black"] -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+} -diff --git a/pengine/test10/remote-reconnect-delay.exp b/pengine/test10/remote-reconnect-delay.exp -new file mode 100644 -index 0000000..fc616c2 ---- /dev/null -+++ b/pengine/test10/remote-reconnect-delay.exp -@@ -0,0 +1,49 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/remote-reconnect-delay.scores b/pengine/test10/remote-reconnect-delay.scores -new file mode 100644 -index 0000000..411af28 ---- /dev/null -+++ b/pengine/test10/remote-reconnect-delay.scores -@@ -0,0 +1,207 @@ -+Allocation scores: -+Using the original execution date of: 2017-08-21 17:12:54Z -+clone_color: Connectivity allocation score on remote-rhel7-3: 0 -+clone_color: Connectivity allocation score on rhel7-1: 0 -+clone_color: Connectivity allocation score on rhel7-2: 0 -+clone_color: Connectivity allocation score on rhel7-4: 0 -+clone_color: Connectivity allocation score on rhel7-5: 0 -+clone_color: master-1 allocation score on remote-rhel7-3: -INFINITY -+clone_color: master-1 allocation score on rhel7-1: 0 -+clone_color: master-1 allocation score on rhel7-2: 0 -+clone_color: master-1 allocation score on rhel7-4: 0 -+clone_color: master-1 allocation score on rhel7-5: 0 -+clone_color: ping-1:0 allocation score on remote-rhel7-3: 0 -+clone_color: ping-1:0 allocation score on rhel7-1: 1 -+clone_color: ping-1:0 allocation score on rhel7-2: 0 -+clone_color: ping-1:0 allocation score on rhel7-4: 0 -+clone_color: ping-1:0 allocation score on rhel7-5: 0 -+clone_color: ping-1:1 allocation score on remote-rhel7-3: 0 -+clone_color: ping-1:1 allocation score on rhel7-1: 0 -+clone_color: ping-1:1 allocation score on rhel7-2: 1 -+clone_color: ping-1:1 allocation score on rhel7-4: 0 -+clone_color: ping-1:1 allocation score on rhel7-5: 0 -+clone_color: ping-1:2 allocation score on remote-rhel7-3: 0 -+clone_color: ping-1:2 allocation score on rhel7-1: 0 -+clone_color: ping-1:2 allocation score on rhel7-2: 0 -+clone_color: ping-1:2 allocation score on rhel7-4: 1 -+clone_color: ping-1:2 allocation score on rhel7-5: 0 -+clone_color: ping-1:3 allocation score on remote-rhel7-3: 0 -+clone_color: ping-1:3 allocation score on rhel7-1: 0 -+clone_color: ping-1:3 allocation score on rhel7-2: 0 -+clone_color: ping-1:3 allocation score on rhel7-4: 0 -+clone_color: ping-1:3 allocation score on rhel7-5: 1 -+clone_color: ping-1:4 allocation score on remote-rhel7-3: 0 -+clone_color: ping-1:4 allocation score on rhel7-1: 0 -+clone_color: ping-1:4 allocation score on rhel7-2: 0 -+clone_color: ping-1:4 allocation score on rhel7-4: 0 -+clone_color: ping-1:4 allocation score on rhel7-5: 0 -+clone_color: stateful-1:0 allocation score on remote-rhel7-3: -INFINITY -+clone_color: stateful-1:0 allocation score on rhel7-1: 6 -+clone_color: stateful-1:0 allocation score on rhel7-2: 0 -+clone_color: stateful-1:0 allocation score on rhel7-4: 0 -+clone_color: stateful-1:0 allocation score on rhel7-5: 0 -+clone_color: stateful-1:1 allocation score on remote-rhel7-3: -INFINITY -+clone_color: stateful-1:1 allocation score on rhel7-1: 0 -+clone_color: stateful-1:1 allocation score on rhel7-2: 11 -+clone_color: stateful-1:1 allocation score on rhel7-4: 0 -+clone_color: stateful-1:1 allocation score on rhel7-5: 0 -+clone_color: stateful-1:2 allocation score on remote-rhel7-3: -INFINITY -+clone_color: stateful-1:2 allocation score on rhel7-1: 0 -+clone_color: stateful-1:2 allocation score on rhel7-2: 0 -+clone_color: stateful-1:2 allocation score on rhel7-4: 6 -+clone_color: stateful-1:2 allocation score on rhel7-5: 0 -+clone_color: stateful-1:3 allocation score on remote-rhel7-3: -INFINITY -+clone_color: stateful-1:3 allocation score on rhel7-1: 0 -+clone_color: stateful-1:3 allocation score on rhel7-2: 0 -+clone_color: stateful-1:3 allocation score on rhel7-4: 0 -+clone_color: stateful-1:3 allocation score on rhel7-5: 6 -+clone_color: stateful-1:4 allocation score on remote-rhel7-3: -INFINITY -+clone_color: stateful-1:4 allocation score on rhel7-1: 0 -+clone_color: stateful-1:4 allocation score on rhel7-2: 0 -+clone_color: stateful-1:4 allocation score on rhel7-4: 0 -+clone_color: stateful-1:4 allocation score on rhel7-5: 0 -+group_color: group-1 allocation score on remote-rhel7-3: 0 -+group_color: group-1 allocation score on rhel7-1: 0 -+group_color: group-1 allocation score on rhel7-2: 0 -+group_color: group-1 allocation score on rhel7-4: 0 -+group_color: group-1 allocation score on rhel7-5: 0 -+group_color: petulant allocation score on remote-rhel7-3: 0 -+group_color: petulant allocation score on rhel7-1: 0 -+group_color: petulant allocation score on rhel7-2: 0 -+group_color: petulant allocation score on rhel7-4: 0 -+group_color: petulant allocation score on rhel7-5: 0 -+group_color: r192.168.122.207 allocation score on remote-rhel7-3: 0 -+group_color: r192.168.122.207 allocation score on rhel7-1: 0 -+group_color: r192.168.122.207 allocation score on rhel7-2: 0 -+group_color: r192.168.122.207 allocation score on rhel7-4: 0 -+group_color: r192.168.122.207 allocation score on rhel7-5: 0 -+group_color: r192.168.122.208 allocation score on remote-rhel7-3: 0 -+group_color: r192.168.122.208 allocation score on rhel7-1: 0 -+group_color: r192.168.122.208 allocation score on rhel7-2: 0 -+group_color: r192.168.122.208 allocation score on rhel7-4: 0 -+group_color: r192.168.122.208 allocation score on rhel7-5: 0 -+native_color: Fencing allocation score on remote-rhel7-3: -INFINITY -+native_color: Fencing allocation score on rhel7-1: 0 -+native_color: Fencing allocation score on rhel7-2: 0 -+native_color: Fencing allocation score on rhel7-4: 0 -+native_color: Fencing allocation score on rhel7-5: 0 -+native_color: FencingFail allocation score on remote-rhel7-3: -INFINITY -+native_color: FencingFail allocation score on rhel7-1: 0 -+native_color: FencingFail allocation score on rhel7-2: 0 -+native_color: FencingFail allocation score on rhel7-4: 0 -+native_color: FencingFail allocation score on rhel7-5: 0 -+native_color: lsb-dummy allocation score on remote-rhel7-3: -INFINITY -+native_color: lsb-dummy allocation score on rhel7-1: -INFINITY -+native_color: lsb-dummy allocation score on rhel7-2: 0 -+native_color: lsb-dummy allocation score on rhel7-4: -INFINITY -+native_color: lsb-dummy allocation score on rhel7-5: -INFINITY -+native_color: migrator allocation score on remote-rhel7-3: 0 -+native_color: migrator allocation score on rhel7-1: 0 -+native_color: migrator allocation score on rhel7-2: 0 -+native_color: migrator allocation score on rhel7-4: 0 -+native_color: migrator allocation score on rhel7-5: 1 -+native_color: petulant allocation score on remote-rhel7-3: -INFINITY -+native_color: petulant allocation score on rhel7-1: -INFINITY -+native_color: petulant allocation score on rhel7-2: 0 -+native_color: petulant allocation score on rhel7-4: -INFINITY -+native_color: petulant allocation score on rhel7-5: -INFINITY -+native_color: ping-1:0 allocation score on remote-rhel7-3: -INFINITY -+native_color: ping-1:0 allocation score on rhel7-1: 1 -+native_color: ping-1:0 allocation score on rhel7-2: 0 -+native_color: ping-1:0 allocation score on rhel7-4: 0 -+native_color: ping-1:0 allocation score on rhel7-5: 0 -+native_color: ping-1:1 allocation score on remote-rhel7-3: -INFINITY -+native_color: ping-1:1 allocation score on rhel7-1: -INFINITY -+native_color: ping-1:1 allocation score on rhel7-2: 1 -+native_color: ping-1:1 allocation score on rhel7-4: 0 -+native_color: ping-1:1 allocation score on rhel7-5: 0 -+native_color: ping-1:2 allocation score on remote-rhel7-3: -INFINITY -+native_color: ping-1:2 allocation score on rhel7-1: -INFINITY -+native_color: ping-1:2 allocation score on rhel7-2: -INFINITY -+native_color: ping-1:2 allocation score on rhel7-4: 1 -+native_color: ping-1:2 allocation score on rhel7-5: 0 -+native_color: ping-1:3 allocation score on remote-rhel7-3: -INFINITY -+native_color: ping-1:3 allocation score on rhel7-1: -INFINITY -+native_color: ping-1:3 allocation score on rhel7-2: -INFINITY -+native_color: ping-1:3 allocation score on rhel7-4: -INFINITY -+native_color: ping-1:3 allocation score on rhel7-5: 1 -+native_color: ping-1:4 allocation score on remote-rhel7-3: -INFINITY -+native_color: ping-1:4 allocation score on rhel7-1: -INFINITY -+native_color: ping-1:4 allocation score on rhel7-2: -INFINITY -+native_color: ping-1:4 allocation score on rhel7-4: -INFINITY -+native_color: ping-1:4 allocation score on rhel7-5: -INFINITY -+native_color: r192.168.122.207 allocation score on remote-rhel7-3: -INFINITY -+native_color: r192.168.122.207 allocation score on rhel7-1: -INFINITY -+native_color: r192.168.122.207 allocation score on rhel7-2: 11 -+native_color: r192.168.122.207 allocation score on rhel7-4: -INFINITY -+native_color: r192.168.122.207 allocation score on rhel7-5: -INFINITY -+native_color: r192.168.122.208 allocation score on remote-rhel7-3: -INFINITY -+native_color: r192.168.122.208 allocation score on rhel7-1: -INFINITY -+native_color: r192.168.122.208 allocation score on rhel7-2: 0 -+native_color: r192.168.122.208 allocation score on rhel7-4: -INFINITY -+native_color: r192.168.122.208 allocation score on rhel7-5: -INFINITY -+native_color: remote-rhel7-3 allocation score on remote-rhel7-3: -INFINITY -+native_color: remote-rhel7-3 allocation score on rhel7-1: -INFINITY -+native_color: remote-rhel7-3 allocation score on rhel7-2: -INFINITY -+native_color: remote-rhel7-3 allocation score on rhel7-4: -INFINITY -+native_color: remote-rhel7-3 allocation score on rhel7-5: -INFINITY -+native_color: remote-rsc allocation score on remote-rhel7-3: INFINITY -+native_color: remote-rsc allocation score on rhel7-1: 0 -+native_color: remote-rsc allocation score on rhel7-2: 0 -+native_color: remote-rsc allocation score on rhel7-4: 0 -+native_color: remote-rsc allocation score on rhel7-5: 0 -+native_color: rsc_rhel7-1 allocation score on remote-rhel7-3: 0 -+native_color: rsc_rhel7-1 allocation score on rhel7-1: 100 -+native_color: rsc_rhel7-1 allocation score on rhel7-2: 0 -+native_color: rsc_rhel7-1 allocation score on rhel7-4: 0 -+native_color: rsc_rhel7-1 allocation score on rhel7-5: 0 -+native_color: rsc_rhel7-2 allocation score on remote-rhel7-3: 0 -+native_color: rsc_rhel7-2 allocation score on rhel7-1: 0 -+native_color: rsc_rhel7-2 allocation score on rhel7-2: 100 -+native_color: rsc_rhel7-2 allocation score on rhel7-4: 0 -+native_color: rsc_rhel7-2 allocation score on rhel7-5: 0 -+native_color: rsc_rhel7-3 allocation score on remote-rhel7-3: 0 -+native_color: rsc_rhel7-3 allocation score on rhel7-1: 0 -+native_color: rsc_rhel7-3 allocation score on rhel7-2: 0 -+native_color: rsc_rhel7-3 allocation score on rhel7-4: 0 -+native_color: rsc_rhel7-3 allocation score on rhel7-5: 0 -+native_color: rsc_rhel7-4 allocation score on remote-rhel7-3: 0 -+native_color: rsc_rhel7-4 allocation score on rhel7-1: 0 -+native_color: rsc_rhel7-4 allocation score on rhel7-2: 0 -+native_color: rsc_rhel7-4 allocation score on rhel7-4: 100 -+native_color: rsc_rhel7-4 allocation score on rhel7-5: 0 -+native_color: rsc_rhel7-5 allocation score on remote-rhel7-3: 0 -+native_color: rsc_rhel7-5 allocation score on rhel7-1: 0 -+native_color: rsc_rhel7-5 allocation score on rhel7-2: 0 -+native_color: rsc_rhel7-5 allocation score on rhel7-4: 0 -+native_color: rsc_rhel7-5 allocation score on rhel7-5: 100 -+native_color: stateful-1:0 allocation score on remote-rhel7-3: -INFINITY -+native_color: stateful-1:0 allocation score on rhel7-1: 6 -+native_color: stateful-1:0 allocation score on rhel7-2: -INFINITY -+native_color: stateful-1:0 allocation score on rhel7-4: 0 -+native_color: stateful-1:0 allocation score on rhel7-5: 0 -+native_color: stateful-1:1 allocation score on remote-rhel7-3: -INFINITY -+native_color: stateful-1:1 allocation score on rhel7-1: 0 -+native_color: stateful-1:1 allocation score on rhel7-2: 11 -+native_color: stateful-1:1 allocation score on rhel7-4: 0 -+native_color: stateful-1:1 allocation score on rhel7-5: 0 -+native_color: stateful-1:2 allocation score on remote-rhel7-3: -INFINITY -+native_color: stateful-1:2 allocation score on rhel7-1: -INFINITY -+native_color: stateful-1:2 allocation score on rhel7-2: -INFINITY -+native_color: stateful-1:2 allocation score on rhel7-4: 6 -+native_color: stateful-1:2 allocation score on rhel7-5: 0 -+native_color: stateful-1:3 allocation score on remote-rhel7-3: -INFINITY -+native_color: stateful-1:3 allocation score on rhel7-1: -INFINITY -+native_color: stateful-1:3 allocation score on rhel7-2: -INFINITY -+native_color: stateful-1:3 allocation score on rhel7-4: -INFINITY -+native_color: stateful-1:3 allocation score on rhel7-5: 6 -+native_color: stateful-1:4 allocation score on remote-rhel7-3: -INFINITY -+native_color: stateful-1:4 allocation score on rhel7-1: -INFINITY -+native_color: stateful-1:4 allocation score on rhel7-2: -INFINITY -+native_color: stateful-1:4 allocation score on rhel7-4: -INFINITY -+native_color: stateful-1:4 allocation score on rhel7-5: -INFINITY -+stateful-1:0 promotion score on rhel7-1: 5 -+stateful-1:1 promotion score on rhel7-2: 10 -+stateful-1:2 promotion score on rhel7-4: 5 -+stateful-1:3 promotion score on rhel7-5: 5 -+stateful-1:4 promotion score on none: 0 -diff --git a/pengine/test10/remote-reconnect-delay.summary b/pengine/test10/remote-reconnect-delay.summary -new file mode 100644 -index 0000000..ea11483 ---- /dev/null -+++ b/pengine/test10/remote-reconnect-delay.summary -@@ -0,0 +1,66 @@ -+Using the original execution date of: 2017-08-21 17:12:54Z -+ -+Current cluster status: -+Online: [ rhel7-1 rhel7-2 rhel7-4 rhel7-5 ] -+RemoteOFFLINE: [ remote-rhel7-3 ] -+ -+ Fencing (stonith:fence_xvm): Started rhel7-2 -+ FencingFail (stonith:fence_dummy): Started rhel7-4 -+ rsc_rhel7-1 (ocf::heartbeat:IPaddr2): Started rhel7-1 -+ rsc_rhel7-2 (ocf::heartbeat:IPaddr2): Started rhel7-2 -+ rsc_rhel7-3 (ocf::heartbeat:IPaddr2): Started rhel7-5 -+ rsc_rhel7-4 (ocf::heartbeat:IPaddr2): Started rhel7-4 -+ rsc_rhel7-5 (ocf::heartbeat:IPaddr2): Started rhel7-5 -+ migrator (ocf::pacemaker:Dummy): Started rhel7-5 -+ Clone Set: Connectivity [ping-1] -+ Started: [ rhel7-1 rhel7-2 rhel7-4 rhel7-5 ] -+ Stopped: [ remote-rhel7-3 ] -+ Master/Slave Set: master-1 [stateful-1] -+ Masters: [ rhel7-2 ] -+ Slaves: [ rhel7-1 rhel7-4 rhel7-5 ] -+ Stopped: [ remote-rhel7-3 ] -+ Resource Group: group-1 -+ r192.168.122.207 (ocf::heartbeat:IPaddr2): Started rhel7-2 -+ petulant (service:DummySD): Started rhel7-2 -+ r192.168.122.208 (ocf::heartbeat:IPaddr2): Started rhel7-2 -+ lsb-dummy (lsb:/usr/share/pacemaker/tests/cts/LSBDummy): Started rhel7-2 -+ remote-rhel7-3 (ocf::pacemaker:remote): FAILED -+ remote-rsc (ocf::heartbeat:Dummy): Started rhel7-1 -+ -+Transition Summary: -+ * Restart Fencing ( rhel7-2 ) -+ -+Executing cluster transition: -+ * Resource action: Fencing stop on rhel7-2 -+ * Resource action: Fencing start on rhel7-2 -+ * Resource action: Fencing monitor=120000 on rhel7-2 -+ * Pseudo action: all_stopped -+Using the original execution date of: 2017-08-21 17:12:54Z -+ -+Revised cluster status: -+Online: [ rhel7-1 rhel7-2 rhel7-4 rhel7-5 ] -+RemoteOFFLINE: [ remote-rhel7-3 ] -+ -+ Fencing (stonith:fence_xvm): Started rhel7-2 -+ FencingFail (stonith:fence_dummy): Started rhel7-4 -+ rsc_rhel7-1 (ocf::heartbeat:IPaddr2): Started rhel7-1 -+ rsc_rhel7-2 (ocf::heartbeat:IPaddr2): Started rhel7-2 -+ rsc_rhel7-3 (ocf::heartbeat:IPaddr2): Started rhel7-5 -+ rsc_rhel7-4 (ocf::heartbeat:IPaddr2): Started rhel7-4 -+ rsc_rhel7-5 (ocf::heartbeat:IPaddr2): Started rhel7-5 -+ migrator (ocf::pacemaker:Dummy): Started rhel7-5 -+ Clone Set: Connectivity [ping-1] -+ Started: [ rhel7-1 rhel7-2 rhel7-4 rhel7-5 ] -+ Stopped: [ remote-rhel7-3 ] -+ Master/Slave Set: master-1 [stateful-1] -+ Masters: [ rhel7-2 ] -+ Slaves: [ rhel7-1 rhel7-4 rhel7-5 ] -+ Stopped: [ remote-rhel7-3 ] -+ Resource Group: group-1 -+ r192.168.122.207 (ocf::heartbeat:IPaddr2): Started rhel7-2 -+ petulant (service:DummySD): Started rhel7-2 -+ r192.168.122.208 (ocf::heartbeat:IPaddr2): Started rhel7-2 -+ lsb-dummy (lsb:/usr/share/pacemaker/tests/cts/LSBDummy): Started rhel7-2 -+ remote-rhel7-3 (ocf::pacemaker:remote): FAILED -+ remote-rsc (ocf::heartbeat:Dummy): Started rhel7-1 -+ -diff --git a/pengine/test10/remote-reconnect-delay.xml b/pengine/test10/remote-reconnect-delay.xml -new file mode 100644 -index 0000000..e9ed3e6 ---- /dev/null -+++ b/pengine/test10/remote-reconnect-delay.xml -@@ -0,0 +1,504 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.8.3.1 - diff --git a/SOURCES/093-bundle-fixes.patch b/SOURCES/093-bundle-fixes.patch deleted file mode 100644 index 2ca58d6..0000000 --- a/SOURCES/093-bundle-fixes.patch +++ /dev/null @@ -1,29100 +0,0 @@ -From cf34f4c950704f5ac05ed9553b3b900ea33e1190 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 17 Aug 2017 11:48:17 +1000 -Subject: [PATCH 01/21] PE/attrd: Allow bundle resources to read/write - attributes based on the physical host rather than the container name - ---- - include/crm/msg_xml.h | 1 + - include/crm/pengine/internal.h | 2 + - include/crm_internal.h | 3 ++ - lib/pengine/common.c | 48 ++++++++++++++++++++++ - lib/pengine/container.c | 5 ++- - lib/pengine/unpack.c | 22 +++++----- - lib/pengine/utils.c | 4 +- - lib/pengine/variant.h | 1 + - pengine/allocate.c | 3 +- - pengine/constraints.c | 8 ++-- - pengine/graph.c | 39 ++++++++++++++++++ - pengine/master.c | 16 +++----- - pengine/native.c | 16 ++++---- - pengine/test10/bug-cl-5247.exp | 26 ++++++------ - pengine/test10/bug-rh-1097457.exp | 22 +++++----- - pengine/test10/bundle-nested-colocation.exp | 18 ++++----- - pengine/test10/bundle-order-partial-start-2.exp | 20 ++++----- - pengine/test10/bundle-order-partial-start.exp | 20 ++++----- - pengine/test10/bundle-order-partial-stop.exp | 18 ++++----- - pengine/test10/bundle-order-startup-clone-2.exp | 54 ++++++++++++------------- - pengine/test10/bundle-order-startup-clone.exp | 8 ++-- - pengine/test10/bundle-order-startup.exp | 20 ++++----- - pengine/test10/bundle-order-stop-clone.exp | 2 +- - pengine/test10/bundle-order-stop.exp | 18 ++++----- - pengine/test10/guest-node-host-dies.exp | 14 +++---- - pengine/test10/whitebox-asymmetric.exp | 4 +- - pengine/test10/whitebox-fail1.exp | 12 +++--- - pengine/test10/whitebox-fail2.exp | 12 +++--- - pengine/test10/whitebox-fail3.exp | 10 ++--- - pengine/test10/whitebox-imply-stop-on-fence.exp | 6 +-- - pengine/test10/whitebox-move.exp | 12 +++--- - pengine/test10/whitebox-ms-ordering-move.exp | 8 ++-- - pengine/test10/whitebox-ms-ordering.exp | 8 ++-- - pengine/test10/whitebox-nested-group.exp | 12 +++--- - pengine/test10/whitebox-orphan-ms.exp | 8 ++-- - pengine/test10/whitebox-orphaned.exp | 8 ++-- - pengine/test10/whitebox-start.exp | 10 ++--- - pengine/test10/whitebox-stop.exp | 8 ++-- - tools/attrd_updater.c | 30 ++++++++++++++ - tools/crm_mon.c | 2 +- - 40 files changed, 339 insertions(+), 219 deletions(-) - -diff --git a/include/crm/msg_xml.h b/include/crm/msg_xml.h -index 8cf22f3..5209cb1 100644 ---- a/include/crm/msg_xml.h -+++ b/include/crm/msg_xml.h -@@ -194,6 +194,7 @@ - - # define XML_CIB_TAG_RSC_TEMPLATE "template" - -+# define XML_RSC_ATTR_TARGET "container-attribute-target" - # define XML_RSC_ATTR_ISOLATION_INSTANCE "isolation-instance" - # define XML_RSC_ATTR_ISOLATION_WRAPPER "isolation-wrapper" - # define XML_RSC_ATTR_ISOLATION_HOST "isolation-host" -diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h -index 5db90aa..d91f54a 100644 ---- a/include/crm/pengine/internal.h -+++ b/include/crm/pengine/internal.h -@@ -298,5 +298,7 @@ bool remote_id_conflict(const char *remote_name, pe_working_set_t *data); - void common_print(resource_t * rsc, const char *pre_text, const char *name, node_t *node, long options, void *print_data); - resource_t *find_container_child(const char *stem, resource_t * rsc, node_t *node); - bool fix_remote_addr(resource_t * rsc); -+const char *node_attribute_calculated(pe_node_t *node, const char *name, resource_t *rsc); -+const char *node_attribute_raw(pe_node_t *node, const char *name); - - #endif -diff --git a/include/crm_internal.h b/include/crm_internal.h -index acfca07..e1b25ff 100644 ---- a/include/crm_internal.h -+++ b/include/crm_internal.h -@@ -289,6 +289,9 @@ long crm_read_pidfile(const char *filename); - # define ATTRD_OP_SYNC "sync" - # define ATTRD_OP_SYNC_RESPONSE "sync-response" - -+# define PCMK_ENV_PHYSICAL_HOST "physical_host" -+ -+ - # if SUPPORT_COROSYNC - # if CS_USES_LIBQB - # include -diff --git a/lib/pengine/common.c b/lib/pengine/common.c -index 446b7f0..0e21aaa 100644 ---- a/lib/pengine/common.c -+++ b/lib/pengine/common.c -@@ -431,3 +431,51 @@ add_hash_param(GHashTable * hash, const char *name, const char *value) - g_hash_table_insert(hash, strdup(name), strdup(value)); - } - } -+ -+const char * -+node_attribute_calculated(pe_node_t *node, const char *name, resource_t *rsc) -+{ -+ const char *source; -+ -+ if(node == NULL) { -+ return NULL; -+ -+ } else if(rsc == NULL) { -+ return g_hash_table_lookup(node->details->attrs, name); -+ } -+ -+ source = g_hash_table_lookup(rsc->meta, XML_RSC_ATTR_TARGET); -+ if(source == NULL || safe_str_eq("host", source) == FALSE) { -+ return g_hash_table_lookup(node->details->attrs, name); -+ } -+ -+ /* Use attributes set for the containers location -+ * instead of for the container itself -+ * -+ * Useful when the container is using the host's local -+ * storage -+ */ -+ -+ CRM_ASSERT(node->details->remote_rsc); -+ CRM_ASSERT(node->details->remote_rsc->container); -+ -+ if(node->details->remote_rsc->container->running_on) { -+ pe_node_t *host = node->details->remote_rsc->container->running_on->data; -+ pe_rsc_trace(rsc, "%s: Looking for %s on the container host %s", rsc->id, name, host->details->uname); -+ return g_hash_table_lookup(host->details->attrs, name); -+ } -+ -+ pe_rsc_trace(rsc, "%s: Not looking for %s on the container host: %s is inactive", -+ rsc->id, name, node->details->remote_rsc->container->id); -+ return NULL; -+} -+ -+const char * -+node_attribute_raw(pe_node_t *node, const char *name) -+{ -+ if(node == NULL) { -+ return NULL; -+ } -+ return g_hash_table_lookup(node->details->attrs, name); -+} -+ -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 118e716..53965cf 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -764,8 +764,12 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - - offset += allocate_ip(container_data, tuple, buffer+offset, max-offset); - container_data->tuples = g_list_append(container_data->tuples, tuple); -+ container_data->attribute_target = g_hash_table_lookup(tuple->child->meta, XML_RSC_ATTR_TARGET); - } - container_data->docker_host_options = buffer; -+ if(container_data->attribute_target) { -+ g_hash_table_replace(rsc->meta, strdup(XML_RSC_ATTR_TARGET), strdup(container_data->attribute_target)); -+ } - - } else { - // Just a naked container, no pacemaker-remote -@@ -782,7 +786,6 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - container_data->docker_host_options = buffer; - } - -- - for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - // TODO: Remove from list if create_container() returns TRUE -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 0790148..6e0651e 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -1070,7 +1070,7 @@ unpack_handle_remote_attrs(node_t *this_node, xmlNode *state, pe_working_set_t * - attrs = find_xml_node(state, XML_TAG_TRANSIENT_NODEATTRS, FALSE); - add_node_attrs(attrs, this_node, TRUE, data_set); - -- shutdown = g_hash_table_lookup(this_node->details->attrs, XML_CIB_ATTR_SHUTDOWN); -+ shutdown = node_attribute_raw(this_node, XML_CIB_ATTR_SHUTDOWN); - if (shutdown != NULL && safe_str_neq("0", shutdown)) { - crm_info("Node %s is shutting down", this_node->details->uname); - this_node->details->shutdown = TRUE; -@@ -1079,18 +1079,18 @@ unpack_handle_remote_attrs(node_t *this_node, xmlNode *state, pe_working_set_t * - } - } - -- if (crm_is_true(g_hash_table_lookup(this_node->details->attrs, "standby"))) { -+ if (crm_is_true(node_attribute_raw(this_node, "standby"))) { - crm_info("Node %s is in standby-mode", this_node->details->uname); - this_node->details->standby = TRUE; - } - -- if (crm_is_true(g_hash_table_lookup(this_node->details->attrs, "maintenance")) || -+ if (crm_is_true(node_attribute_raw(this_node, "maintenance")) || - (rsc && !is_set(rsc->flags, pe_rsc_managed))) { - crm_info("Node %s is in maintenance-mode", this_node->details->uname); - this_node->details->maintenance = TRUE; - } - -- resource_discovery_enabled = g_hash_table_lookup(this_node->details->attrs, XML_NODE_ATTR_RSC_DISCOVERY); -+ resource_discovery_enabled = node_attribute_raw(this_node, XML_NODE_ATTR_RSC_DISCOVERY); - if (resource_discovery_enabled && !crm_is_true(resource_discovery_enabled)) { - if (is_baremetal_remote_node(this_node) && is_not_set(data_set->flags, pe_flag_stonith_enabled)) { - crm_warn("ignoring %s attribute on baremetal remote node %s, disabling resource discovery requires stonith to be enabled.", -@@ -1246,17 +1246,17 @@ unpack_status(xmlNode * status, pe_working_set_t * data_set) - attrs = find_xml_node(state, XML_TAG_TRANSIENT_NODEATTRS, FALSE); - add_node_attrs(attrs, this_node, TRUE, data_set); - -- if (crm_is_true(g_hash_table_lookup(this_node->details->attrs, "standby"))) { -+ if (crm_is_true(node_attribute_raw(this_node, "standby"))) { - crm_info("Node %s is in standby-mode", this_node->details->uname); - this_node->details->standby = TRUE; - } - -- if (crm_is_true(g_hash_table_lookup(this_node->details->attrs, "maintenance"))) { -+ if (crm_is_true(node_attribute_raw(this_node, "maintenance"))) { - crm_info("Node %s is in maintenance-mode", this_node->details->uname); - this_node->details->maintenance = TRUE; - } - -- resource_discovery_enabled = g_hash_table_lookup(this_node->details->attrs, XML_NODE_ATTR_RSC_DISCOVERY); -+ resource_discovery_enabled = node_attribute_raw(this_node, XML_NODE_ATTR_RSC_DISCOVERY); - if (resource_discovery_enabled && !crm_is_true(resource_discovery_enabled)) { - crm_warn("ignoring %s attribute on node %s, disabling resource discovery is not allowed on cluster nodes", - XML_NODE_ATTR_RSC_DISCOVERY, this_node->details->uname); -@@ -1342,7 +1342,7 @@ determine_online_status_fencing(pe_working_set_t * data_set, xmlNode * node_stat - const char *is_peer = crm_element_value(node_state, XML_NODE_IS_PEER); - const char *in_cluster = crm_element_value(node_state, XML_NODE_IN_CLUSTER); - const char *exp_state = crm_element_value(node_state, XML_NODE_EXPECTED); -- const char *terminate = g_hash_table_lookup(this_node->details->attrs, "terminate"); -+ const char *terminate = node_attribute_raw(this_node, "terminate"); - - /* - - XML_NODE_IN_CLUSTER ::= true|false -@@ -1516,7 +1516,7 @@ determine_online_status(xmlNode * node_state, node_t * this_node, pe_working_set - - this_node->details->shutdown = FALSE; - this_node->details->expected_up = FALSE; -- shutdown = g_hash_table_lookup(this_node->details->attrs, XML_CIB_ATTR_SHUTDOWN); -+ shutdown = node_attribute_raw(this_node, XML_CIB_ATTR_SHUTDOWN); - - if (shutdown != NULL && safe_str_neq("0", shutdown)) { - this_node->details->shutdown = TRUE; -@@ -3368,8 +3368,8 @@ add_node_attrs(xmlNode * xml_obj, node_t * node, gboolean overwrite, pe_working_ - unpack_instance_attributes(data_set->input, xml_obj, XML_TAG_ATTR_SETS, NULL, - node->details->attrs, NULL, overwrite, data_set->now); - -- if (g_hash_table_lookup(node->details->attrs, "#site-name") == NULL) { -- const char *site_name = g_hash_table_lookup(node->details->attrs, "site-name"); -+ if (node_attribute_raw(node, "#site-name") == NULL) { -+ const char *site_name = node_attribute_raw(node, "site-name"); - - if (site_name) { - /* Prefix '#' to the key */ -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index cb1ed08..c44a1c8 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -1989,10 +1987,8 @@ fencing_action_digest_cmp(resource_t * rsc, node_t * node, pe_working_set_t * da - char *key = generate_op_key(rsc->id, STONITH_DIGEST_TASK, 0); - op_digest_cache_t *data = rsc_action_digest(rsc, STONITH_DIGEST_TASK, key, node, NULL, data_set); - -- const char *digest_all = g_hash_table_lookup(node->details->attrs, -- CRM_ATTR_DIGESTS_ALL); -- const char *digest_secure = g_hash_table_lookup(node->details->attrs, -- CRM_ATTR_DIGESTS_SECURE); -+ const char *digest_all = node_attribute_raw(node, CRM_ATTR_DIGESTS_ALL); -+ const char *digest_secure = node_attribute_raw(node, CRM_ATTR_DIGESTS_SECURE); - - /* No 'reloads' for fencing device changes - * -diff --git a/lib/pengine/variant.h b/lib/pengine/variant.h -index c8fe159..4ceaa6b 100644 ---- a/lib/pengine/variant.h -+++ b/lib/pengine/variant.h -@@ -100,6 +100,7 @@ typedef struct container_variant_data_s { - char *docker_host_options; - char *docker_run_options; - char *docker_run_command; -+ const char *attribute_target; - - resource_t *child; - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 01b5b98..958fb23 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -861,7 +861,6 @@ apply_system_health(pe_working_set_t * data_set) - rsc2node_new(health_strategy, rsc, system_health, NULL, node, data_set); - } - } -- - } - - return TRUE; -@@ -898,7 +897,7 @@ probe_resources(pe_working_set_t * data_set) - - for (GListPtr gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) { - node_t *node = (node_t *) gIter->data; -- const char *probed = g_hash_table_lookup(node->details->attrs, CRM_OP_PROBED); -+ const char *probed = node_attribute_raw(node, CRM_OP_PROBED); - - if (is_container_remote_node(node)) { - /* TODO enable guest node probes once ordered probing is implemented */ -diff --git a/pengine/constraints.c b/pengine/constraints.c -index 77a0152..fdc4186 100644 ---- a/pengine/constraints.c -+++ b/pengine/constraints.c -@@ -957,7 +957,7 @@ unpack_location(xmlNode * xml_obj, pe_working_set_t * data_set) - } - - static int --get_node_score(const char *rule, const char *score, gboolean raw, node_t * node) -+get_node_score(const char *rule, const char *score, gboolean raw, node_t * node, resource_t *rsc) - { - int score_f = 0; - -@@ -968,7 +968,7 @@ get_node_score(const char *rule, const char *score, gboolean raw, node_t * node) - score_f = char2score(score); - - } else { -- const char *attr_score = g_hash_table_lookup(node->details->attrs, score); -+ const char *attr_score = node_attribute_calculated(node, score, rsc); - - if (attr_score == NULL) { - crm_debug("Rule %s: node %s did not have a value for %s", -@@ -1060,7 +1060,7 @@ generate_location_rule(resource_t * rsc, xmlNode * rule_xml, const char *discove - for (gIter = match_L; gIter != NULL; gIter = gIter->next) { - node_t *node = (node_t *) gIter->data; - -- node->weight = get_node_score(rule_id, score, raw_score, node); -+ node->weight = get_node_score(rule_id, score, raw_score, node, rsc); - } - } - -@@ -1073,7 +1073,7 @@ generate_location_rule(resource_t * rsc, xmlNode * rule_xml, const char *discove - crm_trace("Rule %s %s on %s", ID(rule_xml), accept ? "passed" : "failed", - node->details->uname); - -- score_f = get_node_score(rule_id, score, raw_score, node); -+ score_f = get_node_score(rule_id, score, raw_score, node, rsc); - /* if(accept && score_f == -INFINITY) { */ - /* accept = FALSE; */ - /* } */ -diff --git a/pengine/graph.c b/pengine/graph.c -index a446fe5..3c5dc6b 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -1162,6 +1162,45 @@ action2xml(action_t * action, gboolean as_input, pe_working_set_t *data_set) - hash2smartfield((gpointer)"pcmk_external_ip", (gpointer)value, (gpointer)args_xml); - } - -+ if(is_container_remote_node(action->node)) { -+ pe_node_t *host = NULL; -+ enum action_tasks task = text2task(action->task); -+ -+ if(task == action_notify || task == action_notified) { -+ const char *n_task = g_hash_table_lookup(action->meta, "notify_operation"); -+ task = text2task(n_task); -+ } -+ -+ // Differentiate between up and down actions -+ switch (task) { -+ case stop_rsc: -+ case stopped_rsc: -+ case action_demote: -+ case action_demoted: -+ if(action->node->details->remote_rsc->container->running_on) { -+ host = action->node->details->remote_rsc->container->running_on->data; -+ } -+ break; -+ case start_rsc: -+ case started_rsc: -+ case monitor_rsc: -+ case action_promote: -+ case action_promoted: -+ if(action->node->details->remote_rsc->container->allocated_to) { -+ host = action->node->details->remote_rsc->container->allocated_to; -+ } -+ break; -+ default: -+ break; -+ } -+ -+ if(host) { -+ hash2metafield((gpointer)XML_RSC_ATTR_TARGET, -+ (gpointer)g_hash_table_lookup(action->rsc->meta, XML_RSC_ATTR_TARGET), (gpointer)args_xml); -+ hash2metafield((gpointer)PCMK_ENV_PHYSICAL_HOST, (gpointer)host->details->uname, (gpointer)args_xml); -+ } -+ } -+ - } else if (safe_str_eq(action->task, CRM_OP_FENCE) && action->node) { - g_hash_table_foreach(action->node->details->attrs, hash2metafield, args_xml); - } -diff --git a/pengine/master.c b/pengine/master.c -index 8c39f49..2631da8 100644 ---- a/pengine/master.c -+++ b/pengine/master.c -@@ -511,12 +511,7 @@ master_score(resource_t * rsc, node_t * node, int not_set_value) - attr_name = calloc(1, len); - sprintf(attr_name, "master-%s", name); - -- if (node) { -- attr_value = g_hash_table_lookup(node->details->attrs, attr_name); -- pe_rsc_trace(rsc, "%s: %s[%s] = %s", rsc->id, attr_name, node->details->uname, -- crm_str(attr_value)); -- } -- -+ attr_value = node_attribute_calculated(node, attr_name, rsc); - if (attr_value != NULL) { - score = char2score(attr_value); - } -@@ -949,11 +944,11 @@ node_hash_update_one(GHashTable * hash, node_t * other, const char *attr, int sc - } else if (attr == NULL) { - attr = "#" XML_ATTR_UNAME; - } -- -- value = g_hash_table_lookup(other->details->attrs, attr); -+ -+ value = node_attribute_raw(other, attr); - g_hash_table_iter_init(&iter, hash); - while (g_hash_table_iter_next(&iter, NULL, (void **)&node)) { -- const char *tmp = g_hash_table_lookup(node->details->attrs, attr); -+ const char *tmp = node_attribute_raw(node, attr); - - if (safe_str_eq(value, tmp)) { - crm_trace("%s: %d + %d", node->details->uname, node->weight, other->weight); -@@ -993,8 +988,7 @@ master_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocatio - } else if (is_set(rsc_lh->flags, pe_rsc_provisional)) { - GListPtr rhs = NULL; - -- gIter = rsc_rh->children; -- for (; gIter != NULL; gIter = gIter->next) { -+ for (gIter = rsc_rh->children; gIter != NULL; gIter = gIter->next) { - resource_t *child_rsc = (resource_t *) gIter->data; - node_t *chosen = child_rsc->fns->location(child_rsc, NULL, FALSE); - enum rsc_role_e next_role = child_rsc->fns->state(child_rsc, FALSE); -diff --git a/pengine/native.c b/pengine/native.c -index fe7b966..37cf541 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -203,7 +203,7 @@ node_list_attr_score(GHashTable * list, const char *attr, const char *value) - weight = -INFINITY; - } - if (weight > best_score || best_node == NULL) { -- const char *tmp = g_hash_table_lookup(node->details->attrs, attr); -+ const char *tmp = node_attribute_raw(node, attr); - - if (safe_str_eq(value, tmp)) { - best_score = weight; -@@ -238,7 +238,7 @@ node_hash_update(GHashTable * list1, GHashTable * list2, const char *attr, float - CRM_LOG_ASSERT(node != NULL); - if(node == NULL) { continue; }; - -- score = node_list_attr_score(list2, attr, g_hash_table_lookup(node->details->attrs, attr)); -+ score = node_list_attr_score(list2, attr, node_attribute_raw(node, attr)); - new_score = merge_weights(factor * score, node->weight); - - if (factor < 0 && score < 0) { -@@ -1630,8 +1630,8 @@ influence_priority(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * - return; - } - -- lh_value = g_hash_table_lookup(rsc_lh->allocated_to->details->attrs, attribute); -- rh_value = g_hash_table_lookup(rsc_rh->allocated_to->details->attrs, attribute); -+ lh_value = node_attribute_raw(rsc_lh->allocated_to, attribute); -+ rh_value = node_attribute_raw(rsc_rh->allocated_to, attribute); - - if (!safe_str_eq(lh_value, rh_value)) { - if(constraint->score == INFINITY && constraint->role_lh == RSC_ROLE_MASTER) { -@@ -1669,7 +1669,7 @@ colocation_match(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * co - } - - if (rsc_rh->allocated_to) { -- value = g_hash_table_lookup(rsc_rh->allocated_to->details->attrs, attribute); -+ value = node_attribute_raw(rsc_rh->allocated_to, attribute); - do_check = TRUE; - - } else if (constraint->score < 0) { -@@ -1683,7 +1683,7 @@ colocation_match(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * co - - g_hash_table_iter_init(&iter, work); - while (g_hash_table_iter_next(&iter, NULL, (void **)&node)) { -- tmp = g_hash_table_lookup(node->details->attrs, attribute); -+ tmp = node_attribute_raw(node, attribute); - if (do_check && safe_str_eq(tmp, value)) { - if (constraint->score < INFINITY) { - pe_rsc_trace(rsc_lh, "%s: %s.%s += %d", constraint->id, rsc_lh->id, -@@ -2492,7 +2492,7 @@ 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 = g_hash_table_lookup(current->details->attrs, CRM_ATTR_UNFENCED); -+ const char *unfenced = node_attribute_raw(current, CRM_ATTR_UNFENCED); - - order_actions(stop, unfence, pe_order_implies_first); - if (unfenced == NULL || safe_str_eq("0", unfenced)) { -@@ -2515,7 +2515,7 @@ 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 = g_hash_table_lookup(next->details->attrs, CRM_ATTR_UNFENCED); -+ const char *unfenced = node_attribute_raw(next, CRM_ATTR_UNFENCED); - - order_actions(unfence, start, pe_order_implies_then); - -diff --git a/pengine/test10/bug-cl-5247.exp b/pengine/test10/bug-cl-5247.exp -index e7bac9c..2ec83c0 100644 ---- a/pengine/test10/bug-cl-5247.exp -+++ b/pengine/test10/bug-cl-5247.exp -@@ -269,7 +269,7 @@ - - - -- -+ - - - -@@ -282,7 +282,7 @@ - - - -- -+ - - - -@@ -300,7 +300,7 @@ - - - -- -+ - - - -@@ -319,7 +319,7 @@ - - - -- -+ - - - -@@ -332,7 +332,7 @@ - - - -- -+ - - - -@@ -353,7 +353,7 @@ - - - -- -+ - - - -@@ -395,7 +395,7 @@ - - - -- -+ - - - -@@ -413,7 +413,7 @@ - - - -- -+ - - - -@@ -429,7 +429,7 @@ - - - -- -+ - - - -@@ -442,7 +442,7 @@ - - - -- -+ - - - -@@ -455,7 +455,7 @@ - - - -- -+ - - - -@@ -468,7 +468,7 @@ - - - -- -+ - - - -@@ -484,7 +484,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bug-rh-1097457.exp b/pengine/test10/bug-rh-1097457.exp -index bf62647..eb9b225 100644 ---- a/pengine/test10/bug-rh-1097457.exp -+++ b/pengine/test10/bug-rh-1097457.exp -@@ -76,7 +76,7 @@ - - - -- -+ - - - -@@ -92,7 +92,7 @@ - - - -- -+ - - - -@@ -168,7 +168,7 @@ - - - -- -+ - - - -@@ -192,7 +192,7 @@ - - - -- -+ - - - -@@ -211,7 +211,7 @@ - - - -- -+ - - - -@@ -227,7 +227,7 @@ - - - -- -+ - - - -@@ -254,7 +254,7 @@ - - - -- -+ - - - -@@ -270,7 +270,7 @@ - - - -- -+ - - - -@@ -286,7 +286,7 @@ - - - -- -+ - - - -@@ -310,7 +310,7 @@ - - - -- -+ - - - -@@ -326,7 +326,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-nested-colocation.exp b/pengine/test10/bundle-nested-colocation.exp -index c82ee16..916c44b 100644 ---- a/pengine/test10/bundle-nested-colocation.exp -+++ b/pengine/test10/bundle-nested-colocation.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -35,7 +35,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -67,7 +67,7 @@ - - - -- -+ - - - -@@ -86,7 +86,7 @@ - - - -- -+ - - - -@@ -108,7 +108,7 @@ - - - -- -+ - - - -@@ -121,7 +121,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp -index b533469..f600983 100644 ---- a/pengine/test10/bundle-order-partial-start-2.exp -+++ b/pengine/test10/bundle-order-partial-start-2.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -125,7 +125,7 @@ - - - -- -+ - - - -@@ -141,7 +141,7 @@ - - - -- -+ - - - -@@ -157,7 +157,7 @@ - - - -- -+ - - - -@@ -286,7 +286,7 @@ - - - -- -+ - - - -@@ -299,7 +299,7 @@ - - - -- -+ - - - -@@ -312,7 +312,7 @@ - - - -- -+ - - - -@@ -328,7 +328,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp -index 1f8a3e1..d48fccf 100644 ---- a/pengine/test10/bundle-order-partial-start.exp -+++ b/pengine/test10/bundle-order-partial-start.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -125,7 +125,7 @@ - - - -- -+ - - - -@@ -141,7 +141,7 @@ - - - -- -+ - - - -@@ -157,7 +157,7 @@ - - - -- -+ - - - -@@ -267,7 +267,7 @@ - - - -- -+ - - - -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -293,7 +293,7 @@ - - - -- -+ - - - -@@ -309,7 +309,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-stop.exp b/pengine/test10/bundle-order-partial-stop.exp -index 937bc59..1dff657 100644 ---- a/pengine/test10/bundle-order-partial-stop.exp -+++ b/pengine/test10/bundle-order-partial-stop.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -293,7 +293,7 @@ - - - -- -+ - - - -@@ -306,7 +306,7 @@ - - - -- -+ - - - -@@ -319,7 +319,7 @@ - - - -- -+ - - - -@@ -338,7 +338,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone-2.exp b/pengine/test10/bundle-order-startup-clone-2.exp -index c0910a7..7d18d29 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.exp -+++ b/pengine/test10/bundle-order-startup-clone-2.exp -@@ -260,7 +260,7 @@ - - - -- -+ - - - -@@ -276,7 +276,7 @@ - - - -- -+ - - - -@@ -292,7 +292,7 @@ - - - -- -+ - - - -@@ -311,7 +311,7 @@ - - - -- -+ - - - -@@ -327,7 +327,7 @@ - - - -- -+ - - - -@@ -343,7 +343,7 @@ - - - -- -+ - - - -@@ -365,7 +365,7 @@ - - - -- -+ - - - -@@ -381,7 +381,7 @@ - - - -- -+ - - - -@@ -397,7 +397,7 @@ - - - -- -+ - - - -@@ -1010,7 +1010,7 @@ - - - -- -+ - - - -@@ -1023,7 +1023,7 @@ - - - -- -+ - - - -@@ -1036,7 +1036,7 @@ - - - -- -+ - - - -@@ -1049,7 +1049,7 @@ - - - -- -+ - - - -@@ -1074,7 +1074,7 @@ - - - -- -+ - - - -@@ -1096,7 +1096,7 @@ - - - -- -+ - - - -@@ -1115,7 +1115,7 @@ - - - -- -+ - - - -@@ -1128,7 +1128,7 @@ - - - -- -+ - - - -@@ -1141,7 +1141,7 @@ - - - -- -+ - - - -@@ -1154,7 +1154,7 @@ - - - -- -+ - - - -@@ -1179,7 +1179,7 @@ - - - -- -+ - - - -@@ -1204,7 +1204,7 @@ - - - -- -+ - - - -@@ -1226,7 +1226,7 @@ - - - -- -+ - - - -@@ -1239,7 +1239,7 @@ - - - -- -+ - - - -@@ -1252,7 +1252,7 @@ - - - -- -+ - - - -@@ -1265,7 +1265,7 @@ - - - -- -+ - - - -@@ -1290,7 +1290,7 @@ - - - -- -+ - - - -@@ -1315,7 +1315,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone.exp b/pengine/test10/bundle-order-startup-clone.exp -index 197529f..8c8ba6aa 100644 ---- a/pengine/test10/bundle-order-startup-clone.exp -+++ b/pengine/test10/bundle-order-startup-clone.exp -@@ -119,7 +119,7 @@ - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -151,7 +151,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp -index 161c1ae..03b064a 100644 ---- a/pengine/test10/bundle-order-startup.exp -+++ b/pengine/test10/bundle-order-startup.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -35,7 +35,7 @@ - - - -- -+ - - - -@@ -198,7 +198,7 @@ - - - -- -+ - - - -@@ -214,7 +214,7 @@ - - - -- -+ - - - -@@ -230,7 +230,7 @@ - - - -- -+ - - - -@@ -340,7 +340,7 @@ - - - -- -+ - - - -@@ -353,7 +353,7 @@ - - - -- -+ - - - -@@ -372,7 +372,7 @@ - - - -- -+ - - - -@@ -391,7 +391,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-stop-clone.exp b/pengine/test10/bundle-order-stop-clone.exp -index c359e00..e78e235 100644 ---- a/pengine/test10/bundle-order-stop-clone.exp -+++ b/pengine/test10/bundle-order-stop-clone.exp -@@ -173,7 +173,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-stop.exp b/pengine/test10/bundle-order-stop.exp -index 937bc59..1dff657 100644 ---- a/pengine/test10/bundle-order-stop.exp -+++ b/pengine/test10/bundle-order-stop.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -163,7 +163,7 @@ - - - -- -+ - - - -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -293,7 +293,7 @@ - - - -- -+ - - - -@@ -306,7 +306,7 @@ - - - -- -+ - - - -@@ -319,7 +319,7 @@ - - - -- -+ - - - -@@ -338,7 +338,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/guest-node-host-dies.exp b/pengine/test10/guest-node-host-dies.exp -index 235813d..cd8d81a 100644 ---- a/pengine/test10/guest-node-host-dies.exp -+++ b/pengine/test10/guest-node-host-dies.exp -@@ -144,7 +144,7 @@ - - - -- -+ - - - -@@ -172,7 +172,7 @@ - - - -- -+ - - - -@@ -196,7 +196,7 @@ - - - -- -+ - - - -@@ -214,7 +214,7 @@ - - - -- -+ - - - -@@ -230,7 +230,7 @@ - - - -- -+ - - - -@@ -246,7 +246,7 @@ - - - -- -+ - - - -@@ -270,7 +270,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-asymmetric.exp b/pengine/test10/whitebox-asymmetric.exp -index 67d6c76..1178fb6 100644 ---- a/pengine/test10/whitebox-asymmetric.exp -+++ b/pengine/test10/whitebox-asymmetric.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-fail1.exp b/pengine/test10/whitebox-fail1.exp -index 5c4b26c..4cb6136 100644 ---- a/pengine/test10/whitebox-fail1.exp -+++ b/pengine/test10/whitebox-fail1.exp -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -48,7 +48,7 @@ - - - -- -+ - - - -@@ -72,7 +72,7 @@ - - - -- -+ - - - -@@ -142,7 +142,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -179,7 +179,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-fail2.exp b/pengine/test10/whitebox-fail2.exp -index 5c4b26c..4cb6136 100644 ---- a/pengine/test10/whitebox-fail2.exp -+++ b/pengine/test10/whitebox-fail2.exp -@@ -32,7 +32,7 @@ - - - -- -+ - - - -@@ -48,7 +48,7 @@ - - - -- -+ - - - -@@ -72,7 +72,7 @@ - - - -- -+ - - - -@@ -142,7 +142,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -179,7 +179,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-fail3.exp b/pengine/test10/whitebox-fail3.exp -index 95fc289..ec28f12 100644 ---- a/pengine/test10/whitebox-fail3.exp -+++ b/pengine/test10/whitebox-fail3.exp -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -40,7 +40,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -98,7 +98,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.exp b/pengine/test10/whitebox-imply-stop-on-fence.exp -index 9beb51d..6639eb9 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.exp -+++ b/pengine/test10/whitebox-imply-stop-on-fence.exp -@@ -272,7 +272,7 @@ - - - -- -+ - - - -@@ -288,7 +288,7 @@ - - - -- -+ - - - -@@ -309,7 +309,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-move.exp b/pengine/test10/whitebox-move.exp -index ecea360..4461890 100644 ---- a/pengine/test10/whitebox-move.exp -+++ b/pengine/test10/whitebox-move.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -51,7 +51,7 @@ - - - -- -+ - - - -@@ -64,7 +64,7 @@ - - - -- -+ - - - -@@ -130,7 +130,7 @@ - - - -- -+ - - - -@@ -149,7 +149,7 @@ - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-ms-ordering-move.exp b/pengine/test10/whitebox-ms-ordering-move.exp -index 3b5598f..dc5e473 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.exp -+++ b/pengine/test10/whitebox-ms-ordering-move.exp -@@ -29,7 +29,7 @@ - - - -- -+ - - - -@@ -54,7 +54,7 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -83,7 +83,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-ms-ordering.exp b/pengine/test10/whitebox-ms-ordering.exp -index 43cb49a..e5eb99c 100644 ---- a/pengine/test10/whitebox-ms-ordering.exp -+++ b/pengine/test10/whitebox-ms-ordering.exp -@@ -101,7 +101,7 @@ - - - -- -+ - - - -@@ -129,7 +129,7 @@ - - - -- -+ - - - -@@ -223,7 +223,7 @@ - - - -- -+ - - - -@@ -239,7 +239,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-nested-group.exp b/pengine/test10/whitebox-nested-group.exp -index 979a0f5..388c4d4 100644 ---- a/pengine/test10/whitebox-nested-group.exp -+++ b/pengine/test10/whitebox-nested-group.exp -@@ -62,7 +62,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -@@ -248,7 +248,7 @@ - - - -- -+ - - - -@@ -264,7 +264,7 @@ - - - -- -+ - - - -@@ -386,7 +386,7 @@ - - - -- -+ - - - -@@ -402,7 +402,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-orphan-ms.exp b/pengine/test10/whitebox-orphan-ms.exp -index 6df1b8d..ef81317 100644 ---- a/pengine/test10/whitebox-orphan-ms.exp -+++ b/pengine/test10/whitebox-orphan-ms.exp -@@ -135,7 +135,7 @@ - - - -- -+ - - - -@@ -151,7 +151,7 @@ - - - -- -+ - - - -@@ -167,7 +167,7 @@ - - - -- -+ - - - -@@ -176,7 +176,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-orphaned.exp b/pengine/test10/whitebox-orphaned.exp -index 32f8141..334e594 100644 ---- a/pengine/test10/whitebox-orphaned.exp -+++ b/pengine/test10/whitebox-orphaned.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-start.exp b/pengine/test10/whitebox-start.exp -index 11438e9..ccccf60 100644 ---- a/pengine/test10/whitebox-start.exp -+++ b/pengine/test10/whitebox-start.exp -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -70,7 +70,7 @@ - - - -- -+ - - - -@@ -86,7 +86,7 @@ - - - -- -+ - - - -@@ -140,7 +140,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-stop.exp b/pengine/test10/whitebox-stop.exp -index a1aa3ba..354b6d4 100644 ---- a/pengine/test10/whitebox-stop.exp -+++ b/pengine/test10/whitebox-stop.exp -@@ -16,7 +16,7 @@ - - - -- -+ - - - -@@ -52,7 +52,7 @@ - - - -- -+ - - - -@@ -65,7 +65,7 @@ - - - -- -+ - - - -@@ -78,7 +78,7 @@ - - - -- -+ - - - -diff --git a/tools/attrd_updater.c b/tools/attrd_updater.c -index 91bc4b4..33d751b 100644 ---- a/tools/attrd_updater.c -+++ b/tools/attrd_updater.c -@@ -79,6 +79,7 @@ static int do_query(const char *attr_name, const char *attr_node, gboolean query - static int do_update(char command, const char *attr_node, const char *attr_name, - const char *attr_value, const char *attr_section, - const char *attr_set, const char *attr_dampen, int attr_options); -+static const char *get_hostname(const char *name); - - int - main(int argc, char **argv) -@@ -198,6 +199,8 @@ main(int argc, char **argv) - crm_help('?', EX_USAGE); - #endif - } else { -+ -+ attr_node = get_hostname(attr_node); - crm_exit(do_update(command, attr_node, attr_name, attr_value, - attr_section, attr_set, attr_dampen, attr_options)); - } -@@ -351,6 +354,8 @@ do_query(const char *attr_name, const char *attr_node, gboolean query_all) - attr_node = "localhost"; - } - -+ attr_node = get_hostname(attr_node); -+ - /* Build and send attrd request, and get XML reply */ - rc = send_attrd_query(attr_name, attr_node, &reply); - if (rc != pcmk_ok) { -@@ -394,3 +399,28 @@ do_update(char command, const char *attr_node, const char *attr_name, - } - return rc; - } -+ -+static const char * -+get_hostname(const char *name) -+{ -+ if(name != NULL -+ && safe_str_neq(name, "auto") -+ && safe_str_neq(name, "localhost")) { -+ return name; -+ -+ } else { -+ const char *target = getenv(crm_meta_name(XML_RSC_ATTR_TARGET)); -+ const char *host_pyhsical = getenv(crm_meta_name(PCMK_ENV_PHYSICAL_HOST)); -+ const char *host_pcmk = getenv("OCF_RESKEY_" CRM_META "_" XML_LRM_ATTR_TARGET); -+ -+ /* It is important we use the names by which the PE knows us */ -+ if(safe_str_eq(target, "host") && host_pyhsical != NULL) { -+ return host_pyhsical; -+ -+ } else if(host_pcmk) { -+ return host_pcmk; -+ } -+ } -+ -+ return name; -+} -diff --git a/tools/crm_mon.c b/tools/crm_mon.c -index 29fc0e3..cad468e 100644 ---- a/tools/crm_mon.c -+++ b/tools/crm_mon.c -@@ -1726,7 +1726,7 @@ print_node_attribute(gpointer name, gpointer user_data) - const char *value = NULL; - struct mon_attr_data *data = (struct mon_attr_data *) user_data; - -- value = g_hash_table_lookup(data->node->details->attrs, name); -+ value = node_attribute_raw(data->node, name); - - /* Print attribute name and value */ - switch (output_format) { --- -1.8.3.1 - - -From 50e264254fcdf90f5ad0ce429938c15495f99acb Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 24 Aug 2017 14:34:46 +1000 -Subject: [PATCH 02/21] Fix: attrd: Allow values for all nodes to be queried - ---- - tools/attrd_updater.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/tools/attrd_updater.c b/tools/attrd_updater.c -index 33d751b..de75496 100644 ---- a/tools/attrd_updater.c -+++ b/tools/attrd_updater.c -@@ -351,11 +351,11 @@ do_query(const char *attr_name, const char *attr_node, gboolean query_all) - attr_node = NULL; - } else if (attr_node == NULL) { - crm_debug("User did not specify node for query, using localhost"); -- attr_node = "localhost"; -+ attr_node = get_hostname(attr_node); -+ } else { -+ attr_node = get_hostname(attr_node); - } - -- attr_node = get_hostname(attr_node); -- - /* Build and send attrd request, and get XML reply */ - rc = send_attrd_query(attr_name, attr_node, &reply); - if (rc != pcmk_ok) { --- -1.8.3.1 - - -From 67ebfc43eabf77e72d784084e23d3031bfc19710 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 24 Aug 2017 14:35:29 +1000 -Subject: [PATCH 03/21] Fix: PE: Correctly interpret colocation with bundles - ---- - pengine/graph.c | 17 ++++++++++++----- - 1 file changed, 12 insertions(+), 5 deletions(-) - -diff --git a/pengine/graph.c b/pengine/graph.c -index 3c5dc6b..990d8b8 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -413,9 +413,10 @@ graph_update_action(action_t * first, action_t * then, node_t * node, - } - - static void --mark_start_blocked(resource_t *rsc) -+mark_start_blocked(resource_t *rsc, resource_t *reason) - { - GListPtr gIter = rsc->actions; -+ char *reason_text = crm_strdup_printf("colocation with %s", reason->id); - - for (; gIter != NULL; gIter = gIter->next) { - action_t *action = (action_t *) gIter->data; -@@ -424,11 +425,12 @@ mark_start_blocked(resource_t *rsc) - continue; - } - if (is_set(action->flags, pe_action_runnable)) { -- clear_bit(action->flags, pe_action_runnable); -+ pe_action_set_flag_reason(__FUNCTION__, __LINE__, action, NULL, reason_text, pe_action_runnable, FALSE); - update_colo_start_chain(action); - update_action(action); - } - } -+ free(reason_text); - } - - void -@@ -445,6 +447,11 @@ update_colo_start_chain(action_t *action) - return; - } - -+ if(rsc->parent) { -+ /* uber_parent() stops _before_ the bundle */ -+ rsc = rsc->parent; -+ } -+ - /* if rsc has children, all the children need to have start set to - * unrunnable before we follow the colo chain for the parent. */ - for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) { -@@ -458,7 +465,7 @@ update_colo_start_chain(action_t *action) - for (gIter = rsc->rsc_cons_lhs; gIter != NULL; gIter = gIter->next) { - rsc_colocation_t *colocate_with = (rsc_colocation_t *)gIter->data; - if (colocate_with->score == INFINITY) { -- mark_start_blocked(colocate_with->rsc_lh); -+ mark_start_blocked(colocate_with->rsc_lh, action->rsc); - } - } - } -@@ -490,7 +497,7 @@ update_action(action_t * then) - if (then->required_runnable_before == 0) { - then->required_runnable_before = 1; - } -- clear_bit(then->flags, pe_action_runnable); -+ pe_clear_action_bit(then, pe_action_runnable); - /* We are relying on the pe_order_one_or_more clause of - * graph_update_action(), called as part of the: - * -@@ -1585,7 +1592,7 @@ graph_has_loop(action_t * init_action, action_t * action, action_wrapper_t * wra - } - - done: -- clear_bit(wrapper->action->flags, pe_action_tracking); -+ pe_clear_action_bit(wrapper->action, pe_action_tracking); - - return has_loop; - } --- -1.8.3.1 - - -From 3392d49b99c8d594af54549a41c962c46e26d7fd Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 25 Aug 2017 12:46:37 +1000 -Subject: [PATCH 04/21] PE: bundle: Send an additional host list when - container-attribute-target=host - -The list is modified to use the name of the host where the bundles are -running so that agents can map between the two sets when necessary. ---- - lib/pengine/container.c | 1 + - pengine/clone.c | 8 +++--- - pengine/notif.c | 68 ++++++++++++++++++++++++++++++++++++++----------- - pengine/notif.h | 2 +- - 4 files changed, 59 insertions(+), 20 deletions(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 53965cf..5831b58 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -769,6 +769,7 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - container_data->docker_host_options = buffer; - if(container_data->attribute_target) { - g_hash_table_replace(rsc->meta, strdup(XML_RSC_ATTR_TARGET), strdup(container_data->attribute_target)); -+ g_hash_table_replace(container_data->child->meta, strdup(XML_RSC_ATTR_TARGET), strdup(container_data->attribute_target)); - } - - } else { -diff --git a/pengine/clone.c b/pengine/clone.c -index 1722166..41cb5cb 100644 ---- a/pengine/clone.c -+++ b/pengine/clone.c -@@ -1227,25 +1227,25 @@ clone_expand(resource_t * rsc, pe_working_set_t * data_set) - - if (clone_data->start_notify) { - collect_notification_data(rsc, TRUE, TRUE, clone_data->start_notify); -- expand_notification_data(clone_data->start_notify, data_set); -+ expand_notification_data(rsc, clone_data->start_notify, data_set); - create_notifications(rsc, clone_data->start_notify, data_set); - } - - if (clone_data->stop_notify) { - collect_notification_data(rsc, TRUE, TRUE, clone_data->stop_notify); -- expand_notification_data(clone_data->stop_notify, data_set); -+ expand_notification_data(rsc, clone_data->stop_notify, data_set); - create_notifications(rsc, clone_data->stop_notify, data_set); - } - - if (clone_data->promote_notify) { - collect_notification_data(rsc, TRUE, TRUE, clone_data->promote_notify); -- expand_notification_data(clone_data->promote_notify, data_set); -+ expand_notification_data(rsc, clone_data->promote_notify, data_set); - create_notifications(rsc, clone_data->promote_notify, data_set); - } - - if (clone_data->demote_notify) { - collect_notification_data(rsc, TRUE, TRUE, clone_data->demote_notify); -- expand_notification_data(clone_data->demote_notify, data_set); -+ expand_notification_data(rsc, clone_data->demote_notify, data_set); - create_notifications(rsc, clone_data->demote_notify, data_set); - } - -diff --git a/pengine/notif.c b/pengine/notif.c -index b8135b5..19a9751 100644 ---- a/pengine/notif.c -+++ b/pengine/notif.c -@@ -17,6 +17,7 @@ - */ - - #include -+#include - #include - #include - #include -@@ -81,33 +82,60 @@ static notify_entry_t *dup_notify_entry(notify_entry_t *entry) - return dup; - } - --static char * --expand_node_list(GListPtr list) -+static void -+expand_node_list(GListPtr list, char **uname, char **metal) - { - GListPtr gIter = NULL; - char *node_list = NULL; -+ char *metal_list = NULL; - -+ CRM_ASSERT(uname != NULL); - if (list == NULL) { -- return strdup(" "); -+ *uname = strdup(" "); -+ if(metal) { -+ *metal = strdup(" "); -+ } -+ return; - } - - for (gIter = list; gIter != NULL; gIter = gIter->next) { -+ int len = 0; -+ int existing_len = 0; - node_t *node = (node_t *) gIter->data; - -- if (node->details->uname) { -- int existing_len = 0; -- int len = 2 + strlen(node->details->uname); -+ CRM_ASSERT(node->details->uname); -+ len = 2 + strlen(node->details->uname); -+ -+ if(node_list) { -+ existing_len = strlen(node_list); -+ } -+// crm_trace("Adding %s (%dc) at offset %d", node->details->uname, len - 2, existing_len); -+ node_list = realloc_safe(node_list, len + existing_len); -+ sprintf(node_list + existing_len, "%s%s", existing_len == 0 ? "":" ", node->details->uname); -+ -+ if(metal) { -+ existing_len = 0; -+ if(metal_list) { -+ existing_len = strlen(metal_list); -+ } - -- if(node_list) { -- existing_len = strlen(node_list); -+ if(node->details->remote_rsc -+ && node->details->remote_rsc->container -+ && node->details->remote_rsc->container->running_on) { -+ node = node->details->remote_rsc->container->running_on->data; - } -- crm_trace("Adding %s (%dc) at offset %d", node->details->uname, len - 2, existing_len); -- node_list = realloc_safe(node_list, len + existing_len); -- sprintf(node_list + existing_len, "%s%s", existing_len == 0 ? "":" ", node->details->uname); -+ -+ CRM_ASSERT(node->details->uname); -+ len = 2 + strlen(node->details->uname); -+ metal_list = realloc_safe(metal_list, len + existing_len); -+ sprintf(metal_list + existing_len, "%s%s", existing_len == 0 ? "":" ", node->details->uname); - } - } - -- return node_list; -+ *uname = node_list; -+ if(metal) { -+ *metal = metal_list; -+ } - } - - static void -@@ -495,7 +523,7 @@ collect_notification_data(resource_t * rsc, gboolean state, gboolean activity, - } - - gboolean --expand_notification_data(notify_data_t * n_data, pe_working_set_t * data_set) -+expand_notification_data(resource_t *rsc, notify_data_t * n_data, pe_working_set_t * data_set) - { - /* Expand the notification entries into a key=value hashtable - * This hashtable is later used in action2xml() -@@ -503,6 +531,7 @@ expand_notification_data(notify_data_t * n_data, pe_working_set_t * data_set) - gboolean required = FALSE; - char *rsc_list = NULL; - char *node_list = NULL; -+ char *metal_list = NULL; - GListPtr nodes = NULL; - - if (n_data->stop) { -@@ -576,13 +605,22 @@ expand_notification_data(notify_data_t * n_data, pe_working_set_t * data_set) - g_hash_table_insert(n_data->keys, strdup("notify_inactive_resource"), rsc_list); - - nodes = g_hash_table_get_values(n_data->allowed_nodes); -- node_list = expand_node_list(nodes); -+ expand_node_list(nodes, &node_list, NULL); - g_hash_table_insert(n_data->keys, strdup("notify_available_uname"), node_list); - g_list_free(nodes); - -- node_list = expand_node_list(data_set->nodes); -+ expand_node_list(data_set->nodes, &node_list, &metal_list); - g_hash_table_insert(n_data->keys, strdup("notify_all_uname"), node_list); - -+ { -+ const char *source = g_hash_table_lookup(rsc->meta, XML_RSC_ATTR_TARGET); -+ if(safe_str_eq("host", source)) { -+ g_hash_table_insert(n_data->keys, strdup("notify_all_hosts"), metal_list); -+ } else { -+ free(metal_list); -+ } -+ } -+ - if (required && n_data->pre) { - update_action_flags(n_data->pre, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); - update_action_flags(n_data->pre_done, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); -diff --git a/pengine/notif.h b/pengine/notif.h -index f299342..da68874 100644 ---- a/pengine/notif.h -+++ b/pengine/notif.h -@@ -28,7 +28,7 @@ notify_data_t * create_notification_boundaries(resource_t *rsc, - void collect_notification_data(resource_t *rsc, gboolean state, - gboolean activity, notify_data_t *n_data); - --gboolean expand_notification_data(notify_data_t *n_data, -+gboolean expand_notification_data(resource_t *rsc, notify_data_t *n_data, - pe_working_set_t *data_set); - - void create_notifications(resource_t *rsc, notify_data_t *n_data, --- -1.8.3.1 - - -From ccbdb2a215bad69c9e6ac2d74c0bbb1d1719db5a Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 28 Aug 2017 12:17:16 +1000 -Subject: [PATCH 05/21] Tools: Allow bundle resources to read/write master - scores based on the same logic as attrd (cf34f4c) - ---- - include/crm/attrd.h | 2 ++ - lib/common/utils.c | 28 ++++++++++++++++++++++++++++ - pacemaker.spec.in | 4 +++- - tools/Makefile.am | 2 +- - tools/attrd_updater.c | 40 +++++++++------------------------------- - tools/crm_attribute.c | 14 ++++++-------- - tools/crm_master | 6 ++---- - 7 files changed, 51 insertions(+), 45 deletions(-) - -diff --git a/include/crm/attrd.h b/include/crm/attrd.h -index e294838..240f192 100644 ---- a/include/crm/attrd.h -+++ b/include/crm/attrd.h -@@ -24,6 +24,8 @@ - #define attrd_opt_remote 0x001 - #define attrd_opt_private 0x002 - -+const char *attrd_get_target(const char *name); -+ - int attrd_update_delegate(crm_ipc_t * ipc, char command, const char *host, - const char *name, const char *value, const char *section, - const char *set, const char *dampen, const char *user_name, int options); -diff --git a/lib/common/utils.c b/lib/common/utils.c -index f594c12..290a661 100644 ---- a/lib/common/utils.c -+++ b/lib/common/utils.c -@@ -2156,3 +2156,31 @@ crm_gnutls_global_init(void) - gnutls_global_init(); - } - #endif -+ -+const char * -+attrd_get_target(const char *name) -+{ -+ if(safe_str_eq(name, "auto") || safe_str_eq(name, "localhost")) { -+ name = NULL; -+ } -+ -+ if(name != NULL) { -+ return name; -+ -+ } else { -+ const char *target = getenv(crm_meta_name(XML_RSC_ATTR_TARGET)); -+ const char *host_pyhsical = getenv(crm_meta_name(PCMK_ENV_PHYSICAL_HOST)); -+ const char *host_pcmk = getenv("OCF_RESKEY_" CRM_META "_" XML_LRM_ATTR_TARGET); -+ -+ /* It is important we use the names by which the PE knows us */ -+ if(safe_str_eq(target, "host") && host_pyhsical != NULL) { -+ return host_pyhsical; -+ -+ } else if(host_pcmk) { -+ return host_pcmk; -+ } -+ } -+ -+ // TODO? Call get_local_node_name() if name == NULL -+ return name; -+} -diff --git a/pacemaker.spec.in b/pacemaker.spec.in -index 642af74..d0bc2c3 100644 ---- a/pacemaker.spec.in -+++ b/pacemaker.spec.in -@@ -601,6 +601,7 @@ exit 0 - %exclude %{_sbindir}/pacemaker_remoted - %{_libexecdir}/pacemaker/* - -+%{_sbindir}/attrd_updater - %{_sbindir}/crm_attribute - %{_sbindir}/crm_master - %{_sbindir}/crm_node -@@ -619,6 +620,7 @@ exit 0 - %doc %{_mandir}/man7/ocf_pacemaker_o2cb.* - %doc %{_mandir}/man7/ocf_pacemaker_remote.* - %doc %{_mandir}/man8/crm_attribute.* -+%doc %{_mandir}/man8/attrd_updater.* - %doc %{_mandir}/man8/crm_node.* - %doc %{_mandir}/man8/crm_master.* - %if %{with cman} -@@ -668,7 +670,6 @@ exit 0 - %config(noreplace) %{_sysconfdir}/init/crm_mon.conf - %endif - --%{_sbindir}/attrd_updater - %{_sbindir}/cibadmin - %{_sbindir}/crm_diff - %{_sbindir}/crm_error -@@ -704,6 +705,7 @@ exit 0 - %exclude %{_mandir}/man7/ocf_pacemaker_o2cb.* - %exclude %{_mandir}/man7/ocf_pacemaker_remote.* - %doc %{_mandir}/man8/* -+%exclude %{_mandir}/man8/attrd_updater.* - %exclude %{_mandir}/man8/crm_attribute.* - %exclude %{_mandir}/man8/crm_node.* - %exclude %{_mandir}/man8/crm_master.* -diff --git a/tools/Makefile.am b/tools/Makefile.am -index 3548035..a601b8d 100644 ---- a/tools/Makefile.am -+++ b/tools/Makefile.am -@@ -121,7 +121,7 @@ iso8601_SOURCES = test.iso8601.c - iso8601_LDADD = $(COMMONLIBS) - - attrd_updater_SOURCES = attrd_updater.c --attrd_updater_LDADD = $(COMMONLIBS) -+attrd_updater_LDADD = $(top_builddir)/lib/cluster/libcrmcluster.la $(COMMONLIBS) - - crm_ticket_SOURCES = crm_ticket.c - crm_ticket_LDADD = $(top_builddir)/lib/pengine/libpe_rules.la \ -diff --git a/tools/attrd_updater.c b/tools/attrd_updater.c -index de75496..5e8b837 100644 ---- a/tools/attrd_updater.c -+++ b/tools/attrd_updater.c -@@ -32,6 +32,7 @@ - #include - - #include -+#include - - /* *INDENT-OFF* */ - static struct crm_option long_options[] = { -@@ -79,7 +80,6 @@ static int do_query(const char *attr_name, const char *attr_node, gboolean query - static int do_update(char command, const char *attr_node, const char *attr_name, - const char *attr_value, const char *attr_section, - const char *attr_set, const char *attr_dampen, int attr_options); --static const char *get_hostname(const char *name); - - int - main(int argc, char **argv) -@@ -200,7 +200,10 @@ main(int argc, char **argv) - #endif - } else { - -- attr_node = get_hostname(attr_node); -+ attr_node = attrd_get_target(attr_node); -+ if (attr_node == NULL) { -+ attr_node = get_local_node_name(); -+ } - crm_exit(do_update(command, attr_node, attr_name, attr_value, - attr_section, attr_set, attr_dampen, attr_options)); - } -@@ -349,11 +352,11 @@ do_query(const char *attr_name, const char *attr_node, gboolean query_all) - /* Decide which node(s) to query */ - if (query_all == TRUE) { - attr_node = NULL; -- } else if (attr_node == NULL) { -- crm_debug("User did not specify node for query, using localhost"); -- attr_node = get_hostname(attr_node); - } else { -- attr_node = get_hostname(attr_node); -+ attr_node = attrd_get_target(attr_node); -+ if (attr_node == NULL) { -+ attr_node = get_local_node_name(); -+ } - } - - /* Build and send attrd request, and get XML reply */ -@@ -399,28 +402,3 @@ do_update(char command, const char *attr_node, const char *attr_name, - } - return rc; - } -- --static const char * --get_hostname(const char *name) --{ -- if(name != NULL -- && safe_str_neq(name, "auto") -- && safe_str_neq(name, "localhost")) { -- return name; -- -- } else { -- const char *target = getenv(crm_meta_name(XML_RSC_ATTR_TARGET)); -- const char *host_pyhsical = getenv(crm_meta_name(PCMK_ENV_PHYSICAL_HOST)); -- const char *host_pcmk = getenv("OCF_RESKEY_" CRM_META "_" XML_LRM_ATTR_TARGET); -- -- /* It is important we use the names by which the PE knows us */ -- if(safe_str_eq(target, "host") && host_pyhsical != NULL) { -- return host_pyhsical; -- -- } else if(host_pcmk) { -- return host_pcmk; -- } -- } -- -- return name; --} -diff --git a/tools/crm_attribute.c b/tools/crm_attribute.c -index 60ded8d..b511282 100644 ---- a/tools/crm_attribute.c -+++ b/tools/crm_attribute.c -@@ -246,15 +246,13 @@ main(int argc, char **argv) - - } else if (safe_str_eq(type, XML_CIB_TAG_CRMCONFIG)) { - } else if (safe_str_neq(type, XML_CIB_TAG_TICKETS)) { -+ /* If we are being called from a resource agent via the cluster, -+ * the correct local node name will be passed as an environment -+ * variable. Otherwise, we have to ask the cluster. -+ */ -+ dest_uname = attrd_get_target(dest_uname); - if (dest_uname == NULL) { -- /* If we are being called from a resource agent via the cluster, -- * the correct local node name will be passed as an environment -- * variable. Otherwise, we have to ask the cluster. -- */ -- dest_uname = getenv("OCF_RESKEY_" CRM_META "_" XML_LRM_ATTR_TARGET); -- if (dest_uname == NULL) { -- dest_uname = get_local_node_name(); -- } -+ dest_uname = get_local_node_name(); - } - - rc = query_node_uuid(the_cib, dest_uname, &dest_node, &is_remote_node); -diff --git a/tools/crm_master b/tools/crm_master -index 7cce64d..7e31cea 100755 ---- a/tools/crm_master -+++ b/tools/crm_master -@@ -1,7 +1,5 @@ - #!/bin/bash - --target=`crm_node -n` -- - TEMP=`getopt -o qDGQVN:U:v:i:l:r: --long version,help,resource:,node:,uname:,attr-value:,id:,update:,delete-attr,get-value,attr-id:,lifetime:,quiet \ - -n 'crm_master' -- "$@"` - -@@ -12,7 +10,7 @@ eval set -- "$TEMP" - - while true ; do - case "$1" in -- -N|--node|-U|--uname) target="$2"; shift; shift;; -+ -N|--node|-U|--uname) options="$options $1 $2"; shift; shift;; - -v|--attr-value|--update|-i|--id|--attr-id|-l|--lifetime) options="$options $1 $2"; shift; shift;; - -Q|-q|--quiet|-D|--delete-attr|-G|--get-value|-V) options="$options $1"; shift;; - -r|--resource) OCF_RESOURCE_INSTANCE=$2; shift; shift;; -@@ -53,4 +51,4 @@ if [ -z "$OCF_RESOURCE_INSTANCE" ]; then - exit 1 - fi - --crm_attribute -N $target -n master-$OCF_RESOURCE_INSTANCE $options -+crm_attribute -n master-$OCF_RESOURCE_INSTANCE $options --- -1.8.3.1 - - -From e3485d6fd5e9e6ec05d9cd6682d46da3e463d6c7 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 13 Sep 2017 13:31:09 +1000 -Subject: [PATCH 06/21] Fix: PE: Prevent graph loops when fencing the host out - from underneath a bundle - ---- - pengine/allocate.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 958fb23..d610035 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -1416,7 +1416,14 @@ fence_guest(pe_node_t *node, pe_action_t *done, pe_working_set_t *data_set) - * it is restarted, so we always order pseudo-fencing after stop, not start - * (even though start might be closer to what is done for a real reboot). - */ -- if (stop) { -+ if(stop && is_set(stop->flags, pe_action_pseudo)) { -+ pe_action_t *parent_stonith_op = pe_fence_op(stop->node, NULL, FALSE, NULL, data_set); -+ crm_info("Implying guest node %s is down (action %d) after %s fencing", -+ node->details->uname, stonith_op->id, stop->node->details->uname); -+ order_actions(parent_stonith_op, stonith_op, -+ pe_order_runnable_left|pe_order_implies_then); -+ -+ } else if (stop) { - order_actions(stop, stonith_op, - pe_order_runnable_left|pe_order_implies_then); - crm_info("Implying guest node %s is down (action %d) " --- -1.8.3.1 - - -From 2709e5c2e231e80da557acf3b736f970516ffbb9 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 13 Sep 2017 14:14:31 +1000 -Subject: [PATCH 07/21] Fix: PE: Do not send notifications to unclean bundles - ---- - pengine/notif.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pengine/notif.c b/pengine/notif.c -index 19a9751..76c5a4a 100644 ---- a/pengine/notif.c -+++ b/pengine/notif.c -@@ -691,7 +691,7 @@ create_notifications(resource_t * rsc, notify_data_t * n_data, pe_working_set_t - * action. There's no reason to send the fenced node a stop notification */ - if (stop && - is_set(stop->flags, pe_action_pseudo) && -- current_node->details->unclean) { -+ (current_node->details->unclean || current_node->details->remote_requires_reset) ) { - - continue; - } --- -1.8.3.1 - - -From d29ba5dce8d2bccf4a0c906c3bd02a87f7e42974 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 13 Sep 2017 20:06:15 +1000 -Subject: [PATCH 08/21] Test: PE: Update bundle fence ordering - ---- - pengine/test10/complex_enforce_colo.summary | 4 ++-- - pengine/test10/enforce-colo1.summary | 2 +- - pengine/test10/whitebox-imply-stop-on-fence.dot | 4 ++-- - pengine/test10/whitebox-imply-stop-on-fence.exp | 4 ++-- - pengine/test10/whitebox-imply-stop-on-fence.summary | 6 +++--- - 5 files changed, 10 insertions(+), 10 deletions(-) - -diff --git a/pengine/test10/complex_enforce_colo.summary b/pengine/test10/complex_enforce_colo.summary -index 2332269..0426e98 100644 ---- a/pengine/test10/complex_enforce_colo.summary -+++ b/pengine/test10/complex_enforce_colo.summary -@@ -113,7 +113,7 @@ Transition Summary: - * Stop glance-api:2 (rhos6-node3) - * Stop cinder-api ( rhos6-node1 ) due to unrunnable keystone-clone running - * Stop cinder-scheduler ( rhos6-node1 ) due to required cinder-api start -- * Stop cinder-volume ( rhos6-node1 ) -+ * Stop cinder-volume ( rhos6-node1 ) due to colocation with cinder-scheduler - * Stop swift-account:0 (rhos6-node1) - * Stop swift-account:1 (rhos6-node2) - * Stop swift-account:2 (rhos6-node3) -@@ -194,7 +194,7 @@ Transition Summary: - * Stop heat-api-cloudwatch:0 ( rhos6-node1 ) due to required heat-api-cfn:0 start - * Stop heat-api-cloudwatch:1 ( rhos6-node2 ) due to required heat-api-cfn:1 start - * Stop heat-api-cloudwatch:2 ( rhos6-node3 ) due to required heat-api-cfn:2 start -- * Stop heat-engine ( rhos6-node2 ) due to required heat-api-cloudwatch-clone running -+ * Stop heat-engine ( rhos6-node2 ) due to colocation with heat-api-cloudwatch-clone - - Executing cluster transition: - * Pseudo action: glance-api-clone_stop_0 -diff --git a/pengine/test10/enforce-colo1.summary b/pengine/test10/enforce-colo1.summary -index 64815ae..4968326 100644 ---- a/pengine/test10/enforce-colo1.summary -+++ b/pengine/test10/enforce-colo1.summary -@@ -10,7 +10,7 @@ Online: [ rhel7-auto1 rhel7-auto2 rhel7-auto3 ] - central (ocf::heartbeat:Dummy): Started rhel7-auto3 - - Transition Summary: -- * Stop engine ( rhel7-auto3 ) -+ * Stop engine ( rhel7-auto3 ) due to colocation with central - * Stop keystone:0 (rhel7-auto2) due to node availability - * Stop keystone:1 (rhel7-auto3) due to node availability - * Stop keystone:2 (rhel7-auto1) due to node availability -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.dot b/pengine/test10/whitebox-imply-stop-on-fence.dot -index 5885d4b..8ef42fd 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.dot -+++ b/pengine/test10/whitebox-imply-stop-on-fence.dot -@@ -7,7 +7,6 @@ - "R-lxc-01_kiff-01_stop_0 kiff-01" -> "R-lxc-01_kiff-01_start_0 kiff-02" [ style = bold] - "R-lxc-01_kiff-01_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "R-lxc-01_kiff-01_stop_0 kiff-01" -> "shared0-clone_stop_0" [ style = bold] --"R-lxc-01_kiff-01_stop_0 kiff-01" -> "stonith 'reboot' lxc-01_kiff-01" [ style = bold] - "R-lxc-01_kiff-01_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] - "R-lxc-02_kiff-01_monitor_10000 kiff-02" [ style=bold color="green" fontcolor="black"] - "R-lxc-02_kiff-01_start_0 kiff-02" -> "R-lxc-02_kiff-01_monitor_10000 kiff-02" [ style = bold] -@@ -16,7 +15,6 @@ - "R-lxc-02_kiff-01_stop_0 kiff-01" -> "R-lxc-02_kiff-01_start_0 kiff-02" [ style = bold] - "R-lxc-02_kiff-01_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "R-lxc-02_kiff-01_stop_0 kiff-01" -> "shared0-clone_stop_0" [ style = bold] --"R-lxc-02_kiff-01_stop_0 kiff-01" -> "stonith 'reboot' lxc-02_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" [ style=bold color="green" fontcolor="orange"] -@@ -77,6 +75,8 @@ - "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] -+"stonith 'reboot' kiff-01" -> "stonith 'reboot' lxc-02_kiff-01" [ style = bold] - "stonith 'reboot' kiff-01" -> "stonith_complete" [ style = bold] - "stonith 'reboot' kiff-01" [ style=bold color="green" fontcolor="black"] - "stonith 'reboot' lxc-01_kiff-01" -> "stonith_complete" [ style = bold] -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.exp b/pengine/test10/whitebox-imply-stop-on-fence.exp -index 6639eb9..d1e22ee 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.exp -+++ b/pengine/test10/whitebox-imply-stop-on-fence.exp -@@ -417,7 +417,7 @@ - - - -- -+ - - - -@@ -432,7 +432,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.summary b/pengine/test10/whitebox-imply-stop-on-fence.summary -index a3e9ce8..87d7b4f 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.summary -+++ b/pengine/test10/whitebox-imply-stop-on-fence.summary -@@ -43,15 +43,15 @@ Executing cluster transition: - * Fencing kiff-01 (reboot) - * Pseudo action: lxc-01_kiff-01_stop_0 - * Pseudo action: lxc-02_kiff-01_stop_0 -- * 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 -- * Pseudo action: vm-fs_stop_0 - * Resource action: lxc-01_kiff-01 start on kiff-02 - * Resource action: lxc-02_kiff-01 start on kiff-02 - * Pseudo action: shared0_stop_0 --- -1.8.3.1 - - -From 8f19403bdaf4722b82d794c10e9911976bd68b82 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 13 Sep 2017 20:14:21 +1000 -Subject: [PATCH 09/21] Test: PE: Prevent graph loops when fencing the host out - from underneath a bundle - ---- - pengine/regression.sh | 2 + - pengine/test10/bundle-order-fencing.dot | 442 ++++++ - pengine/test10/bundle-order-fencing.exp | 1982 +++++++++++++++++++++++++++ - pengine/test10/bundle-order-fencing.scores | 1148 ++++++++++++++++ - pengine/test10/bundle-order-fencing.summary | 222 +++ - pengine/test10/bundle-order-fencing.xml | 799 +++++++++++ - 6 files changed, 4595 insertions(+) - create mode 100644 pengine/test10/bundle-order-fencing.dot - create mode 100644 pengine/test10/bundle-order-fencing.exp - create mode 100644 pengine/test10/bundle-order-fencing.scores - create mode 100644 pengine/test10/bundle-order-fencing.summary - create mode 100644 pengine/test10/bundle-order-fencing.xml - -diff --git a/pengine/regression.sh b/pengine/regression.sh -index d1a8a3f..6c3be88 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -811,6 +811,8 @@ do_test bundle-order-startup-clone-2 "Bundle startup with clones" - do_test bundle-order-stop-clone "Stop bundle because clone is stopping" - do_test bundle-nested-colocation "Colocation of nested connection resources" - -+do_test bundle-order-fencing "Order pseudo bundle fencing after parent node fencing if both are happening" -+ - echo "" - do_test whitebox-fail1 "Fail whitebox container rsc." - do_test whitebox-fail2 "Fail whitebox container rsc lrmd connection." -diff --git a/pengine/test10/bundle-order-fencing.dot b/pengine/test10/bundle-order-fencing.dot -new file mode 100644 -index 0000000..0db9605 ---- /dev/null -+++ b/pengine/test10/bundle-order-fencing.dot -@@ -0,0 +1,442 @@ -+digraph "g" { -+"Cancel redis_monitor_45000 redis-bundle-1" -> "redis_promote_0 redis-bundle-1" [ style = bold] -+"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_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] -+"galera-bundle-0_start_0 controller-2" -> "galera_monitor_20000 galera-bundle-0" [ style = dashed] -+"galera-bundle-0_start_0 controller-2" -> "galera_monitor_30000 galera-bundle-0" [ style = dashed] -+"galera-bundle-0_start_0 controller-2" -> "galera_start_0 galera-bundle-0" [ style = dashed] -+"galera-bundle-0_start_0 controller-2" [ style=dashed color="red" fontcolor="black"] -+"galera-bundle-0_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"galera-bundle-0_stop_0 controller-0" -> "galera-bundle-0_start_0 controller-2" [ style = dashed] -+"galera-bundle-0_stop_0 controller-0" -> "galera-bundle-docker-0_stop_0 controller-0" [ style = bold] -+"galera-bundle-0_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle-docker-0_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"galera-bundle-docker-0_stop_0 controller-0" -> "galera-bundle_stopped_0" [ style = bold] -+"galera-bundle-docker-0_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"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" [ style=bold color="green" fontcolor="orange"] -+"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_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 = dashed] -+"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" [ style=bold color="green" fontcolor="orange"] -+"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_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_running_0" [ style=bold color="green" fontcolor="orange"] -+"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 controller-0" [ 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" [ style=bold color="green" fontcolor="orange"] -+"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_monitor_20000 galera-bundle-0" [ style = dashed] -+"galera_demote_0 galera-bundle-0" -> "galera_monitor_30000 galera-bundle-0" [ style = dashed] -+"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_monitor_20000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera_monitor_30000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"galera_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = dashed] -+"galera_start_0 galera-bundle-0" -> "galera_monitor_20000 galera-bundle-0" [ style = dashed] -+"galera_start_0 galera-bundle-0" -> "galera_monitor_30000 galera-bundle-0" [ style = dashed] -+"galera_start_0 galera-bundle-0" [ style=dashed color="red" 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 = dashed] -+"galera_stop_0 galera-bundle-0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-bundle-docker-0_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"haproxy-bundle-docker-0_stop_0 controller-0" -> "haproxy-bundle_stopped_0" [ style = bold] -+"haproxy-bundle-docker-0_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-bundle_stop_0" -> "haproxy-bundle-docker-0_stop_0 controller-0" [ style = bold] -+"haproxy-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -+"haproxy-bundle_stopped_0" -> "ip-10.0.0.109_stop_0 controller-0" [ style = bold] -+"haproxy-bundle_stopped_0" -> "ip-172.17.4.11_stop_0 controller-0" [ style = bold] -+"haproxy-bundle_stopped_0" -> "ip-192.168.24.7_stop_0 controller-0" [ style = bold] -+"haproxy-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"ip-10.0.0.109_monitor_10000 controller-1" [ style=bold color="green" fontcolor="black"] -+"ip-10.0.0.109_start_0 controller-1" -> "ip-10.0.0.109_monitor_10000 controller-1" [ style = bold] -+"ip-10.0.0.109_start_0 controller-1" [ style=bold color="green" fontcolor="black"] -+"ip-10.0.0.109_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"ip-10.0.0.109_stop_0 controller-0" -> "ip-10.0.0.109_start_0 controller-1" [ style = bold] -+"ip-10.0.0.109_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"ip-172.17.4.11_monitor_10000 controller-1" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.4.11_start_0 controller-1" -> "ip-172.17.4.11_monitor_10000 controller-1" [ style = bold] -+"ip-172.17.4.11_start_0 controller-1" [ style=bold color="green" fontcolor="black"] -+"ip-172.17.4.11_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"ip-172.17.4.11_stop_0 controller-0" -> "ip-172.17.4.11_start_0 controller-1" [ style = bold] -+"ip-172.17.4.11_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"ip-192.168.24.7_monitor_10000 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.24.7_start_0 controller-2" -> "ip-192.168.24.7_monitor_10000 controller-2" [ style = bold] -+"ip-192.168.24.7_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"ip-192.168.24.7_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"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_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] -+"rabbitmq-bundle-0_start_0 controller-1" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] -+"rabbitmq-bundle-0_start_0 controller-1" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] -+"rabbitmq-bundle-0_start_0 controller-1" [ style=dashed color="red" fontcolor="black"] -+"rabbitmq-bundle-0_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"rabbitmq-bundle-0_stop_0 controller-0" -> "rabbitmq-bundle-0_start_0 controller-1" [ style = dashed] -+"rabbitmq-bundle-0_stop_0 controller-0" -> "rabbitmq-bundle-docker-0_stop_0 controller-0" [ style = bold] -+"rabbitmq-bundle-0_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] -+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" -> "rabbitmq-bundle-clone_pre_notify_start_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" -> "rabbitmq-bundle_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" -> "rabbitmq-bundle-clone_post_notify_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] -+"rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq_post_notify_running_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq_post_notify_running_0 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq_post_notify_running_0 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_post_notify_stopped_0" -> "rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_stopped_0" -> "rabbitmq_post_notify_stonith_0 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_stopped_0" -> "rabbitmq_post_notify_stonith_0 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq-bundle-clone_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_pre_notify_start_0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_start_0" -> "rabbitmq_pre_notify_start_0 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_start_0" -> "rabbitmq_pre_notify_start_0 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_pre_notify_stop_0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_stop_0" -> "rabbitmq_pre_notify_stop_0 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_stop_0" -> "rabbitmq_pre_notify_stop_0 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq-bundle-clone_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = bold] -+"rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] -+"rabbitmq-bundle-clone_start_0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] -+"rabbitmq-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_stop_0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle-clone_post_notify_stopped_0" [ style = bold] -+"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq-bundle-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-docker-0_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"rabbitmq-bundle-docker-0_stop_0 controller-0" -> "rabbitmq-bundle_stopped_0" [ style = bold] -+"rabbitmq-bundle-docker-0_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] -+"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-docker-0_stop_0 controller-0" [ style = bold] -+"rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] -+"rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_confirmed-post_notify_stonith_0" -> "all_stopped" [ style = bold] -+"rabbitmq_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"rabbitmq_post_notify_running_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq_post_notify_running_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_post_notify_running_0 rabbitmq-bundle-1" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq_post_notify_running_0 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_post_notify_running_0 rabbitmq-bundle-2" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] -+"rabbitmq_post_notify_running_0 rabbitmq-bundle-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_post_notify_stonith_0 rabbitmq-bundle-1" -> "rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0 rabbitmq-bundle-1" -> "rabbitmq_confirmed-post_notify_stonith_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_post_notify_stonith_0 rabbitmq-bundle-2" -> "rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0 rabbitmq-bundle-2" -> "rabbitmq_confirmed-post_notify_stonith_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0 rabbitmq-bundle-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_post_notify_stonith_0" -> "rabbitmq_confirmed-post_notify_stonith_0" [ style = bold] -+"rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 rabbitmq-bundle-1" [ style = bold] -+"rabbitmq_post_notify_stonith_0" -> "rabbitmq_post_notify_stonith_0 rabbitmq-bundle-2" [ style = bold] -+"rabbitmq_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq_pre_notify_start_0 rabbitmq-bundle-1" -> "rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style = bold] -+"rabbitmq_pre_notify_start_0 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_pre_notify_start_0 rabbitmq-bundle-2" -> "rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style = bold] -+"rabbitmq_pre_notify_start_0 rabbitmq-bundle-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_pre_notify_stop_0 rabbitmq-bundle-1" -> "rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" [ style = bold] -+"rabbitmq_pre_notify_stop_0 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_pre_notify_stop_0 rabbitmq-bundle-2" -> "rabbitmq-bundle-clone_confirmed-pre_notify_stop_0" [ style = bold] -+"rabbitmq_pre_notify_stop_0 rabbitmq-bundle-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] -+"rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] -+"rabbitmq_start_0 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"rabbitmq_stop_0 rabbitmq-bundle-0" -> "all_stopped" [ style = bold] -+"rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] -+"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_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] -+"redis-bundle-0_start_0 controller-1" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis-bundle-0_start_0 controller-1" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"redis-bundle-0_start_0 controller-1" -> "redis_start_0 redis-bundle-0" [ style = dashed] -+"redis-bundle-0_start_0 controller-1" [ style=dashed color="red" fontcolor="black"] -+"redis-bundle-0_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"redis-bundle-0_stop_0 controller-0" -> "redis-bundle-0_start_0 controller-1" [ style = dashed] -+"redis-bundle-0_stop_0 controller-0" -> "redis-bundle-docker-0_stop_0 controller-0" [ style = bold] -+"redis-bundle-0_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-docker-0_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"redis-bundle-docker-0_stop_0 controller-0" -> "redis-bundle_stopped_0" [ style = bold] -+"redis-bundle-docker-0_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis-bundle-master_pre_notify_promote_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis-bundle-master_pre_notify_start_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis-bundle-master_pre_notify_stop_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis_monitor_20000 redis-bundle-1" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis-bundle_promoted_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis_monitor_20000 redis-bundle-1" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_promoted_0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"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_monitor_20000 redis-bundle-1" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_running_0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_running_0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_stopped_0" -> "redis-bundle-master_pre_notify_promote_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_stopped_0" -> "redis-bundle-master_pre_notify_start_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_stopped_0" -> "redis-bundle_stopped_0" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_stopped_0" -> "redis_monitor_20000 redis-bundle-1" [ style = bold] -+"redis-bundle-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_confirmed-pre_notify_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] -+"redis-bundle-master_confirmed-pre_notify_demote_0" -> "redis-bundle-master_post_notify_demoted_0" [ style = bold] -+"redis-bundle-master_confirmed-pre_notify_demote_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_confirmed-pre_notify_stop_0" -> "redis-bundle-master_post_notify_stopped_0" [ style = bold] -+"redis-bundle-master_confirmed-pre_notify_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] -+"redis-bundle-master_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] -+"redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_demoted_0" -> "redis-bundle-master_post_notify_demoted_0" [ style = bold] -+"redis-bundle-master_demoted_0" -> "redis-bundle-master_promote_0" [ style = bold] -+"redis-bundle-master_demoted_0" -> "redis-bundle-master_start_0" [ style = bold] -+"redis-bundle-master_demoted_0" -> "redis-bundle-master_stop_0" [ style = bold] -+"redis-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_post_notify_demoted_0" -> "redis-bundle-master_confirmed-post_notify_demoted_0" [ style = bold] -+"redis-bundle-master_post_notify_demoted_0" -> "redis_post_notify_demoted_0 redis-bundle-1" [ style = bold] -+"redis-bundle-master_post_notify_demoted_0" -> "redis_post_notify_demoted_0 redis-bundle-2" [ style = bold] -+"redis-bundle-master_post_notify_demoted_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_post_notify_promoted_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_post_notify_promoted_0" -> "redis_post_notify_promoted_0 redis-bundle-1" [ 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_post_notify_running_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_post_notify_running_0" -> "redis_post_notify_running_0 redis-bundle-1" [ 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_post_notify_stopped_0" -> "redis-bundle-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis-bundle-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 redis-bundle-1" [ style = bold] -+"redis-bundle-master_post_notify_stopped_0" -> "redis_post_notify_stonith_0 redis-bundle-2" [ style = bold] -+"redis-bundle-master_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_pre_notify_demote_0" -> "redis-bundle-master_confirmed-pre_notify_demote_0" [ style = bold] -+"redis-bundle-master_pre_notify_demote_0" -> "redis_pre_notify_demote_0 redis-bundle-1" [ style = bold] -+"redis-bundle-master_pre_notify_demote_0" -> "redis_pre_notify_demote_0 redis-bundle-2" [ style = bold] -+"redis-bundle-master_pre_notify_demote_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_pre_notify_promote_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_pre_notify_promote_0" -> "redis_pre_notify_promote_0 redis-bundle-1" [ 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-1" [ 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_pre_notify_stop_0" -> "redis-bundle-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis-bundle-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 redis-bundle-1" [ style = bold] -+"redis-bundle-master_pre_notify_stop_0" -> "redis_pre_notify_stop_0 redis-bundle-2" [ style = bold] -+"redis-bundle-master_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_promote_0" -> "redis_promote_0 redis-bundle-1" [ 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_start_0 redis-bundle-0" [ style = dashed] -+"redis-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_stop_0" -> "redis-bundle-master_stopped_0" [ style = bold] -+"redis-bundle-master_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] -+"redis-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-master_stopped_0" -> "redis-bundle-master_post_notify_stopped_0" [ style = bold] -+"redis-bundle-master_stopped_0" -> "redis-bundle-master_promote_0" [ style = bold] -+"redis-bundle-master_stopped_0" -> "redis-bundle-master_start_0" [ style = bold] -+"redis-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] -+"redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] -+"redis-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_demoted_0" -> "redis-bundle_promote_0" [ style = bold] -+"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = bold] -+"redis-bundle_demoted_0" -> "redis-bundle_stop_0" [ style = bold] -+"redis-bundle_demoted_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-master_start_0" [ style = bold] -+"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_stop_0" -> "redis-bundle-docker-0_stop_0 controller-0" [ style = bold] -+"redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] -+"redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] -+"redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle_stopped_0" -> "redis-bundle_promote_0" [ style = bold] -+"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = bold] -+"redis-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"redis_confirmed-post_notify_stonith_0" -> "all_stopped" [ style = bold] -+"redis_confirmed-post_notify_stonith_0" -> "redis_monitor_20000 redis-bundle-1" [ style = bold] -+"redis_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"redis_demote_0 redis-bundle-0" -> "redis-bundle-master_demoted_0" [ style = bold] -+"redis_demote_0 redis-bundle-0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis_demote_0 redis-bundle-0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"redis_demote_0 redis-bundle-0" -> "redis_stop_0 redis-bundle-0" [ style = bold] -+"redis_demote_0 redis-bundle-0" [ style=bold color="green" fontcolor="orange"] -+"redis_monitor_20000 redis-bundle-1" [ style=bold color="green" fontcolor="black"] -+"redis_monitor_45000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"redis_monitor_60000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"redis_post_notify_demoted_0 redis-bundle-1" -> "redis-bundle-master_confirmed-post_notify_demoted_0" [ style = bold] -+"redis_post_notify_demoted_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_demoted_0 redis-bundle-2" -> "redis-bundle-master_confirmed-post_notify_demoted_0" [ style = bold] -+"redis_post_notify_demoted_0 redis-bundle-2" [ 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-1" -> "redis-bundle-master_confirmed-post_notify_promoted_0" [ style = bold] -+"redis_post_notify_promoted_0 redis-bundle-1" [ 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-1" -> "redis-bundle-master_confirmed-post_notify_running_0" [ style = bold] -+"redis_post_notify_running_0 redis-bundle-1" [ 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_post_notify_stonith_0 redis-bundle-1" -> "redis-bundle-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis_post_notify_stonith_0 redis-bundle-1" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_stonith_0 redis-bundle-2" -> "redis-bundle-master_confirmed-post_notify_stopped_0" [ style = bold] -+"redis_post_notify_stonith_0 redis-bundle-2" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] -+"redis_post_notify_stonith_0" -> "redis_confirmed-post_notify_stonith_0" [ style = bold] -+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 redis-bundle-1" [ style = bold] -+"redis_post_notify_stonith_0" -> "redis_post_notify_stonith_0 redis-bundle-2" [ style = bold] -+"redis_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] -+"redis_pre_notify_demote_0 redis-bundle-1" -> "redis-bundle-master_confirmed-pre_notify_demote_0" [ style = bold] -+"redis_pre_notify_demote_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] -+"redis_pre_notify_demote_0 redis-bundle-2" -> "redis-bundle-master_confirmed-pre_notify_demote_0" [ style = bold] -+"redis_pre_notify_demote_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-1" -> "redis-bundle-master_confirmed-pre_notify_promote_0" [ style = bold] -+"redis_pre_notify_promote_0 redis-bundle-1" [ 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-1" -> "redis-bundle-master_confirmed-pre_notify_start_0" [ style = bold] -+"redis_pre_notify_start_0 redis-bundle-1" [ 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_pre_notify_stop_0 redis-bundle-1" -> "redis-bundle-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] -+"redis_pre_notify_stop_0 redis-bundle-2" -> "redis-bundle-master_confirmed-pre_notify_stop_0" [ style = bold] -+"redis_pre_notify_stop_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] -+"redis_promote_0 redis-bundle-1" -> "redis-bundle-master_promoted_0" [ style = bold] -+"redis_promote_0 redis-bundle-1" -> "redis_monitor_20000 redis-bundle-1" [ style = bold] -+"redis_promote_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] -+"redis_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = dashed] -+"redis_start_0 redis-bundle-0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -+"redis_start_0 redis-bundle-0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] -+"redis_start_0 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] -+"redis_stop_0 redis-bundle-0" -> "all_stopped" [ style = bold] -+"redis_stop_0 redis-bundle-0" -> "redis-bundle-master_stopped_0" [ style = bold] -+"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] -+"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] -+"stonith 'reboot' controller-0" -> "stonith 'off' redis-bundle-0" [ style = bold] -+"stonith 'reboot' controller-0" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' controller-0" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254000dcb3f_monitor_60000 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254000dcb3f_start_0 controller-2" -> "stonith-fence_ipmilan-5254000dcb3f_monitor_60000 controller-2" [ style = bold] -+"stonith-fence_ipmilan-5254000dcb3f_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254000dcb3f_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"stonith-fence_ipmilan-5254000dcb3f_stop_0 controller-0" -> "stonith-fence_ipmilan-5254000dcb3f_start_0 controller-2" [ style = bold] -+"stonith-fence_ipmilan-5254000dcb3f_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"stonith-fence_ipmilan-5254003e8e97_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254003e8e97_start_0 controller-1" -> "stonith-fence_ipmilan-5254003e8e97_monitor_60000 controller-1" [ style = bold] -+"stonith-fence_ipmilan-5254003e8e97_start_0 controller-1" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_ipmilan-5254003e8e97_stop_0 controller-0" -> "all_stopped" [ style = bold] -+"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 -new file mode 100644 -index 0000000..d072d85 ---- /dev/null -+++ b/pengine/test10/bundle-order-fencing.exp -@@ -0,0 +1,1982 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-order-fencing.scores b/pengine/test10/bundle-order-fencing.scores -new file mode 100644 -index 0000000..9037624 ---- /dev/null -+++ b/pengine/test10/bundle-order-fencing.scores -@@ -0,0 +1,1148 @@ -+Allocation scores: -+Using the original execution date of: 2017-09-12 10:51:59Z -+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 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 rabbitmq-bundle-0: -INFINITY -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: galera-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: galera:0 allocation score on controller-0: -INFINITY -+clone_color: galera:0 allocation score on controller-1: -INFINITY -+clone_color: galera:0 allocation score on controller-2: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: galera:1 allocation score on controller-0: -INFINITY -+clone_color: galera:1 allocation score on controller-1: -INFINITY -+clone_color: galera:1 allocation score on controller-2: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-1: INFINITY -+clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: galera:2 allocation score on controller-0: -INFINITY -+clone_color: galera:2 allocation score on controller-1: -INFINITY -+clone_color: galera:2 allocation score on controller-2: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-2: INFINITY -+clone_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: galera:2 allocation score on rabbitmq-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 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 controller-0: -INFINITY -+clone_color: rabbitmq:0 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:1 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY -+clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-0: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-1: -INFINITY -+clone_color: rabbitmq:2 allocation score on controller-2: -INFINITY -+clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: rabbitmq:2 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 galera-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY -+clone_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: redis-bundle-master allocation score on rabbitmq-bundle-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 controller-0: -INFINITY -+clone_color: redis:0 allocation score on controller-1: -INFINITY -+clone_color: redis:0 allocation score on controller-2: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-1: -INFINITY -+clone_color: redis:0 allocation score on galera-bundle-2: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-0: INFINITY -+clone_color: redis:0 allocation score on redis-bundle-1: -INFINITY -+clone_color: redis:0 allocation score on redis-bundle-2: -INFINITY -+clone_color: redis:1 allocation score on controller-0: -INFINITY -+clone_color: redis:1 allocation score on controller-1: -INFINITY -+clone_color: redis:1 allocation score on controller-2: -INFINITY -+clone_color: redis:1 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:1 allocation score on galera-bundle-1: -INFINITY -+clone_color: redis:1 allocation score on galera-bundle-2: -INFINITY -+clone_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: redis:1 allocation score on redis-bundle-0: -INFINITY -+clone_color: redis:1 allocation score on redis-bundle-1: INFINITY -+clone_color: redis:1 allocation score on redis-bundle-2: -INFINITY -+clone_color: redis:2 allocation score on controller-0: -INFINITY -+clone_color: redis:2 allocation score on controller-1: -INFINITY -+clone_color: redis:2 allocation score on controller-2: -INFINITY -+clone_color: redis:2 allocation score on galera-bundle-0: -INFINITY -+clone_color: redis:2 allocation score on galera-bundle-1: -INFINITY -+clone_color: redis:2 allocation score on galera-bundle-2: -INFINITY -+clone_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: redis:2 allocation score on redis-bundle-0: -INFINITY -+clone_color: redis:2 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: 0 -+container_color: galera-bundle allocation score on controller-1: 0 -+container_color: galera-bundle allocation score on controller-2: 0 -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-0 allocation score on controller-0: INFINITY -+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 galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-1 allocation score on controller-0: 0 -+container_color: galera-bundle-1 allocation score on controller-1: INFINITY -+container_color: galera-bundle-1 allocation score on controller-2: 0 -+container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-1 allocation score on rabbitmq-bundle-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: INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-2 allocation score on rabbitmq-bundle-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: 0 -+container_color: galera-bundle-docker-0 allocation score on controller-2: 0 -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on controller-0: 0 -+container_color: galera-bundle-docker-1 allocation score on controller-1: INFINITY -+container_color: galera-bundle-docker-1 allocation score on controller-2: 0 -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on controller-0: 0 -+container_color: galera-bundle-docker-2 allocation score on controller-1: 0 -+container_color: galera-bundle-docker-2 allocation score on controller-2: INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-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 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 rabbitmq-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera:0 allocation score on controller-0: 0 -+container_color: galera:0 allocation score on controller-1: 0 -+container_color: galera:0 allocation score on controller-2: 0 -+container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera:1 allocation score on controller-0: 0 -+container_color: galera:1 allocation score on controller-1: 0 -+container_color: galera:1 allocation score on controller-2: 0 -+container_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: galera:2 allocation score on controller-0: 0 -+container_color: galera:2 allocation score on controller-1: 0 -+container_color: galera:2 allocation score on controller-2: 0 -+container_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: galera:2 allocation score on rabbitmq-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 galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle allocation score on redis-bundle-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: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on controller-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on controller-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on controller-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on controller-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on controller-1: -INFINITY -+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 galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-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: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: 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 controller-2: 0 -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+container_color: rabbitmq-bundle allocation score on controller-0: 0 -+container_color: rabbitmq-bundle allocation score on controller-1: 0 -+container_color: rabbitmq-bundle allocation score on controller-2: 0 -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on controller-0: INFINITY -+container_color: rabbitmq-bundle-0 allocation score on controller-1: 0 -+container_color: rabbitmq-bundle-0 allocation score on controller-2: 0 -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on controller-0: 0 -+container_color: rabbitmq-bundle-1 allocation score on controller-1: INFINITY -+container_color: rabbitmq-bundle-1 allocation score on controller-2: 0 -+container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-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 rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-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 rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-1: 0 -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-2: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on controller-0: INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on controller-1: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on controller-2: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on controller-0: 0 -+container_color: rabbitmq-bundle-docker-1 allocation score on controller-1: INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on controller-2: 0 -+container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on controller-0: 0 -+container_color: rabbitmq-bundle-docker-2 allocation score on controller-1: 0 -+container_color: rabbitmq-bundle-docker-2 allocation score on controller-2: INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq:0 allocation score on controller-0: 0 -+container_color: rabbitmq:0 allocation score on controller-1: 0 -+container_color: rabbitmq:0 allocation score on controller-2: 0 -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: 0 -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: 0 -+container_color: rabbitmq:1 allocation score on controller-0: 0 -+container_color: rabbitmq:1 allocation score on controller-1: 0 -+container_color: rabbitmq:1 allocation score on controller-2: 0 -+container_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY -+container_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: 0 -+container_color: rabbitmq:2 allocation score on controller-0: 0 -+container_color: rabbitmq:2 allocation score on controller-1: 0 -+container_color: rabbitmq:2 allocation score on controller-2: 0 -+container_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq:2 allocation score on rabbitmq-bundle-1: 0 -+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 galera-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle allocation score on redis-bundle-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 galera-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY -+container_color: redis-bundle-1 allocation score on controller-0: 0 -+container_color: redis-bundle-1 allocation score on controller-1: INFINITY -+container_color: redis-bundle-1 allocation score on controller-2: 0 -+container_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-1 allocation score on redis-bundle-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 galera-bundle-0: -INFINITY -+container_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-2 allocation score on redis-bundle-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 galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on redis-bundle-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: INFINITY -+container_color: redis-bundle-docker-1 allocation score on controller-2: 0 -+container_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on redis-bundle-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 galera-bundle-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on redis-bundle-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 galera-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY -+container_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY -+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 controller-0: 0 -+container_color: redis:0 allocation score on controller-1: 0 -+container_color: redis:0 allocation score on controller-2: 0 -+container_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:0 allocation score on galera-bundle-1: -INFINITY -+container_color: redis:0 allocation score on galera-bundle-2: -INFINITY -+container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-2: -INFINITY -+container_color: redis:1 allocation score on controller-0: 0 -+container_color: redis:1 allocation score on controller-1: 0 -+container_color: redis:1 allocation score on controller-2: 0 -+container_color: redis:1 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:1 allocation score on galera-bundle-1: -INFINITY -+container_color: redis:1 allocation score on galera-bundle-2: -INFINITY -+container_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-2: -INFINITY -+container_color: redis:2 allocation score on controller-0: 0 -+container_color: redis:2 allocation score on controller-1: 0 -+container_color: redis:2 allocation score on controller-2: 0 -+container_color: redis:2 allocation score on galera-bundle-0: -INFINITY -+container_color: redis:2 allocation score on galera-bundle-1: -INFINITY -+container_color: redis:2 allocation score on galera-bundle-2: -INFINITY -+container_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: redis:2 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:2 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:2 allocation score on redis-bundle-2: -INFINITY -+galera:0 promotion score on galera-bundle-0: -1 -+galera:1 promotion score on galera-bundle-1: 100 -+galera:2 promotion score on galera-bundle-2: 100 -+native_color: galera-bundle-0 allocation score on controller-0: INFINITY -+native_color: galera-bundle-0 allocation score on controller-1: 0 -+native_color: galera-bundle-0 allocation score on controller-2: 0 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera-bundle-1 allocation score on controller-0: 0 -+native_color: galera-bundle-1 allocation score on controller-1: INFINITY -+native_color: galera-bundle-1 allocation score on controller-2: 0 -+native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera-bundle-2 allocation score on controller-0: 0 -+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 galera-bundle-0: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-2 allocation score on rabbitmq-bundle-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 galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-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: 0 -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-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 galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera:0 allocation score on controller-0: -INFINITY -+native_color: galera:0 allocation score on controller-1: -INFINITY -+native_color: galera:0 allocation score on controller-2: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera:1 allocation score on controller-0: -INFINITY -+native_color: galera:1 allocation score on controller-1: -INFINITY -+native_color: galera:1 allocation score on controller-2: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-1: INFINITY -+native_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: galera:2 allocation score on controller-0: -INFINITY -+native_color: galera:2 allocation score on controller-1: -INFINITY -+native_color: galera:2 allocation score on controller-2: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-2: INFINITY -+native_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: galera:2 allocation score on rabbitmq-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: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-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 galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on controller-1: INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on controller-2: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+native_color: ip-10.0.0.109 allocation score on controller-0: -INFINITY -+native_color: ip-10.0.0.109 allocation score on controller-1: 0 -+native_color: ip-10.0.0.109 allocation score on controller-2: 0 -+native_color: ip-10.0.0.109 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-10.0.0.109 allocation score on galera-bundle-1: -INFINITY -+native_color: ip-10.0.0.109 allocation score on galera-bundle-2: -INFINITY -+native_color: ip-10.0.0.109 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-10.0.0.109 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: ip-10.0.0.109 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: ip-10.0.0.109 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-10.0.0.109 allocation score on redis-bundle-1: -INFINITY -+native_color: ip-10.0.0.109 allocation score on redis-bundle-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-1: 0 -+native_color: ip-172.17.1.14 allocation score on controller-2: INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-bundle-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on galera-bundle-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: ip-172.17.1.14 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on redis-bundle-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on redis-bundle-2: -INFINITY -+native_color: ip-172.17.1.19 allocation score on controller-0: -INFINITY -+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 galera-bundle-0: -INFINITY -+native_color: ip-172.17.1.19 allocation score on galera-bundle-1: -INFINITY -+native_color: ip-172.17.1.19 allocation score on galera-bundle-2: -INFINITY -+native_color: ip-172.17.1.19 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-172.17.1.19 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: ip-172.17.1.19 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: ip-172.17.1.19 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-172.17.1.19 allocation score on redis-bundle-1: -INFINITY -+native_color: ip-172.17.1.19 allocation score on redis-bundle-2: -INFINITY -+native_color: ip-172.17.3.19 allocation score on controller-0: -INFINITY -+native_color: ip-172.17.3.19 allocation score on controller-1: 0 -+native_color: ip-172.17.3.19 allocation score on controller-2: INFINITY -+native_color: ip-172.17.3.19 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-172.17.3.19 allocation score on galera-bundle-1: -INFINITY -+native_color: ip-172.17.3.19 allocation score on galera-bundle-2: -INFINITY -+native_color: ip-172.17.3.19 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-172.17.3.19 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: ip-172.17.3.19 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: ip-172.17.3.19 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-172.17.3.19 allocation score on redis-bundle-1: -INFINITY -+native_color: ip-172.17.3.19 allocation score on redis-bundle-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on controller-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on controller-1: 0 -+native_color: ip-172.17.4.11 allocation score on controller-2: 0 -+native_color: ip-172.17.4.11 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on galera-bundle-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on galera-bundle-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: ip-172.17.4.11 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-172.17.4.11 allocation score on redis-bundle-1: -INFINITY -+native_color: ip-172.17.4.11 allocation score on redis-bundle-2: -INFINITY -+native_color: ip-192.168.24.7 allocation score on controller-0: -INFINITY -+native_color: ip-192.168.24.7 allocation score on controller-1: 0 -+native_color: ip-192.168.24.7 allocation score on controller-2: 0 -+native_color: ip-192.168.24.7 allocation score on galera-bundle-0: -INFINITY -+native_color: ip-192.168.24.7 allocation score on galera-bundle-1: -INFINITY -+native_color: ip-192.168.24.7 allocation score on galera-bundle-2: -INFINITY -+native_color: ip-192.168.24.7 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: ip-192.168.24.7 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: ip-192.168.24.7 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: ip-192.168.24.7 allocation score on redis-bundle-0: -INFINITY -+native_color: ip-192.168.24.7 allocation score on redis-bundle-1: -INFINITY -+native_color: ip-192.168.24.7 allocation score on redis-bundle-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: INFINITY -+native_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on galera-bundle-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on galera-bundle-2: -INFINITY -+native_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY -+native_color: openstack-cinder-volume allocation score on redis-bundle-1: -INFINITY -+native_color: openstack-cinder-volume allocation score on redis-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on controller-0: INFINITY -+native_color: rabbitmq-bundle-0 allocation score on controller-1: 0 -+native_color: rabbitmq-bundle-0 allocation score on controller-2: 0 -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on controller-0: 0 -+native_color: rabbitmq-bundle-1 allocation score on controller-1: INFINITY -+native_color: rabbitmq-bundle-1 allocation score on controller-2: 0 -+native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on controller-0: 0 -+native_color: rabbitmq-bundle-2 allocation score on controller-1: 0 -+native_color: rabbitmq-bundle-2 allocation score on controller-2: INFINITY -+native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-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 rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+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: 0 -+native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+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 rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:0 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:1 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY -+native_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-0: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-1: -INFINITY -+native_color: rabbitmq:2 allocation score on controller-2: -INFINITY -+native_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: rabbitmq:2 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 galera-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY -+native_color: redis-bundle-1 allocation score on controller-0: 0 -+native_color: redis-bundle-1 allocation score on controller-1: INFINITY -+native_color: redis-bundle-1 allocation score on controller-2: 0 -+native_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-1 allocation score on redis-bundle-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 galera-bundle-0: -INFINITY -+native_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-2 allocation score on redis-bundle-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: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on controller-2: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on redis-bundle-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: INFINITY -+native_color: redis-bundle-docker-1 allocation score on controller-2: 0 -+native_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on redis-bundle-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: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on controller-2: INFINITY -+native_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY -+native_color: redis:0 allocation score on controller-0: -INFINITY -+native_color: redis:0 allocation score on controller-1: -INFINITY -+native_color: redis:0 allocation score on controller-2: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-1: -INFINITY -+native_color: redis:0 allocation score on galera-bundle-2: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-0: INFINITY -+native_color: redis:0 allocation score on redis-bundle-1: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-2: -INFINITY -+native_color: redis:1 allocation score on controller-0: -INFINITY -+native_color: redis:1 allocation score on controller-1: -INFINITY -+native_color: redis:1 allocation score on controller-2: -INFINITY -+native_color: redis:1 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:1 allocation score on galera-bundle-1: -INFINITY -+native_color: redis:1 allocation score on galera-bundle-2: -INFINITY -+native_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis:1 allocation score on redis-bundle-0: -INFINITY -+native_color: redis:1 allocation score on redis-bundle-1: INFINITY -+native_color: redis:1 allocation score on redis-bundle-2: -INFINITY -+native_color: redis:2 allocation score on controller-0: -INFINITY -+native_color: redis:2 allocation score on controller-1: -INFINITY -+native_color: redis:2 allocation score on controller-2: -INFINITY -+native_color: redis:2 allocation score on galera-bundle-0: -INFINITY -+native_color: redis:2 allocation score on galera-bundle-1: -INFINITY -+native_color: redis:2 allocation score on galera-bundle-2: -INFINITY -+native_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: redis:2 allocation score on redis-bundle-0: -INFINITY -+native_color: redis:2 allocation score on redis-bundle-1: -INFINITY -+native_color: redis:2 allocation score on redis-bundle-2: INFINITY -+native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on controller-0: INFINITY -+native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on controller-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on galera-bundle-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on galera-bundle-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on galera-bundle-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on redis-bundle-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on redis-bundle-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on redis-bundle-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on controller-0: INFINITY -+native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on controller-1: 0 -+native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on controller-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on galera-bundle-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on galera-bundle-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on galera-bundle-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on redis-bundle-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on redis-bundle-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on redis-bundle-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400efba5c allocation score on controller-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400efba5c allocation score on controller-1: 0 -+native_color: stonith-fence_ipmilan-525400efba5c allocation score on controller-2: INFINITY -+native_color: stonith-fence_ipmilan-525400efba5c allocation score on galera-bundle-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400efba5c allocation score on galera-bundle-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400efba5c allocation score on galera-bundle-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400efba5c allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400efba5c allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400efba5c allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400efba5c allocation score on redis-bundle-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400efba5c allocation score on redis-bundle-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400efba5c allocation score on redis-bundle-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-fencing.summary b/pengine/test10/bundle-order-fencing.summary -new file mode 100644 -index 0000000..e2128cb ---- /dev/null -+++ b/pengine/test10/bundle-order-fencing.summary -@@ -0,0 +1,222 @@ -+Using the original execution date of: 2017-09-12 10:51:59Z -+ -+Current cluster status: -+Node controller-0 (1): UNCLEAN (offline) -+Online: [ controller-1 controller-2 ] -+Containers: [ galera-bundle-1:galera-bundle-docker-1 galera-bundle-2:galera-bundle-docker-2 rabbitmq-bundle-1:rabbitmq-bundle-docker-1 rabbitmq-bundle-2:rabbitmq-bundle-docker-2 redis-bundle-1:redis-bundle-docker-1 redis-bundle-2:redis-bundle-docker-2 ] -+ -+ Docker container set: rabbitmq-bundle [192.168.24.1:8787/rhosp12/openstack-rabbitmq-docker:pcmklatest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): FAILED controller-0 (UNCLEAN) -+ rabbitmq-bundle-1 (ocf::heartbeat:rabbitmq-cluster): Started controller-1 -+ rabbitmq-bundle-2 (ocf::heartbeat:rabbitmq-cluster): Started controller-2 -+ Docker container set: galera-bundle [192.168.24.1:8787/rhosp12/openstack-mariadb-docker:pcmklatest] -+ galera-bundle-0 (ocf::heartbeat:galera): FAILED Master controller-0 (UNCLEAN) -+ galera-bundle-1 (ocf::heartbeat:galera): Master controller-1 -+ galera-bundle-2 (ocf::heartbeat:galera): Master controller-2 -+ Docker container set: redis-bundle [192.168.24.1:8787/rhosp12/openstack-redis-docker:pcmklatest] -+ redis-bundle-0 (ocf::heartbeat:redis): FAILED Master controller-0 (UNCLEAN) -+ redis-bundle-1 (ocf::heartbeat:redis): Slave controller-1 -+ redis-bundle-2 (ocf::heartbeat:redis): Slave controller-2 -+ ip-192.168.24.7 (ocf::heartbeat:IPaddr2): Started controller-0 (UNCLEAN) -+ ip-10.0.0.109 (ocf::heartbeat:IPaddr2): Started controller-0 (UNCLEAN) -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.1.19 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.3.19 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.4.11 (ocf::heartbeat:IPaddr2): Started controller-0 (UNCLEAN) -+ 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 (UNCLEAN) -+ haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started controller-2 -+ haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started controller-1 -+ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-2 -+ stonith-fence_ipmilan-525400efba5c (stonith:fence_ipmilan): Started controller-2 -+ stonith-fence_ipmilan-5254003e8e97 (stonith:fence_ipmilan): Started controller-0 (UNCLEAN) -+ stonith-fence_ipmilan-5254000dcb3f (stonith:fence_ipmilan): Started controller-0 (UNCLEAN) -+ -+Transition Summary: -+ * Fence (off) redis-bundle-0 (resource: redis-bundle-docker-0) 'guest is unclean' -+ * Fence (off) rabbitmq-bundle-0 (resource: rabbitmq-bundle-docker-0) 'guest is unclean' -+ * Fence (off) galera-bundle-0 (resource: galera-bundle-docker-0) 'guest is unclean' -+ * Fence (reboot) controller-0 'peer is no longer part of the cluster' -+ * Stop rabbitmq-bundle-docker-0 ( controller-0 ) due to node availability -+ * Stop rabbitmq-bundle-0 ( controller-0 ) due to unrunnable rabbitmq-bundle-docker-0 start -+ * Stop rabbitmq:0 ( rabbitmq-bundle-0 ) due to unrunnable rabbitmq-bundle-docker-0 start -+ * Stop galera-bundle-docker-0 ( controller-0 ) due to node availability -+ * Stop galera-bundle-0 ( controller-0 ) due to unrunnable galera-bundle-docker-0 start -+ * Stop galera:0 ( Master galera-bundle-0 ) due to unrunnable galera-bundle-docker-0 start -+ * Stop redis-bundle-docker-0 ( controller-0 ) due to node availability -+ * Stop redis-bundle-0 ( controller-0 ) due to unrunnable redis-bundle-docker-0 start -+ * Stop redis:0 ( Master redis-bundle-0 ) due to unrunnable redis-bundle-docker-0 start -+ * Promote redis:1 ( Slave -> Master redis-bundle-1 ) -+ * Move ip-192.168.24.7 ( controller-0 -> controller-2 ) -+ * Move ip-10.0.0.109 ( controller-0 -> controller-1 ) -+ * Move ip-172.17.4.11 ( controller-0 -> controller-1 ) -+ * Stop haproxy-bundle-docker-0 ( controller-0 ) due to node availability -+ * Move stonith-fence_ipmilan-5254003e8e97 ( controller-0 -> controller-1 ) -+ * Move stonith-fence_ipmilan-5254000dcb3f ( controller-0 -> controller-2 ) -+ -+Executing cluster transition: -+ * Pseudo action: rabbitmq-bundle-clone_pre_notify_stop_0 -+ * 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: stonith-fence_ipmilan-5254003e8e97_stop_0 -+ * Pseudo action: stonith-fence_ipmilan-5254000dcb3f_stop_0 -+ * Pseudo action: haproxy-bundle_stop_0 -+ * Pseudo action: redis-bundle_demote_0 -+ * Pseudo action: galera-bundle_demote_0 -+ * Pseudo action: rabbitmq-bundle_stop_0 -+ * Pseudo action: rabbitmq-bundle_start_0 -+ * Fencing controller-0 (reboot) -+ * 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: 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 -+ * 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 -+ * Pseudo action: stonith_complete -+ * 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 -+ * Pseudo action: redis_demote_0 -+ * Pseudo action: redis-bundle-master_demoted_0 -+ * 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 -+ * Pseudo action: galera-bundle_demoted_0 -+ * Pseudo action: galera-bundle_stop_0 -+ * Pseudo action: rabbitmq_stop_0 -+ * Pseudo action: rabbitmq-bundle-clone_stopped_0 -+ * Pseudo action: galera-bundle-master_stop_0 -+ * Pseudo action: galera-bundle-docker-0_stop_0 -+ * Pseudo action: redis-bundle-master_post_notify_demoted_0 -+ * Resource action: ip-192.168.24.7 start on controller-2 -+ * Resource action: ip-10.0.0.109 start on controller-1 -+ * Resource action: ip-172.17.4.11 start on controller-1 -+ * Pseudo action: rabbitmq-bundle-clone_post_notify_stopped_0 -+ * Pseudo action: galera_stop_0 -+ * Pseudo action: galera-bundle-master_stopped_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_demoted_0 -+ * Pseudo action: redis-bundle-master_pre_notify_stop_0 -+ * Resource action: ip-192.168.24.7 monitor=10000 on controller-2 -+ * Resource action: ip-10.0.0.109 monitor=10000 on controller-1 -+ * Resource action: ip-172.17.4.11 monitor=10000 on controller-1 -+ * Pseudo action: redis-bundle_demoted_0 -+ * Pseudo action: redis-bundle_stop_0 -+ * Pseudo action: galera-bundle_stopped_0 -+ * Pseudo action: galera-bundle_start_0 -+ * Resource action: rabbitmq notify on rabbitmq-bundle-1 -+ * Resource action: rabbitmq notify on rabbitmq-bundle-2 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-post_notify_stopped_0 -+ * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 -+ * Pseudo action: galera-bundle-master_start_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_stop_0 -+ * Pseudo action: redis-bundle-master_stop_0 -+ * Pseudo action: redis-bundle-docker-0_stop_0 -+ * Pseudo action: rabbitmq-bundle_stopped_0 -+ * Pseudo action: rabbitmq_notified_0 -+ * Resource action: rabbitmq notify on rabbitmq-bundle-1 -+ * Resource action: rabbitmq notify on rabbitmq-bundle-2 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0 -+ * Pseudo action: rabbitmq-bundle-clone_start_0 -+ * Pseudo action: galera-bundle-master_running_0 -+ * Pseudo action: redis_stop_0 -+ * Pseudo action: redis-bundle-master_stopped_0 -+ * Pseudo action: galera-bundle_running_0 -+ * Pseudo action: rabbitmq-bundle-clone_running_0 -+ * Pseudo action: redis-bundle-master_post_notify_stopped_0 -+ * Pseudo action: rabbitmq-bundle-clone_post_notify_running_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_stopped_0 -+ * Pseudo action: redis-bundle-master_pre_notify_start_0 -+ * Pseudo action: redis-bundle_stopped_0 -+ * Pseudo action: redis-bundle_start_0 -+ * Resource action: rabbitmq notify on rabbitmq-bundle-0 -+ * Resource action: rabbitmq notify on rabbitmq-bundle-1 -+ * Resource action: rabbitmq notify on rabbitmq-bundle-2 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-post_notify_running_0 -+ * Pseudo action: redis_notified_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_start_0 -+ * Pseudo action: redis-bundle-master_start_0 -+ * 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 -+ * Pseudo action: redis-bundle-master_confirmed-post_notify_running_0 -+ * Pseudo action: redis-bundle_running_0 -+ * Pseudo action: redis-bundle-master_pre_notify_promote_0 -+ * Pseudo action: redis-bundle_promote_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 -+ * Resource action: redis promote on redis-bundle-1 -+ * Pseudo action: redis-bundle-master_promoted_0 -+ * Pseudo action: redis-bundle-master_post_notify_promoted_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-post_notify_promoted_0 -+ * Pseudo action: redis-bundle_promoted_0 -+ * Resource action: redis monitor=20000 on redis-bundle-1 -+Using the original execution date of: 2017-09-12 10:51:59Z -+ -+Revised cluster status: -+Online: [ controller-1 controller-2 ] -+OFFLINE: [ controller-0 ] -+Containers: [ galera-bundle-1:galera-bundle-docker-1 galera-bundle-2:galera-bundle-docker-2 rabbitmq-bundle-1:rabbitmq-bundle-docker-1 rabbitmq-bundle-2:rabbitmq-bundle-docker-2 redis-bundle-1:redis-bundle-docker-1 redis-bundle-2:redis-bundle-docker-2 ] -+ -+ Docker container set: rabbitmq-bundle [192.168.24.1:8787/rhosp12/openstack-rabbitmq-docker:pcmklatest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): FAILED -+ rabbitmq-bundle-1 (ocf::heartbeat:rabbitmq-cluster): Started controller-1 -+ rabbitmq-bundle-2 (ocf::heartbeat:rabbitmq-cluster): Started controller-2 -+ Docker container set: galera-bundle [192.168.24.1:8787/rhosp12/openstack-mariadb-docker:pcmklatest] -+ galera-bundle-0 (ocf::heartbeat:galera): FAILED Master -+ galera-bundle-1 (ocf::heartbeat:galera): Master controller-1 -+ galera-bundle-2 (ocf::heartbeat:galera): Master controller-2 -+ Docker container set: redis-bundle [192.168.24.1:8787/rhosp12/openstack-redis-docker:pcmklatest] -+ redis-bundle-0 (ocf::heartbeat:redis): FAILED Master -+ redis-bundle-1 (ocf::heartbeat:redis): Master controller-1 -+ redis-bundle-2 (ocf::heartbeat:redis): Slave controller-2 -+ ip-192.168.24.7 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-10.0.0.109 (ocf::heartbeat:IPaddr2): Started controller-1 -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.1.19 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.3.19 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.4.11 (ocf::heartbeat:IPaddr2): Started controller-1 -+ Docker container set: haproxy-bundle [192.168.24.1:8787/rhosp12/openstack-haproxy-docker:pcmklatest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped -+ haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started controller-2 -+ haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started controller-1 -+ openstack-cinder-volume (systemd:openstack-cinder-volume): Started controller-2 -+ stonith-fence_ipmilan-525400efba5c (stonith:fence_ipmilan): Started controller-2 -+ stonith-fence_ipmilan-5254003e8e97 (stonith:fence_ipmilan): Started controller-1 -+ stonith-fence_ipmilan-5254000dcb3f (stonith:fence_ipmilan): Started controller-2 -+ -diff --git a/pengine/test10/bundle-order-fencing.xml b/pengine/test10/bundle-order-fencing.xml -new file mode 100644 -index 0000000..b303116 ---- /dev/null -+++ b/pengine/test10/bundle-order-fencing.xml -@@ -0,0 +1,799 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.8.3.1 - - -From 14583c664638d17a14bccfd130739c7242f5cec4 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 20 Sep 2017 21:53:00 +1000 -Subject: [PATCH 10/21] Fix: PE: Resources in bundles should also respect - failcounts - ---- - pengine/container.c | 35 ++++++++++++++++++++++++++++++++++- - 1 file changed, 34 insertions(+), 1 deletion(-) - -diff --git a/pengine/container.c b/pengine/container.c -index 1e9b971..0e556bb 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -74,6 +74,38 @@ static GListPtr get_containers_or_children(resource_t *rsc) - } - } - -+static bool -+migration_threshold_reached(resource_t *rsc, node_t *node, -+ pe_working_set_t *data_set) -+{ -+ int fail_count, countdown; -+ -+ /* Migration threshold of 0 means never force away */ -+ if (rsc->migration_threshold == 0) { -+ return FALSE; -+ } -+ -+ /* If there are no failures, there's no need to force away */ -+ fail_count = get_failcount_all(node, rsc, NULL, data_set); -+ if (fail_count <= 0) { -+ return FALSE; -+ } -+ -+ /* How many more times recovery will be tried on this node */ -+ countdown = QB_MAX(rsc->migration_threshold - fail_count, 0); -+ -+ if (countdown == 0) { -+ crm_warn("Forcing %s away from %s after %d failures (max=%d)", -+ rsc->id, node->details->uname, fail_count, -+ rsc->migration_threshold); -+ return TRUE; -+ } -+ -+ crm_info("%s can fail %d more times on %s before being forced off", -+ rsc->id, countdown, node->details->uname); -+ return FALSE; -+} -+ - node_t * - container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - { -@@ -128,7 +160,7 @@ container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - while (g_hash_table_iter_next(&iter, NULL, (gpointer *) & node)) { - if(node->details != tuple->node->details) { - node->weight = -INFINITY; -- } else { -+ } else if(migration_threshold_reached(tuple->child, node, data_set) == FALSE) { - node->weight = INFINITY; - } - } -@@ -158,6 +190,7 @@ container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) - return NULL; - } - -+ - void - container_create_actions(resource_t * rsc, pe_working_set_t * data_set) - { --- -1.8.3.1 - - -From 1eacc741d04098d24b97631a273501ef0aff2fc1 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Thu, 21 Sep 2017 20:59:16 +1000 -Subject: [PATCH 11/21] crm_resource: Do not send history erasure commands for - nodes where this is none - -If a resource is not known on a given node, thats because we have no -operation history for it there. So there is no benefit to requesting a -cleanup for that resource/node combination. ---- - tools/crm_resource_runtime.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c -index 8f9ae0d..210ea7d 100644 ---- a/tools/crm_resource_runtime.c -+++ b/tools/crm_resource_runtime.c -@@ -573,7 +573,7 @@ send_lrm_rsc_op(crm_ipc_t * crmd_channel, const char *op, - rc = 0; - - } else { -- CMD_ERR("Could not send %s op to the crmd", op); -+ crm_debug("Could not send %s op to the crmd", op); - rc = -ENOTCONN; - } - -@@ -627,8 +627,9 @@ cli_resource_delete(crm_ipc_t *crmd_channel, const char *host_uname, - - } else if (host_uname == NULL) { - GListPtr lpc = NULL; -+ GListPtr nodes = g_hash_table_get_values(rsc->known_on); - -- for (lpc = data_set->nodes; lpc != NULL; lpc = lpc->next) { -+ for (lpc = nodes; lpc != NULL; lpc = lpc->next) { - node = (node_t *) lpc->data; - - if (node->details->online) { -@@ -637,6 +638,7 @@ cli_resource_delete(crm_ipc_t *crmd_channel, const char *host_uname, - } - } - -+ g_list_free(nodes); - return pcmk_ok; - } - --- -1.8.3.1 - - -From e10299600e87356114dbb96df981c2ff196b8f9e Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 22 Sep 2017 19:51:35 +1000 -Subject: [PATCH 12/21] Log: attrd: Tweak log messages for clarity - ---- - attrd/commands.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/attrd/commands.c b/attrd/commands.c -index 6f40d60..96a1167 100644 ---- a/attrd/commands.c -+++ b/attrd/commands.c -@@ -670,12 +670,12 @@ attrd_peer_remove(const char *host, gboolean uncache, const char *source) - GHashTableIter aIter; - - CRM_CHECK(host != NULL, return); -- crm_notice("Removing all %s attributes for %s", host, source); -+ crm_notice("Removing all %s attributes for peer %s", host, source); - - g_hash_table_iter_init(&aIter, attributes); - while (g_hash_table_iter_next(&aIter, NULL, (gpointer *) & a)) { - if(g_hash_table_remove(a->values, host)) { -- crm_debug("Removed %s[%s] for %s", a->id, host, source); -+ crm_debug("Removed %s[%s] for peer %s", a->id, host, source); - } - } - --- -1.8.3.1 - - -From e4bd6faed4481c10befd65e5c8315d81d5e8e43d Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 22 Sep 2017 20:03:02 +1000 -Subject: [PATCH 13/21] PE: Revert e21a4d00 since we will support probing - remote connections - -Also it causes containers to be unnecessarily restarted when the admin -triggers a cleanup. ---- - lib/pengine/unpack.c | 24 +----------------------- - 1 file changed, 1 insertion(+), 23 deletions(-) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 6e0651e..859d638 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -2342,9 +2342,6 @@ unpack_lrm_resources(node_t * node, xmlNode * lrm_rsc_list, pe_working_set_t * d - { - xmlNode *rsc_entry = NULL; - gboolean found_orphaned_container_filler = FALSE; -- GListPtr unexpected_containers = NULL; -- GListPtr gIter = NULL; -- resource_t *remote = NULL; - - CRM_CHECK(node != NULL, return FALSE); - -@@ -2354,31 +2351,13 @@ unpack_lrm_resources(node_t * node, xmlNode * lrm_rsc_list, pe_working_set_t * d - rsc_entry = __xml_next_element(rsc_entry)) { - - if (crm_str_eq((const char *)rsc_entry->name, XML_LRM_TAG_RESOURCE, TRUE)) { -- resource_t *rsc; -- rsc = unpack_lrm_rsc_state(node, rsc_entry, data_set); -+ resource_t *rsc = unpack_lrm_rsc_state(node, rsc_entry, data_set); - if (!rsc) { - continue; - } - if (is_set(rsc->flags, pe_rsc_orphan_container_filler)) { - found_orphaned_container_filler = TRUE; - } -- if (is_set(rsc->flags, pe_rsc_unexpectedly_running)) { -- remote = rsc_contains_remote_node(data_set, rsc); -- if (remote) { -- unexpected_containers = g_list_append(unexpected_containers, remote); -- } -- } -- } -- } -- -- /* If a container resource is unexpectedly up... and the remote-node -- * connection resource for that container is not up, the entire container -- * must be recovered. */ -- for (gIter = unexpected_containers; gIter != NULL; gIter = gIter->next) { -- remote = (resource_t *) gIter->data; -- if (remote->role != RSC_ROLE_STARTED) { -- crm_warn("Recovering container resource %s. Resource is unexpectedly running and involves a remote-node.", remote->container->id); -- set_bit(remote->container->flags, pe_rsc_failed); - } - } - -@@ -2388,7 +2367,6 @@ unpack_lrm_resources(node_t * node, xmlNode * lrm_rsc_list, pe_working_set_t * d - if (found_orphaned_container_filler) { - handle_orphaned_container_fillers(lrm_rsc_list, data_set); - } -- g_list_free(unexpected_containers); - return TRUE; - } - --- -1.8.3.1 - - -From 12d453ccfa3a3a36456e6c2985f65137fde2a01d Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 25 Sep 2017 17:48:40 +1000 -Subject: [PATCH 14/21] PE: Implement probing of container remote nodes - ---- - include/crm/pengine/status.h | 7 + - lib/pengine/container.c | 3 + - pengine/allocate.c | 3 +- - pengine/native.c | 71 +++- - pengine/pengine.h | 6 - - pengine/test10/bug-cl-5247.dot | 6 + - pengine/test10/bug-cl-5247.exp | 346 +++++++++------- - pengine/test10/bug-cl-5247.summary | 2 + - pengine/test10/bug-rh-1097457.dot | 32 ++ - pengine/test10/bug-rh-1097457.exp | 456 +++++++++++++++------ - pengine/test10/bug-rh-1097457.summary | 20 + - pengine/test10/bundle-order-partial-start-2.dot | 2 + - pengine/test10/bundle-order-partial-start-2.exp | 282 +++++++------ - .../test10/bundle-order-partial-start-2.summary | 1 + - pengine/test10/bundle-order-partial-start.dot | 2 + - pengine/test10/bundle-order-partial-start.exp | 272 ++++++------ - pengine/test10/bundle-order-partial-start.summary | 1 + - pengine/test10/bundle-order-startup.exp | 8 +- - pengine/test10/container-is-remote-node.dot | 4 + - pengine/test10/container-is-remote-node.exp | 39 +- - pengine/test10/container-is-remote-node.summary | 4 + - pengine/test10/guest-node-host-dies.dot | 2 + - pengine/test10/guest-node-host-dies.exp | 6 + - pengine/test10/whitebox-asymmetric.dot | 4 + - pengine/test10/whitebox-asymmetric.exp | 48 ++- - pengine/test10/whitebox-asymmetric.summary | 2 + - pengine/test10/whitebox-fail1.dot | 5 + - pengine/test10/whitebox-fail1.exp | 145 ++++--- - pengine/test10/whitebox-fail1.summary | 3 + - pengine/test10/whitebox-fail2.dot | 5 + - pengine/test10/whitebox-fail2.exp | 145 ++++--- - pengine/test10/whitebox-fail2.summary | 3 + - pengine/test10/whitebox-fail3.dot | 3 + - pengine/test10/whitebox-fail3.exp | 15 +- - pengine/test10/whitebox-fail3.summary | 4 +- - pengine/test10/whitebox-imply-stop-on-fence.dot | 19 + - pengine/test10/whitebox-imply-stop-on-fence.exp | 325 ++++++++++----- - .../test10/whitebox-imply-stop-on-fence.summary | 8 + - pengine/test10/whitebox-migrate1.dot | 1 + - pengine/test10/whitebox-move.dot | 3 + - pengine/test10/whitebox-move.exp | 108 ++--- - pengine/test10/whitebox-move.summary | 3 +- - pengine/test10/whitebox-ms-ordering-move.dot | 12 + - pengine/test10/whitebox-ms-ordering-move.exp | 294 ++++++++----- - pengine/test10/whitebox-ms-ordering-move.summary | 12 + - pengine/test10/whitebox-nested-group.dot | 21 + - pengine/test10/whitebox-nested-group.exp | 66 ++- - pengine/test10/whitebox-nested-group.summary | 16 +- - pengine/test10/whitebox-orphan-ms.dot | 18 + - pengine/test10/whitebox-orphan-ms.exp | 92 ++--- - pengine/test10/whitebox-orphaned.dot | 8 + - pengine/test10/whitebox-orphaned.exp | 120 ++++-- - pengine/test10/whitebox-orphaned.summary | 9 +- - pengine/test10/whitebox-start.dot | 4 + - pengine/test10/whitebox-start.exp | 99 +++-- - pengine/test10/whitebox-start.summary | 10 +- - pengine/test10/whitebox-stop.dot | 5 + - pengine/test10/whitebox-stop.exp | 82 ++-- - pengine/test10/whitebox-stop.summary | 9 +- - pengine/test10/whitebox-unexpectedly-running.dot | 24 +- - pengine/test10/whitebox-unexpectedly-running.exp | 112 +++-- - .../test10/whitebox-unexpectedly-running.scores | 8 + - .../test10/whitebox-unexpectedly-running.summary | 23 +- - pengine/test10/whitebox-unexpectedly-running.xml | 11 + - 64 files changed, 2322 insertions(+), 1157 deletions(-) - -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index fcd5226..dc5f6eb 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -395,6 +395,13 @@ enum pe_link_state { - pe_link_dup, - }; - -+ -+enum rsc_discover_e { -+ discover_always = 0, -+ discover_never, -+ discover_exclusive, -+}; -+ - /* *INDENT-OFF* */ - enum pe_ordering { - pe_order_none = 0x0, /* deleted */ -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 5831b58..a550ff3 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -348,6 +348,7 @@ disallow_node(resource_t *rsc, const char *uname) - - if (match) { - ((pe_node_t *) match)->weight = -INFINITY; -+ ((pe_node_t *) match)->rsc_discover_mode = discover_never; - } - if (rsc->children) { - GListPtr child; -@@ -434,6 +435,7 @@ create_remote_resource( - } else { - node->weight = -INFINITY; - } -+ node->rsc_discover_mode = discover_never; - - /* unpack_remote_nodes() ensures that each remote node and guest node - * has a pe_node_t entry. Ideally, it would do the same for bundle nodes. -@@ -458,6 +460,7 @@ create_remote_resource( - - tuple->node = node_copy(node); - tuple->node->weight = 500; -+ tuple->node->rsc_discover_mode = discover_exclusive; - - if (common_unpack(xml_remote, &tuple->remote, parent, data_set) == FALSE) { - return FALSE; -diff --git a/pengine/allocate.c b/pengine/allocate.c -index d610035..401c18e 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -900,8 +900,7 @@ probe_resources(pe_working_set_t * data_set) - const char *probed = node_attribute_raw(node, CRM_OP_PROBED); - - if (is_container_remote_node(node)) { -- /* TODO enable guest node probes once ordered probing is implemented */ -- continue; -+ /* Guest node probes and their ordering requirements are now functional */ - - } else if (node->details->online == FALSE && node->details->remote_rsc) { - enum remote_connection_state state = get_remote_node_state(node); -diff --git a/pengine/native.c b/pengine/native.c -index 37cf541..2e40a4c 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -2784,10 +2784,6 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - if (force == FALSE && is_not_set(data_set->flags, pe_flag_startup_probes)) { - pe_rsc_trace(rsc, "Skipping active resource detection for %s", rsc->id); - return FALSE; -- } else if (force == FALSE && is_container_remote_node(node)) { -- pe_rsc_trace(rsc, "Skipping active resource detection for %s on container %s", -- rsc->id, node->details->id); -- return FALSE; - } - - if (is_remote_node(node)) { -@@ -2847,6 +2843,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - } - - allowed = g_hash_table_lookup(rsc->allowed_nodes, node->details->id); -+ - if (rsc->exclusive_discover || top->exclusive_discover) { - if (allowed == NULL) { - /* exclusive discover is enabled and this node is not in the allowed list. */ -@@ -2857,11 +2854,77 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - return FALSE; - } - } -+ -+ if(allowed == NULL && node->rsc_discover_mode == discover_never) { -+ /* If this node was allowed to host this resource it would -+ * have been explicitly added to the 'allowed_nodes' list. -+ * However it wasn't and the node has discovery disabled, so -+ * no need to probe for this resource. -+ */ -+ return FALSE; -+ } -+ - if (allowed && allowed->rsc_discover_mode == discover_never) { - /* this resource is marked as not needing to be discovered on this node */ - return FALSE; - } - -+ if(allowed != NULL && is_container_remote_node(allowed)) { -+ resource_t *remote = allowed->details->remote_rsc; -+ -+ if(remote->role == RSC_ROLE_STOPPED) { -+ /* If the container is stopped, then we know anything that -+ * might have been inside it is also stopped and there is -+ * no need to probe. -+ * -+ * If we don't know the container's state on the target -+ * either: -+ * -+ * - the container is running, the transition will abort -+ * and we'll end up in a different case next time, or -+ * -+ * - the container is stopped -+ * -+ * Either way there is no need to probe. -+ * -+ */ -+ if(remote->allocated_to -+ && g_hash_table_lookup(remote->known_on, remote->allocated_to->details->id) == NULL) { -+ /* For safety, we order the 'rsc' start after 'remote' -+ * has been probed. -+ * -+ * Using 'top' helps for groups, but in we may need to -+ * follow the start's ordering chain backwards. -+ */ -+ custom_action_order(remote, generate_op_key(remote->id, RSC_STATUS, 0), NULL, -+ top, generate_op_key(top->id, RSC_START, 0), NULL, -+ pe_order_optional, data_set); -+ } -+ return FALSE; -+ -+ /* Here we really we want to check if remote->stop is required, -+ * but that information doesn't exist yet -+ */ -+ } else if(allowed->details->remote_requires_reset -+ || allowed->details->unclean -+ || is_set(remote->flags, pe_rsc_failed) -+ || remote->next_role == RSC_ROLE_STOPPED -+ || (remote->allocated_to -+ && pe_find_node(remote->running_on, remote->allocated_to->details->uname) == NULL) -+ ) { -+ /* The container is stopping or restarting, don't start -+ * 'rsc' until 'remote' stops as this also implies that -+ * 'rsc' is stopped - avoiding the need to probe -+ */ -+ custom_action_order(remote, generate_op_key(remote->id, RSC_STOP, 0), NULL, -+ top, generate_op_key(top->id, RSC_START, 0), NULL, -+ pe_order_optional, data_set); -+ return FALSE; -+/* } else { -+ * The container is running so there is no problem probing it -+ */ -+ } -+ } - - key = generate_op_key(rsc->id, RSC_STATUS, 0); - probe = custom_action(rsc, key, RSC_STATUS, node, FALSE, TRUE, data_set); -diff --git a/pengine/pengine.h b/pengine/pengine.h -index e3f4874..2c13258 100644 ---- a/pengine/pengine.h -+++ b/pengine/pengine.h -@@ -75,12 +75,6 @@ struct rsc_ticket_s { - int role_lh; - }; - --enum rsc_discover_e { -- discover_always = 0, -- discover_never, -- discover_exclusive, --}; -- - struct rsc_to_node_s { - char *id; - resource_t *rsc_lh; -diff --git a/pengine/test10/bug-cl-5247.dot b/pengine/test10/bug-cl-5247.dot -index 44f788d..decf5c3 100644 ---- a/pengine/test10/bug-cl-5247.dot -+++ b/pengine/test10/bug-cl-5247.dot -@@ -127,6 +127,9 @@ digraph "g" { - "stonith_complete" -> "vip-master_start_0 pgsr01" [ style = bold] - "stonith_complete" -> "vip-rep_start_0 pgsr01" [ style = bold] - "stonith_complete" [ style=bold color="green" fontcolor="orange"] -+"vip-master_monitor_0 pgsr01" -> "vip-master_start_0 pgsr01" [ style = bold] -+"vip-master_monitor_0 pgsr01" -> "vip-master_stop_0 pgsr02" [ style = bold] -+"vip-master_monitor_0 pgsr01" [ style=bold color="green" fontcolor="black"] - "vip-master_monitor_10000 pgsr01" [ style=bold color="green" fontcolor="black"] - "vip-master_start_0 pgsr01" -> "master-group_running_0" [ style = bold] - "vip-master_start_0 pgsr01" -> "vip-master_monitor_10000 pgsr01" [ style = bold] -@@ -136,6 +139,9 @@ digraph "g" { - "vip-master_stop_0 pgsr02" -> "master-group_stopped_0" [ style = bold] - "vip-master_stop_0 pgsr02" -> "vip-master_start_0 pgsr01" [ style = bold] - "vip-master_stop_0 pgsr02" [ style=bold color="green" fontcolor="orange"] -+"vip-rep_monitor_0 pgsr01" -> "vip-rep_start_0 pgsr01" [ style = bold] -+"vip-rep_monitor_0 pgsr01" -> "vip-rep_stop_0 pgsr02" [ style = bold] -+"vip-rep_monitor_0 pgsr01" [ style=bold color="green" fontcolor="black"] - "vip-rep_monitor_10000 pgsr01" [ style=bold color="green" fontcolor="black"] - "vip-rep_start_0 pgsr01" -> "master-group_running_0" [ style = bold] - "vip-rep_start_0 pgsr01" -> "vip-rep_monitor_10000 pgsr01" [ style = bold] -diff --git a/pengine/test10/bug-cl-5247.exp b/pengine/test10/bug-cl-5247.exp -index 2ec83c0..47c369a 100644 ---- a/pengine/test10/bug-cl-5247.exp -+++ b/pengine/test10/bug-cl-5247.exp -@@ -8,28 +8,28 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,32 +46,32 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -87,10 +87,10 @@ - - - -- -+ - - -- -+ - - - -@@ -109,22 +109,22 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -132,7 +132,7 @@ - - - -- -+ - - - -@@ -141,32 +141,32 @@ - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -182,10 +182,10 @@ - - - -- -+ - - -- -+ - - - -@@ -204,472 +204,502 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ -+ -+ -+ - - - - - -- -+ - - - - - -- -+ -+ -+ -+ - - -- -+ - - -- -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ -+ -+ -+ - - -- -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -678,9 +708,9 @@ - - - -- -+ - -- -+ - - - -@@ -694,7 +724,7 @@ - - - -- -+ - - - -@@ -703,9 +733,9 @@ - - - -- -+ - -- -+ - - - -@@ -718,19 +748,19 @@ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - - - -@@ -741,31 +771,31 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/bug-cl-5247.summary b/pengine/test10/bug-cl-5247.summary -index 3e5511d..f15ef2e 100644 ---- a/pengine/test10/bug-cl-5247.summary -+++ b/pengine/test10/bug-cl-5247.summary -@@ -32,6 +32,8 @@ Executing cluster transition: - * Resource action: prmStonith1-2 stop on bl460g8n4 - * Pseudo action: grpStonith2_stop_0 - * Resource action: prmStonith2-2 stop on bl460g8n3 -+ * Resource action: vip-master monitor on pgsr01 -+ * Resource action: vip-rep monitor on pgsr01 - * Pseudo action: msPostgresql_pre_notify_demote_0 - * Resource action: pgsr01 monitor on bl460g8n4 - * Resource action: pgsr02 monitor on bl460g8n3 -diff --git a/pengine/test10/bug-rh-1097457.dot b/pengine/test10/bug-rh-1097457.dot -index e74c8fb..7791e06 100644 ---- a/pengine/test10/bug-rh-1097457.dot -+++ b/pengine/test10/bug-rh-1097457.dot -@@ -1,4 +1,16 @@ - digraph "g" { -+"FAKE1-IP_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] -+"FAKE1_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] -+"FAKE2-IP_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] -+"FAKE2_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] -+"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] - "FAKE4-IP_start_0 lamaVM2" -> "lamaVM2-G4_running_0" [ style = bold] -@@ -8,6 +20,12 @@ digraph "g" { - "FAKE4-IP_stop_0 lamaVM2" -> "all_stopped" [ style = bold] - "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] - "FAKE4_start_0 lamaVM2" -> "FAKE4_monitor_30000 lamaVM2" [ style = bold] -@@ -17,6 +35,11 @@ digraph "g" { - "FAKE4_stop_0 lamaVM2" -> "all_stopped" [ style = bold] - "FAKE4_stop_0 lamaVM2" -> "lamaVM2-G4_stopped_0" [ style = bold] - "FAKE4_stop_0 lamaVM2" [ style=bold color="green" fontcolor="orange"] -+"FAKE5-IP_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] -+"FAKE5-IP_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] -+"FAKE5_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] -+"FAKE6-IP_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] -+"FAKE6-IP_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] - "FAKE6-clone_running_0" [ style=bold color="green" fontcolor="orange"] - "FAKE6-clone_start_0" -> "FAKE6-clone_running_0" [ style = bold] - "FAKE6-clone_start_0" -> "FAKE6_start_0 lamaVM2" [ style = bold] -@@ -34,6 +57,14 @@ digraph "g" { - "FAKE6_stop_0 lamaVM2" -> "FAKE6_start_0 lamaVM2" [ style = bold] - "FAKE6_stop_0 lamaVM2" -> "all_stopped" [ style = bold] - "FAKE6_stop_0 lamaVM2" [ style=bold color="green" fontcolor="orange"] -+"FSlun1_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] -+"FSlun2_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] -+"FSlun3_monitor_0 lamaVM1" -> "FSlun3_start_0 lama2" [ style = bold] -+"FSlun3_monitor_0 lamaVM1" -> "FSlun3_stop_0 lamaVM2" [ style = bold] -+"FSlun3_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] -+"FSlun3_monitor_0 lamaVM3" -> "FSlun3_start_0 lama2" [ style = bold] -+"FSlun3_monitor_0 lamaVM3" -> "FSlun3_stop_0 lamaVM2" [ style = bold] -+"FSlun3_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] - "FSlun3_monitor_10000 lama2" [ style=bold color="green" fontcolor="black"] - "FSlun3_monitor_10000 lamaVM2" [ style=bold color="green" fontcolor="black"] - "FSlun3_start_0 lama2" -> "FSlun3_monitor_10000 lama2" [ style = bold] -@@ -42,6 +73,7 @@ digraph "g" { - "FSlun3_stop_0 lamaVM2" -> "FSlun3_start_0 lama2" [ style = bold] - "FSlun3_stop_0 lamaVM2" -> "all_stopped" [ style = bold] - "FSlun3_stop_0 lamaVM2" [ style=bold color="green" fontcolor="orange"] -+"FSlun4_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] - "VM2_monitor_10000 lama3" [ style=bold color="green" fontcolor="black"] - "VM2_start_0 lama3" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] - "VM2_start_0 lama3" -> "FAKE4_start_0 lamaVM2" [ style = bold] -diff --git a/pengine/test10/bug-rh-1097457.exp b/pengine/test10/bug-rh-1097457.exp -index eb9b225..33c13bd 100644 ---- a/pengine/test10/bug-rh-1097457.exp -+++ b/pengine/test10/bug-rh-1097457.exp -@@ -1,34 +1,52 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - - - -@@ -37,58 +55,88 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ -+ -+ -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ - - -- -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -97,117 +145,255 @@ - - - -- -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -216,57 +402,87 @@ - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -275,54 +491,54 @@ - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -331,89 +547,89 @@ - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -423,7 +639,7 @@ - - - -- -+ - - - -@@ -432,13 +648,13 @@ - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -447,23 +663,23 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - - - -@@ -471,25 +687,25 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/bug-rh-1097457.summary b/pengine/test10/bug-rh-1097457.summary -index c50df5f..e23c6ad 100644 ---- a/pengine/test10/bug-rh-1097457.summary -+++ b/pengine/test10/bug-rh-1097457.summary -@@ -41,6 +41,26 @@ Transition Summary: - * Restart lamaVM2 ( lama3 ) due to required VM2 start - - Executing cluster transition: -+ * Resource action: FSlun1 monitor on lamaVM3 -+ * Resource action: FSlun2 monitor on lamaVM3 -+ * Resource action: FSlun3 monitor on lamaVM3 -+ * Resource action: FSlun3 monitor on lamaVM1 -+ * Resource action: FSlun4 monitor on lamaVM1 -+ * Resource action: FAKE5-IP monitor on lamaVM3 -+ * Resource action: FAKE5-IP monitor on lamaVM1 -+ * Resource action: FAKE6-IP monitor on lamaVM3 -+ * Resource action: FAKE6-IP monitor on lamaVM1 -+ * Resource action: FAKE5 monitor on lamaVM1 -+ * Resource action: FAKE1 monitor on lamaVM3 -+ * Resource action: FAKE1-IP monitor on lamaVM3 -+ * Resource action: FAKE2 monitor on lamaVM3 -+ * Resource action: FAKE2-IP monitor on lamaVM3 -+ * Resource action: FAKE3 monitor on lamaVM3 -+ * Resource action: FAKE3-IP monitor on lamaVM3 -+ * Resource action: FAKE4 monitor on lamaVM3 -+ * Resource action: FAKE4 monitor on lamaVM1 -+ * Resource action: FAKE4-IP monitor on lamaVM3 -+ * Resource action: FAKE4-IP monitor on lamaVM1 - * Resource action: lamaVM2 stop on lama3 - * Resource action: VM2 stop on lama3 - * Pseudo action: stonith-lamaVM2-reboot on lamaVM2 -diff --git a/pengine/test10/bundle-order-partial-start-2.dot b/pengine/test10/bundle-order-partial-start-2.dot -index d58e809..163be1f 100644 ---- a/pengine/test10/bundle-order-partial-start-2.dot -+++ b/pengine/test10/bundle-order-partial-start-2.dot -@@ -64,6 +64,8 @@ digraph "g" { - "rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] - "rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq:0_monitor_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq:0_monitor_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] - "rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bundle-order-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp -index f600983..087ed6c 100644 ---- a/pengine/test10/bundle-order-partial-start-2.exp -+++ b/pengine/test10/bundle-order-partial-start-2.exp -@@ -1,234 +1,246 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - - - -@@ -237,29 +249,29 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -269,7 +281,7 @@ - - - -- -+ - - - -@@ -278,277 +290,277 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -@@ -556,10 +568,10 @@ - - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start-2.summary b/pengine/test10/bundle-order-partial-start-2.summary -index bf14db0..50933a2 100644 ---- a/pengine/test10/bundle-order-partial-start-2.summary -+++ b/pengine/test10/bundle-order-partial-start-2.summary -@@ -29,6 +29,7 @@ Transition Summary: - * Start haproxy-bundle-docker-0 (undercloud) - - Executing cluster transition: -+ * Resource action: rabbitmq:0 monitor on rabbitmq-bundle-0 - * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 - * Resource action: galera-bundle-0 stop on undercloud - * Pseudo action: redis-bundle-master_pre_notify_promote_0 -diff --git a/pengine/test10/bundle-order-partial-start.dot b/pengine/test10/bundle-order-partial-start.dot -index 796749d..958e7f4 100644 ---- a/pengine/test10/bundle-order-partial-start.dot -+++ b/pengine/test10/bundle-order-partial-start.dot -@@ -58,6 +58,8 @@ digraph "g" { - "rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] - "rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq:0_monitor_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq:0_monitor_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] - "rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp -index d48fccf..8aad157 100644 ---- a/pengine/test10/bundle-order-partial-start.exp -+++ b/pengine/test10/bundle-order-partial-start.exp -@@ -1,529 +1,541 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start.summary b/pengine/test10/bundle-order-partial-start.summary -index 4e02e88..9045545 100644 ---- a/pengine/test10/bundle-order-partial-start.summary -+++ b/pengine/test10/bundle-order-partial-start.summary -@@ -29,6 +29,7 @@ Transition Summary: - * Start haproxy-bundle-docker-0 (undercloud) - - Executing cluster transition: -+ * Resource action: rabbitmq:0 monitor on rabbitmq-bundle-0 - * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 - * Resource action: galera-bundle-docker-0 monitor on undercloud - * Pseudo action: redis-bundle-master_pre_notify_promote_0 -diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp -index 03b064a..ec1053c 100644 ---- a/pengine/test10/bundle-order-startup.exp -+++ b/pengine/test10/bundle-order-startup.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -61,7 +61,7 @@ - - - -- -+ - - - -@@ -338,7 +338,7 @@ - - - -- -+ - - - -@@ -417,7 +417,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/container-is-remote-node.dot b/pengine/test10/container-is-remote-node.dot -index d8f1c9f..ebb0793 100644 ---- a/pengine/test10/container-is-remote-node.dot -+++ b/pengine/test10/container-is-remote-node.dot -@@ -1,2 +1,6 @@ - digraph "g" { -+"clvmd_monitor_0 RNVM1" [ style=bold color="green" fontcolor="black"] -+"dlm_monitor_0 RNVM1" [ style=bold color="green" fontcolor="black"] -+"gfs2-lv_1_1_monitor_0 RNVM1" [ style=bold color="green" fontcolor="black"] -+"gfs2-lv_1_2_monitor_0 RNVM1" [ style=bold color="green" fontcolor="black"] - } -diff --git a/pengine/test10/container-is-remote-node.exp b/pengine/test10/container-is-remote-node.exp -index 56e315f..d656dd2 100644 ---- a/pengine/test10/container-is-remote-node.exp -+++ b/pengine/test10/container-is-remote-node.exp -@@ -1 +1,38 @@ -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/container-is-remote-node.summary b/pengine/test10/container-is-remote-node.summary -index 6ed0526..f5c78ce 100644 ---- a/pengine/test10/container-is-remote-node.summary -+++ b/pengine/test10/container-is-remote-node.summary -@@ -26,6 +26,10 @@ Containers: [ RNVM1:VM1 ] - Transition Summary: - - Executing cluster transition: -+ * Resource action: dlm monitor on RNVM1 -+ * Resource action: clvmd monitor on RNVM1 -+ * Resource action: gfs2-lv_1_1 monitor on RNVM1 -+ * Resource action: gfs2-lv_1_2 monitor on RNVM1 - - Revised cluster status: - Online: [ lama2 lama3 ] -diff --git a/pengine/test10/guest-node-host-dies.dot b/pengine/test10/guest-node-host-dies.dot -index 04152d1..83f38c4 100644 ---- a/pengine/test10/guest-node-host-dies.dot -+++ b/pengine/test10/guest-node-host-dies.dot -@@ -83,6 +83,7 @@ digraph "g" { - "lxc1_stop_0 rhel7-1" -> "all_stopped" [ style = bold] - "lxc1_stop_0 rhel7-1" -> "container1_stop_0 rhel7-1" [ style = bold] - "lxc1_stop_0 rhel7-1" -> "lxc1_start_0 rhel7-2" [ style = bold] -+"lxc1_stop_0 rhel7-1" -> "rsc_rhel7-1_start_0 rhel7-5" [ 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] -@@ -101,6 +102,7 @@ digraph "g" { - "lxc2_stop_0 rhel7-1" -> "all_stopped" [ style = bold] - "lxc2_stop_0 rhel7-1" -> "container2_stop_0 rhel7-1" [ style = bold] - "lxc2_stop_0 rhel7-1" -> "lxc2_start_0 rhel7-3" [ style = bold] -+"lxc2_stop_0 rhel7-1" -> "rsc_rhel7-1_start_0 rhel7-5" [ style = bold] - "lxc2_stop_0 rhel7-1" [ style=bold color="green" fontcolor="orange"] - "rsc_rhel7-1_monitor_5000 rhel7-5" [ style=bold color="green" fontcolor="black"] - "rsc_rhel7-1_start_0 rhel7-5" -> "rsc_rhel7-1_monitor_5000 rhel7-5" [ style = bold] -diff --git a/pengine/test10/guest-node-host-dies.exp b/pengine/test10/guest-node-host-dies.exp -index cd8d81a..01fe678 100644 ---- a/pengine/test10/guest-node-host-dies.exp -+++ b/pengine/test10/guest-node-host-dies.exp -@@ -62,6 +62,12 @@ - - - -+ -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-asymmetric.dot b/pengine/test10/whitebox-asymmetric.dot -index 896f66a..da2f3e3 100644 ---- a/pengine/test10/whitebox-asymmetric.dot -+++ b/pengine/test10/whitebox-asymmetric.dot -@@ -3,8 +3,12 @@ - "18node2_start_0 18builder" -> "18node2_monitor_30000 18builder" [ style = bold] - "18node2_start_0 18builder" -> "nfs_mount_monitor_10000 18node2" [ style = bold] - "18node2_start_0 18builder" -> "nfs_mount_start_0 18node2" [ style = bold] -+"18node2_start_0 18builder" -> "vg_tags_dup_monitor_0 18node2" [ style = bold] -+"18node2_start_0 18builder" -> "webserver_monitor_0 18node2" [ style = bold] - "18node2_start_0 18builder" [ style=bold color="green" fontcolor="black"] - "nfs_mount_monitor_10000 18node2" [ style=bold color="green" fontcolor="black"] - "nfs_mount_start_0 18node2" -> "nfs_mount_monitor_10000 18node2" [ style = bold] - "nfs_mount_start_0 18node2" [ style=bold color="green" fontcolor="black"] -+"vg_tags_dup_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] -+"webserver_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] - } -diff --git a/pengine/test10/whitebox-asymmetric.exp b/pengine/test10/whitebox-asymmetric.exp -index 1178fb6..db71443 100644 ---- a/pengine/test10/whitebox-asymmetric.exp -+++ b/pengine/test10/whitebox-asymmetric.exp -@@ -1,49 +1,75 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -diff --git a/pengine/test10/whitebox-asymmetric.summary b/pengine/test10/whitebox-asymmetric.summary -index 1c5011d..8da9996 100644 ---- a/pengine/test10/whitebox-asymmetric.summary -+++ b/pengine/test10/whitebox-asymmetric.summary -@@ -17,7 +17,9 @@ Transition Summary: - - Executing cluster transition: - * Resource action: 18node2 start on 18builder -+ * Resource action: webserver monitor on 18node2 - * Resource action: nfs_mount start on 18node2 -+ * Resource action: vg_tags_dup monitor on 18node2 - * Resource action: 18node2 monitor=30000 on 18builder - * Resource action: nfs_mount monitor=10000 on 18node2 - -diff --git a/pengine/test10/whitebox-fail1.dot b/pengine/test10/whitebox-fail1.dot -index 0123a58..3cf4f76 100644 ---- a/pengine/test10/whitebox-fail1.dot -+++ b/pengine/test10/whitebox-fail1.dot -@@ -1,10 +1,15 @@ - digraph "g" { -+"A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"B_monitor_0 lxc2" -> "B_start_0 lxc1" [ 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 lxc1" [ style=bold color="green" fontcolor="black"] - "B_start_0 lxc1" -> "B_monitor_10000 lxc1" [ style = bold] - "B_start_0 lxc1" [ style=bold color="green" fontcolor="black"] - "B_stop_0 lxc1" -> "B_start_0 lxc1" [ style = bold] - "B_stop_0 lxc1" -> "all_stopped" [ style = bold] - "B_stop_0 lxc1" [ style=bold color="green" fontcolor="orange"] -+"D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] - "M-clone_running_0" [ style=bold color="green" fontcolor="orange"] - "M-clone_start_0" -> "M-clone_running_0" [ style = bold] - "M-clone_start_0" -> "M_start_0 lxc1" [ style = bold] -diff --git a/pengine/test10/whitebox-fail1.exp b/pengine/test10/whitebox-fail1.exp -index 4cb6136..ab739b5 100644 ---- a/pengine/test10/whitebox-fail1.exp -+++ b/pengine/test10/whitebox-fail1.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -11,7 +11,7 @@ - - - -- -+ - - - -@@ -24,192 +24,225 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -219,7 +252,7 @@ - - - -- -+ - - - -@@ -228,13 +261,13 @@ - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -247,19 +280,19 @@ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - - - -@@ -270,16 +303,16 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-fail1.summary b/pengine/test10/whitebox-fail1.summary -index 1271d4f..d1f3480 100644 ---- a/pengine/test10/whitebox-fail1.summary -+++ b/pengine/test10/whitebox-fail1.summary -@@ -21,6 +21,9 @@ Transition Summary: - * Restart lxc1 ( 18node2 ) due to required container1 start - - Executing cluster transition: -+ * Resource action: A monitor on lxc2 -+ * Resource action: B monitor on lxc2 -+ * Resource action: D monitor on lxc2 - * Resource action: lxc1 stop on 18node2 - * Resource action: container1 stop on 18node2 - * Pseudo action: stonith-lxc1-reboot on lxc1 -diff --git a/pengine/test10/whitebox-fail2.dot b/pengine/test10/whitebox-fail2.dot -index 0123a58..3cf4f76 100644 ---- a/pengine/test10/whitebox-fail2.dot -+++ b/pengine/test10/whitebox-fail2.dot -@@ -1,10 +1,15 @@ - digraph "g" { -+"A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"B_monitor_0 lxc2" -> "B_start_0 lxc1" [ 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 lxc1" [ style=bold color="green" fontcolor="black"] - "B_start_0 lxc1" -> "B_monitor_10000 lxc1" [ style = bold] - "B_start_0 lxc1" [ style=bold color="green" fontcolor="black"] - "B_stop_0 lxc1" -> "B_start_0 lxc1" [ style = bold] - "B_stop_0 lxc1" -> "all_stopped" [ style = bold] - "B_stop_0 lxc1" [ style=bold color="green" fontcolor="orange"] -+"D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] - "M-clone_running_0" [ style=bold color="green" fontcolor="orange"] - "M-clone_start_0" -> "M-clone_running_0" [ style = bold] - "M-clone_start_0" -> "M_start_0 lxc1" [ style = bold] -diff --git a/pengine/test10/whitebox-fail2.exp b/pengine/test10/whitebox-fail2.exp -index 4cb6136..ab739b5 100644 ---- a/pengine/test10/whitebox-fail2.exp -+++ b/pengine/test10/whitebox-fail2.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -11,7 +11,7 @@ - - - -- -+ - - - -@@ -24,192 +24,225 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -219,7 +252,7 @@ - - - -- -+ - - - -@@ -228,13 +261,13 @@ - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -247,19 +280,19 @@ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - - - -@@ -270,16 +303,16 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-fail2.summary b/pengine/test10/whitebox-fail2.summary -index 5fd1ebd..ebf6c51 100644 ---- a/pengine/test10/whitebox-fail2.summary -+++ b/pengine/test10/whitebox-fail2.summary -@@ -21,6 +21,9 @@ Transition Summary: - * Recover lxc1 ( 18node2 ) - - Executing cluster transition: -+ * Resource action: A monitor on lxc2 -+ * Resource action: B monitor on lxc2 -+ * Resource action: D monitor on lxc2 - * Resource action: lxc1 stop on 18node2 - * Resource action: container1 stop on 18node2 - * Pseudo action: stonith-lxc1-reboot on lxc1 -diff --git a/pengine/test10/whitebox-fail3.dot b/pengine/test10/whitebox-fail3.dot -index 9814f66..6f608d1 100644 ---- a/pengine/test10/whitebox-fail3.dot -+++ b/pengine/test10/whitebox-fail3.dot -@@ -1,5 +1,8 @@ - digraph "g" { - "18builder_monitor_0 dvossel-laptop2" -> "18builder_start_0 dvossel-laptop2" [ style = bold] -+"18builder_monitor_0 dvossel-laptop2" -> "FAKE_start_0 18builder" [ style = bold] -+"18builder_monitor_0 dvossel-laptop2" -> "W-master_start_0" [ style = bold] -+"18builder_monitor_0 dvossel-laptop2" -> "X-master_start_0" [ style = bold] - "18builder_monitor_0 dvossel-laptop2" [ style=bold color="green" fontcolor="black"] - "18builder_monitor_30000 dvossel-laptop2" [ style=bold color="green" fontcolor="black"] - "18builder_start_0 dvossel-laptop2" -> "18builder_monitor_30000 dvossel-laptop2" [ style = bold] -diff --git a/pengine/test10/whitebox-fail3.exp b/pengine/test10/whitebox-fail3.exp -index ec28f12..cddd7dd 100644 ---- a/pengine/test10/whitebox-fail3.exp -+++ b/pengine/test10/whitebox-fail3.exp -@@ -17,6 +17,9 @@ - - - -+ -+ -+ - - - -@@ -92,7 +95,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -150,7 +157,11 @@ - -
    - -- -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-fail3.summary b/pengine/test10/whitebox-fail3.summary -index eded099..374fb69 100644 ---- a/pengine/test10/whitebox-fail3.summary -+++ b/pengine/test10/whitebox-fail3.summary -@@ -22,10 +22,10 @@ Transition Summary: - Executing cluster transition: - * Resource action: vm start on dvossel-laptop2 - * Resource action: FAKE stop on dvossel-laptop2 -- * Pseudo action: W-master_start_0 -- * Pseudo action: X-master_start_0 - * Resource action: 18builder monitor on dvossel-laptop2 - * Pseudo action: all_stopped -+ * Pseudo action: W-master_start_0 -+ * Pseudo action: X-master_start_0 - * Resource action: 18builder start on dvossel-laptop2 - * Resource action: FAKE start on 18builder - * Resource action: W start on 18builder -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.dot b/pengine/test10/whitebox-imply-stop-on-fence.dot -index 8ef42fd..029e9f1 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.dot -+++ b/pengine/test10/whitebox-imply-stop-on-fence.dot -@@ -23,6 +23,10 @@ - "clvmd-clone_stop_0" [ style=bold color="green" fontcolor="orange"] - "clvmd-clone_stopped_0" -> "dlm-clone_stop_0" [ style = bold] - "clvmd-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"clvmd_monitor_0 lxc-01_kiff-02" -> "clvmd_stop_0 kiff-01" [ style = bold] -+"clvmd_monitor_0 lxc-01_kiff-02" [ style=bold color="green" fontcolor="black"] -+"clvmd_monitor_0 lxc-02_kiff-02" -> "clvmd_stop_0 kiff-01" [ style = bold] -+"clvmd_monitor_0 lxc-02_kiff-02" [ style=bold color="green" fontcolor="black"] - "clvmd_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "clvmd_stop_0 kiff-01" -> "clvmd-clone_stopped_0" [ style = bold] - "clvmd_stop_0 kiff-01" -> "dlm_stop_0 kiff-01" [ style = bold] -@@ -31,6 +35,10 @@ - "dlm-clone_stop_0" -> "dlm_stop_0 kiff-01" [ style = bold] - "dlm-clone_stop_0" [ style=bold color="green" fontcolor="orange"] - "dlm-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"dlm_monitor_0 lxc-01_kiff-02" -> "dlm_stop_0 kiff-01" [ style = bold] -+"dlm_monitor_0 lxc-01_kiff-02" [ style=bold color="green" fontcolor="black"] -+"dlm_monitor_0 lxc-02_kiff-02" -> "dlm_stop_0 kiff-01" [ style = bold] -+"dlm_monitor_0 lxc-02_kiff-02" [ style=bold color="green" fontcolor="black"] - "dlm_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "dlm_stop_0 kiff-01" -> "dlm-clone_stopped_0" [ style = bold] - "dlm_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] -@@ -55,12 +63,17 @@ - "lxc-02_kiff-01_stop_0 kiff-01" -> "R-lxc-02_kiff-01_stop_0 kiff-01" [ style = bold] - "lxc-02_kiff-01_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "lxc-02_kiff-01_stop_0 kiff-01" -> "lxc-02_kiff-01_start_0 kiff-02" [ style = bold] -+"lxc-02_kiff-01_stop_0 kiff-01" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] - "lxc-02_kiff-01_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] - "shared0-clone_stop_0" -> "shared0-clone_stopped_0" [ style = bold] - "shared0-clone_stop_0" -> "shared0_stop_0 kiff-01" [ style = bold] - "shared0-clone_stop_0" [ style=bold color="green" fontcolor="orange"] - "shared0-clone_stopped_0" -> "clvmd-clone_stop_0" [ style = bold] - "shared0-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"shared0_monitor_0 lxc-01_kiff-02" -> "shared0_stop_0 kiff-01" [ style = bold] -+"shared0_monitor_0 lxc-01_kiff-02" [ style=bold color="green" fontcolor="black"] -+"shared0_monitor_0 lxc-02_kiff-02" -> "shared0_stop_0 kiff-01" [ style = bold] -+"shared0_monitor_0 lxc-02_kiff-02" [ style=bold color="green" fontcolor="black"] - "shared0_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "shared0_stop_0 kiff-01" -> "clvmd_stop_0 kiff-01" [ style = bold] - "shared0_stop_0 kiff-01" -> "shared0-clone_stopped_0" [ style = bold] -@@ -91,6 +104,12 @@ - "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] -+"vm-fs_monitor_0 lxc-01_kiff-02" -> "vm-fs_stop_0 lxc-01_kiff-01" [ style = bold] -+"vm-fs_monitor_0 lxc-01_kiff-02" [ style=bold color="green" fontcolor="black"] -+"vm-fs_monitor_0 lxc-02_kiff-02" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] -+"vm-fs_monitor_0 lxc-02_kiff-02" -> "vm-fs_stop_0 lxc-01_kiff-01" [ style = bold] -+"vm-fs_monitor_0 lxc-02_kiff-02" [ style=bold color="green" fontcolor="black"] - "vm-fs_monitor_20000 lxc-01_kiff-01" [ style=bold color="green" fontcolor="black"] - "vm-fs_start_0 lxc-01_kiff-01" -> "vm-fs_monitor_20000 lxc-01_kiff-01" [ style = bold] - "vm-fs_start_0 lxc-01_kiff-01" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.exp b/pengine/test10/whitebox-imply-stop-on-fence.exp -index d1e22ee..b5700c0 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.exp -+++ b/pengine/test10/whitebox-imply-stop-on-fence.exp -@@ -1,20 +1,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -24,13 +24,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -38,7 +38,7 @@ - - - -- -+ - - - -@@ -47,31 +47,55 @@ - - - -- -+ - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -80,13 +104,13 @@ - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -95,31 +119,55 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ - - -- -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -128,13 +176,13 @@ - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -143,28 +191,52 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -173,45 +245,45 @@ - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -220,42 +292,42 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -264,95 +336,128 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -362,41 +467,41 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -406,9 +511,9 @@ - - - -- -+ - -- -+ - - - -@@ -421,9 +526,9 @@ - - - -- -+ - -- -+ - - - -@@ -436,9 +541,9 @@ - - - -- -+ - -- -+ - - - -@@ -447,14 +552,14 @@ - - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -462,38 +567,38 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - - - -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.summary b/pengine/test10/whitebox-imply-stop-on-fence.summary -index 87d7b4f..d272b25 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.summary -+++ b/pengine/test10/whitebox-imply-stop-on-fence.summary -@@ -40,6 +40,14 @@ Transition Summary: - - Executing cluster transition: - * Pseudo action: fence-kiff-02_stop_0 -+ * Resource action: dlm monitor on lxc-02_kiff-02 -+ * Resource action: dlm monitor on lxc-01_kiff-02 -+ * Resource action: clvmd monitor on lxc-02_kiff-02 -+ * Resource action: clvmd monitor on lxc-01_kiff-02 -+ * Resource action: shared0 monitor on lxc-02_kiff-02 -+ * 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 -diff --git a/pengine/test10/whitebox-migrate1.dot b/pengine/test10/whitebox-migrate1.dot -index e54df2c..53d37e0 100644 ---- a/pengine/test10/whitebox-migrate1.dot -+++ b/pengine/test10/whitebox-migrate1.dot -@@ -32,6 +32,7 @@ - "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] - "rhel7-node1_start_0 rhel7-node3" [ style=bold color="green" fontcolor="orange"] -+"rhel7-node1_stop_0 rhel7-node2" -> "FAKE3_start_0 rhel7-node2" [ style = dashed] - "rhel7-node1_stop_0 rhel7-node2" -> "all_stopped" [ style = bold] - "rhel7-node1_stop_0 rhel7-node2" -> "remote-rsc_migrate_to_0 rhel7-node2" [ style = dashed] - "rhel7-node1_stop_0 rhel7-node2" -> "remote-rsc_stop_0 rhel7-node2" [ style = bold] -diff --git a/pengine/test10/whitebox-move.dot b/pengine/test10/whitebox-move.dot -index f47c95b..ed06b7c 100644 ---- a/pengine/test10/whitebox-move.dot -+++ b/pengine/test10/whitebox-move.dot -@@ -1,4 +1,7 @@ - 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] - "A_start_0 lxc1" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/whitebox-move.exp b/pengine/test10/whitebox-move.exp -index 4461890..6f00275 100644 ---- a/pengine/test10/whitebox-move.exp -+++ b/pengine/test10/whitebox-move.exp -@@ -1,62 +1,62 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -69,31 +69,31 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -101,61 +101,77 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ -+ -+ -+ - - - - - -- -+ - - - - -- -+ -+ -+ -+ -+ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -163,45 +179,45 @@ - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -211,14 +227,14 @@ - - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -226,16 +242,16 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-move.summary b/pengine/test10/whitebox-move.summary -index 5e27a67..23bc5de 100644 ---- a/pengine/test10/whitebox-move.summary -+++ b/pengine/test10/whitebox-move.summary -@@ -18,10 +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 43c1d4f..e6b5406 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.dot -+++ b/pengine/test10/whitebox-ms-ordering-move.dot -@@ -7,6 +7,7 @@ digraph "g" { - "container1_stop_0 rhel7-1" -> "all_stopped" [ style = bold] - "container1_stop_0 rhel7-1" -> "container1_start_0 rhel7-2" [ style = bold] - "container1_stop_0 rhel7-1" [ style=bold color="green" fontcolor="black"] -+"lsb-dummy_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] - "lxc-ms-master_demote_0" -> "lxc-ms-master_demoted_0" [ style = bold] - "lxc-ms-master_demote_0" -> "lxc-ms_demote_0 lxc1" [ style = bold] - "lxc-ms-master_demote_0" [ style=bold color="green" fontcolor="orange"] -@@ -68,4 +69,15 @@ digraph "g" { - "lxc2_monitor_0 rhel7-3" [ style=bold color="green" fontcolor="black"] - "lxc2_monitor_0 rhel7-4" [ style=bold color="green" fontcolor="black"] - "lxc2_monitor_0 rhel7-5" [ style=bold color="green" fontcolor="black"] -+"migrator_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"petulant_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"ping-1_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"r192.168.122.207_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"r192.168.122.208_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"rsc_rhel7-1_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"rsc_rhel7-2_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"rsc_rhel7-3_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"rsc_rhel7-4_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"rsc_rhel7-5_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"stateful-1_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] - } -diff --git a/pengine/test10/whitebox-ms-ordering-move.exp b/pengine/test10/whitebox-ms-ordering-move.exp -index dc5e473..a8ffa64 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.exp -+++ b/pengine/test10/whitebox-ms-ordering-move.exp -@@ -1,260 +1,368 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -264,98 +372,98 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -@@ -363,13 +471,13 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-ms-ordering-move.summary b/pengine/test10/whitebox-ms-ordering-move.summary -index 80156b0..af86d74 100644 ---- a/pengine/test10/whitebox-ms-ordering-move.summary -+++ b/pengine/test10/whitebox-ms-ordering-move.summary -@@ -35,6 +35,18 @@ Transition Summary: - * Move lxc1 ( rhel7-1 -> rhel7-2 ) - - Executing cluster transition: -+ * Resource action: rsc_rhel7-1 monitor on lxc2 -+ * Resource action: rsc_rhel7-2 monitor on lxc2 -+ * Resource action: rsc_rhel7-3 monitor on lxc2 -+ * Resource action: rsc_rhel7-4 monitor on lxc2 -+ * Resource action: rsc_rhel7-5 monitor on lxc2 -+ * Resource action: migrator monitor on lxc2 -+ * Resource action: ping-1 monitor on lxc2 -+ * Resource action: stateful-1 monitor on lxc2 -+ * Resource action: r192.168.122.207 monitor on lxc2 -+ * Resource action: petulant monitor on lxc2 -+ * Resource action: r192.168.122.208 monitor on lxc2 -+ * Resource action: lsb-dummy monitor on lxc2 - * Pseudo action: lxc-ms-master_demote_0 - * Resource action: lxc1 monitor on rhel7-5 - * Resource action: lxc1 monitor on rhel7-4 -diff --git a/pengine/test10/whitebox-nested-group.dot b/pengine/test10/whitebox-nested-group.dot -index 9e1abce..e5749ec 100644 ---- a/pengine/test10/whitebox-nested-group.dot -+++ b/pengine/test10/whitebox-nested-group.dot -@@ -1,9 +1,30 @@ - digraph "g" { - "c7auto4_monitor_0 c7auto1" -> "c7auto4_start_0 c7auto1" [ style = bold] -+"c7auto4_monitor_0 c7auto1" -> "fake1_start_0 c7auto3" [ style = bold] -+"c7auto4_monitor_0 c7auto1" -> "fake2_start_0 c7auto4" [ style = bold] -+"c7auto4_monitor_0 c7auto1" -> "fake3_start_0 c7auto2" [ style = bold] -+"c7auto4_monitor_0 c7auto1" -> "fake4_start_0 c7auto3" [ style = bold] -+"c7auto4_monitor_0 c7auto1" -> "fake5_start_0 c7auto4" [ style = bold] -+"c7auto4_monitor_0 c7auto1" -> "fake_clone_start_0" [ style = bold] -+"c7auto4_monitor_0 c7auto1" -> "fake_group_start_0" [ style = bold] - "c7auto4_monitor_0 c7auto1" [ style=bold color="green" fontcolor="black"] - "c7auto4_monitor_0 c7auto2" -> "c7auto4_start_0 c7auto1" [ style = bold] -+"c7auto4_monitor_0 c7auto2" -> "fake1_start_0 c7auto3" [ style = bold] -+"c7auto4_monitor_0 c7auto2" -> "fake2_start_0 c7auto4" [ style = bold] -+"c7auto4_monitor_0 c7auto2" -> "fake3_start_0 c7auto2" [ style = bold] -+"c7auto4_monitor_0 c7auto2" -> "fake4_start_0 c7auto3" [ style = bold] -+"c7auto4_monitor_0 c7auto2" -> "fake5_start_0 c7auto4" [ style = bold] -+"c7auto4_monitor_0 c7auto2" -> "fake_clone_start_0" [ style = bold] -+"c7auto4_monitor_0 c7auto2" -> "fake_group_start_0" [ style = bold] - "c7auto4_monitor_0 c7auto2" [ style=bold color="green" fontcolor="black"] - "c7auto4_monitor_0 c7auto3" -> "c7auto4_start_0 c7auto1" [ style = bold] -+"c7auto4_monitor_0 c7auto3" -> "fake1_start_0 c7auto3" [ style = bold] -+"c7auto4_monitor_0 c7auto3" -> "fake2_start_0 c7auto4" [ style = bold] -+"c7auto4_monitor_0 c7auto3" -> "fake3_start_0 c7auto2" [ style = bold] -+"c7auto4_monitor_0 c7auto3" -> "fake4_start_0 c7auto3" [ style = bold] -+"c7auto4_monitor_0 c7auto3" -> "fake5_start_0 c7auto4" [ style = bold] -+"c7auto4_monitor_0 c7auto3" -> "fake_clone_start_0" [ style = bold] -+"c7auto4_monitor_0 c7auto3" -> "fake_group_start_0" [ style = bold] - "c7auto4_monitor_0 c7auto3" [ style=bold color="green" fontcolor="black"] - "c7auto4_monitor_30000 c7auto1" [ style=bold color="green" fontcolor="black"] - "c7auto4_start_0 c7auto1" -> "c7auto4_monitor_30000 c7auto1" [ style = bold] -diff --git a/pengine/test10/whitebox-nested-group.exp b/pengine/test10/whitebox-nested-group.exp -index 388c4d4..5625c92 100644 ---- a/pengine/test10/whitebox-nested-group.exp -+++ b/pengine/test10/whitebox-nested-group.exp -@@ -24,11 +24,20 @@ - - - -+ -+ -+ - - - -+ -+ -+ - - -+ -+ -+ - - - -@@ -86,12 +95,21 @@ - - - -+ -+ -+ - - - -+ -+ -+ - - - -+ -+ -+ - - - -@@ -151,11 +169,20 @@ - - - -+ -+ -+ - - - -+ -+ -+ - - -+ -+ -+ - - - -@@ -210,11 +237,20 @@ - - - -+ -+ -+ - - - -+ -+ -+ - - -+ -+ -+ - - - -@@ -272,12 +308,21 @@ - - - -+ -+ -+ - - - -+ -+ -+ - - - -+ -+ -+ - - - -@@ -487,11 +532,20 @@ - - - -+ -+ -+ - - - -+ -+ -+ - - -+ -+ -+ - - - -@@ -518,7 +572,17 @@ - -
    - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/whitebox-nested-group.summary b/pengine/test10/whitebox-nested-group.summary -index ca9c47f..b03b357 100644 ---- a/pengine/test10/whitebox-nested-group.summary -+++ b/pengine/test10/whitebox-nested-group.summary -@@ -47,8 +47,6 @@ Executing cluster transition: - * Resource action: fake:0 monitor on c7auto2 - * Resource action: fake:1 monitor on c7auto3 - * Resource action: fake:3 monitor on c7auto1 -- * Pseudo action: fake_clone_start_0 -- * Pseudo action: fake_group_start_0 - * Resource action: fake_fs monitor on c7auto3 - * Resource action: fake_fs monitor on c7auto2 - * Resource action: fake_fs monitor on c7auto1 -@@ -58,9 +56,8 @@ Executing cluster transition: - * Resource action: fake1 start on c7auto3 - * Resource action: fake3 start on c7auto2 - * Resource action: fake4 start on c7auto3 -- * Resource action: fake:0 start on c7auto2 -- * Resource action: fake:1 start on c7auto3 -- * Resource action: fake:3 start on c7auto1 -+ * Pseudo action: fake_clone_start_0 -+ * Pseudo action: fake_group_start_0 - * Resource action: fake_fs start on c7auto1 - * Resource action: container start on c7auto1 - * Resource action: c7auto4 start on c7auto1 -@@ -69,10 +66,10 @@ Executing cluster transition: - * Resource action: fake3 monitor=10000 on c7auto2 - * Resource action: fake4 monitor=10000 on c7auto3 - * Resource action: fake5 start on c7auto4 -- * Resource action: fake:0 monitor=10000 on c7auto2 -- * Resource action: fake:1 monitor=10000 on c7auto3 -+ * Resource action: fake:0 start on c7auto2 -+ * Resource action: fake:1 start on c7auto3 - * Resource action: fake:2 start on c7auto4 -- * Resource action: fake:3 monitor=10000 on c7auto1 -+ * Resource action: fake:3 start on c7auto1 - * Pseudo action: fake_clone_running_0 - * Pseudo action: fake_group_running_0 - * Resource action: fake_fs monitor=10000 on c7auto1 -@@ -80,7 +77,10 @@ Executing cluster transition: - * Resource action: c7auto4 monitor=30000 on c7auto1 - * Resource action: fake2 monitor=10000 on c7auto4 - * Resource action: fake5 monitor=10000 on c7auto4 -+ * Resource action: fake:0 monitor=10000 on c7auto2 -+ * Resource action: fake:1 monitor=10000 on c7auto3 - * Resource action: fake:2 monitor=10000 on c7auto4 -+ * Resource action: fake:3 monitor=10000 on c7auto1 - - Revised cluster status: - Online: [ c7auto1 c7auto2 c7auto3 ] -diff --git a/pengine/test10/whitebox-orphan-ms.dot b/pengine/test10/whitebox-orphan-ms.dot -index 46b6cda..4e2e211 100644 ---- a/pengine/test10/whitebox-orphan-ms.dot -+++ b/pengine/test10/whitebox-orphan-ms.dot -@@ -25,6 +25,8 @@ - "container2_stop_0 18node1" -> "container2_delete_0 18node2" [ style = bold] - "container2_stop_0 18node1" -> "container2_delete_0 18node3" [ style = bold] - "container2_stop_0 18node1" [ style=bold color="green" fontcolor="black"] -+"lsb-dummy_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] -+"lsb-dummy_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] - "lxc-ms_clear_failcount_0 lxc1" -> "lxc-ms_stop_0 lxc1" [ style = dashed] - "lxc-ms_clear_failcount_0 lxc1" -> "lxc-ms_stop_0 lxc2" [ style = dashed] - "lxc-ms_clear_failcount_0 lxc1" [ style=dashed color="red" fontcolor="black"] -@@ -69,4 +71,20 @@ - "lxc2_stop_0 18node1" -> "lxc2_delete_0 18node2" [ style = bold] - "lxc2_stop_0 18node1" -> "lxc2_delete_0 18node3" [ style = bold] - "lxc2_stop_0 18node1" [ style=bold color="green" fontcolor="black"] -+"migrator_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] -+"migrator_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] -+"ping-1_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] -+"ping-1_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] -+"r192.168.122.87_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] -+"r192.168.122.87_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] -+"r192.168.122.88_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] -+"r192.168.122.88_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] -+"r192.168.122.89_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] -+"r192.168.122.89_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] -+"rsc_18node1_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] -+"rsc_18node1_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] -+"rsc_18node2_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] -+"rsc_18node2_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] -+"rsc_18node3_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] -+"rsc_18node3_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] - } -diff --git a/pengine/test10/whitebox-orphan-ms.exp b/pengine/test10/whitebox-orphan-ms.exp -index ef81317..564e92d 100644 ---- a/pengine/test10/whitebox-orphan-ms.exp -+++ b/pengine/test10/whitebox-orphan-ms.exp -@@ -1,20 +1,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -23,14 +23,14 @@ - - - -- -+ - - - - - - -- -+ - - - -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -69,13 +69,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -85,10 +85,10 @@ - - - -- -+ - - -- -+ - - - -@@ -101,7 +101,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -127,45 +127,45 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -190,10 +190,10 @@ - - - -- -+ - - -- -+ - - - -@@ -206,10 +206,10 @@ - - - -- -+ - - -- -+ - - - -@@ -222,16 +222,16 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -241,10 +241,10 @@ - - - -- -+ - - -- -+ - - - -@@ -257,7 +257,7 @@ - - - -- -+ - - - -@@ -270,7 +270,7 @@ - - - -- -+ - - - -@@ -283,20 +283,20 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -309,7 +309,7 @@ - - - -- -+ - - - -@@ -322,7 +322,7 @@ - - - -- -+ - - - -@@ -335,7 +335,7 @@ - - - -- -+ - - - -@@ -347,25 +347,25 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-orphaned.dot b/pengine/test10/whitebox-orphaned.dot -index e50252d..4ef1f7e 100644 ---- a/pengine/test10/whitebox-orphaned.dot -+++ b/pengine/test10/whitebox-orphaned.dot -@@ -1,4 +1,9 @@ - digraph "g" { -+"A_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] -+"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] - "B_start_0 lxc2" [ style=bold color="green" fontcolor="black"] -@@ -6,6 +11,9 @@ - "B_stop_0 lxc1" -> "all_stopped" [ style = bold] - "B_stop_0 lxc1" -> "lxc1_stop_0 18node2" [ style = bold] - "B_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] -+"C_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] -+"D_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] -+"D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] - "M-clone_stop_0" -> "M-clone_stopped_0" [ style = bold] - "M-clone_stop_0" -> "M_stop_0 lxc1" [ style = bold] - "M-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -diff --git a/pengine/test10/whitebox-orphaned.exp b/pengine/test10/whitebox-orphaned.exp -index 334e594..843f186 100644 ---- a/pengine/test10/whitebox-orphaned.exp -+++ b/pengine/test10/whitebox-orphaned.exp -@@ -1,35 +1,35 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -37,65 +37,99 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -@@ -104,11 +138,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -117,11 +151,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -130,13 +164,13 @@ - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -146,26 +180,26 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -@@ -174,11 +208,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -187,11 +221,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -200,11 +234,11 @@ - - - -- -+ - - - -- -+ - - - -@@ -212,16 +246,16 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-orphaned.summary b/pengine/test10/whitebox-orphaned.summary -index 7d173b2..e0928b1 100644 ---- a/pengine/test10/whitebox-orphaned.summary -+++ b/pengine/test10/whitebox-orphaned.summary -@@ -23,22 +23,25 @@ Transition Summary: - - Executing cluster transition: - * Pseudo action: M-clone_stop_0 -- * Resource action: B stop on lxc1 -+ * Resource action: A monitor on lxc2 -+ * 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 start on lxc2 -+ * Resource action: B stop on lxc1 - * 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 monitor=10000 on lxc2 -+ * Resource action: B start 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 8b4dbcd..28f747a 100644 ---- a/pengine/test10/whitebox-start.dot -+++ b/pengine/test10/whitebox-start.dot -@@ -1,4 +1,7 @@ - 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] - "A_start_0 lxc1" [ style=bold color="green" fontcolor="black"] -@@ -11,6 +14,7 @@ digraph "g" { - "B_stop_0 lxc2" -> "B_start_0 18node3" [ style = bold] - "B_stop_0 lxc2" -> "all_stopped" [ style = bold] - "B_stop_0 lxc2" [ style=bold color="green" fontcolor="black"] -+"D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] - "M-clone_running_0" [ style=bold color="green" fontcolor="orange"] - "M-clone_start_0" -> "M-clone_running_0" [ style = bold] - "M-clone_start_0" -> "M_start_0 lxc1" [ style = bold] -diff --git a/pengine/test10/whitebox-start.exp b/pengine/test10/whitebox-start.exp -index ccccf60..360b8a7 100644 ---- a/pengine/test10/whitebox-start.exp -+++ b/pengine/test10/whitebox-start.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -10,57 +10,57 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -68,110 +68,135 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ -+ -+ -+ - - - - - -- -+ - - - - -- -+ -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - - - -@@ -179,10 +204,10 @@ - - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-start.summary b/pengine/test10/whitebox-start.summary -index e76e28a..01a1b74 100644 ---- a/pengine/test10/whitebox-start.summary -+++ b/pengine/test10/whitebox-start.summary -@@ -24,18 +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 start on lxc1 -+ * Resource action: A stop on 18node1 - * 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 monitor=10000 on lxc1 -+ * Resource action: A start on lxc1 - * Resource action: B monitor=10000 on 18node3 -+ * Resource action: A monitor=10000 on lxc1 - - Revised cluster status: - Online: [ 18node1 18node2 18node3 ] -diff --git a/pengine/test10/whitebox-stop.dot b/pengine/test10/whitebox-stop.dot -index 9900483..0ecdcba 100644 ---- a/pengine/test10/whitebox-stop.dot -+++ b/pengine/test10/whitebox-stop.dot -@@ -1,4 +1,8 @@ - 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] - "B_start_0 lxc2" [ style=bold color="green" fontcolor="black"] -@@ -6,6 +10,7 @@ digraph "g" { - "B_stop_0 lxc1" -> "all_stopped" [ style = bold] - "B_stop_0 lxc1" -> "lxc1_stop_0 18node2" [ style = bold] - "B_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] -+"D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] - "M-clone_stop_0" -> "M-clone_stopped_0" [ style = bold] - "M-clone_stop_0" -> "M_stop_0 lxc1" [ style = bold] - "M-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -diff --git a/pengine/test10/whitebox-stop.exp b/pengine/test10/whitebox-stop.exp -index 354b6d4..84a5288 100644 ---- a/pengine/test10/whitebox-stop.exp -+++ b/pengine/test10/whitebox-stop.exp -@@ -1,48 +1,48 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -50,42 +50,76 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -95,14 +129,14 @@ - - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -110,16 +144,16 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-stop.summary b/pengine/test10/whitebox-stop.summary -index 9b15ea0..44e570f 100644 ---- a/pengine/test10/whitebox-stop.summary -+++ b/pengine/test10/whitebox-stop.summary -@@ -22,14 +22,17 @@ Transition Summary: - - Executing cluster transition: - * Pseudo action: M-clone_stop_0 -- * Resource action: B stop on lxc1 -+ * Resource action: A monitor on lxc2 -+ * 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 start on lxc2 -+ * Resource action: B stop on lxc1 - * Resource action: lxc1 stop on 18node2 - * Resource action: container1 stop on 18node2 -- * Resource action: B monitor=10000 on lxc2 -+ * Resource action: B start on lxc2 - * Pseudo action: all_stopped -+ * Resource action: B monitor=10000 on lxc2 - - Revised cluster status: - Online: [ 18node1 18node2 18node3 ] -diff --git a/pengine/test10/whitebox-unexpectedly-running.dot b/pengine/test10/whitebox-unexpectedly-running.dot -index 0e2e5bb..fa1171e 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.dot -+++ b/pengine/test10/whitebox-unexpectedly-running.dot -@@ -1,20 +1,26 @@ - digraph "g" { -+"FAKE-crashed_monitor_60000 18builder" [ style=bold color="green" fontcolor="black"] -+"FAKE-crashed_start_0 18builder" -> "FAKE-crashed_monitor_60000 18builder" [ style = bold] -+"FAKE-crashed_start_0 18builder" -> "remote2_start_0 18builder" [ style = bold] -+"FAKE-crashed_start_0 18builder" [ style=bold color="green" fontcolor="black"] -+"FAKE-crashed_stop_0 18builder" -> "FAKE-crashed_start_0 18builder" [ style = bold] -+"FAKE-crashed_stop_0 18builder" -> "all_stopped" [ style = bold] -+"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"] --"FAKE_start_0 18builder" -> "FAKE_monitor_60000 18builder" [ style = bold] --"FAKE_start_0 18builder" -> "remote1_start_0 18builder" [ style = bold] --"FAKE_start_0 18builder" [ style=bold color="green" fontcolor="black"] --"FAKE_stop_0 18builder" -> "FAKE_start_0 18builder" [ style = bold] --"FAKE_stop_0 18builder" -> "all_stopped" [ style = bold] --"FAKE_stop_0 18builder" -> "stonith 'reboot' remote1" [ style = bold] --"FAKE_stop_0 18builder" [ style=bold color="green" fontcolor="black"] - "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"] - "remote1_monitor_30000 18builder" [ style=bold color="green" fontcolor="black"] - "remote1_start_0 18builder" -> "remote1_monitor_30000 18builder" [ style = bold] - "remote1_start_0 18builder" [ style=bold color="green" fontcolor="black"] --"stonith 'reboot' remote1" -> "stonith_complete" [ style = bold] --"stonith 'reboot' remote1" [ style=bold color="green" fontcolor="orange"] -+"remote2_monitor_0 18builder" -> "remote2_start_0 18builder" [ style = bold] -+"remote2_monitor_0 18builder" [ style=bold color="green" fontcolor="black"] -+"remote2_monitor_30000 18builder" [ style=bold color="green" fontcolor="black"] -+"remote2_start_0 18builder" -> "remote2_monitor_30000 18builder" [ style = bold] -+"remote2_start_0 18builder" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' remote2" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' remote2" [ style=bold color="green" fontcolor="orange"] - "stonith_complete" -> "all_stopped" [ style = bold] - "stonith_complete" [ style=bold color="green" fontcolor="orange"] - } -diff --git a/pengine/test10/whitebox-unexpectedly-running.exp b/pengine/test10/whitebox-unexpectedly-running.exp -index a0e5cae..c4e13b9 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.exp -+++ b/pengine/test10/whitebox-unexpectedly-running.exp -@@ -1,116 +1,160 @@ - - - -- -+ - - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - - - -- -+ - -- -- -- -+ -+ -+ - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -- -- -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -- -+ -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-unexpectedly-running.scores b/pengine/test10/whitebox-unexpectedly-running.scores -index 7f8a1d9..45e1d39 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.scores -+++ b/pengine/test10/whitebox-unexpectedly-running.scores -@@ -1,5 +1,13 @@ - Allocation scores: - native_color: FAKE allocation score on 18builder: 0 - native_color: FAKE allocation score on remote1: -INFINITY -+native_color: FAKE allocation score on remote2: -INFINITY -+native_color: FAKE-crashed allocation score on 18builder: 0 -+native_color: FAKE-crashed allocation score on remote1: -INFINITY -+native_color: FAKE-crashed allocation score on remote2: -INFINITY - native_color: remote1 allocation score on 18builder: 0 - native_color: remote1 allocation score on remote1: -INFINITY -+native_color: remote1 allocation score on remote2: -INFINITY -+native_color: remote2 allocation score on 18builder: 0 -+native_color: remote2 allocation score on remote1: -INFINITY -+native_color: remote2 allocation score on remote2: -INFINITY -diff --git a/pengine/test10/whitebox-unexpectedly-running.summary b/pengine/test10/whitebox-unexpectedly-running.summary -index eef4f63..3e0c898 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.summary -+++ b/pengine/test10/whitebox-unexpectedly-running.summary -@@ -2,27 +2,34 @@ - Current cluster status: - Online: [ 18builder ] - -- FAKE (ocf::pacemaker:Dummy): FAILED 18builder -+ FAKE (ocf::pacemaker:Dummy): Started 18builder -+ FAKE-crashed (ocf::pacemaker:Dummy): FAILED 18builder - - Transition Summary: -- * Fence (reboot) remote1 (resource: FAKE) 'guest is unclean' -- * Recover FAKE ( 18builder ) -+ * Fence (reboot) remote2 (resource: FAKE-crashed) 'guest is unclean' -+ * Recover FAKE-crashed ( 18builder ) - * Start remote1 (18builder) -+ * Start remote2 ( 18builder ) - - Executing cluster transition: -- * Resource action: FAKE stop on 18builder -+ * Resource action: FAKE monitor=60000 on 18builder -+ * Resource action: FAKE-crashed stop on 18builder - * Resource action: remote1 monitor on 18builder -- * Pseudo action: stonith-remote1-reboot on remote1 -+ * Resource action: remote2 monitor on 18builder -+ * Pseudo action: stonith-remote2-reboot on remote2 - * Pseudo action: stonith_complete - * Pseudo action: all_stopped -- * Resource action: FAKE start on 18builder -+ * Resource action: FAKE-crashed start on 18builder - * Resource action: remote1 start on 18builder -- * Resource action: FAKE monitor=60000 on 18builder -+ * Resource action: remote2 start on 18builder -+ * Resource action: FAKE-crashed monitor=60000 on 18builder - * Resource action: remote1 monitor=30000 on 18builder -+ * Resource action: remote2 monitor=30000 on 18builder - - Revised cluster status: - Online: [ 18builder ] --Containers: [ remote1:FAKE ] -+Containers: [ remote1:FAKE remote2:FAKE-crashed ] - - FAKE (ocf::pacemaker:Dummy): Started 18builder -+ FAKE-crashed (ocf::pacemaker:Dummy): Started 18builder - -diff --git a/pengine/test10/whitebox-unexpectedly-running.xml b/pengine/test10/whitebox-unexpectedly-running.xml -index 4ec20c4..638ed1a 100644 ---- a/pengine/test10/whitebox-unexpectedly-running.xml -+++ b/pengine/test10/whitebox-unexpectedly-running.xml -@@ -21,6 +21,14 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -36,6 +44,9 @@ - - - -+ -+ -+ - - - --- -1.8.3.1 - - -From 62b9b988123589d590b30c17b0f4cee269cdad70 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 26 Sep 2017 20:44:34 +1000 -Subject: [PATCH 15/21] Fix: PE: Ensure the bundle nodes get set with the - correct discovery mode - ---- - lib/pengine/container.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index a550ff3..1d658e8 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -462,6 +462,9 @@ create_remote_resource( - tuple->node->weight = 500; - tuple->node->rsc_discover_mode = discover_exclusive; - -+ /* Ensure the node shows up as allowed and with the correct discovery set */ -+ g_hash_table_insert(tuple->child->allowed_nodes, (gpointer) tuple->node->details->id, node_copy(tuple->node)); -+ - if (common_unpack(xml_remote, &tuple->remote, parent, data_set) == FALSE) { - return FALSE; - } --- -1.8.3.1 - - -From 37b36a1c02b73711c82e90231b00d56e51179a90 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 26 Sep 2017 20:46:00 +1000 -Subject: [PATCH 16/21] Fix: PE: Make assumptions about the state of - conatinerized resources based ont he container state, not the connection - resource - ---- - pengine/native.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - -diff --git a/pengine/native.c b/pengine/native.c -index 2e40a4c..06a5c19 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -2847,10 +2847,12 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - if (rsc->exclusive_discover || top->exclusive_discover) { - if (allowed == NULL) { - /* exclusive discover is enabled and this node is not in the allowed list. */ -+ pe_rsc_trace(rsc, "Skipping probe for %s on node %s, A", rsc->id, node->details->id); - return FALSE; - } else if (allowed->rsc_discover_mode != discover_exclusive) { - /* exclusive discover is enabled and this node is not marked - * as a node this resource should be discovered on */ -+ pe_rsc_trace(rsc, "Skipping probe for %s on node %s, B", rsc->id, node->details->id); - return FALSE; - } - } -@@ -2861,16 +2863,18 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - * However it wasn't and the node has discovery disabled, so - * no need to probe for this resource. - */ -+ pe_rsc_trace(rsc, "Skipping probe for %s on node %s, C", rsc->id, node->details->id); - return FALSE; - } - - if (allowed && allowed->rsc_discover_mode == discover_never) { - /* this resource is marked as not needing to be discovered on this node */ -+ pe_rsc_trace(rsc, "Skipping probe for %s on node %s, discovery mode", rsc->id, node->details->id); - return FALSE; - } - - if(allowed != NULL && is_container_remote_node(allowed)) { -- resource_t *remote = allowed->details->remote_rsc; -+ resource_t *remote = allowed->details->remote_rsc->container; - - if(remote->role == RSC_ROLE_STOPPED) { - /* If the container is stopped, then we know anything that -@@ -2900,6 +2904,8 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - top, generate_op_key(top->id, RSC_START, 0), NULL, - pe_order_optional, data_set); - } -+ pe_rsc_trace(rsc, "Skipping probe for %s on node %s, %s is stopped", -+ rsc->id, node->details->id, remote->id); - return FALSE; - - /* Here we really we want to check if remote->stop is required, -@@ -2919,6 +2925,8 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - custom_action_order(remote, generate_op_key(remote->id, RSC_STOP, 0), NULL, - top, generate_op_key(top->id, RSC_START, 0), NULL, - pe_order_optional, data_set); -+ pe_rsc_trace(rsc, "Skipping probe for %s on node %s, %s is stopping, restarting or moving", -+ rsc->id, node->details->id, remote->id); - return FALSE; - /* } else { - * The container is running so there is no problem probing it --- -1.8.3.1 - - -From f3dcf9364b2bc7753c7683fb95959454da824afc Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 26 Sep 2017 21:19:17 +1000 -Subject: [PATCH 17/21] Test: PE: Make assumptions about the state of - conatinerized resources based ont he container state, not the connection - resource - ---- - pengine/test10/bundle-nested-colocation.dot | 9 + - pengine/test10/bundle-nested-colocation.exp | 252 +++++++++++-------- - pengine/test10/bundle-nested-colocation.scores | 6 +- - pengine/test10/bundle-nested-colocation.summary | 11 +- - pengine/test10/bundle-order-fencing.scores | 12 +- - pengine/test10/bundle-order-partial-start-2.dot | 3 + - pengine/test10/bundle-order-partial-start-2.exp | 272 +++++++++++---------- - pengine/test10/bundle-order-partial-start-2.scores | 6 +- - .../test10/bundle-order-partial-start-2.summary | 3 +- - pengine/test10/bundle-order-partial-start.dot | 1 + - pengine/test10/bundle-order-partial-start.exp | 3 + - pengine/test10/bundle-order-partial-start.scores | 6 +- - pengine/test10/bundle-order-partial-stop.scores | 4 +- - pengine/test10/bundle-order-startup-clone-2.dot | 18 ++ - pengine/test10/bundle-order-startup-clone-2.exp | 54 ++++ - pengine/test10/bundle-order-startup-clone-2.scores | 12 +- - pengine/test10/bundle-order-startup-clone.dot | 6 + - pengine/test10/bundle-order-startup-clone.exp | 9 + - pengine/test10/bundle-order-startup-clone.scores | 4 +- - pengine/test10/bundle-order-startup.dot | 3 + - pengine/test10/bundle-order-startup.exp | 17 +- - pengine/test10/bundle-order-startup.scores | 6 +- - pengine/test10/bundle-order-stop-clone.scores | 12 +- - pengine/test10/bundle-order-stop.scores | 4 +- - pengine/test10/guest-node-host-dies.dot | 4 +- - pengine/test10/guest-node-host-dies.exp | 4 +- - pengine/test10/remote-fence-unclean-3.scores | 12 +- - pengine/test10/whitebox-asymmetric.dot | 5 + - pengine/test10/whitebox-asymmetric.exp | 55 ++++- - pengine/test10/whitebox-asymmetric.summary | 4 +- - pengine/test10/whitebox-fail3.dot | 3 - - pengine/test10/whitebox-fail3.exp | 15 +- - pengine/test10/whitebox-fail3.summary | 4 +- - pengine/test10/whitebox-imply-stop-on-fence.dot | 2 +- - pengine/test10/whitebox-imply-stop-on-fence.exp | 6 +- - pengine/test10/whitebox-migrate1.dot | 2 +- - pengine/test10/whitebox-nested-group.dot | 21 -- - pengine/test10/whitebox-nested-group.exp | 66 +---- - pengine/test10/whitebox-nested-group.summary | 16 +- - 39 files changed, 536 insertions(+), 416 deletions(-) - -diff --git a/pengine/test10/bundle-nested-colocation.dot b/pengine/test10/bundle-nested-colocation.dot -index 2a2d71a..1a197c1 100644 ---- a/pengine/test10/bundle-nested-colocation.dot -+++ b/pengine/test10/bundle-nested-colocation.dot -@@ -2,16 +2,19 @@ digraph "g" { - "all_stopped" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle-0_monitor_60000 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-0_start_0 overcloud-controller-0" -> "rabbitmq-bundle-0_monitor_60000 overcloud-controller-0" [ style = bold] -+"rabbitmq-bundle-0_start_0 overcloud-controller-0" -> "rabbitmq:0_monitor_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle-0_start_0 overcloud-controller-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle-0_start_0 overcloud-controller-0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle-0_start_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-1_monitor_60000 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-1_start_0 overcloud-controller-1" -> "rabbitmq-bundle-1_monitor_60000 overcloud-controller-1" [ style = bold] -+"rabbitmq-bundle-1_start_0 overcloud-controller-1" -> "rabbitmq:1_monitor_0 rabbitmq-bundle-1" [ style = bold] - "rabbitmq-bundle-1_start_0 overcloud-controller-1" -> "rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style = bold] - "rabbitmq-bundle-1_start_0 overcloud-controller-1" -> "rabbitmq:1_start_0 rabbitmq-bundle-1" [ style = bold] - "rabbitmq-bundle-1_start_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-2_monitor_60000 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-2_start_0 overcloud-controller-2" -> "rabbitmq-bundle-2_monitor_60000 overcloud-controller-2" [ style = bold] -+"rabbitmq-bundle-2_start_0 overcloud-controller-2" -> "rabbitmq:2_monitor_0 rabbitmq-bundle-2" [ style = bold] - "rabbitmq-bundle-2_start_0 overcloud-controller-2" -> "rabbitmq:2_monitor_10000 rabbitmq-bundle-2" [ style = bold] - "rabbitmq-bundle-2_start_0 overcloud-controller-2" -> "rabbitmq:2_start_0 rabbitmq-bundle-2" [ style = bold] - "rabbitmq-bundle-2_start_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -@@ -70,6 +73,8 @@ digraph "g" { - "rabbitmq-bundle_start_0" -> "rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" [ style = bold] - "rabbitmq-bundle_start_0" -> "rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" [ style = bold] - "rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq:0_monitor_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq:0_monitor_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] - "rabbitmq:0_post_notify_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -@@ -77,6 +82,8 @@ digraph "g" { - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:1_start_0 rabbitmq-bundle-1" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:1_monitor_0 rabbitmq-bundle-1" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq:1_monitor_0 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] - "rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] - "rabbitmq:1_post_notify_start_0 rabbitmq-bundle-1" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] - "rabbitmq:1_post_notify_start_0 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] -@@ -84,6 +91,8 @@ digraph "g" { - "rabbitmq:1_start_0 rabbitmq-bundle-1" -> "rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style = bold] - "rabbitmq:1_start_0 rabbitmq-bundle-1" -> "rabbitmq:2_start_0 rabbitmq-bundle-2" [ style = bold] - "rabbitmq:1_start_0 rabbitmq-bundle-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq:2_monitor_0 rabbitmq-bundle-2" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -+"rabbitmq:2_monitor_0 rabbitmq-bundle-2" [ style=bold color="green" fontcolor="black"] - "rabbitmq:2_monitor_10000 rabbitmq-bundle-2" [ style=bold color="green" fontcolor="black"] - "rabbitmq:2_post_notify_start_0 rabbitmq-bundle-2" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold] - "rabbitmq:2_post_notify_start_0 rabbitmq-bundle-2" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bundle-nested-colocation.exp b/pengine/test10/bundle-nested-colocation.exp -index 916c44b..b91ced5 100644 ---- a/pengine/test10/bundle-nested-colocation.exp -+++ b/pengine/test10/bundle-nested-colocation.exp -@@ -1,39 +1,39 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -43,48 +43,61 @@ - - - -- -+ - - -- -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -94,51 +107,64 @@ - - - -- -+ -+ -+ -+ - - -- -+ - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -148,118 +174,140 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ - - -- -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -@@ -268,14 +316,14 @@ - - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -288,22 +336,22 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -314,16 +362,16 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -@@ -332,14 +380,14 @@ - - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -352,22 +400,22 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -378,16 +426,16 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -@@ -396,14 +444,14 @@ - - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -416,22 +464,22 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -442,9 +490,9 @@ - - - -- -+ - -- -+ - - - -@@ -459,19 +507,19 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -@@ -479,13 +527,13 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/bundle-nested-colocation.scores b/pengine/test10/bundle-nested-colocation.scores -index c79e0ff..83d776d 100644 ---- a/pengine/test10/bundle-nested-colocation.scores -+++ b/pengine/test10/bundle-nested-colocation.scores -@@ -201,7 +201,7 @@ container_color: rabbitmq:0 allocation score on overcloud-galera-2: 0 - container_color: rabbitmq:0 allocation score on overcloud-rabbit-0: 0 - container_color: rabbitmq:0 allocation score on overcloud-rabbit-1: 0 - container_color: rabbitmq:0 allocation score on overcloud-rabbit-2: 0 --container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 500 - container_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq:1 allocation score on overcloud-controller-0: 0 -@@ -214,7 +214,7 @@ container_color: rabbitmq:1 allocation score on overcloud-rabbit-0: 0 - container_color: rabbitmq:1 allocation score on overcloud-rabbit-1: 0 - container_color: rabbitmq:1 allocation score on overcloud-rabbit-2: 0 - container_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: 500 - container_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq:2 allocation score on overcloud-controller-0: 0 - container_color: rabbitmq:2 allocation score on overcloud-controller-1: 0 -@@ -227,7 +227,7 @@ container_color: rabbitmq:2 allocation score on overcloud-rabbit-1: 0 - container_color: rabbitmq:2 allocation score on overcloud-rabbit-2: 0 - container_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq:2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: 500 - native_color: galera-bundle-docker-0 allocation score on overcloud-controller-0: -INFINITY - native_color: galera-bundle-docker-0 allocation score on overcloud-controller-1: -INFINITY - native_color: galera-bundle-docker-0 allocation score on overcloud-controller-2: -INFINITY -diff --git a/pengine/test10/bundle-nested-colocation.summary b/pengine/test10/bundle-nested-colocation.summary -index b2cec51..7c708d2 100644 ---- a/pengine/test10/bundle-nested-colocation.summary -+++ b/pengine/test10/bundle-nested-colocation.summary -@@ -35,7 +35,6 @@ Executing cluster transition: - * Pseudo action: rabbitmq-bundle_start_0 - * Pseudo action: all_stopped - * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0 -- * Pseudo action: rabbitmq-bundle-clone_start_0 - * Resource action: rabbitmq-bundle-docker-0 start on overcloud-rabbit-0 - * Resource action: rabbitmq-bundle-docker-0 monitor=60000 on overcloud-rabbit-0 - * Resource action: rabbitmq-bundle-0 start on overcloud-controller-0 -@@ -45,13 +44,17 @@ Executing cluster transition: - * Resource action: rabbitmq-bundle-docker-2 start on overcloud-rabbit-2 - * Resource action: rabbitmq-bundle-docker-2 monitor=60000 on overcloud-rabbit-2 - * Resource action: rabbitmq-bundle-2 start on overcloud-controller-2 -+ * Resource action: rabbitmq:0 monitor on rabbitmq-bundle-0 -+ * Resource action: rabbitmq:1 monitor on rabbitmq-bundle-1 -+ * Resource action: rabbitmq:2 monitor on rabbitmq-bundle-2 -+ * Pseudo action: rabbitmq-bundle-clone_start_0 -+ * Resource action: rabbitmq-bundle-0 monitor=60000 on overcloud-controller-0 -+ * Resource action: rabbitmq-bundle-1 monitor=60000 on overcloud-controller-1 -+ * Resource action: rabbitmq-bundle-2 monitor=60000 on overcloud-controller-2 - * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 - * Resource action: rabbitmq:1 start on rabbitmq-bundle-1 - * Resource action: rabbitmq:2 start on rabbitmq-bundle-2 - * Pseudo action: rabbitmq-bundle-clone_running_0 -- * Resource action: rabbitmq-bundle-0 monitor=60000 on overcloud-controller-0 -- * Resource action: rabbitmq-bundle-1 monitor=60000 on overcloud-controller-1 -- * Resource action: rabbitmq-bundle-2 monitor=60000 on overcloud-controller-2 - * Pseudo action: rabbitmq-bundle-clone_post_notify_running_0 - * Resource action: rabbitmq:0 notify on rabbitmq-bundle-0 - * Resource action: rabbitmq:1 notify on rabbitmq-bundle-1 -diff --git a/pengine/test10/bundle-order-fencing.scores b/pengine/test10/bundle-order-fencing.scores -index 9037624..25c3e79 100644 ---- a/pengine/test10/bundle-order-fencing.scores -+++ b/pengine/test10/bundle-order-fencing.scores -@@ -183,7 +183,7 @@ container_color: galera-bundle-master allocation score on rabbitmq-bundle-2: -IN - container_color: galera:0 allocation score on controller-0: 0 - container_color: galera:0 allocation score on controller-1: 0 - container_color: galera:0 allocation score on controller-2: 0 --container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-0: INFINITY - container_color: galera:0 allocation score on galera-bundle-1: -INFINITY - container_color: galera:0 allocation score on galera-bundle-2: -INFINITY - container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY -@@ -193,7 +193,7 @@ container_color: galera:1 allocation score on controller-0: 0 - container_color: galera:1 allocation score on controller-1: 0 - container_color: galera:1 allocation score on controller-2: 0 - container_color: galera:1 allocation score on galera-bundle-0: -INFINITY --container_color: galera:1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-1: INFINITY - container_color: galera:1 allocation score on galera-bundle-2: -INFINITY - container_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY -@@ -203,7 +203,7 @@ container_color: galera:2 allocation score on controller-1: 0 - container_color: galera:2 allocation score on controller-2: 0 - container_color: galera:2 allocation score on galera-bundle-0: -INFINITY - container_color: galera:2 allocation score on galera-bundle-1: -INFINITY --container_color: galera:2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-2: INFINITY - container_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: galera:2 allocation score on rabbitmq-bundle-2: -INFINITY -@@ -714,7 +714,7 @@ container_color: redis:0 allocation score on galera-bundle-2: -INFINITY - container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: INFINITY - container_color: redis:0 allocation score on redis-bundle-1: -INFINITY - container_color: redis:0 allocation score on redis-bundle-2: -INFINITY - container_color: redis:1 allocation score on controller-0: 0 -@@ -727,7 +727,7 @@ container_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: redis:1 allocation score on redis-bundle-0: -INFINITY --container_color: redis:1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-1: INFINITY - container_color: redis:1 allocation score on redis-bundle-2: -INFINITY - container_color: redis:2 allocation score on controller-0: 0 - container_color: redis:2 allocation score on controller-1: 0 -@@ -740,7 +740,7 @@ container_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: redis:2 allocation score on redis-bundle-0: -INFINITY - container_color: redis:2 allocation score on redis-bundle-1: -INFINITY --container_color: redis:2 allocation score on redis-bundle-2: -INFINITY -+container_color: redis:2 allocation score on redis-bundle-2: INFINITY - galera:0 promotion score on galera-bundle-0: -1 - galera:1 promotion score on galera-bundle-1: 100 - galera:2 promotion score on galera-bundle-2: 100 -diff --git a/pengine/test10/bundle-order-partial-start-2.dot b/pengine/test10/bundle-order-partial-start-2.dot -index 163be1f..d6608bb 100644 ---- a/pengine/test10/bundle-order-partial-start-2.dot -+++ b/pengine/test10/bundle-order-partial-start-2.dot -@@ -2,6 +2,7 @@ digraph "g" { - "all_stopped" [ style=bold color="green" fontcolor="orange"] - "galera-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-0_start_0 undercloud" -> "galera-bundle-0_monitor_60000 undercloud" [ style = bold] -+"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_0 galera-bundle-0" [ style = bold] - "galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] - "galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] - "galera-bundle-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] -@@ -28,6 +29,8 @@ digraph "g" { - "galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] - "galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"galera:0_monitor_0 galera-bundle-0" -> "galera-bundle-master_start_0" [ style = bold] -+"galera:0_monitor_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] - "galera:0_monitor_20000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] - "galera:0_monitor_30000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] - "galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = bold] -diff --git a/pengine/test10/bundle-order-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp -index 087ed6c..d17819c 100644 ---- a/pengine/test10/bundle-order-partial-start-2.exp -+++ b/pengine/test10/bundle-order-partial-start-2.exp -@@ -1,49 +1,49 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -52,49 +52,49 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -102,145 +102,161 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - - - -@@ -249,29 +265,29 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -281,7 +297,7 @@ - - - -- -+ - - - -@@ -290,277 +306,277 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -@@ -568,10 +584,10 @@ - - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start-2.scores b/pengine/test10/bundle-order-partial-start-2.scores -index f5e86de..b4a441d 100644 ---- a/pengine/test10/bundle-order-partial-start-2.scores -+++ b/pengine/test10/bundle-order-partial-start-2.scores -@@ -29,7 +29,7 @@ container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY - container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on undercloud: 0 --container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-0: 500 - container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera:0 allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -@@ -112,7 +112,7 @@ container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 - container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 - container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 500 - container_color: rabbitmq:0 allocation score on undercloud: 0 - container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY - container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -@@ -132,7 +132,7 @@ container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINI - container_color: redis-bundle-master allocation score on undercloud: 0 - container_color: redis:0 allocation score on galera-bundle-0: -INFINITY - container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: INFINITY - container_color: redis:0 allocation score on undercloud: 0 - galera:0 promotion score on galera-bundle-0: -1 - native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -diff --git a/pengine/test10/bundle-order-partial-start-2.summary b/pengine/test10/bundle-order-partial-start-2.summary -index 50933a2..f9748d2 100644 ---- a/pengine/test10/bundle-order-partial-start-2.summary -+++ b/pengine/test10/bundle-order-partial-start-2.summary -@@ -62,11 +62,12 @@ Executing cluster transition: - * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 - * Resource action: redis monitor=20000 on redis-bundle-0 - * Pseudo action: galera-bundle_start_0 -- * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera-bundle-docker-0 start on undercloud - * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud - * Resource action: galera-bundle-0 start on undercloud - * Resource action: galera-bundle-0 monitor=60000 on undercloud -+ * Resource action: galera:0 monitor on galera-bundle-0 -+ * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera:0 start on galera-bundle-0 - * Pseudo action: galera-bundle-master_running_0 - * Pseudo action: galera-bundle_running_0 -diff --git a/pengine/test10/bundle-order-partial-start.dot b/pengine/test10/bundle-order-partial-start.dot -index 958e7f4..0e121a4 100644 ---- a/pengine/test10/bundle-order-partial-start.dot -+++ b/pengine/test10/bundle-order-partial-start.dot -@@ -6,6 +6,7 @@ digraph "g" { - "galera-bundle-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] - "galera-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] -+"galera-bundle-docker-0_monitor_0 undercloud" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] -diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp -index 8aad157..98922d5 100644 ---- a/pengine/test10/bundle-order-partial-start.exp -+++ b/pengine/test10/bundle-order-partial-start.exp -@@ -207,6 +207,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start.scores b/pengine/test10/bundle-order-partial-start.scores -index ea702d0..1c50e66 100644 ---- a/pengine/test10/bundle-order-partial-start.scores -+++ b/pengine/test10/bundle-order-partial-start.scores -@@ -29,7 +29,7 @@ container_color: galera-bundle-docker-0 allocation score on undercloud: 0 - container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on undercloud: 0 --container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-0: 500 - container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera:0 allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -@@ -112,7 +112,7 @@ container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 - container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 - container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 500 - container_color: rabbitmq:0 allocation score on undercloud: 0 - container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY - container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -@@ -132,7 +132,7 @@ container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINI - container_color: redis-bundle-master allocation score on undercloud: 0 - container_color: redis:0 allocation score on galera-bundle-0: -INFINITY - container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: INFINITY - container_color: redis:0 allocation score on undercloud: 0 - galera:0 promotion score on galera-bundle-0: -1 - native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -diff --git a/pengine/test10/bundle-order-partial-stop.scores b/pengine/test10/bundle-order-partial-stop.scores -index a662f42..528842e 100644 ---- a/pengine/test10/bundle-order-partial-stop.scores -+++ b/pengine/test10/bundle-order-partial-stop.scores -@@ -29,7 +29,7 @@ container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY - container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on undercloud: 0 --container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-0: INFINITY - container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera:0 allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -@@ -132,7 +132,7 @@ container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINI - container_color: redis-bundle-master allocation score on undercloud: 0 - container_color: redis:0 allocation score on galera-bundle-0: -INFINITY - container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: INFINITY - container_color: redis:0 allocation score on undercloud: 0 - galera:0 promotion score on galera-bundle-0: 100 - native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -diff --git a/pengine/test10/bundle-order-startup-clone-2.dot b/pengine/test10/bundle-order-startup-clone-2.dot -index 8726909..d0b0f03 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.dot -+++ b/pengine/test10/bundle-order-startup-clone-2.dot -@@ -20,14 +20,17 @@ digraph "g" { - "galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = bold] -@@ -38,14 +41,17 @@ digraph "g" { - "galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle-1_start_0 metal-2" [ style = bold] -@@ -56,14 +62,17 @@ digraph "g" { - "galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] -+"galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle-2_start_0 metal-3" [ style = bold] -@@ -179,14 +188,17 @@ digraph "g" { - "redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle-0_start_0 metal-1" [ style = bold] -@@ -198,14 +210,17 @@ digraph "g" { - "redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle-1_start_0 metal-2" [ style = bold] -@@ -217,14 +232,17 @@ digraph "g" { - "redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] -+"redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle-2_start_0 metal-3" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup-clone-2.exp b/pengine/test10/bundle-order-startup-clone-2.exp -index 7d18d29..b6f90d4 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.exp -+++ b/pengine/test10/bundle-order-startup-clone-2.exp -@@ -444,6 +444,33 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -1523,6 +1550,33 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone-2.scores b/pengine/test10/bundle-order-startup-clone-2.scores -index 493cd87..bcc4905 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.scores -+++ b/pengine/test10/bundle-order-startup-clone-2.scores -@@ -143,7 +143,7 @@ container_color: galera-bundle-master allocation score on metal-1: 0 - container_color: galera-bundle-master allocation score on metal-2: 0 - container_color: galera-bundle-master allocation score on metal-3: 0 - container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: 0 --container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-0: 500 - container_color: galera:0 allocation score on galera-bundle-1: -INFINITY - container_color: galera:0 allocation score on galera-bundle-2: -INFINITY - container_color: galera:0 allocation score on metal-1: 0 -@@ -151,7 +151,7 @@ container_color: galera:0 allocation score on metal-2: 0 - container_color: galera:0 allocation score on metal-3: 0 - container_color: galera:0 allocation score on rabbitmq-bundle-0: 0 - container_color: galera:1 allocation score on galera-bundle-0: -INFINITY --container_color: galera:1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-1: 500 - container_color: galera:1 allocation score on galera-bundle-2: -INFINITY - container_color: galera:1 allocation score on metal-1: 0 - container_color: galera:1 allocation score on metal-2: 0 -@@ -159,7 +159,7 @@ container_color: galera:1 allocation score on metal-3: 0 - container_color: galera:1 allocation score on rabbitmq-bundle-0: 0 - container_color: galera:2 allocation score on galera-bundle-0: -INFINITY - container_color: galera:2 allocation score on galera-bundle-1: -INFINITY --container_color: galera:2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-2: 500 - container_color: galera:2 allocation score on metal-1: 0 - container_color: galera:2 allocation score on metal-2: 0 - container_color: galera:2 allocation score on metal-3: 0 -@@ -363,7 +363,7 @@ container_color: redis:0 allocation score on metal-1: 0 - container_color: redis:0 allocation score on metal-2: 0 - container_color: redis:0 allocation score on metal-3: 0 - container_color: redis:0 allocation score on rabbitmq-bundle-0: 0 --container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: 500 - container_color: redis:0 allocation score on redis-bundle-1: -INFINITY - container_color: redis:0 allocation score on redis-bundle-2: -INFINITY - container_color: redis:1 allocation score on galera-bundle-0: -INFINITY -@@ -374,7 +374,7 @@ container_color: redis:1 allocation score on metal-2: 0 - container_color: redis:1 allocation score on metal-3: 0 - container_color: redis:1 allocation score on rabbitmq-bundle-0: 0 - container_color: redis:1 allocation score on redis-bundle-0: -INFINITY --container_color: redis:1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-1: 500 - container_color: redis:1 allocation score on redis-bundle-2: -INFINITY - container_color: redis:2 allocation score on galera-bundle-0: -INFINITY - container_color: redis:2 allocation score on galera-bundle-1: -INFINITY -@@ -385,7 +385,7 @@ container_color: redis:2 allocation score on metal-3: 0 - container_color: redis:2 allocation score on rabbitmq-bundle-0: 0 - container_color: redis:2 allocation score on redis-bundle-0: -INFINITY - container_color: redis:2 allocation score on redis-bundle-1: -INFINITY --container_color: redis:2 allocation score on redis-bundle-2: -INFINITY -+container_color: redis:2 allocation score on redis-bundle-2: 500 - galera:0 promotion score on galera-bundle-0: -1 - galera:1 promotion score on galera-bundle-1: -1 - galera:2 promotion score on galera-bundle-2: -1 -diff --git a/pengine/test10/bundle-order-startup-clone.dot b/pengine/test10/bundle-order-startup-clone.dot -index 219b676..b791c10 100644 ---- a/pengine/test10/bundle-order-startup-clone.dot -+++ b/pengine/test10/bundle-order-startup-clone.dot -@@ -6,10 +6,13 @@ digraph "g" { - "galera-bundle-0_start_0 metal-1" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] - "galera-bundle-0_start_0 metal-1" [ style=dashed color="red" fontcolor="black"] - "galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = dashed] -+"galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-master_start_0" [ style = dashed] - "galera-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = dashed] -+"galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-master_start_0" [ style = dashed] - "galera-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = dashed] -+"galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-master_start_0" [ style = dashed] - "galera-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_60000 metal-1" [ style=dashed color="red" fontcolor="black"] - "galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] -@@ -53,10 +56,13 @@ digraph "g" { - "redis-bundle-0_start_0 metal-2" -> "redis:0_start_0 redis-bundle-0" [ style = bold] - "redis-bundle-0_start_0 metal-2" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-2" [ style = bold] -+"redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle-0_start_0 metal-2" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup-clone.exp b/pengine/test10/bundle-order-startup-clone.exp -index 8c8ba6aa..5be495e 100644 ---- a/pengine/test10/bundle-order-startup-clone.exp -+++ b/pengine/test10/bundle-order-startup-clone.exp -@@ -258,6 +258,15 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone.scores b/pengine/test10/bundle-order-startup-clone.scores -index d907861..4361fc4 100644 ---- a/pengine/test10/bundle-order-startup-clone.scores -+++ b/pengine/test10/bundle-order-startup-clone.scores -@@ -61,7 +61,7 @@ container_color: galera-bundle-master allocation score on metal-1: 0 - container_color: galera-bundle-master allocation score on metal-2: 0 - container_color: galera-bundle-master allocation score on metal-3: 0 - container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: 0 --container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-0: 500 - container_color: galera:0 allocation score on metal-1: 0 - container_color: galera:0 allocation score on metal-2: 0 - container_color: galera:0 allocation score on metal-3: 0 -@@ -115,7 +115,7 @@ container_color: redis:0 allocation score on metal-1: 0 - container_color: redis:0 allocation score on metal-2: 0 - container_color: redis:0 allocation score on metal-3: 0 - container_color: redis:0 allocation score on rabbitmq-bundle-0: 0 --container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: 500 - galera:0 promotion score on galera-bundle-0: -1 - native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY - native_color: galera-bundle-0 allocation score on metal-1: 10000 -diff --git a/pengine/test10/bundle-order-startup.dot b/pengine/test10/bundle-order-startup.dot -index 3ec10fa..98f1c3c 100644 ---- a/pengine/test10/bundle-order-startup.dot -+++ b/pengine/test10/bundle-order-startup.dot -@@ -6,6 +6,7 @@ digraph "g" { - "galera-bundle-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] - "galera-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] -+"galera-bundle-docker-0_monitor_0 undercloud" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] -@@ -104,6 +105,7 @@ digraph "g" { - "rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] - "rabbitmq-bundle-clone_start_0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-docker-0_monitor_0 undercloud" -> "rabbitmq-bundle-clone_start_0" [ style = bold] - "rabbitmq-bundle-docker-0_monitor_0 undercloud" -> "rabbitmq-bundle-docker-0_start_0 undercloud" [ style = bold] - "rabbitmq-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -@@ -129,6 +131,7 @@ digraph "g" { - "redis-bundle-0_start_0 undercloud" -> "redis:0_start_0 redis-bundle-0" [ style = bold] - "redis-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_0 undercloud" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] -+"redis-bundle-docker-0_monitor_0 undercloud" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-0_start_0 undercloud" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp -index ec1053c..bcef087 100644 ---- a/pengine/test10/bundle-order-startup.exp -+++ b/pengine/test10/bundle-order-startup.exp -@@ -1,7 +1,7 @@ - - - -- -+ - - - -@@ -61,7 +61,7 @@ - - - -- -+ - - - -@@ -123,6 +123,9 @@ - - - -+ -+ -+ - - - -@@ -268,6 +271,9 @@ - - - -+ -+ -+ - - - -@@ -338,7 +344,7 @@ - - - -- -+ - - - -@@ -417,7 +423,7 @@ - - - -- -+ - - - -@@ -479,6 +485,9 @@ - - - -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-startup.scores b/pengine/test10/bundle-order-startup.scores -index 565b47e..d49dd6e 100644 ---- a/pengine/test10/bundle-order-startup.scores -+++ b/pengine/test10/bundle-order-startup.scores -@@ -29,7 +29,7 @@ container_color: galera-bundle-docker-0 allocation score on undercloud: 0 - container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on undercloud: 0 --container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-0: 500 - container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera:0 allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -@@ -112,7 +112,7 @@ container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 - container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 - container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: 0 --container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 500 - container_color: rabbitmq:0 allocation score on undercloud: 0 - container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY - container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY -@@ -132,7 +132,7 @@ container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINI - container_color: redis-bundle-master allocation score on undercloud: 0 - container_color: redis:0 allocation score on galera-bundle-0: -INFINITY - container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: 500 - container_color: redis:0 allocation score on undercloud: 0 - galera:0 promotion score on galera-bundle-0: -1 - native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -diff --git a/pengine/test10/bundle-order-stop-clone.scores b/pengine/test10/bundle-order-stop-clone.scores -index df53f32..f8ec05c 100644 ---- a/pengine/test10/bundle-order-stop-clone.scores -+++ b/pengine/test10/bundle-order-stop-clone.scores -@@ -143,7 +143,7 @@ container_color: galera-bundle-master allocation score on metal-1: 0 - container_color: galera-bundle-master allocation score on metal-2: 0 - container_color: galera-bundle-master allocation score on metal-3: 0 - container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: 0 --container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-0: INFINITY - container_color: galera:0 allocation score on galera-bundle-1: -INFINITY - container_color: galera:0 allocation score on galera-bundle-2: -INFINITY - container_color: galera:0 allocation score on metal-1: 0 -@@ -151,7 +151,7 @@ container_color: galera:0 allocation score on metal-2: 0 - container_color: galera:0 allocation score on metal-3: 0 - container_color: galera:0 allocation score on rabbitmq-bundle-0: 0 - container_color: galera:1 allocation score on galera-bundle-0: -INFINITY --container_color: galera:1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-1: INFINITY - container_color: galera:1 allocation score on galera-bundle-2: -INFINITY - container_color: galera:1 allocation score on metal-1: 0 - container_color: galera:1 allocation score on metal-2: 0 -@@ -159,7 +159,7 @@ container_color: galera:1 allocation score on metal-3: 0 - container_color: galera:1 allocation score on rabbitmq-bundle-0: 0 - container_color: galera:2 allocation score on galera-bundle-0: -INFINITY - container_color: galera:2 allocation score on galera-bundle-1: -INFINITY --container_color: galera:2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-2: INFINITY - container_color: galera:2 allocation score on metal-1: 0 - container_color: galera:2 allocation score on metal-2: 0 - container_color: galera:2 allocation score on metal-3: 0 -@@ -363,7 +363,7 @@ container_color: redis:0 allocation score on metal-1: 0 - container_color: redis:0 allocation score on metal-2: 0 - container_color: redis:0 allocation score on metal-3: 0 - container_color: redis:0 allocation score on rabbitmq-bundle-0: 0 --container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: INFINITY - container_color: redis:0 allocation score on redis-bundle-1: -INFINITY - container_color: redis:0 allocation score on redis-bundle-2: -INFINITY - container_color: redis:1 allocation score on galera-bundle-0: -INFINITY -@@ -374,7 +374,7 @@ container_color: redis:1 allocation score on metal-2: 0 - container_color: redis:1 allocation score on metal-3: 0 - container_color: redis:1 allocation score on rabbitmq-bundle-0: 0 - container_color: redis:1 allocation score on redis-bundle-0: -INFINITY --container_color: redis:1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-1: INFINITY - container_color: redis:1 allocation score on redis-bundle-2: -INFINITY - container_color: redis:2 allocation score on galera-bundle-0: -INFINITY - container_color: redis:2 allocation score on galera-bundle-1: -INFINITY -@@ -385,7 +385,7 @@ container_color: redis:2 allocation score on metal-3: 0 - container_color: redis:2 allocation score on rabbitmq-bundle-0: 0 - container_color: redis:2 allocation score on redis-bundle-0: -INFINITY - container_color: redis:2 allocation score on redis-bundle-1: -INFINITY --container_color: redis:2 allocation score on redis-bundle-2: -INFINITY -+container_color: redis:2 allocation score on redis-bundle-2: INFINITY - galera:0 promotion score on galera-bundle-0: -1 - galera:1 promotion score on galera-bundle-1: -1 - galera:2 promotion score on galera-bundle-2: -1 -diff --git a/pengine/test10/bundle-order-stop.scores b/pengine/test10/bundle-order-stop.scores -index a662f42..528842e 100644 ---- a/pengine/test10/bundle-order-stop.scores -+++ b/pengine/test10/bundle-order-stop.scores -@@ -29,7 +29,7 @@ container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY - container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on undercloud: 0 --container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-0: INFINITY - container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera:0 allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY -@@ -132,7 +132,7 @@ container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINI - container_color: redis-bundle-master allocation score on undercloud: 0 - container_color: redis:0 allocation score on galera-bundle-0: -INFINITY - container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: INFINITY - container_color: redis:0 allocation score on undercloud: 0 - galera:0 promotion score on galera-bundle-0: 100 - native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -diff --git a/pengine/test10/guest-node-host-dies.dot b/pengine/test10/guest-node-host-dies.dot -index 83f38c4..2082d07 100644 ---- a/pengine/test10/guest-node-host-dies.dot -+++ b/pengine/test10/guest-node-host-dies.dot -@@ -13,6 +13,7 @@ digraph "g" { - "container1_start_0 rhel7-2" [ style=bold color="green" fontcolor="black"] - "container1_stop_0 rhel7-1" -> "all_stopped" [ style = bold] - "container1_stop_0 rhel7-1" -> "container1_start_0 rhel7-2" [ style = bold] -+"container1_stop_0 rhel7-1" -> "rsc_rhel7-1_start_0 rhel7-5" [ style = bold] - "container1_stop_0 rhel7-1" -> "stonith 'reboot' lxc1" [ style = bold] - "container1_stop_0 rhel7-1" [ style=bold color="green" fontcolor="orange"] - "container2_start_0 rhel7-3" -> "lxc-ms_start_0 lxc2" [ style = bold] -@@ -20,6 +21,7 @@ digraph "g" { - "container2_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] - "container2_stop_0 rhel7-1" -> "all_stopped" [ style = bold] - "container2_stop_0 rhel7-1" -> "container2_start_0 rhel7-3" [ style = bold] -+"container2_stop_0 rhel7-1" -> "rsc_rhel7-1_start_0 rhel7-5" [ style = bold] - "container2_stop_0 rhel7-1" -> "stonith 'reboot' lxc2" [ style = bold] - "container2_stop_0 rhel7-1" [ style=bold color="green" fontcolor="orange"] - "lxc-ms-master_demote_0" -> "lxc-ms-master_demoted_0" [ style = bold] -@@ -83,7 +85,6 @@ digraph "g" { - "lxc1_stop_0 rhel7-1" -> "all_stopped" [ style = bold] - "lxc1_stop_0 rhel7-1" -> "container1_stop_0 rhel7-1" [ style = bold] - "lxc1_stop_0 rhel7-1" -> "lxc1_start_0 rhel7-2" [ style = bold] --"lxc1_stop_0 rhel7-1" -> "rsc_rhel7-1_start_0 rhel7-5" [ 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] -@@ -102,7 +103,6 @@ digraph "g" { - "lxc2_stop_0 rhel7-1" -> "all_stopped" [ style = bold] - "lxc2_stop_0 rhel7-1" -> "container2_stop_0 rhel7-1" [ style = bold] - "lxc2_stop_0 rhel7-1" -> "lxc2_start_0 rhel7-3" [ style = bold] --"lxc2_stop_0 rhel7-1" -> "rsc_rhel7-1_start_0 rhel7-5" [ style = bold] - "lxc2_stop_0 rhel7-1" [ style=bold color="green" fontcolor="orange"] - "rsc_rhel7-1_monitor_5000 rhel7-5" [ style=bold color="green" fontcolor="black"] - "rsc_rhel7-1_start_0 rhel7-5" -> "rsc_rhel7-1_monitor_5000 rhel7-5" [ style = bold] -diff --git a/pengine/test10/guest-node-host-dies.exp b/pengine/test10/guest-node-host-dies.exp -index 01fe678..06362e2 100644 ---- a/pengine/test10/guest-node-host-dies.exp -+++ b/pengine/test10/guest-node-host-dies.exp -@@ -62,10 +62,10 @@ - - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/remote-fence-unclean-3.scores b/pengine/test10/remote-fence-unclean-3.scores -index 77d71d6..dba2026 100644 ---- a/pengine/test10/remote-fence-unclean-3.scores -+++ b/pengine/test10/remote-fence-unclean-3.scores -@@ -199,7 +199,7 @@ container_color: galera-bundle-master allocation score on overcloud-novacompute- - container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY - container_color: galera-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY --container_color: galera:0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-0: INFINITY - container_color: galera:0 allocation score on galera-bundle-1: -INFINITY - container_color: galera:0 allocation score on galera-bundle-2: -INFINITY - container_color: galera:0 allocation score on overcloud-controller-0: 0 -@@ -210,7 +210,7 @@ container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: galera:1 allocation score on galera-bundle-0: -INFINITY --container_color: galera:1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-1: INFINITY - container_color: galera:1 allocation score on galera-bundle-2: -INFINITY - container_color: galera:1 allocation score on overcloud-controller-0: 0 - container_color: galera:1 allocation score on overcloud-controller-1: 0 -@@ -221,7 +221,7 @@ container_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: galera:2 allocation score on galera-bundle-0: -INFINITY - container_color: galera:2 allocation score on galera-bundle-1: -INFINITY --container_color: galera:2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-2: INFINITY - container_color: galera:2 allocation score on overcloud-controller-0: 0 - container_color: galera:2 allocation score on overcloud-controller-1: 0 - container_color: galera:2 allocation score on overcloud-controller-2: 0 -@@ -836,7 +836,7 @@ container_color: redis:0 allocation score on overcloud-novacompute-0: 0 - container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis:0 allocation score on redis-bundle-0: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: INFINITY - container_color: redis:0 allocation score on redis-bundle-1: -INFINITY - container_color: redis:0 allocation score on redis-bundle-2: -INFINITY - container_color: redis:1 allocation score on galera-bundle-0: -INFINITY -@@ -850,7 +850,7 @@ container_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: redis:1 allocation score on redis-bundle-0: -INFINITY --container_color: redis:1 allocation score on redis-bundle-1: -INFINITY -+container_color: redis:1 allocation score on redis-bundle-1: INFINITY - container_color: redis:1 allocation score on redis-bundle-2: -INFINITY - container_color: redis:2 allocation score on galera-bundle-0: -INFINITY - container_color: redis:2 allocation score on galera-bundle-1: -INFINITY -@@ -864,7 +864,7 @@ container_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: redis:2 allocation score on redis-bundle-0: -INFINITY - container_color: redis:2 allocation score on redis-bundle-1: -INFINITY --container_color: redis:2 allocation score on redis-bundle-2: -INFINITY -+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 -diff --git a/pengine/test10/whitebox-asymmetric.dot b/pengine/test10/whitebox-asymmetric.dot -index da2f3e3..529caa6 100644 ---- a/pengine/test10/whitebox-asymmetric.dot -+++ b/pengine/test10/whitebox-asymmetric.dot -@@ -1,14 +1,19 @@ - digraph "g" { - "18node2_monitor_30000 18builder" [ style=bold color="green" fontcolor="black"] - "18node2_start_0 18builder" -> "18node2_monitor_30000 18builder" [ style = bold] -+"18node2_start_0 18builder" -> "nfs_mount_monitor_0 18node2" [ style = bold] - "18node2_start_0 18builder" -> "nfs_mount_monitor_10000 18node2" [ style = bold] - "18node2_start_0 18builder" -> "nfs_mount_start_0 18node2" [ style = bold] - "18node2_start_0 18builder" -> "vg_tags_dup_monitor_0 18node2" [ style = bold] -+"18node2_start_0 18builder" -> "vg_tags_monitor_0 18node2" [ style = bold] - "18node2_start_0 18builder" -> "webserver_monitor_0 18node2" [ style = bold] - "18node2_start_0 18builder" [ style=bold color="green" fontcolor="black"] -+"nfs_mount_monitor_0 18node2" -> "nfs_mount_start_0 18node2" [ style = bold] -+"nfs_mount_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] - "nfs_mount_monitor_10000 18node2" [ style=bold color="green" fontcolor="black"] - "nfs_mount_start_0 18node2" -> "nfs_mount_monitor_10000 18node2" [ style = bold] - "nfs_mount_start_0 18node2" [ style=bold color="green" fontcolor="black"] - "vg_tags_dup_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] -+"vg_tags_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] - "webserver_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] - } -diff --git a/pengine/test10/whitebox-asymmetric.exp b/pengine/test10/whitebox-asymmetric.exp -index db71443..3f105a1 100644 ---- a/pengine/test10/whitebox-asymmetric.exp -+++ b/pengine/test10/whitebox-asymmetric.exp -@@ -8,68 +8,97 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ -+ -+ -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -diff --git a/pengine/test10/whitebox-asymmetric.summary b/pengine/test10/whitebox-asymmetric.summary -index 8da9996..15bf9e7 100644 ---- a/pengine/test10/whitebox-asymmetric.summary -+++ b/pengine/test10/whitebox-asymmetric.summary -@@ -18,9 +18,11 @@ Transition Summary: - Executing cluster transition: - * Resource action: 18node2 start on 18builder - * Resource action: webserver monitor on 18node2 -- * Resource action: nfs_mount start on 18node2 -+ * Resource action: nfs_mount monitor on 18node2 -+ * Resource action: vg_tags monitor on 18node2 - * Resource action: vg_tags_dup monitor on 18node2 - * Resource action: 18node2 monitor=30000 on 18builder -+ * Resource action: nfs_mount start on 18node2 - * Resource action: nfs_mount monitor=10000 on 18node2 - - Revised cluster status: -diff --git a/pengine/test10/whitebox-fail3.dot b/pengine/test10/whitebox-fail3.dot -index 6f608d1..9814f66 100644 ---- a/pengine/test10/whitebox-fail3.dot -+++ b/pengine/test10/whitebox-fail3.dot -@@ -1,8 +1,5 @@ - digraph "g" { - "18builder_monitor_0 dvossel-laptop2" -> "18builder_start_0 dvossel-laptop2" [ style = bold] --"18builder_monitor_0 dvossel-laptop2" -> "FAKE_start_0 18builder" [ style = bold] --"18builder_monitor_0 dvossel-laptop2" -> "W-master_start_0" [ style = bold] --"18builder_monitor_0 dvossel-laptop2" -> "X-master_start_0" [ style = bold] - "18builder_monitor_0 dvossel-laptop2" [ style=bold color="green" fontcolor="black"] - "18builder_monitor_30000 dvossel-laptop2" [ style=bold color="green" fontcolor="black"] - "18builder_start_0 dvossel-laptop2" -> "18builder_monitor_30000 dvossel-laptop2" [ style = bold] -diff --git a/pengine/test10/whitebox-fail3.exp b/pengine/test10/whitebox-fail3.exp -index cddd7dd..ec28f12 100644 ---- a/pengine/test10/whitebox-fail3.exp -+++ b/pengine/test10/whitebox-fail3.exp -@@ -17,9 +17,6 @@ - - - -- -- -- - - - -@@ -95,11 +92,7 @@ - -
    - -- -- -- -- -- -+ - - - -@@ -157,11 +150,7 @@ - - - -- -- -- -- -- -+ - - - -diff --git a/pengine/test10/whitebox-fail3.summary b/pengine/test10/whitebox-fail3.summary -index 374fb69..eded099 100644 ---- a/pengine/test10/whitebox-fail3.summary -+++ b/pengine/test10/whitebox-fail3.summary -@@ -22,10 +22,10 @@ Transition Summary: - Executing cluster transition: - * Resource action: vm start on dvossel-laptop2 - * Resource action: FAKE stop on dvossel-laptop2 -- * Resource action: 18builder monitor on dvossel-laptop2 -- * Pseudo action: all_stopped - * Pseudo action: W-master_start_0 - * Pseudo action: X-master_start_0 -+ * Resource action: 18builder monitor on dvossel-laptop2 -+ * Pseudo action: all_stopped - * Resource action: 18builder start on dvossel-laptop2 - * Resource action: FAKE start on 18builder - * Resource action: W start on 18builder -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.dot b/pengine/test10/whitebox-imply-stop-on-fence.dot -index 029e9f1..1c41ad2 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.dot -+++ b/pengine/test10/whitebox-imply-stop-on-fence.dot -@@ -15,6 +15,7 @@ - "R-lxc-02_kiff-01_stop_0 kiff-01" -> "R-lxc-02_kiff-01_start_0 kiff-02" [ style = bold] - "R-lxc-02_kiff-01_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "R-lxc-02_kiff-01_stop_0 kiff-01" -> "shared0-clone_stop_0" [ style = bold] -+"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" [ style=bold color="green" fontcolor="orange"] -@@ -63,7 +64,6 @@ - "lxc-02_kiff-01_stop_0 kiff-01" -> "R-lxc-02_kiff-01_stop_0 kiff-01" [ style = bold] - "lxc-02_kiff-01_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "lxc-02_kiff-01_stop_0 kiff-01" -> "lxc-02_kiff-01_start_0 kiff-02" [ style = bold] --"lxc-02_kiff-01_stop_0 kiff-01" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] - "lxc-02_kiff-01_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] - "shared0-clone_stop_0" -> "shared0-clone_stopped_0" [ style = bold] - "shared0-clone_stop_0" -> "shared0_stop_0 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 b5700c0..9a469f2 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.exp -+++ b/pengine/test10/whitebox-imply-stop-on-fence.exp -@@ -374,13 +374,13 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-migrate1.dot b/pengine/test10/whitebox-migrate1.dot -index 53d37e0..29874e6 100644 ---- a/pengine/test10/whitebox-migrate1.dot -+++ b/pengine/test10/whitebox-migrate1.dot -@@ -17,6 +17,7 @@ - "remote-rsc_start_0 rhel7-node3" -> "rhel7-node1_migrate_to_0 rhel7-node2" [ style = dashed] - "remote-rsc_start_0 rhel7-node3" -> "rhel7-node1_start_0 rhel7-node3" [ style = bold] - "remote-rsc_start_0 rhel7-node3" [ style=bold color="green" fontcolor="orange"] -+"remote-rsc_stop_0 rhel7-node2" -> "FAKE3_start_0 rhel7-node2" [ style = dashed] - "remote-rsc_stop_0 rhel7-node2" -> "all_stopped" [ style = bold] - "remote-rsc_stop_0 rhel7-node2" -> "remote-rsc_start_0 rhel7-node3" [ style = bold] - "remote-rsc_stop_0 rhel7-node2" [ style=bold color="green" fontcolor="black"] -@@ -32,7 +33,6 @@ - "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] - "rhel7-node1_start_0 rhel7-node3" [ style=bold color="green" fontcolor="orange"] --"rhel7-node1_stop_0 rhel7-node2" -> "FAKE3_start_0 rhel7-node2" [ style = dashed] - "rhel7-node1_stop_0 rhel7-node2" -> "all_stopped" [ style = bold] - "rhel7-node1_stop_0 rhel7-node2" -> "remote-rsc_migrate_to_0 rhel7-node2" [ style = dashed] - "rhel7-node1_stop_0 rhel7-node2" -> "remote-rsc_stop_0 rhel7-node2" [ style = bold] -diff --git a/pengine/test10/whitebox-nested-group.dot b/pengine/test10/whitebox-nested-group.dot -index e5749ec..9e1abce 100644 ---- a/pengine/test10/whitebox-nested-group.dot -+++ b/pengine/test10/whitebox-nested-group.dot -@@ -1,30 +1,9 @@ - digraph "g" { - "c7auto4_monitor_0 c7auto1" -> "c7auto4_start_0 c7auto1" [ style = bold] --"c7auto4_monitor_0 c7auto1" -> "fake1_start_0 c7auto3" [ style = bold] --"c7auto4_monitor_0 c7auto1" -> "fake2_start_0 c7auto4" [ style = bold] --"c7auto4_monitor_0 c7auto1" -> "fake3_start_0 c7auto2" [ style = bold] --"c7auto4_monitor_0 c7auto1" -> "fake4_start_0 c7auto3" [ style = bold] --"c7auto4_monitor_0 c7auto1" -> "fake5_start_0 c7auto4" [ style = bold] --"c7auto4_monitor_0 c7auto1" -> "fake_clone_start_0" [ style = bold] --"c7auto4_monitor_0 c7auto1" -> "fake_group_start_0" [ style = bold] - "c7auto4_monitor_0 c7auto1" [ style=bold color="green" fontcolor="black"] - "c7auto4_monitor_0 c7auto2" -> "c7auto4_start_0 c7auto1" [ style = bold] --"c7auto4_monitor_0 c7auto2" -> "fake1_start_0 c7auto3" [ style = bold] --"c7auto4_monitor_0 c7auto2" -> "fake2_start_0 c7auto4" [ style = bold] --"c7auto4_monitor_0 c7auto2" -> "fake3_start_0 c7auto2" [ style = bold] --"c7auto4_monitor_0 c7auto2" -> "fake4_start_0 c7auto3" [ style = bold] --"c7auto4_monitor_0 c7auto2" -> "fake5_start_0 c7auto4" [ style = bold] --"c7auto4_monitor_0 c7auto2" -> "fake_clone_start_0" [ style = bold] --"c7auto4_monitor_0 c7auto2" -> "fake_group_start_0" [ style = bold] - "c7auto4_monitor_0 c7auto2" [ style=bold color="green" fontcolor="black"] - "c7auto4_monitor_0 c7auto3" -> "c7auto4_start_0 c7auto1" [ style = bold] --"c7auto4_monitor_0 c7auto3" -> "fake1_start_0 c7auto3" [ style = bold] --"c7auto4_monitor_0 c7auto3" -> "fake2_start_0 c7auto4" [ style = bold] --"c7auto4_monitor_0 c7auto3" -> "fake3_start_0 c7auto2" [ style = bold] --"c7auto4_monitor_0 c7auto3" -> "fake4_start_0 c7auto3" [ style = bold] --"c7auto4_monitor_0 c7auto3" -> "fake5_start_0 c7auto4" [ style = bold] --"c7auto4_monitor_0 c7auto3" -> "fake_clone_start_0" [ style = bold] --"c7auto4_monitor_0 c7auto3" -> "fake_group_start_0" [ style = bold] - "c7auto4_monitor_0 c7auto3" [ style=bold color="green" fontcolor="black"] - "c7auto4_monitor_30000 c7auto1" [ style=bold color="green" fontcolor="black"] - "c7auto4_start_0 c7auto1" -> "c7auto4_monitor_30000 c7auto1" [ style = bold] -diff --git a/pengine/test10/whitebox-nested-group.exp b/pengine/test10/whitebox-nested-group.exp -index 5625c92..388c4d4 100644 ---- a/pengine/test10/whitebox-nested-group.exp -+++ b/pengine/test10/whitebox-nested-group.exp -@@ -24,20 +24,11 @@ - - - -- -- -- - - - -- -- -- - - -- -- -- - - - -@@ -95,21 +86,12 @@ - - - -- -- -- - - - -- -- -- - - - -- -- -- - - - -@@ -169,20 +151,11 @@ - - - -- -- -- - - - -- -- -- - - -- -- -- - - - -@@ -237,20 +210,11 @@ - - - -- -- -- - - - -- -- -- - - -- -- -- - - - -@@ -308,21 +272,12 @@ - - - -- -- -- - - - -- -- -- - - - -- -- -- - - - -@@ -532,20 +487,11 @@ - - - -- -- -- - - - -- -- -- - - -- -- -- - - - -@@ -572,17 +518,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -+ - - - -diff --git a/pengine/test10/whitebox-nested-group.summary b/pengine/test10/whitebox-nested-group.summary -index b03b357..ca9c47f 100644 ---- a/pengine/test10/whitebox-nested-group.summary -+++ b/pengine/test10/whitebox-nested-group.summary -@@ -47,6 +47,8 @@ Executing cluster transition: - * Resource action: fake:0 monitor on c7auto2 - * Resource action: fake:1 monitor on c7auto3 - * Resource action: fake:3 monitor on c7auto1 -+ * Pseudo action: fake_clone_start_0 -+ * Pseudo action: fake_group_start_0 - * Resource action: fake_fs monitor on c7auto3 - * Resource action: fake_fs monitor on c7auto2 - * Resource action: fake_fs monitor on c7auto1 -@@ -56,8 +58,9 @@ Executing cluster transition: - * Resource action: fake1 start on c7auto3 - * Resource action: fake3 start on c7auto2 - * Resource action: fake4 start on c7auto3 -- * Pseudo action: fake_clone_start_0 -- * Pseudo action: fake_group_start_0 -+ * Resource action: fake:0 start on c7auto2 -+ * Resource action: fake:1 start on c7auto3 -+ * Resource action: fake:3 start on c7auto1 - * Resource action: fake_fs start on c7auto1 - * Resource action: container start on c7auto1 - * Resource action: c7auto4 start on c7auto1 -@@ -66,10 +69,10 @@ Executing cluster transition: - * Resource action: fake3 monitor=10000 on c7auto2 - * Resource action: fake4 monitor=10000 on c7auto3 - * Resource action: fake5 start on c7auto4 -- * Resource action: fake:0 start on c7auto2 -- * Resource action: fake:1 start on c7auto3 -+ * Resource action: fake:0 monitor=10000 on c7auto2 -+ * Resource action: fake:1 monitor=10000 on c7auto3 - * Resource action: fake:2 start on c7auto4 -- * Resource action: fake:3 start on c7auto1 -+ * Resource action: fake:3 monitor=10000 on c7auto1 - * Pseudo action: fake_clone_running_0 - * Pseudo action: fake_group_running_0 - * Resource action: fake_fs monitor=10000 on c7auto1 -@@ -77,10 +80,7 @@ Executing cluster transition: - * Resource action: c7auto4 monitor=30000 on c7auto1 - * Resource action: fake2 monitor=10000 on c7auto4 - * Resource action: fake5 monitor=10000 on c7auto4 -- * Resource action: fake:0 monitor=10000 on c7auto2 -- * Resource action: fake:1 monitor=10000 on c7auto3 - * Resource action: fake:2 monitor=10000 on c7auto4 -- * Resource action: fake:3 monitor=10000 on c7auto1 - - Revised cluster status: - Online: [ c7auto1 c7auto2 c7auto3 ] --- -1.8.3.1 - - -From 6a0dd3429c13343a7177f43cf4c82c352d39f672 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 26 Sep 2017 21:28:53 +1000 -Subject: [PATCH 18/21] Fix: PE: We most definitely need to probe connection - resources - ---- - pengine/container.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/pengine/container.c b/pengine/container.c -index 0e556bb..a205c53 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -885,8 +885,7 @@ container_create_probe(resource_t * rsc, node_t * node, action_t * complete, - } - } - } -- if(FALSE && tuple->remote) { -- // TODO: Needed? -+ if(tuple->remote) { - any_created |= tuple->remote->cmds->create_probe(tuple->remote, node, complete, force, data_set); - } - } --- -1.8.3.1 - - -From 5d27b590abc98d70ecbca3829569ee2de5e0e75d Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 26 Sep 2017 21:30:37 +1000 -Subject: [PATCH 19/21] Test: PE: We most definitely need to probe connection - resources - ---- - pengine/test10/bundle-nested-colocation.dot | 36 + - pengine/test10/bundle-nested-colocation.exp | 402 +++++-- - pengine/test10/bundle-nested-colocation.summary | 18 + - pengine/test10/bundle-order-fencing.dot | 24 + - pengine/test10/bundle-order-fencing.exp | 1056 +++++++++-------- - pengine/test10/bundle-order-fencing.summary | 12 + - pengine/test10/bundle-order-partial-start.dot | 2 + - pengine/test10/bundle-order-partial-start.exp | 236 ++-- - pengine/test10/bundle-order-partial-start.summary | 1 + - pengine/test10/bundle-order-startup-clone-2.dot | 36 + - pengine/test10/bundle-order-startup-clone-2.exp | 1182 ++++++++++++-------- - .../test10/bundle-order-startup-clone-2.summary | 18 + - pengine/test10/bundle-order-startup-clone.dot | 12 + - pengine/test10/bundle-order-startup-clone.exp | 247 ++-- - pengine/test10/bundle-order-startup-clone.summary | 6 + - pengine/test10/bundle-order-startup.dot | 6 + - pengine/test10/bundle-order-startup.exp | 486 ++++---- - pengine/test10/bundle-order-startup.summary | 3 + - pengine/test10/bundle-order-stop-clone.dot | 16 + - pengine/test10/bundle-order-stop-clone.exp | 248 ++-- - pengine/test10/bundle-order-stop-clone.summary | 12 + - pengine/test10/remote-fence-unclean-3.dot | 18 + - pengine/test10/remote-fence-unclean-3.exp | 176 ++- - pengine/test10/remote-fence-unclean-3.summary | 18 + - 24 files changed, 2727 insertions(+), 1544 deletions(-) - -diff --git a/pengine/test10/bundle-nested-colocation.dot b/pengine/test10/bundle-nested-colocation.dot -index 1a197c1..baa80e2 100644 ---- a/pengine/test10/bundle-nested-colocation.dot -+++ b/pengine/test10/bundle-nested-colocation.dot -@@ -1,17 +1,53 @@ - digraph "g" { - "all_stopped" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-0_monitor_0 overcloud-controller-0" -> "rabbitmq-bundle-0_start_0 overcloud-controller-0" [ style = bold] -+"rabbitmq-bundle-0_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-0_monitor_0 overcloud-controller-1" -> "rabbitmq-bundle-0_start_0 overcloud-controller-0" [ style = bold] -+"rabbitmq-bundle-0_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-0_monitor_0 overcloud-controller-2" -> "rabbitmq-bundle-0_start_0 overcloud-controller-0" [ style = bold] -+"rabbitmq-bundle-0_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-0_monitor_0 overcloud-galera-0" -> "rabbitmq-bundle-0_start_0 overcloud-controller-0" [ style = bold] -+"rabbitmq-bundle-0_monitor_0 overcloud-galera-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-0_monitor_0 overcloud-galera-1" -> "rabbitmq-bundle-0_start_0 overcloud-controller-0" [ style = bold] -+"rabbitmq-bundle-0_monitor_0 overcloud-galera-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-0_monitor_0 overcloud-galera-2" -> "rabbitmq-bundle-0_start_0 overcloud-controller-0" [ style = bold] -+"rabbitmq-bundle-0_monitor_0 overcloud-galera-2" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-0_monitor_60000 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-0_start_0 overcloud-controller-0" -> "rabbitmq-bundle-0_monitor_60000 overcloud-controller-0" [ style = bold] - "rabbitmq-bundle-0_start_0 overcloud-controller-0" -> "rabbitmq:0_monitor_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle-0_start_0 overcloud-controller-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle-0_start_0 overcloud-controller-0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] - "rabbitmq-bundle-0_start_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-1_monitor_0 overcloud-controller-0" -> "rabbitmq-bundle-1_start_0 overcloud-controller-1" [ style = bold] -+"rabbitmq-bundle-1_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-1_monitor_0 overcloud-controller-1" -> "rabbitmq-bundle-1_start_0 overcloud-controller-1" [ style = bold] -+"rabbitmq-bundle-1_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-1_monitor_0 overcloud-controller-2" -> "rabbitmq-bundle-1_start_0 overcloud-controller-1" [ style = bold] -+"rabbitmq-bundle-1_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-1_monitor_0 overcloud-galera-0" -> "rabbitmq-bundle-1_start_0 overcloud-controller-1" [ style = bold] -+"rabbitmq-bundle-1_monitor_0 overcloud-galera-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-1_monitor_0 overcloud-galera-1" -> "rabbitmq-bundle-1_start_0 overcloud-controller-1" [ style = bold] -+"rabbitmq-bundle-1_monitor_0 overcloud-galera-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-1_monitor_0 overcloud-galera-2" -> "rabbitmq-bundle-1_start_0 overcloud-controller-1" [ style = bold] -+"rabbitmq-bundle-1_monitor_0 overcloud-galera-2" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-1_monitor_60000 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-1_start_0 overcloud-controller-1" -> "rabbitmq-bundle-1_monitor_60000 overcloud-controller-1" [ style = bold] - "rabbitmq-bundle-1_start_0 overcloud-controller-1" -> "rabbitmq:1_monitor_0 rabbitmq-bundle-1" [ style = bold] - "rabbitmq-bundle-1_start_0 overcloud-controller-1" -> "rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style = bold] - "rabbitmq-bundle-1_start_0 overcloud-controller-1" -> "rabbitmq:1_start_0 rabbitmq-bundle-1" [ style = bold] - "rabbitmq-bundle-1_start_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-2_monitor_0 overcloud-controller-0" -> "rabbitmq-bundle-2_start_0 overcloud-controller-2" [ style = bold] -+"rabbitmq-bundle-2_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-2_monitor_0 overcloud-controller-1" -> "rabbitmq-bundle-2_start_0 overcloud-controller-2" [ style = bold] -+"rabbitmq-bundle-2_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-2_monitor_0 overcloud-controller-2" -> "rabbitmq-bundle-2_start_0 overcloud-controller-2" [ style = bold] -+"rabbitmq-bundle-2_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-2_monitor_0 overcloud-galera-0" -> "rabbitmq-bundle-2_start_0 overcloud-controller-2" [ style = bold] -+"rabbitmq-bundle-2_monitor_0 overcloud-galera-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-2_monitor_0 overcloud-galera-1" -> "rabbitmq-bundle-2_start_0 overcloud-controller-2" [ style = bold] -+"rabbitmq-bundle-2_monitor_0 overcloud-galera-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-2_monitor_0 overcloud-galera-2" -> "rabbitmq-bundle-2_start_0 overcloud-controller-2" [ style = bold] -+"rabbitmq-bundle-2_monitor_0 overcloud-galera-2" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-2_monitor_60000 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-2_start_0 overcloud-controller-2" -> "rabbitmq-bundle-2_monitor_60000 overcloud-controller-2" [ style = bold] - "rabbitmq-bundle-2_start_0 overcloud-controller-2" -> "rabbitmq:2_monitor_0 rabbitmq-bundle-2" [ style = bold] -diff --git a/pengine/test10/bundle-nested-colocation.exp b/pengine/test10/bundle-nested-colocation.exp -index b91ced5..266d4c0 100644 ---- a/pengine/test10/bundle-nested-colocation.exp -+++ b/pengine/test10/bundle-nested-colocation.exp -@@ -1,39 +1,39 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -43,61 +43,61 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -107,64 +107,64 @@ - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -174,80 +174,80 @@ - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -255,52 +255,52 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -316,10 +316,10 @@ - - - -- -+ - - -- -+ - - - -@@ -338,20 +338,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -360,18 +360,90 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -@@ -380,14 +452,14 @@ - - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -400,22 +472,22 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -424,18 +496,90 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -@@ -444,14 +588,14 @@ - - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -464,22 +608,22 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -488,11 +632,83 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -507,19 +723,19 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -@@ -527,13 +743,13 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/bundle-nested-colocation.summary b/pengine/test10/bundle-nested-colocation.summary -index 7c708d2..2cc1c7c 100644 ---- a/pengine/test10/bundle-nested-colocation.summary -+++ b/pengine/test10/bundle-nested-colocation.summary -@@ -30,8 +30,26 @@ Transition Summary: - Executing cluster transition: - * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 - * Resource action: rabbitmq-bundle-docker-0 stop on overcloud-rabbit-0 -+ * Resource action: rabbitmq-bundle-0 monitor on overcloud-galera-2 -+ * Resource action: rabbitmq-bundle-0 monitor on overcloud-galera-1 -+ * Resource action: rabbitmq-bundle-0 monitor on overcloud-galera-0 -+ * Resource action: rabbitmq-bundle-0 monitor on overcloud-controller-2 -+ * Resource action: rabbitmq-bundle-0 monitor on overcloud-controller-1 -+ * Resource action: rabbitmq-bundle-0 monitor on overcloud-controller-0 - * Resource action: rabbitmq-bundle-docker-1 stop on overcloud-rabbit-1 -+ * Resource action: rabbitmq-bundle-1 monitor on overcloud-galera-2 -+ * Resource action: rabbitmq-bundle-1 monitor on overcloud-galera-1 -+ * Resource action: rabbitmq-bundle-1 monitor on overcloud-galera-0 -+ * Resource action: rabbitmq-bundle-1 monitor on overcloud-controller-2 -+ * Resource action: rabbitmq-bundle-1 monitor on overcloud-controller-1 -+ * Resource action: rabbitmq-bundle-1 monitor on overcloud-controller-0 - * Resource action: rabbitmq-bundle-docker-2 stop on overcloud-rabbit-2 -+ * Resource action: rabbitmq-bundle-2 monitor on overcloud-galera-2 -+ * Resource action: rabbitmq-bundle-2 monitor on overcloud-galera-1 -+ * Resource action: rabbitmq-bundle-2 monitor on overcloud-galera-0 -+ * Resource action: rabbitmq-bundle-2 monitor on overcloud-controller-2 -+ * Resource action: rabbitmq-bundle-2 monitor on overcloud-controller-1 -+ * Resource action: rabbitmq-bundle-2 monitor on overcloud-controller-0 - * Pseudo action: rabbitmq-bundle_start_0 - * Pseudo action: all_stopped - * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0 -diff --git a/pengine/test10/bundle-order-fencing.dot b/pengine/test10/bundle-order-fencing.dot -index 0db9605..cff477b 100644 ---- a/pengine/test10/bundle-order-fencing.dot -+++ b/pengine/test10/bundle-order-fencing.dot -@@ -6,6 +6,12 @@ digraph "g" { - "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" -> "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] - "galera-bundle-0_start_0 controller-2" -> "galera_monitor_20000 galera-bundle-0" [ style = dashed] -@@ -16,6 +22,8 @@ digraph "g" { - "galera-bundle-0_stop_0 controller-0" -> "galera-bundle-0_start_0 controller-2" [ style = dashed] - "galera-bundle-0_stop_0 controller-0" -> "galera-bundle-docker-0_stop_0 controller-0" [ style = bold] - "galera-bundle-0_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle-1_monitor_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-2_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_stop_0 controller-0" -> "all_stopped" [ style = bold] - "galera-bundle-docker-0_stop_0 controller-0" -> "galera-bundle_stopped_0" [ style = bold] - "galera-bundle-docker-0_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -@@ -94,6 +102,12 @@ digraph "g" { - "ip-192.168.24.7_stop_0 controller-0" -> "all_stopped" [ style = bold] - "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] - "rabbitmq-bundle-0_start_0 controller-1" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] -@@ -103,6 +117,8 @@ digraph "g" { - "rabbitmq-bundle-0_stop_0 controller-0" -> "rabbitmq-bundle-0_start_0 controller-1" [ style = dashed] - "rabbitmq-bundle-0_stop_0 controller-0" -> "rabbitmq-bundle-docker-0_stop_0 controller-0" [ style = bold] - "rabbitmq-bundle-0_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-1_monitor_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-2_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] - "rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] - "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"] -@@ -189,6 +205,12 @@ digraph "g" { - "rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] - "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] - "redis-bundle-0_start_0 controller-1" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] -@@ -199,6 +221,8 @@ digraph "g" { - "redis-bundle-0_stop_0 controller-0" -> "redis-bundle-0_start_0 controller-1" [ style = dashed] - "redis-bundle-0_stop_0 controller-0" -> "redis-bundle-docker-0_stop_0 controller-0" [ style = bold] - "redis-bundle-0_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-1_monitor_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-2_monitor_0 controller-1" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_stop_0 controller-0" -> "all_stopped" [ style = bold] - "redis-bundle-docker-0_stop_0 controller-0" -> "redis-bundle_stopped_0" [ style = bold] - "redis-bundle-docker-0_stop_0 controller-0" [ style=bold color="green" fontcolor="orange"] -diff --git a/pengine/test10/bundle-order-fencing.exp b/pengine/test10/bundle-order-fencing.exp -index d072d85..6782060 100644 ---- a/pengine/test10/bundle-order-fencing.exp -+++ b/pengine/test10/bundle-order-fencing.exp -@@ -1,229 +1,229 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -231,136 +231,136 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -369,16 +369,16 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -386,137 +386,179 @@ - - - -+ -+ -+ -+ -+ -+ - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -525,16 +567,16 @@ - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -542,251 +584,293 @@ - - - -+ -+ -+ -+ -+ -+ - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -799,14 +883,14 @@ - - - -- -+ - - -- -+ - - - -- -+ - - - -@@ -815,7 +899,7 @@ - - - -- -+ - - - -@@ -824,517 +908,517 @@ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -1343,16 +1427,16 @@ - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -1360,40 +1444,82 @@ - - - -+ -+ -+ -+ -+ -+ - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -1402,42 +1528,42 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -1446,42 +1572,42 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -@@ -1490,13 +1616,13 @@ - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -1505,26 +1631,26 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -1534,34 +1660,34 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -1571,21 +1697,21 @@ - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - -@@ -1598,9 +1724,9 @@ - - - -- -+ - -- -+ - - - -@@ -1613,9 +1739,9 @@ - - - -- -+ - -- -+ - - - -@@ -1628,9 +1754,9 @@ - - - -- -+ - -- -+ - - - -@@ -1639,264 +1765,264 @@ - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -@@ -1904,68 +2030,68 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-fencing.summary b/pengine/test10/bundle-order-fencing.summary -index e2128cb..e78c531 100644 ---- a/pengine/test10/bundle-order-fencing.summary -+++ b/pengine/test10/bundle-order-fencing.summary -@@ -56,9 +56,21 @@ Transition Summary: - - Executing cluster transition: - * Pseudo action: rabbitmq-bundle-clone_pre_notify_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 -+ * 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 -+ * Resource action: galera-bundle-2 monitor on controller-1 - * 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 -+ * 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 -+ * Resource action: redis-bundle-2 monitor on controller-1 - * Pseudo action: stonith-fence_ipmilan-5254003e8e97_stop_0 - * Pseudo action: stonith-fence_ipmilan-5254000dcb3f_stop_0 - * Pseudo action: haproxy-bundle_stop_0 -diff --git a/pengine/test10/bundle-order-partial-start.dot b/pengine/test10/bundle-order-partial-start.dot -index 0e121a4..1106b28 100644 ---- a/pengine/test10/bundle-order-partial-start.dot -+++ b/pengine/test10/bundle-order-partial-start.dot -@@ -1,4 +1,6 @@ - digraph "g" { -+"galera-bundle-0_monitor_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] -+"galera-bundle-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-0_start_0 undercloud" -> "galera-bundle-0_monitor_60000 undercloud" [ style = bold] - "galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] -diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp -index 98922d5..e883a3b 100644 ---- a/pengine/test10/bundle-order-partial-start.exp -+++ b/pengine/test10/bundle-order-partial-start.exp -@@ -1,43 +1,43 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -52,49 +52,49 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -102,22 +102,22 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -126,82 +126,82 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -210,26 +210,26 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -239,7 +239,7 @@ - - - -- -+ - - - -@@ -254,291 +254,303 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start.summary b/pengine/test10/bundle-order-partial-start.summary -index 9045545..fb8e7de 100644 ---- a/pengine/test10/bundle-order-partial-start.summary -+++ b/pengine/test10/bundle-order-partial-start.summary -@@ -32,6 +32,7 @@ Executing cluster transition: - * Resource action: rabbitmq:0 monitor on rabbitmq-bundle-0 - * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 - * Resource action: galera-bundle-docker-0 monitor on undercloud -+ * Resource action: galera-bundle-0 monitor on undercloud - * Pseudo action: redis-bundle-master_pre_notify_promote_0 - * Resource action: haproxy-bundle-docker-0 monitor on undercloud - * Pseudo action: haproxy-bundle_start_0 -diff --git a/pengine/test10/bundle-order-startup-clone-2.dot b/pengine/test10/bundle-order-startup-clone-2.dot -index d0b0f03..6026530 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.dot -+++ b/pengine/test10/bundle-order-startup-clone-2.dot -@@ -1,16 +1,34 @@ - digraph "g" { -+"galera-bundle-0_monitor_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = bold] -+"galera-bundle-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_monitor_0 metal-2" -> "galera-bundle-0_start_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 = bold] -+"galera-bundle-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] - "galera-bundle-0_start_0 metal-1" -> "galera-bundle-0_monitor_60000 metal-1" [ style = bold] - "galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] - "galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] - "galera-bundle-0_start_0 metal-1" -> "galera:0_start_0 galera-bundle-0" [ style = bold] - "galera-bundle-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-1_monitor_0 metal-1" -> "galera-bundle-1_start_0 metal-2" [ style = bold] -+"galera-bundle-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-1_monitor_0 metal-2" -> "galera-bundle-1_start_0 metal-2" [ style = bold] -+"galera-bundle-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-1_monitor_0 metal-3" -> "galera-bundle-1_start_0 metal-2" [ style = bold] -+"galera-bundle-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] - "galera-bundle-1_start_0 metal-2" -> "galera-bundle-1_monitor_60000 metal-2" [ style = bold] - "galera-bundle-1_start_0 metal-2" -> "galera:1_monitor_20000 galera-bundle-1" [ style = bold] - "galera-bundle-1_start_0 metal-2" -> "galera:1_monitor_30000 galera-bundle-1" [ style = bold] - "galera-bundle-1_start_0 metal-2" -> "galera:1_start_0 galera-bundle-1" [ style = bold] - "galera-bundle-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-2_monitor_0 metal-1" -> "galera-bundle-2_start_0 metal-3" [ style = bold] -+"galera-bundle-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-2_monitor_0 metal-2" -> "galera-bundle-2_start_0 metal-3" [ style = bold] -+"galera-bundle-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-2_monitor_0 metal-3" -> "galera-bundle-2_start_0 metal-3" [ style = bold] -+"galera-bundle-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-2_start_0 metal-3" -> "galera-bundle-2_monitor_60000 metal-3" [ style = bold] - "galera-bundle-2_start_0 metal-3" -> "galera:2_monitor_20000 galera-bundle-2" [ style = bold] -@@ -167,18 +185,36 @@ digraph "g" { - "haproxy-bundle_start_0" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] - "haproxy-bundle_start_0" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] - "haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-0_monitor_0 metal-1" -> "redis-bundle-0_start_0 metal-1" [ style = bold] -+"redis-bundle-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_monitor_0 metal-2" -> "redis-bundle-0_start_0 metal-1" [ style = bold] -+"redis-bundle-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_monitor_0 metal-3" -> "redis-bundle-0_start_0 metal-1" [ style = bold] -+"redis-bundle-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] - "redis-bundle-0_start_0 metal-1" -> "redis-bundle-0_monitor_60000 metal-1" [ style = bold] - "redis-bundle-0_start_0 metal-1" -> "redis:0_monitor_20000 redis-bundle-0" [ style = bold] - "redis-bundle-0_start_0 metal-1" -> "redis:0_promote_0 redis-bundle-0" [ style = bold] - "redis-bundle-0_start_0 metal-1" -> "redis:0_start_0 redis-bundle-0" [ style = bold] - "redis-bundle-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-1_monitor_0 metal-1" -> "redis-bundle-1_start_0 metal-2" [ style = bold] -+"redis-bundle-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-1_monitor_0 metal-2" -> "redis-bundle-1_start_0 metal-2" [ style = bold] -+"redis-bundle-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-1_monitor_0 metal-3" -> "redis-bundle-1_start_0 metal-2" [ style = bold] -+"redis-bundle-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] - "redis-bundle-1_start_0 metal-2" -> "redis-bundle-1_monitor_60000 metal-2" [ style = bold] - "redis-bundle-1_start_0 metal-2" -> "redis:1_monitor_20000 redis-bundle-1" [ style = bold] - "redis-bundle-1_start_0 metal-2" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] - "redis-bundle-1_start_0 metal-2" -> "redis:1_start_0 redis-bundle-1" [ style = bold] - "redis-bundle-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-2_monitor_0 metal-1" -> "redis-bundle-2_start_0 metal-3" [ style = bold] -+"redis-bundle-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-2_monitor_0 metal-2" -> "redis-bundle-2_start_0 metal-3" [ style = bold] -+"redis-bundle-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-2_monitor_0 metal-3" -> "redis-bundle-2_start_0 metal-3" [ style = bold] -+"redis-bundle-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-2_start_0 metal-3" -> "redis-bundle-2_monitor_60000 metal-3" [ style = bold] - "redis-bundle-2_start_0 metal-3" -> "redis:2_monitor_20000 redis-bundle-2" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup-clone-2.exp b/pengine/test10/bundle-order-startup-clone-2.exp -index b6f90d4..ae499c0 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.exp -+++ b/pengine/test10/bundle-order-startup-clone-2.exp -@@ -1,43 +1,43 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -52,49 +52,49 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -103,49 +103,49 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -154,55 +154,55 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -210,28 +210,28 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -240,205 +240,205 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -447,50 +447,50 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -500,37 +500,37 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -539,7 +539,7 @@ - - - -- -+ - - - -@@ -557,46 +557,82 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -606,103 +642,139 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - -@@ -712,1305 +784,1449 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone-2.summary b/pengine/test10/bundle-order-startup-clone-2.summary -index a2c2146..07e6f00 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.summary -+++ b/pengine/test10/bundle-order-startup-clone-2.summary -@@ -52,12 +52,21 @@ Executing cluster transition: - * Resource action: galera-bundle-docker-0 monitor on metal-3 - * Resource action: galera-bundle-docker-0 monitor on metal-2 - * Resource action: galera-bundle-docker-0 monitor on metal-1 -+ * Resource action: galera-bundle-0 monitor on metal-3 -+ * Resource action: galera-bundle-0 monitor on metal-2 -+ * Resource action: galera-bundle-0 monitor on metal-1 - * Resource action: galera-bundle-docker-1 monitor on metal-3 - * Resource action: galera-bundle-docker-1 monitor on metal-2 - * Resource action: galera-bundle-docker-1 monitor on metal-1 -+ * Resource action: galera-bundle-1 monitor on metal-3 -+ * Resource action: galera-bundle-1 monitor on metal-2 -+ * Resource action: galera-bundle-1 monitor on metal-1 - * Resource action: galera-bundle-docker-2 monitor on metal-3 - * Resource action: galera-bundle-docker-2 monitor on metal-2 - * Resource action: galera-bundle-docker-2 monitor on metal-1 -+ * Resource action: galera-bundle-2 monitor on metal-3 -+ * Resource action: galera-bundle-2 monitor on metal-2 -+ * Resource action: galera-bundle-2 monitor on metal-1 - * Resource action: haproxy-bundle-docker-0 monitor on metal-3 - * Resource action: haproxy-bundle-docker-0 monitor on metal-2 - * Resource action: haproxy-bundle-docker-0 monitor on metal-1 -@@ -71,12 +80,21 @@ Executing cluster transition: - * Resource action: redis-bundle-docker-0 monitor on metal-3 - * Resource action: redis-bundle-docker-0 monitor on metal-2 - * Resource action: redis-bundle-docker-0 monitor on metal-1 -+ * Resource action: redis-bundle-0 monitor on metal-3 -+ * Resource action: redis-bundle-0 monitor on metal-2 -+ * Resource action: redis-bundle-0 monitor on metal-1 - * Resource action: redis-bundle-docker-1 monitor on metal-3 - * Resource action: redis-bundle-docker-1 monitor on metal-2 - * Resource action: redis-bundle-docker-1 monitor on metal-1 -+ * Resource action: redis-bundle-1 monitor on metal-3 -+ * Resource action: redis-bundle-1 monitor on metal-2 -+ * Resource action: redis-bundle-1 monitor on metal-1 - * Resource action: redis-bundle-docker-2 monitor on metal-3 - * Resource action: redis-bundle-docker-2 monitor on metal-2 - * Resource action: redis-bundle-docker-2 monitor on metal-1 -+ * Resource action: redis-bundle-2 monitor on metal-3 -+ * Resource action: redis-bundle-2 monitor on metal-2 -+ * Resource action: redis-bundle-2 monitor on metal-1 - * Pseudo action: redis-bundle_start_0 - * Pseudo action: haproxy-bundle_start_0 - * Pseudo action: storage-clone_confirmed-pre_notify_start_0 -diff --git a/pengine/test10/bundle-order-startup-clone.dot b/pengine/test10/bundle-order-startup-clone.dot -index b791c10..39f3635 100644 ---- a/pengine/test10/bundle-order-startup-clone.dot -+++ b/pengine/test10/bundle-order-startup-clone.dot -@@ -1,4 +1,10 @@ - digraph "g" { -+"galera-bundle-0_monitor_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] -+"galera-bundle-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_monitor_0 metal-2" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] -+"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" [ 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] - "galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_20000 galera-bundle-0" [ style = dashed] -@@ -49,6 +55,12 @@ digraph "g" { - "haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] - "haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 metal-2" [ style = bold] - "haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"redis-bundle-0_monitor_0 metal-1" -> "redis-bundle-0_start_0 metal-2" [ style = bold] -+"redis-bundle-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_monitor_0 metal-2" -> "redis-bundle-0_start_0 metal-2" [ style = bold] -+"redis-bundle-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_monitor_0 metal-3" -> "redis-bundle-0_start_0 metal-2" [ style = bold] -+"redis-bundle-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-0_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] - "redis-bundle-0_start_0 metal-2" -> "redis-bundle-0_monitor_60000 metal-2" [ style = bold] - "redis-bundle-0_start_0 metal-2" -> "redis:0_monitor_45000 redis-bundle-0" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup-clone.exp b/pengine/test10/bundle-order-startup-clone.exp -index 5be495e..9e3dd9b 100644 ---- a/pengine/test10/bundle-order-startup-clone.exp -+++ b/pengine/test10/bundle-order-startup-clone.exp -@@ -10,7 +10,7 @@ - - - -- -+ - - - -@@ -19,7 +19,7 @@ - - - -- -+ - - - -@@ -28,7 +28,7 @@ - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -55,351 +55,414 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone.summary b/pengine/test10/bundle-order-startup-clone.summary -index c2b46de..1346bda 100644 ---- a/pengine/test10/bundle-order-startup-clone.summary -+++ b/pengine/test10/bundle-order-startup-clone.summary -@@ -31,6 +31,9 @@ Executing cluster transition: - * Resource action: galera-bundle-docker-0 monitor on metal-3 - * Resource action: galera-bundle-docker-0 monitor on metal-2 - * Resource action: galera-bundle-docker-0 monitor on metal-1 -+ * Resource action: galera-bundle-0 monitor on metal-3 -+ * Resource action: galera-bundle-0 monitor on metal-2 -+ * Resource action: galera-bundle-0 monitor on metal-1 - * Resource action: haproxy-bundle-docker-0 monitor on metal-3 - * Resource action: haproxy-bundle-docker-0 monitor on metal-2 - * Resource action: haproxy-bundle-docker-0 monitor on metal-1 -@@ -38,6 +41,9 @@ Executing cluster transition: - * Resource action: redis-bundle-docker-0 monitor on metal-3 - * Resource action: redis-bundle-docker-0 monitor on metal-2 - * Resource action: redis-bundle-docker-0 monitor on metal-1 -+ * Resource action: redis-bundle-0 monitor on metal-3 -+ * Resource action: redis-bundle-0 monitor on metal-2 -+ * Resource action: redis-bundle-0 monitor on metal-1 - * Pseudo action: redis-bundle_start_0 - * Pseudo action: haproxy-bundle_start_0 - * Resource action: haproxy-bundle-docker-0 start on metal-2 -diff --git a/pengine/test10/bundle-order-startup.dot b/pengine/test10/bundle-order-startup.dot -index 98f1c3c..213fa4c 100644 ---- a/pengine/test10/bundle-order-startup.dot -+++ b/pengine/test10/bundle-order-startup.dot -@@ -1,4 +1,6 @@ - digraph "g" { -+"galera-bundle-0_monitor_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] -+"galera-bundle-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-0_start_0 undercloud" -> "galera-bundle-0_monitor_60000 undercloud" [ style = bold] - "galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] -@@ -84,6 +86,8 @@ digraph "g" { - "openstack-cinder-volume_running_0" [ style=bold color="green" fontcolor="orange"] - "openstack-cinder-volume_start_0" -> "openstack-cinder-volume-docker-0_start_0 undercloud" [ style = bold] - "openstack-cinder-volume_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle-0_monitor_0 undercloud" -> "rabbitmq-bundle-0_start_0 undercloud" [ style = bold] -+"rabbitmq-bundle-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-0_start_0 undercloud" -> "rabbitmq-bundle-0_monitor_60000 undercloud" [ style = bold] - "rabbitmq-bundle-0_start_0 undercloud" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] -@@ -124,6 +128,8 @@ digraph "g" { - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] - "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_monitor_0 undercloud" -> "redis-bundle-0_start_0 undercloud" [ style = bold] -+"redis-bundle-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-0_start_0 undercloud" -> "redis-bundle-0_monitor_60000 undercloud" [ style = bold] - "redis-bundle-0_start_0 undercloud" -> "redis:0_monitor_45000 redis-bundle-0" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp -index bcef087..77e67bd 100644 ---- a/pengine/test10/bundle-order-startup.exp -+++ b/pengine/test10/bundle-order-startup.exp -@@ -1,100 +1,100 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - -@@ -102,22 +102,22 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -126,29 +126,29 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -158,7 +158,7 @@ - - - -- -+ - - - -@@ -173,809 +173,845 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ -+ -+ -+ - - - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ - - - -- -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup.summary b/pengine/test10/bundle-order-startup.summary -index 8da71d0..8e6b685 100644 ---- a/pengine/test10/bundle-order-startup.summary -+++ b/pengine/test10/bundle-order-startup.summary -@@ -41,9 +41,12 @@ Transition Summary: - Executing cluster transition: - * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 - * Resource action: rabbitmq-bundle-docker-0 monitor on undercloud -+ * Resource action: rabbitmq-bundle-0 monitor on undercloud - * Resource action: galera-bundle-docker-0 monitor on undercloud -+ * Resource action: galera-bundle-0 monitor on undercloud - * Pseudo action: redis-bundle-master_pre_notify_start_0 - * Resource action: redis-bundle-docker-0 monitor on undercloud -+ * Resource action: redis-bundle-0 monitor on undercloud - * Resource action: ip-192.168.122.254 monitor on undercloud - * Resource action: ip-192.168.122.250 monitor on undercloud - * Resource action: ip-192.168.122.249 monitor on undercloud -diff --git a/pengine/test10/bundle-order-stop-clone.dot b/pengine/test10/bundle-order-stop-clone.dot -index 6545fb8..4d03564 100644 ---- a/pengine/test10/bundle-order-stop-clone.dot -+++ b/pengine/test10/bundle-order-stop-clone.dot -@@ -1,5 +1,11 @@ - 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] - "galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_20000 galera-bundle-0" [ style = dashed] -@@ -10,6 +16,10 @@ digraph "g" { - "galera-bundle-0_stop_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] - "galera-bundle-0_stop_0 metal-1" -> "galera-bundle-docker-0_stop_0 metal-1" [ style = bold] - "galera-bundle-0_stop_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_stop_0 metal-1" -> "all_stopped" [ style = bold] - "galera-bundle-docker-0_stop_0 metal-1" -> "galera-bundle_stopped_0" [ style = bold] - "galera-bundle-docker-0_stop_0 metal-1" [ style=bold color="green" fontcolor="black"] -@@ -45,6 +55,12 @@ digraph "g" { - "galera:0_stop_0 galera-bundle-0" -> "galera-bundle-master_stopped_0" [ style = bold] - "galera:0_stop_0 galera-bundle-0" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] - "galera:0_stop_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "storage-clone_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] - "storage-clone_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] - "storage-clone_confirmed-pre_notify_stop_0" -> "storage-clone_post_notify_stopped_0" [ style = bold] -diff --git a/pengine/test10/bundle-order-stop-clone.exp b/pengine/test10/bundle-order-stop-clone.exp -index e78e235..a1106aa 100644 ---- a/pengine/test10/bundle-order-stop-clone.exp -+++ b/pengine/test10/bundle-order-stop-clone.exp -@@ -1,139 +1,139 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -141,123 +141,123 @@ - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -267,58 +267,172 @@ - - - -- -+ -+ -+ -+ -+ -+ -+ - - - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - - - -- -+ - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - -- -+ - - - - - -- -+ - - - -- -+ - - - -@@ -326,19 +440,19 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-stop-clone.summary b/pengine/test10/bundle-order-stop-clone.summary -index 70e0f21..d988c06 100644 ---- a/pengine/test10/bundle-order-stop-clone.summary -+++ b/pengine/test10/bundle-order-stop-clone.summary -@@ -28,6 +28,18 @@ Transition Summary: - - Executing cluster transition: - * Pseudo action: storage-clone_pre_notify_stop_0 -+ * Resource action: galera-bundle-0 monitor on metal-3 -+ * Resource action: galera-bundle-0 monitor on metal-2 -+ * Resource action: galera-bundle-1 monitor on metal-3 -+ * Resource action: galera-bundle-1 monitor on metal-1 -+ * Resource action: galera-bundle-2 monitor on metal-2 -+ * Resource action: galera-bundle-2 monitor on metal-1 -+ * Resource action: redis-bundle-0 monitor on metal-3 -+ * Resource action: redis-bundle-0 monitor on metal-2 -+ * Resource action: redis-bundle-1 monitor on metal-3 -+ * Resource action: redis-bundle-1 monitor on metal-1 -+ * Resource action: redis-bundle-2 monitor on metal-2 -+ * Resource action: redis-bundle-2 monitor on metal-1 - * Pseudo action: galera-bundle_stop_0 - * Resource action: storage:0 notify on metal-1 - * Resource action: storage:1 notify on metal-2 -diff --git a/pengine/test10/remote-fence-unclean-3.dot b/pengine/test10/remote-fence-unclean-3.dot -index 14adaef..dfee1d9 100644 ---- a/pengine/test10/remote-fence-unclean-3.dot -+++ b/pengine/test10/remote-fence-unclean-3.dot -@@ -10,8 +9,26 @@ digraph "g" { - "fence1_monitor_60000 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] - "fence1_start_0 overcloud-controller-0" -> "fence1_monitor_60000 overcloud-controller-0" [ style = bold] - "fence1_start_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-1_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-1_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-2_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-2_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] - "overcloud-novacompute-0_stop_0 overcloud-controller-0" -> "all_stopped" [ style = bold] - "overcloud-novacompute-0_stop_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-0_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-0_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-1_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-1_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-2_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-2_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-1_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-1_monitor_0 overcloud-controller-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-2_monitor_0 overcloud-controller-0" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-2_monitor_0 overcloud-controller-1" [ style=bold color="green" fontcolor="black"] - "stonith 'reboot' overcloud-novacompute-0" -> "stonith_complete" [ style = bold] - "stonith 'reboot' overcloud-novacompute-0" [ style=bold color="green" fontcolor="black"] - "stonith_complete" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/remote-fence-unclean-3.exp b/pengine/test10/remote-fence-unclean-3.exp -index 64e5a62..76e5e89 100644 ---- a/pengine/test10/remote-fence-unclean-3.exp -+++ b/pengine/test10/remote-fence-unclean-3.exp -@@ -1,20 +1,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -27,16 +27,16 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -45,7 +45,7 @@ - - - -- -+ - - - -@@ -72,29 +72,191 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -246,7 +269,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/remote-fence-unclean-3.summary b/pengine/test10/remote-fence-unclean-3.summary -index ec54d8e..7f2b2d3 100644 ---- a/pengine/test10/remote-fence-unclean-3.summary -+++ b/pengine/test10/remote-fence-unclean-3.summary -@@ -43,6 +43,24 @@ Executing cluster transition: - * Resource action: fence1 monitor on overcloud-controller-1 - * Resource action: fence1 monitor on overcloud-controller-0 - * Resource action: overcloud-novacompute-0 stop on overcloud-controller-0 -+ * Resource action: rabbitmq-bundle-0 monitor on overcloud-controller-2 -+ * Resource action: rabbitmq-bundle-0 monitor on overcloud-controller-1 -+ * Resource action: rabbitmq-bundle-1 monitor on overcloud-controller-2 -+ * Resource action: rabbitmq-bundle-1 monitor on overcloud-controller-0 -+ * Resource action: rabbitmq-bundle-2 monitor on overcloud-controller-1 -+ * Resource action: rabbitmq-bundle-2 monitor on overcloud-controller-0 -+ * Resource action: galera-bundle-0 monitor on overcloud-controller-2 -+ * Resource action: galera-bundle-0 monitor on overcloud-controller-1 -+ * Resource action: galera-bundle-1 monitor on overcloud-controller-2 -+ * Resource action: galera-bundle-1 monitor on overcloud-controller-0 -+ * Resource action: galera-bundle-2 monitor on overcloud-controller-1 -+ * Resource action: galera-bundle-2 monitor on overcloud-controller-0 -+ * Resource action: redis-bundle-0 monitor on overcloud-controller-2 -+ * Resource action: redis-bundle-0 monitor on overcloud-controller-1 -+ * Resource action: redis-bundle-1 monitor on overcloud-controller-2 -+ * Resource action: redis-bundle-1 monitor on overcloud-controller-0 -+ * Resource action: redis-bundle-2 monitor on overcloud-controller-1 -+ * Resource action: redis-bundle-2 monitor on overcloud-controller-0 - * Fencing overcloud-novacompute-0 (reboot) - * Pseudo action: stonith_complete - * Pseudo action: all_stopped --- -1.8.3.1 - - -From 140a37e6eaa35a4248abe254641965410e2f833d Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 22 Sep 2017 12:36:01 +1000 -Subject: [PATCH 20/21] crm_resource: Now that we only clean up on known nodes - we dont need this optimisation - ---- - tools/crm_resource_runtime.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c -index 210ea7d..c280c59 100644 ---- a/tools/crm_resource_runtime.c -+++ b/tools/crm_resource_runtime.c -@@ -619,7 +619,7 @@ cli_resource_delete(crm_ipc_t *crmd_channel, const char *host_uname, - resource_t *child = (resource_t *) lpc->data; - - rc = cli_resource_delete(cib_conn, crmd_channel, host_uname, child, data_set); -- if(rc != pcmk_ok || (pe_rsc_is_clone(rsc) && is_not_set(rsc->flags, pe_rsc_unique))) { -+ if(rc != pcmk_ok) { - return rc; - } - } --- -1.8.3.1 - - -From f3e82cec10999738437e566e5092513de528c6e3 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 26 Sep 2017 22:14:20 +1000 -Subject: [PATCH 21/21] Log: Reduce verbosity of developer logging - ---- - lib/common/strings.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lib/common/strings.c b/lib/common/strings.c -index 5856c16..573a14b 100644 ---- a/lib/common/strings.c -+++ b/lib/common/strings.c -@@ -415,12 +415,12 @@ crm_compress_string(const char *data, int length, int max, char **result, unsign - #ifdef CLOCK_MONOTONIC - clock_gettime(CLOCK_MONOTONIC, &after_t); - -- crm_info("Compressed %d bytes into %d (ratio %d:1) in %dms", -+ crm_trace("Compressed %d bytes into %d (ratio %d:1) in %ldms", - length, *result_len, length / (*result_len), - (after_t.tv_sec - before_t.tv_sec) * 1000 + (after_t.tv_nsec - - before_t.tv_nsec) / 1000000); - #else -- crm_info("Compressed %d bytes into %d (ratio %d:1)", -+ crm_trace("Compressed %d bytes into %d (ratio %d:1)", - length, *result_len, length / (*result_len)); - #endif - --- -1.8.3.1 - diff --git a/SOURCES/094-attrd_updater.patch b/SOURCES/094-attrd_updater.patch deleted file mode 100644 index 5cd540d..0000000 --- a/SOURCES/094-attrd_updater.patch +++ /dev/null @@ -1,717 +0,0 @@ -From 3d0b886202c155902470a0552d73343dbc0f0178 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 27 Sep 2017 12:05:50 -0500 -Subject: [PATCH 1/6] Log: attrd: "peer peer loss" -> "peer loss" - ---- - attrd/commands.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/attrd/commands.c b/attrd/commands.c -index dffbea3..27d0b73 100644 ---- a/attrd/commands.c -+++ b/attrd/commands.c -@@ -919,7 +919,7 @@ attrd_peer_change_cb(enum crm_status_type kind, crm_node_t *peer, const void *da - } - } else { - /* Remove all attribute values associated with lost nodes */ -- attrd_peer_remove(peer->uname, FALSE, "peer loss"); -+ attrd_peer_remove(peer->uname, FALSE, "loss"); - if (peer_writer && safe_str_eq(peer->uname, peer_writer)) { - free(peer_writer); - peer_writer = NULL; --- -1.8.3.1 - - -From 91105a32e24b5addaf281595c35892bd0ceb0e44 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 27 Sep 2017 12:11:49 -0500 -Subject: [PATCH 2/6] Refactor: pengine,libpe_status: prefix resource discovery - values - -now that they're publicly exposed ---- - include/crm/pengine/status.h | 9 ++++----- - lib/pengine/container.c | 6 +++--- - pengine/allocate.c | 2 +- - pengine/clone.c | 2 +- - pengine/native.c | 8 ++++---- - pengine/pengine.h | 2 +- - pengine/utils.c | 6 +++--- - 7 files changed, 17 insertions(+), 18 deletions(-) - -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index 16724a7..9b4e944 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -402,11 +402,10 @@ enum pe_link_state { - pe_link_dup, - }; - -- --enum rsc_discover_e { -- discover_always = 0, -- discover_never, -- discover_exclusive, -+enum pe_discover_e { -+ pe_discover_always = 0, -+ pe_discover_never, -+ pe_discover_exclusive, - }; - - /* *INDENT-OFF* */ -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 15234e3..ccbbcb6 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -499,7 +499,7 @@ disallow_node(resource_t *rsc, const char *uname) - - if (match) { - ((pe_node_t *) match)->weight = -INFINITY; -- ((pe_node_t *) match)->rsc_discover_mode = discover_never; -+ ((pe_node_t *) match)->rsc_discover_mode = pe_discover_never; - } - if (rsc->children) { - GListPtr child; -@@ -573,7 +573,7 @@ create_remote_resource( - } else { - node->weight = -INFINITY; - } -- node->rsc_discover_mode = discover_never; -+ node->rsc_discover_mode = pe_discover_never; - - /* unpack_remote_nodes() ensures that each remote node and guest node - * has a pe_node_t entry. Ideally, it would do the same for bundle nodes. -@@ -598,7 +598,7 @@ create_remote_resource( - - tuple->node = node_copy(node); - tuple->node->weight = 500; -- tuple->node->rsc_discover_mode = discover_exclusive; -+ tuple->node->rsc_discover_mode = pe_discover_exclusive; - - /* Ensure the node shows up as allowed and with the correct discovery set */ - g_hash_table_insert(tuple->child->allowed_nodes, (gpointer) tuple->node->details->id, node_copy(tuple->node)); -diff --git a/pengine/allocate.c b/pengine/allocate.c -index eef9a44..2a80f32 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -956,7 +956,7 @@ rsc_discover_filter(resource_t *rsc, node_t *node) - } - - match = g_hash_table_lookup(rsc->allowed_nodes, node->details->id); -- if (match && match->rsc_discover_mode != discover_exclusive) { -+ if (match && match->rsc_discover_mode != pe_discover_exclusive) { - match->weight = -INFINITY; - } - } -diff --git a/pengine/clone.c b/pengine/clone.c -index 41cb5cb..b10f0f3 100644 ---- a/pengine/clone.c -+++ b/pengine/clone.c -@@ -1359,7 +1359,7 @@ clone_create_probe(resource_t * rsc, node_t * node, action_t * complete, - - if (rsc->exclusive_discover) { - node_t *allowed = g_hash_table_lookup(rsc->allowed_nodes, node->details->id); -- if (allowed && allowed->rsc_discover_mode != discover_exclusive) { -+ if (allowed && allowed->rsc_discover_mode != pe_discover_exclusive) { - /* exclusive discover is enabled and this node is not marked - * as a node this resource should be discovered on - * -diff --git a/pengine/native.c b/pengine/native.c -index 3f52452..08f4c8a 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -2105,7 +2105,7 @@ native_rsc_location(resource_t * rsc, rsc_to_node_t * constraint) - } - - if (other_node->rsc_discover_mode < constraint->discover_mode) { -- if (constraint->discover_mode == discover_exclusive) { -+ if (constraint->discover_mode == pe_discover_exclusive) { - rsc->exclusive_discover = TRUE; - } - /* exclusive > never > always... always is default */ -@@ -2860,7 +2860,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - /* exclusive discover is enabled and this node is not in the allowed list. */ - pe_rsc_trace(rsc, "Skipping probe for %s on node %s, A", rsc->id, node->details->id); - return FALSE; -- } else if (allowed->rsc_discover_mode != discover_exclusive) { -+ } else if (allowed->rsc_discover_mode != pe_discover_exclusive) { - /* exclusive discover is enabled and this node is not marked - * as a node this resource should be discovered on */ - pe_rsc_trace(rsc, "Skipping probe for %s on node %s, B", rsc->id, node->details->id); -@@ -2868,7 +2868,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - } - } - -- if(allowed == NULL && node->rsc_discover_mode == discover_never) { -+ if(allowed == NULL && node->rsc_discover_mode == pe_discover_never) { - /* If this node was allowed to host this resource it would - * have been explicitly added to the 'allowed_nodes' list. - * However it wasn't and the node has discovery disabled, so -@@ -2878,7 +2878,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - return FALSE; - } - -- if (allowed && allowed->rsc_discover_mode == discover_never) { -+ if (allowed && allowed->rsc_discover_mode == pe_discover_never) { - /* this resource is marked as not needing to be discovered on this node */ - pe_rsc_trace(rsc, "Skipping probe for %s on node %s, discovery mode", rsc->id, node->details->id); - return FALSE; -diff --git a/pengine/pengine.h b/pengine/pengine.h -index 2c13258..c88f5cf 100644 ---- a/pengine/pengine.h -+++ b/pengine/pengine.h -@@ -80,7 +80,7 @@ struct rsc_to_node_s { - resource_t *rsc_lh; - - enum rsc_role_e role_filter; -- enum rsc_discover_e discover_mode; -+ enum pe_discover_e discover_mode; - GListPtr node_list_rh; /* node_t* */ - }; - -diff --git a/pengine/utils.c b/pengine/utils.c -index 0cc6381..cae42a8 100644 ---- a/pengine/utils.c -+++ b/pengine/utils.c -@@ -83,11 +83,11 @@ rsc2node_new(const char *id, resource_t * rsc, - - - if (discover_mode == NULL || safe_str_eq(discover_mode, "always")) { -- new_con->discover_mode = discover_always; -+ new_con->discover_mode = pe_discover_always; - } else if (safe_str_eq(discover_mode, "never")) { -- new_con->discover_mode = discover_never; -+ new_con->discover_mode = pe_discover_never; - } else if (safe_str_eq(discover_mode, "exclusive")) { -- new_con->discover_mode = discover_exclusive; -+ new_con->discover_mode = pe_discover_exclusive; - rsc->exclusive_discover = TRUE; - } else { - pe_err("Invalid %s value %s in location constraint", XML_LOCATION_ATTR_DISCOVERY, discover_mode); --- -1.8.3.1 - - -From 964b3fcfa90e1e1772476ee428c68f13057f7964 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 28 Sep 2017 17:47:16 -0500 -Subject: [PATCH 3/6] Refactor: pengine,libpe_status: prefix node attribute - functions - -since they're publicly exposed ---- - include/crm/pengine/internal.h | 4 ++-- - lib/pengine/common.c | 5 ++--- - lib/pengine/unpack.c | 22 +++++++++++----------- - lib/pengine/utils.c | 4 ++-- - pengine/allocate.c | 2 +- - pengine/constraints.c | 2 +- - pengine/master.c | 6 +++--- - pengine/native.c | 16 ++++++++-------- - tools/crm_mon.c | 2 +- - 9 files changed, 31 insertions(+), 32 deletions(-) - -diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h -index d91f54a..70dd7c7 100644 ---- a/include/crm/pengine/internal.h -+++ b/include/crm/pengine/internal.h -@@ -298,7 +298,7 @@ bool remote_id_conflict(const char *remote_name, pe_working_set_t *data); - void common_print(resource_t * rsc, const char *pre_text, const char *name, node_t *node, long options, void *print_data); - resource_t *find_container_child(const char *stem, resource_t * rsc, node_t *node); - bool fix_remote_addr(resource_t * rsc); --const char *node_attribute_calculated(pe_node_t *node, const char *name, resource_t *rsc); --const char *node_attribute_raw(pe_node_t *node, const char *name); -+const char *pe_node_attribute_calculated(pe_node_t *node, const char *name, resource_t *rsc); -+const char *pe_node_attribute_raw(pe_node_t *node, const char *name); - - #endif -diff --git a/lib/pengine/common.c b/lib/pengine/common.c -index 0e21aaa..9dd2472 100644 ---- a/lib/pengine/common.c -+++ b/lib/pengine/common.c -@@ -433,7 +433,7 @@ add_hash_param(GHashTable * hash, const char *name, const char *value) - } - - const char * --node_attribute_calculated(pe_node_t *node, const char *name, resource_t *rsc) -+pe_node_attribute_calculated(pe_node_t *node, const char *name, resource_t *rsc) - { - const char *source; - -@@ -471,11 +471,10 @@ node_attribute_calculated(pe_node_t *node, const char *name, resource_t *rsc) - } - - const char * --node_attribute_raw(pe_node_t *node, const char *name) -+pe_node_attribute_raw(pe_node_t *node, const char *name) - { - if(node == NULL) { - return NULL; - } - return g_hash_table_lookup(node->details->attrs, name); - } -- -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index a41f35e..48f9368 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -1008,7 +1008,7 @@ unpack_handle_remote_attrs(node_t *this_node, xmlNode *state, pe_working_set_t * - attrs = find_xml_node(state, XML_TAG_TRANSIENT_NODEATTRS, FALSE); - add_node_attrs(attrs, this_node, TRUE, data_set); - -- shutdown = node_attribute_raw(this_node, XML_CIB_ATTR_SHUTDOWN); -+ shutdown = pe_node_attribute_raw(this_node, XML_CIB_ATTR_SHUTDOWN); - if (shutdown != NULL && safe_str_neq("0", shutdown)) { - crm_info("Node %s is shutting down", this_node->details->uname); - this_node->details->shutdown = TRUE; -@@ -1017,18 +1017,18 @@ unpack_handle_remote_attrs(node_t *this_node, xmlNode *state, pe_working_set_t * - } - } - -- if (crm_is_true(node_attribute_raw(this_node, "standby"))) { -+ if (crm_is_true(pe_node_attribute_raw(this_node, "standby"))) { - crm_info("Node %s is in standby-mode", this_node->details->uname); - this_node->details->standby = TRUE; - } - -- if (crm_is_true(node_attribute_raw(this_node, "maintenance")) || -+ if (crm_is_true(pe_node_attribute_raw(this_node, "maintenance")) || - (rsc && !is_set(rsc->flags, pe_rsc_managed))) { - crm_info("Node %s is in maintenance-mode", this_node->details->uname); - this_node->details->maintenance = TRUE; - } - -- resource_discovery_enabled = node_attribute_raw(this_node, XML_NODE_ATTR_RSC_DISCOVERY); -+ resource_discovery_enabled = pe_node_attribute_raw(this_node, XML_NODE_ATTR_RSC_DISCOVERY); - if (resource_discovery_enabled && !crm_is_true(resource_discovery_enabled)) { - if (is_baremetal_remote_node(this_node) && is_not_set(data_set->flags, pe_flag_stonith_enabled)) { - crm_warn("ignoring %s attribute on baremetal remote node %s, disabling resource discovery requires stonith to be enabled.", -@@ -1184,17 +1184,17 @@ unpack_status(xmlNode * status, pe_working_set_t * data_set) - attrs = find_xml_node(state, XML_TAG_TRANSIENT_NODEATTRS, FALSE); - add_node_attrs(attrs, this_node, TRUE, data_set); - -- if (crm_is_true(node_attribute_raw(this_node, "standby"))) { -+ if (crm_is_true(pe_node_attribute_raw(this_node, "standby"))) { - crm_info("Node %s is in standby-mode", this_node->details->uname); - this_node->details->standby = TRUE; - } - -- if (crm_is_true(node_attribute_raw(this_node, "maintenance"))) { -+ if (crm_is_true(pe_node_attribute_raw(this_node, "maintenance"))) { - crm_info("Node %s is in maintenance-mode", this_node->details->uname); - this_node->details->maintenance = TRUE; - } - -- resource_discovery_enabled = node_attribute_raw(this_node, XML_NODE_ATTR_RSC_DISCOVERY); -+ resource_discovery_enabled = pe_node_attribute_raw(this_node, XML_NODE_ATTR_RSC_DISCOVERY); - if (resource_discovery_enabled && !crm_is_true(resource_discovery_enabled)) { - crm_warn("ignoring %s attribute on node %s, disabling resource discovery is not allowed on cluster nodes", - XML_NODE_ATTR_RSC_DISCOVERY, this_node->details->uname); -@@ -1280,7 +1280,7 @@ determine_online_status_fencing(pe_working_set_t * data_set, xmlNode * node_stat - const char *is_peer = crm_element_value(node_state, XML_NODE_IS_PEER); - const char *in_cluster = crm_element_value(node_state, XML_NODE_IN_CLUSTER); - const char *exp_state = crm_element_value(node_state, XML_NODE_EXPECTED); -- const char *terminate = node_attribute_raw(this_node, "terminate"); -+ const char *terminate = pe_node_attribute_raw(this_node, "terminate"); - - /* - - XML_NODE_IN_CLUSTER ::= true|false -@@ -1454,7 +1454,7 @@ determine_online_status(xmlNode * node_state, node_t * this_node, pe_working_set - - this_node->details->shutdown = FALSE; - this_node->details->expected_up = FALSE; -- shutdown = node_attribute_raw(this_node, XML_CIB_ATTR_SHUTDOWN); -+ shutdown = pe_node_attribute_raw(this_node, XML_CIB_ATTR_SHUTDOWN); - - if (shutdown != NULL && safe_str_neq("0", shutdown)) { - this_node->details->shutdown = TRUE; -@@ -3286,8 +3286,8 @@ add_node_attrs(xmlNode * xml_obj, node_t * node, gboolean overwrite, pe_working_ - unpack_instance_attributes(data_set->input, xml_obj, XML_TAG_ATTR_SETS, NULL, - node->details->attrs, NULL, overwrite, data_set->now); - -- if (node_attribute_raw(node, "#site-name") == NULL) { -- const char *site_name = node_attribute_raw(node, "site-name"); -+ if (pe_node_attribute_raw(node, "#site-name") == NULL) { -+ const char *site_name = pe_node_attribute_raw(node, "site-name"); - - if (site_name) { - /* Prefix '#' to the key */ -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index e2a845d..b58f05a 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -1996,8 +1996,8 @@ fencing_action_digest_cmp(resource_t * rsc, node_t * node, pe_working_set_t * da - char *key = generate_op_key(rsc->id, STONITH_DIGEST_TASK, 0); - op_digest_cache_t *data = rsc_action_digest(rsc, STONITH_DIGEST_TASK, key, node, NULL, data_set); - -- const char *digest_all = node_attribute_raw(node, CRM_ATTR_DIGESTS_ALL); -- const char *digest_secure = node_attribute_raw(node, CRM_ATTR_DIGESTS_SECURE); -+ const char *digest_all = pe_node_attribute_raw(node, CRM_ATTR_DIGESTS_ALL); -+ const char *digest_secure = pe_node_attribute_raw(node, CRM_ATTR_DIGESTS_SECURE); - - /* No 'reloads' for fencing device changes - * -diff --git a/pengine/allocate.c b/pengine/allocate.c -index 2a80f32..62b141a 100644 ---- a/pengine/allocate.c -+++ b/pengine/allocate.c -@@ -899,7 +899,7 @@ probe_resources(pe_working_set_t * data_set) - - for (GListPtr gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) { - node_t *node = (node_t *) gIter->data; -- const char *probed = node_attribute_raw(node, CRM_OP_PROBED); -+ const char *probed = pe_node_attribute_raw(node, CRM_OP_PROBED); - - if (is_container_remote_node(node)) { - /* Guest node probes and their ordering requirements are now functional */ -diff --git a/pengine/constraints.c b/pengine/constraints.c -index 9ee83af..aa204fe 100644 ---- a/pengine/constraints.c -+++ b/pengine/constraints.c -@@ -968,7 +968,7 @@ get_node_score(const char *rule, const char *score, gboolean raw, node_t * node, - score_f = char2score(score); - - } else { -- const char *attr_score = node_attribute_calculated(node, score, rsc); -+ const char *attr_score = pe_node_attribute_calculated(node, score, rsc); - - if (attr_score == NULL) { - crm_debug("Rule %s: node %s did not have a value for %s", -diff --git a/pengine/master.c b/pengine/master.c -index 66a531f..ddb92bc 100644 ---- a/pengine/master.c -+++ b/pengine/master.c -@@ -511,7 +457,7 @@ master_score(resource_t * rsc, node_t * node, int not_set_value) - attr_name = calloc(1, len); - sprintf(attr_name, "master-%s", name); - -- attr_value = node_attribute_calculated(node, attr_name, rsc); -+ attr_value = pe_node_attribute_calculated(node, attr_name, rsc); - if (attr_value != NULL) { - score = char2score(attr_value); - } -@@ -984,10 +984,10 @@ node_hash_update_one(GHashTable * hash, node_t * other, const char *attr, int sc - attr = "#" XML_ATTR_UNAME; - } - -- value = node_attribute_raw(other, attr); -+ value = pe_node_attribute_raw(other, attr); - g_hash_table_iter_init(&iter, hash); - while (g_hash_table_iter_next(&iter, NULL, (void **)&node)) { -- const char *tmp = node_attribute_raw(node, attr); -+ const char *tmp = pe_node_attribute_raw(node, attr); - - if (safe_str_eq(value, tmp)) { - crm_trace("%s: %d + %d", node->details->uname, node->weight, other->weight); -diff --git a/pengine/native.c b/pengine/native.c -index 08f4c8a..c87127f 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -203,7 +203,7 @@ node_list_attr_score(GHashTable * list, const char *attr, const char *value) - weight = -INFINITY; - } - if (weight > best_score || best_node == NULL) { -- const char *tmp = node_attribute_raw(node, attr); -+ const char *tmp = pe_node_attribute_raw(node, attr); - - if (safe_str_eq(value, tmp)) { - best_score = weight; -@@ -241,7 +241,7 @@ node_hash_update(GHashTable * list1, GHashTable * list2, const char *attr, float - CRM_LOG_ASSERT(node != NULL); - if(node == NULL) { continue; }; - -- score = node_list_attr_score(list2, attr, node_attribute_raw(node, attr)); -+ score = node_list_attr_score(list2, attr, pe_node_attribute_raw(node, attr)); - new_score = merge_weights(factor * score, node->weight); - - if (factor < 0 && score < 0) { -@@ -1640,8 +1640,8 @@ influence_priority(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * - return; - } - -- lh_value = node_attribute_raw(rsc_lh->allocated_to, attribute); -- rh_value = node_attribute_raw(rsc_rh->allocated_to, attribute); -+ lh_value = pe_node_attribute_raw(rsc_lh->allocated_to, attribute); -+ rh_value = pe_node_attribute_raw(rsc_rh->allocated_to, attribute); - - if (!safe_str_eq(lh_value, rh_value)) { - if(constraint->score == INFINITY && constraint->role_lh == RSC_ROLE_MASTER) { -@@ -1679,7 +1679,7 @@ colocation_match(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * co - } - - if (rsc_rh->allocated_to) { -- value = node_attribute_raw(rsc_rh->allocated_to, attribute); -+ value = pe_node_attribute_raw(rsc_rh->allocated_to, attribute); - do_check = TRUE; - - } else if (constraint->score < 0) { -@@ -1693,7 +1693,7 @@ colocation_match(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation_t * co - - g_hash_table_iter_init(&iter, work); - while (g_hash_table_iter_next(&iter, NULL, (void **)&node)) { -- tmp = node_attribute_raw(node, attribute); -+ tmp = pe_node_attribute_raw(node, attribute); - if (do_check && safe_str_eq(tmp, value)) { - if (constraint->score < INFINITY) { - pe_rsc_trace(rsc_lh, "%s: %s.%s += %d", constraint->id, rsc_lh->id, -@@ -2503,7 +2503,7 @@ 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 = node_attribute_raw(current, CRM_ATTR_UNFENCED); -+ 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)) { -@@ -2526,7 +2526,7 @@ 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 = node_attribute_raw(next, CRM_ATTR_UNFENCED); -+ const char *unfenced = pe_node_attribute_raw(next, CRM_ATTR_UNFENCED); - - order_actions(unfence, start, pe_order_implies_then); - -diff --git a/tools/crm_mon.c b/tools/crm_mon.c -index cad468e..6a29115 100644 ---- a/tools/crm_mon.c -+++ b/tools/crm_mon.c -@@ -1726,7 +1726,7 @@ print_node_attribute(gpointer name, gpointer user_data) - const char *value = NULL; - struct mon_attr_data *data = (struct mon_attr_data *) user_data; - -- value = node_attribute_raw(data->node, name); -+ value = pe_node_attribute_raw(data->node, name); - - /* Print attribute name and value */ - switch (output_format) { --- -1.8.3.1 - - -From 1309e0ae0ab7bb7491c8c0e2149762b90bf45857 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 28 Sep 2017 17:52:32 -0500 -Subject: [PATCH 4/6] Low: pengine: don't assert for nodes without unames - -It's possible data_set->nodes has a node with only an ID. - -This also has minor refactoring to avoid unnecessary memory allocation. ---- - pengine/notif.c | 27 +++++++++++++++------------ - 1 file changed, 15 insertions(+), 12 deletions(-) - -diff --git a/pengine/notif.c b/pengine/notif.c -index 76c5a4a..39d8c72 100644 ---- a/pengine/notif.c -+++ b/pengine/notif.c -@@ -103,7 +103,9 @@ expand_node_list(GListPtr list, char **uname, char **metal) - int existing_len = 0; - node_t *node = (node_t *) gIter->data; - -- CRM_ASSERT(node->details->uname); -+ if (node->details->uname == NULL) { -+ continue; -+ } - len = 2 + strlen(node->details->uname); - - if(node_list) { -@@ -125,7 +127,9 @@ expand_node_list(GListPtr list, char **uname, char **metal) - node = node->details->remote_rsc->container->running_on->data; - } - -- CRM_ASSERT(node->details->uname); -+ if (node->details->uname == NULL) { -+ continue; -+ } - len = 2 + strlen(node->details->uname); - metal_list = realloc_safe(metal_list, len + existing_len); - sprintf(metal_list + existing_len, "%s%s", existing_len == 0 ? "":" ", node->details->uname); -@@ -532,6 +536,7 @@ expand_notification_data(resource_t *rsc, notify_data_t * n_data, pe_working_set - char *rsc_list = NULL; - char *node_list = NULL; - char *metal_list = NULL; -+ const char *source = NULL; - GListPtr nodes = NULL; - - if (n_data->stop) { -@@ -609,17 +614,15 @@ expand_notification_data(resource_t *rsc, notify_data_t * n_data, pe_working_set - g_hash_table_insert(n_data->keys, strdup("notify_available_uname"), node_list); - g_list_free(nodes); - -- expand_node_list(data_set->nodes, &node_list, &metal_list); -- g_hash_table_insert(n_data->keys, strdup("notify_all_uname"), node_list); -- -- { -- const char *source = g_hash_table_lookup(rsc->meta, XML_RSC_ATTR_TARGET); -- if(safe_str_eq("host", source)) { -- g_hash_table_insert(n_data->keys, strdup("notify_all_hosts"), metal_list); -- } else { -- free(metal_list); -- } -+ source = g_hash_table_lookup(rsc->meta, XML_RSC_ATTR_TARGET); -+ if (safe_str_eq("host", source)) { -+ expand_node_list(data_set->nodes, &node_list, &metal_list); -+ g_hash_table_insert(n_data->keys, strdup("notify_all_hosts"), -+ metal_list); -+ } else { -+ expand_node_list(data_set->nodes, &node_list, NULL); - } -+ g_hash_table_insert(n_data->keys, strdup("notify_all_uname"), node_list); - - if (required && n_data->pre) { - update_action_flags(n_data->pre, pe_action_optional | pe_action_clear, __FUNCTION__, __LINE__); --- -1.8.3.1 - - -From 308387753ce8dd045a9c77fefc1ab2b36255c9bb Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 28 Sep 2017 17:54:40 -0500 -Subject: [PATCH 5/6] Low: pengine: don't move up to resource's parent if not - start action - ---- - pengine/graph.c | 9 ++++----- - 1 file changed, 4 insertions(+), 5 deletions(-) - -diff --git a/pengine/graph.c b/pengine/graph.c -index beaa077..8ee6aa8 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -441,17 +441,16 @@ update_colo_start_chain(action_t *action) - - if (is_not_set(action->flags, pe_action_runnable) && safe_str_eq(action->task, RSC_START)) { - rsc = uber_parent(action->rsc); -+ if (rsc->parent) { -+ // This is a bundle (uber_parent() stops _before_ the bundle) -+ rsc = rsc->parent; -+ } - } - - if (rsc == NULL || rsc->rsc_cons_lhs == NULL) { - return; - } - -- if(rsc->parent) { -- /* uber_parent() stops _before_ the bundle */ -- rsc = rsc->parent; -- } -- - /* if rsc has children, all the children need to have start set to - * unrunnable before we follow the colo chain for the parent. */ - for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) { --- -1.8.3.1 - - -From 39d1bc68a63122cc42b2dc87bed60653171dcacc Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Thu, 28 Sep 2017 18:03:04 -0500 -Subject: [PATCH 6/6] Low: tools: partially revert ccbdb2a2 to avoid - attrd_updater needing libcrmcluster - -Both approaches have drawbacks when used on remote nodes. - -If we keep the get_local_node_name() calls, attrd_udpater needs libcrmcluster, -which shouldn't be required on remote nodes. Also, on a corosync cluster for -example, the call on a remote node will spend 10+ seconds trying to connect to -corosync before finally using uname, which will be incorrect for remote nodes -whose name known to the cluster is not the same as uname. - -If we avoid get_local_node_name() (the approach here), there is not a clear way -to distinguish a query with a NULL node name meaning "let the remote proxy -callback add the name" from "query all nodes". However, this likely exists -already, and should be addressed separately. ---- - pacemaker.spec.in | 4 +--- - tools/Makefile.am | 2 +- - tools/attrd_updater.c | 7 ------- - 3 files changed, 2 insertions(+), 11 deletions(-) - -diff --git a/pacemaker.spec.in b/pacemaker.spec.in -index d0bc2c3..642af74 100644 ---- a/pacemaker.spec.in -+++ b/pacemaker.spec.in -@@ -601,7 +601,6 @@ exit 0 - %exclude %{_sbindir}/pacemaker_remoted - %{_libexecdir}/pacemaker/* - --%{_sbindir}/attrd_updater - %{_sbindir}/crm_attribute - %{_sbindir}/crm_master - %{_sbindir}/crm_node -@@ -620,7 +619,6 @@ exit 0 - %doc %{_mandir}/man7/ocf_pacemaker_o2cb.* - %doc %{_mandir}/man7/ocf_pacemaker_remote.* - %doc %{_mandir}/man8/crm_attribute.* --%doc %{_mandir}/man8/attrd_updater.* - %doc %{_mandir}/man8/crm_node.* - %doc %{_mandir}/man8/crm_master.* - %if %{with cman} -@@ -670,6 +668,7 @@ exit 0 - %config(noreplace) %{_sysconfdir}/init/crm_mon.conf - %endif - -+%{_sbindir}/attrd_updater - %{_sbindir}/cibadmin - %{_sbindir}/crm_diff - %{_sbindir}/crm_error -@@ -705,7 +704,6 @@ exit 0 - %exclude %{_mandir}/man7/ocf_pacemaker_o2cb.* - %exclude %{_mandir}/man7/ocf_pacemaker_remote.* - %doc %{_mandir}/man8/* --%exclude %{_mandir}/man8/attrd_updater.* - %exclude %{_mandir}/man8/crm_attribute.* - %exclude %{_mandir}/man8/crm_node.* - %exclude %{_mandir}/man8/crm_master.* -diff --git a/tools/Makefile.am b/tools/Makefile.am -index a601b8d..3548035 100644 ---- a/tools/Makefile.am -+++ b/tools/Makefile.am -@@ -121,7 +121,7 @@ iso8601_SOURCES = test.iso8601.c - iso8601_LDADD = $(COMMONLIBS) - - attrd_updater_SOURCES = attrd_updater.c --attrd_updater_LDADD = $(top_builddir)/lib/cluster/libcrmcluster.la $(COMMONLIBS) -+attrd_updater_LDADD = $(COMMONLIBS) - - crm_ticket_SOURCES = crm_ticket.c - crm_ticket_LDADD = $(top_builddir)/lib/pengine/libpe_rules.la \ -diff --git a/tools/attrd_updater.c b/tools/attrd_updater.c -index 5e8b837..1da166b 100644 ---- a/tools/attrd_updater.c -+++ b/tools/attrd_updater.c -@@ -32,7 +32,6 @@ - #include - - #include --#include - - /* *INDENT-OFF* */ - static struct crm_option long_options[] = { -@@ -201,9 +200,6 @@ main(int argc, char **argv) - } else { - - attr_node = attrd_get_target(attr_node); -- if (attr_node == NULL) { -- attr_node = get_local_node_name(); -- } - crm_exit(do_update(command, attr_node, attr_name, attr_value, - attr_section, attr_set, attr_dampen, attr_options)); - } -@@ -354,9 +350,6 @@ do_query(const char *attr_name, const char *attr_node, gboolean query_all) - attr_node = NULL; - } else { - attr_node = attrd_get_target(attr_node); -- if (attr_node == NULL) { -- attr_node = get_local_node_name(); -- } - } - - /* Build and send attrd request, and get XML reply */ --- -1.8.3.1 - diff --git a/SOURCES/095-attrd-client-leak.patch b/SOURCES/095-attrd-client-leak.patch deleted file mode 100644 index 42a5c52..0000000 --- a/SOURCES/095-attrd-client-leak.patch +++ /dev/null @@ -1,60 +0,0 @@ -From b41b23a7f3cd668512401a539fdf75f98d9a1d74 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Sat, 30 Sep 2017 14:51:43 -0500 -Subject: [PATCH] Low: libcrmcommon: avoid memory leak in attrd_get_target() - ---- - lib/common/utils.c | 24 +++++++++++++++++------- - 1 file changed, 17 insertions(+), 7 deletions(-) - -diff --git a/lib/common/utils.c b/lib/common/utils.c -index 290a661..4c02869 100644 ---- a/lib/common/utils.c -+++ b/lib/common/utils.c -@@ -2157,6 +2157,8 @@ attrd_clear_delegate(crm_ipc_t *ipc, const char *host, const char *resource, - } - #endif - -+#define LRM_TARGET_ENV "OCF_RESKEY_" CRM_META "_" XML_LRM_ATTR_TARGET -+ - const char * - attrd_get_target(const char *name) - { -@@ -2168,19 +2170,27 @@ attrd_get_target(const char *name) - return name; - - } else { -- const char *target = getenv(crm_meta_name(XML_RSC_ATTR_TARGET)); -- const char *host_pyhsical = getenv(crm_meta_name(PCMK_ENV_PHYSICAL_HOST)); -- const char *host_pcmk = getenv("OCF_RESKEY_" CRM_META "_" XML_LRM_ATTR_TARGET); -+ char *target_var = crm_meta_name(XML_RSC_ATTR_TARGET); -+ char *phys_var = crm_meta_name(PCMK_ENV_PHYSICAL_HOST); -+ const char *target = getenv(target_var); -+ const char *host_physical = getenv(phys_var); - - /* It is important we use the names by which the PE knows us */ -- if(safe_str_eq(target, "host") && host_pyhsical != NULL) { -- return host_pyhsical; -+ if (host_physical && safe_str_eq(target, "host")) { -+ name = host_physical; -+ -+ } else { -+ const char *host_pcmk = getenv(LRM_TARGET_ENV); - -- } else if(host_pcmk) { -- return host_pcmk; -+ if (host_pcmk) { -+ name = host_pcmk; -+ } - } -+ free(target_var); -+ free(phys_var); - } - - // TODO? Call get_local_node_name() if name == NULL -+ // (currently would require linkage against libcrmcluster) - return name; - } --- -1.8.3.1 - diff --git a/SOURCES/096-digest-leak.patch b/SOURCES/096-digest-leak.patch deleted file mode 100644 index 03fb8c6..0000000 --- a/SOURCES/096-digest-leak.patch +++ /dev/null @@ -1,33 +0,0 @@ -From a82c9726299044f4d9d0cfac6ed78a959db726c2 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 2 Oct 2017 15:51:31 -0500 -Subject: [PATCH] Low: libpe_status: avoid memory leak in unfencing digests - ---- - lib/pengine/utils.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index b58f05a..82b6809 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -2157,10 +2157,12 @@ pe_fence_op(node_t * node, const char *op, bool optional, const char *reason, pe - digests_secure+digests_secure_offset, max-digests_secure_offset, - "%s:%s:%s,", match->id, (const char*)g_hash_table_lookup(match->meta, XML_ATTR_TYPE), data->digest_secure_calc); - } -- add_hash_param(stonith_op->meta, strdup(XML_OP_ATTR_DIGESTS_ALL), -- digests_all); -- add_hash_param(stonith_op->meta, strdup(XML_OP_ATTR_DIGESTS_SECURE), -- digests_secure); -+ g_hash_table_insert(stonith_op->meta, -+ strdup(XML_OP_ATTR_DIGESTS_ALL), -+ digests_all); -+ g_hash_table_insert(stonith_op->meta, -+ strdup(XML_OP_ATTR_DIGESTS_SECURE), -+ digests_secure); - } - - } else { --- -1.8.3.1 - diff --git a/SOURCES/097-bundle-child-flags.patch b/SOURCES/097-bundle-child-flags.patch deleted file mode 100644 index df48307..0000000 --- a/SOURCES/097-bundle-child-flags.patch +++ /dev/null @@ -1,539 +0,0 @@ -From 4ee68a2cd2c9c8b0adf63f8fd267c1590820abe6 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 10 Oct 2017 22:55:16 +1100 -Subject: [PATCH 1/2] Fix: PE: Only pass requests for promote/demote flags onto - the bundle's child - -Otherwise the whole bundle gets stopped if the child is unrunnable. ---- - pengine/container.c | 26 +++++++++++++++++++------- - 1 file changed, 19 insertions(+), 7 deletions(-) - -diff --git a/pengine/container.c b/pengine/container.c -index a205c53..df5a238 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -495,18 +495,30 @@ container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc, rsc_colocatio - enum pe_action_flags - container_action_flags(action_t * action, node_t * node) - { -+ GListPtr containers = NULL; - enum pe_action_flags flags = 0; - container_variant_data_t *data = NULL; - - get_container_variant_data(data, action->rsc); - if(data->child) { -- flags = summary_action_flags(action, data->child->children, node); -- -- } else { -- GListPtr containers = get_container_list(action->rsc); -- flags = summary_action_flags(action, containers, node); -- g_list_free(containers); -- } -+ enum action_tasks task = get_complex_task(data->child, action->task, TRUE); -+ switch(task) { -+ case no_action: -+ case action_notify: -+ case action_notified: -+ case action_promote: -+ case action_promoted: -+ case action_demote: -+ case action_demoted: -+ return summary_action_flags(action, data->child->children, node); -+ default: -+ break; -+ } -+ } -+ -+ containers = get_container_list(action->rsc); -+ flags = summary_action_flags(action, containers, node); -+ g_list_free(containers); - return flags; - } - --- -1.8.3.1 - - -From c0180b4e8b6490798ea0388a1dab95836aac5b29 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 10 Oct 2017 23:01:55 +1100 -Subject: [PATCH 2/2] Test: PE: Only pass requests for promote/demote flags - onto the bundle's child - ---- - pengine/test10/bundle-nested-colocation.dot | 8 ++++ - pengine/test10/bundle-nested-colocation.exp | 48 +++++++++++++++++++--- - pengine/test10/bundle-nested-colocation.summary | 10 +++-- - pengine/test10/bundle-order-partial-start-2.dot | 5 +++ - pengine/test10/bundle-order-partial-start-2.exp | 34 +++++++++++++-- - .../test10/bundle-order-partial-start-2.summary | 2 + - pengine/test10/bundle-order-partial-stop.dot | 15 ------- - pengine/test10/bundle-order-stop.dot | 15 ------- - 8 files changed, 94 insertions(+), 43 deletions(-) - -diff --git a/pengine/test10/bundle-nested-colocation.dot b/pengine/test10/bundle-nested-colocation.dot -index baa80e2..21c9700 100644 ---- a/pengine/test10/bundle-nested-colocation.dot -+++ b/pengine/test10/bundle-nested-colocation.dot -@@ -84,6 +84,7 @@ digraph "g" { - "rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-docker-0_stop_0 overcloud-rabbit-0" -> "all_stopped" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 overcloud-rabbit-0" -> "rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" [ style = bold] -+"rabbitmq-bundle-docker-0_stop_0 overcloud-rabbit-0" -> "rabbitmq-bundle_stopped_0" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 overcloud-rabbit-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-docker-1_monitor_60000 overcloud-rabbit-1" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle-1_start_0 overcloud-controller-1" [ style = bold] -@@ -93,6 +94,7 @@ digraph "g" { - "rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-docker-1_stop_0 overcloud-rabbit-1" -> "all_stopped" [ style = bold] - "rabbitmq-bundle-docker-1_stop_0 overcloud-rabbit-1" -> "rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" [ style = bold] -+"rabbitmq-bundle-docker-1_stop_0 overcloud-rabbit-1" -> "rabbitmq-bundle_stopped_0" [ style = bold] - "rabbitmq-bundle-docker-1_stop_0 overcloud-rabbit-1" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-docker-2_monitor_60000 overcloud-rabbit-2" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle-2_start_0 overcloud-controller-2" [ style = bold] -@@ -102,6 +104,7 @@ digraph "g" { - "rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-docker-2_stop_0 overcloud-rabbit-2" -> "all_stopped" [ style = bold] - "rabbitmq-bundle-docker-2_stop_0 overcloud-rabbit-2" -> "rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" [ style = bold] -+"rabbitmq-bundle-docker-2_stop_0 overcloud-rabbit-2" -> "rabbitmq-bundle_stopped_0" [ style = bold] - "rabbitmq-bundle-docker-2_stop_0 overcloud-rabbit-2" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] -@@ -109,6 +112,11 @@ digraph "g" { - "rabbitmq-bundle_start_0" -> "rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" [ style = bold] - "rabbitmq-bundle_start_0" -> "rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" [ style = bold] - "rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-docker-0_stop_0 overcloud-rabbit-0" [ style = bold] -+"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-docker-1_stop_0 overcloud-rabbit-1" [ style = bold] -+"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-docker-2_stop_0 overcloud-rabbit-2" [ style = bold] -+"rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -+"rabbitmq-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq:0_monitor_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] - "rabbitmq:0_monitor_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bundle-nested-colocation.exp b/pengine/test10/bundle-nested-colocation.exp -index 266d4c0..1f2396e 100644 ---- a/pengine/test10/bundle-nested-colocation.exp -+++ b/pengine/test10/bundle-nested-colocation.exp -@@ -305,7 +305,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -441,7 +445,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -577,7 +585,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -708,6 +720,32 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -727,7 +765,7 @@ - - - -- -+ - - - -@@ -735,7 +773,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-nested-colocation.summary b/pengine/test10/bundle-nested-colocation.summary -index 2cc1c7c..1986763 100644 ---- a/pengine/test10/bundle-nested-colocation.summary -+++ b/pengine/test10/bundle-nested-colocation.summary -@@ -29,39 +29,41 @@ Transition Summary: - - Executing cluster transition: - * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 -- * Resource action: rabbitmq-bundle-docker-0 stop on overcloud-rabbit-0 - * Resource action: rabbitmq-bundle-0 monitor on overcloud-galera-2 - * Resource action: rabbitmq-bundle-0 monitor on overcloud-galera-1 - * Resource action: rabbitmq-bundle-0 monitor on overcloud-galera-0 - * Resource action: rabbitmq-bundle-0 monitor on overcloud-controller-2 - * Resource action: rabbitmq-bundle-0 monitor on overcloud-controller-1 - * Resource action: rabbitmq-bundle-0 monitor on overcloud-controller-0 -- * Resource action: rabbitmq-bundle-docker-1 stop on overcloud-rabbit-1 - * Resource action: rabbitmq-bundle-1 monitor on overcloud-galera-2 - * Resource action: rabbitmq-bundle-1 monitor on overcloud-galera-1 - * Resource action: rabbitmq-bundle-1 monitor on overcloud-galera-0 - * Resource action: rabbitmq-bundle-1 monitor on overcloud-controller-2 - * Resource action: rabbitmq-bundle-1 monitor on overcloud-controller-1 - * Resource action: rabbitmq-bundle-1 monitor on overcloud-controller-0 -- * Resource action: rabbitmq-bundle-docker-2 stop on overcloud-rabbit-2 - * Resource action: rabbitmq-bundle-2 monitor on overcloud-galera-2 - * Resource action: rabbitmq-bundle-2 monitor on overcloud-galera-1 - * Resource action: rabbitmq-bundle-2 monitor on overcloud-galera-0 - * Resource action: rabbitmq-bundle-2 monitor on overcloud-controller-2 - * Resource action: rabbitmq-bundle-2 monitor on overcloud-controller-1 - * Resource action: rabbitmq-bundle-2 monitor on overcloud-controller-0 -+ * Pseudo action: rabbitmq-bundle_stop_0 - * Pseudo action: rabbitmq-bundle_start_0 -- * Pseudo action: all_stopped - * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0 -+ * Resource action: rabbitmq-bundle-docker-0 stop on overcloud-rabbit-0 - * Resource action: rabbitmq-bundle-docker-0 start on overcloud-rabbit-0 - * Resource action: rabbitmq-bundle-docker-0 monitor=60000 on overcloud-rabbit-0 - * Resource action: rabbitmq-bundle-0 start on overcloud-controller-0 -+ * Resource action: rabbitmq-bundle-docker-1 stop on overcloud-rabbit-1 - * Resource action: rabbitmq-bundle-docker-1 start on overcloud-rabbit-1 - * Resource action: rabbitmq-bundle-docker-1 monitor=60000 on overcloud-rabbit-1 - * Resource action: rabbitmq-bundle-1 start on overcloud-controller-1 -+ * Resource action: rabbitmq-bundle-docker-2 stop on overcloud-rabbit-2 - * Resource action: rabbitmq-bundle-docker-2 start on overcloud-rabbit-2 - * Resource action: rabbitmq-bundle-docker-2 monitor=60000 on overcloud-rabbit-2 - * Resource action: rabbitmq-bundle-2 start on overcloud-controller-2 -+ * Pseudo action: rabbitmq-bundle_stopped_0 -+ * Pseudo action: all_stopped - * Resource action: rabbitmq:0 monitor on rabbitmq-bundle-0 - * Resource action: rabbitmq:1 monitor on rabbitmq-bundle-1 - * Resource action: rabbitmq:2 monitor on rabbitmq-bundle-2 -diff --git a/pengine/test10/bundle-order-partial-start-2.dot b/pengine/test10/bundle-order-partial-start-2.dot -index d6608bb..08c768d 100644 ---- a/pengine/test10/bundle-order-partial-start-2.dot -+++ b/pengine/test10/bundle-order-partial-start-2.dot -@@ -19,6 +19,7 @@ digraph "g" { - "galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] - "galera-bundle-docker-0_stop_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] -+"galera-bundle-docker-0_stop_0 undercloud" -> "galera-bundle_stopped_0" [ style = bold] - "galera-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] - "galera-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] -@@ -29,6 +30,10 @@ digraph "g" { - "galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 undercloud" [ 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 undercloud" [ style = bold] -+"galera-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle_stopped_0" -> "galera-bundle_start_0" [ style = bold] -+"galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] - "galera:0_monitor_0 galera-bundle-0" -> "galera-bundle-master_start_0" [ style = bold] - "galera:0_monitor_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] - "galera:0_monitor_20000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bundle-order-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp -index d17819c..1be25f6 100644 ---- a/pengine/test10/bundle-order-partial-start-2.exp -+++ b/pengine/test10/bundle-order-partial-start-2.exp -@@ -254,6 +254,9 @@ - - - -+ -+ -+ - - - -@@ -525,6 +528,26 @@ - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -538,7 +561,7 @@ - - - -- -+ - - - -@@ -549,6 +572,9 @@ - - - -+ -+ -+ - - - -@@ -556,7 +582,7 @@ - - - -- -+ - - - -@@ -568,7 +594,7 @@ - - - -- -+ - - - -@@ -576,7 +602,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start-2.summary b/pengine/test10/bundle-order-partial-start-2.summary -index f9748d2..2e88bee 100644 ---- a/pengine/test10/bundle-order-partial-start-2.summary -+++ b/pengine/test10/bundle-order-partial-start-2.summary -@@ -36,6 +36,7 @@ Executing cluster transition: - * Resource action: haproxy-bundle-docker-0 monitor on undercloud - * Pseudo action: haproxy-bundle_start_0 - * Pseudo action: redis-bundle_promote_0 -+ * Pseudo action: galera-bundle_stop_0 - * Pseudo action: rabbitmq-bundle_start_0 - * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0 - * Pseudo action: rabbitmq-bundle-clone_start_0 -@@ -45,6 +46,7 @@ Executing cluster transition: - * Pseudo action: redis-bundle-master_promote_0 - * Resource action: haproxy-bundle-docker-0 start on undercloud - * Pseudo action: haproxy-bundle_running_0 -+ * Pseudo action: galera-bundle_stopped_0 - * Pseudo action: all_stopped - * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 - * Pseudo action: rabbitmq-bundle-clone_running_0 -diff --git a/pengine/test10/bundle-order-partial-stop.dot b/pengine/test10/bundle-order-partial-stop.dot -index 3fade95..5d0c039 100644 ---- a/pengine/test10/bundle-order-partial-stop.dot -+++ b/pengine/test10/bundle-order-partial-stop.dot -@@ -20,7 +20,6 @@ digraph "g" { - "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_running_0" -> "galera-bundle_running_0" [ style = dashed] - "galera-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] - "galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = dashed] - "galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-0" [ style = dashed] -@@ -34,17 +33,12 @@ digraph "g" { - "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_start_0" [ style = dashed] - "galera-bundle_demoted_0" -> "galera-bundle_stop_0" [ style = bold] - "galera-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] --"galera-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] --"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = dashed] --"galera-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] - "galera-bundle_stop_0" -> "galera-bundle-docker-0_stop_0 undercloud" [ 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" [ style=bold color="green" fontcolor="orange"] --"galera-bundle_stopped_0" -> "galera-bundle_start_0" [ style = dashed] - "galera-bundle_stopped_0" -> "redis-bundle_stop_0" [ style = bold] - "galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] - "galera_demote_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ style = bold] -@@ -118,7 +112,6 @@ digraph "g" { - "rabbitmq-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] - "rabbitmq-bundle-0_stop_0 undercloud" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] - "rabbitmq-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] --"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq-bundle_running_0" [ style = dashed] - "rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] - "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] - "rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -@@ -155,7 +148,6 @@ digraph "g" { - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "rabbitmq-bundle_stopped_0" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] --"rabbitmq-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] - "rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] - "rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] - "rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] -@@ -186,7 +178,6 @@ digraph "g" { - "redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] - "redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] - "redis-bundle-master_confirmed-post_notify_demoted_0" [ style=bold color="green" fontcolor="orange"] --"redis-bundle-master_confirmed-post_notify_running_0" -> "redis-bundle_running_0" [ style = dashed] - "redis-bundle-master_confirmed-post_notify_running_0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] - "redis-bundle-master_confirmed-post_notify_running_0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] - "redis-bundle-master_confirmed-post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] -@@ -239,19 +230,13 @@ digraph "g" { - "redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] - "redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] - "redis-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] --"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = dashed] - "redis-bundle_demoted_0" -> "redis-bundle_stop_0" [ style = bold] - "redis-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] --"redis-bundle_running_0" -> "galera-bundle_start_0" [ style = dashed] --"redis-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] --"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] --"redis-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] - "redis-bundle_stop_0" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] - "redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] - "redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] - "redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] - "redis-bundle_stopped_0" -> "haproxy-bundle_stop_0" [ style = bold] --"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = dashed] - "redis-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] - "redis_demote_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] - "redis_demote_0 redis-bundle-0" -> "redis-bundle-master_demoted_0" [ style = bold] -diff --git a/pengine/test10/bundle-order-stop.dot b/pengine/test10/bundle-order-stop.dot -index 3fade95..5d0c039 100644 ---- a/pengine/test10/bundle-order-stop.dot -+++ b/pengine/test10/bundle-order-stop.dot -@@ -20,7 +20,6 @@ digraph "g" { - "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_running_0" -> "galera-bundle_running_0" [ style = dashed] - "galera-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] - "galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = dashed] - "galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-0" [ style = dashed] -@@ -34,17 +33,12 @@ digraph "g" { - "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_start_0" [ style = dashed] - "galera-bundle_demoted_0" -> "galera-bundle_stop_0" [ style = bold] - "galera-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] --"galera-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] --"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = dashed] --"galera-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] - "galera-bundle_stop_0" -> "galera-bundle-docker-0_stop_0 undercloud" [ 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" [ style=bold color="green" fontcolor="orange"] --"galera-bundle_stopped_0" -> "galera-bundle_start_0" [ style = dashed] - "galera-bundle_stopped_0" -> "redis-bundle_stop_0" [ style = bold] - "galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] - "galera_demote_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ style = bold] -@@ -118,7 +112,6 @@ digraph "g" { - "rabbitmq-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] - "rabbitmq-bundle-0_stop_0 undercloud" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] - "rabbitmq-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] --"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq-bundle_running_0" [ style = dashed] - "rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] - "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] - "rabbitmq-bundle-clone_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] -@@ -155,7 +148,6 @@ digraph "g" { - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "rabbitmq-bundle_stopped_0" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] --"rabbitmq-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] - "rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] - "rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] - "rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] -@@ -186,7 +178,6 @@ digraph "g" { - "redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] - "redis-bundle-master_confirmed-post_notify_demoted_0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] - "redis-bundle-master_confirmed-post_notify_demoted_0" [ style=bold color="green" fontcolor="orange"] --"redis-bundle-master_confirmed-post_notify_running_0" -> "redis-bundle_running_0" [ style = dashed] - "redis-bundle-master_confirmed-post_notify_running_0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] - "redis-bundle-master_confirmed-post_notify_running_0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] - "redis-bundle-master_confirmed-post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] -@@ -239,19 +230,13 @@ digraph "g" { - "redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] - "redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] - "redis-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] --"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = dashed] - "redis-bundle_demoted_0" -> "redis-bundle_stop_0" [ style = bold] - "redis-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] --"redis-bundle_running_0" -> "galera-bundle_start_0" [ style = dashed] --"redis-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] --"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] --"redis-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] - "redis-bundle_stop_0" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] - "redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] - "redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] - "redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] - "redis-bundle_stopped_0" -> "haproxy-bundle_stop_0" [ style = bold] --"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = dashed] - "redis-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] - "redis_demote_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] - "redis_demote_0 redis-bundle-0" -> "redis-bundle-master_demoted_0" [ style = bold] --- -1.8.3.1 - diff --git a/SOURCES/098-cleanup.patch b/SOURCES/098-cleanup.patch deleted file mode 100644 index 06b91ec..0000000 --- a/SOURCES/098-cleanup.patch +++ /dev/null @@ -1,175 +0,0 @@ -From a6466923875cb752cb68ad412cfc8296191e62ac Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 11 Oct 2017 13:28:58 +1100 -Subject: [PATCH 1/2] Fix: tools: Clean up everywhere if we don't know anything - about the resource - ---- - tools/crm_resource_runtime.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c -index b1fe892..2c3949a 100644 ---- a/tools/crm_resource_runtime.c -+++ b/tools/crm_resource_runtime.c -@@ -617,6 +617,10 @@ cli_resource_delete(crm_ipc_t *crmd_channel, const char *host_uname, - GListPtr lpc = NULL; - GListPtr nodes = g_hash_table_get_values(rsc->known_on); - -+ if(nodes == NULL) { -+ nodes = node_list_dup(data_set->nodes, FALSE, FALSE); -+ } -+ - for (lpc = nodes; lpc != NULL; lpc = lpc->next) { - node = (node_t *) lpc->data; - --- -1.8.3.1 - - -From b0ca9a11581e3ec62429e41899f76fe3afc8b294 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 11 Oct 2017 22:28:58 +1100 -Subject: [PATCH 2/2] Fix: Tools: Allow crm_resource to operate on anonymous - clones in unknown states - -Since the clone_name value wont be set ---- - include/crm/pengine/status.h | 8 +++++--- - lib/pengine/native.c | 15 ++++++++++----- - lib/pengine/status.c | 8 +++++++- - tools/crm_resource.c | 10 +++++----- - 4 files changed, 27 insertions(+), 14 deletions(-) - -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index 4aacfe7..17787dd 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -49,9 +49,10 @@ enum pe_restart { - }; - - enum pe_find { -- pe_find_renamed = 0x001, -- pe_find_clone = 0x004, -- pe_find_current = 0x008, -+ pe_find_renamed = 0x001, -+ pe_find_anon = 0x002, -+ pe_find_clone = 0x004, -+ pe_find_current = 0x008, - pe_find_inactive = 0x010, - }; - -@@ -459,6 +460,7 @@ gboolean cluster_status(pe_working_set_t * data_set); - void set_working_set_defaults(pe_working_set_t * data_set); - void cleanup_calculations(pe_working_set_t * data_set); - resource_t *pe_find_resource(GListPtr rsc_list, const char *id_rh); -+resource_t *pe_find_resource_with_flags(GListPtr rsc_list, const char *id, enum pe_find flags); - node_t *pe_find_node(GListPtr node_list, const char *uname); - node_t *pe_find_node_id(GListPtr node_list, const char *id); - node_t *pe_find_node_any(GListPtr node_list, const char *id, const char *uname); -diff --git a/lib/pengine/native.c b/lib/pengine/native.c -index 81977aa..777dcf3 100644 ---- a/lib/pengine/native.c -+++ b/lib/pengine/native.c -@@ -180,14 +180,19 @@ native_find_rsc(resource_t * rsc, const char *id, node_t * on_node, int flags) - match = TRUE; - } - -- } else { -- if (strcmp(rsc->id, id) == 0) { -- match = TRUE; -+ } else if (strcmp(rsc->id, id) == 0) { -+ match = TRUE; -+ -+ } else if (is_set(flags, pe_find_renamed) -+ && rsc->clone_name && strcmp(rsc->clone_name, id) == 0) { -+ match = TRUE; - -- } else if (is_set(flags, pe_find_renamed) -- && rsc->clone_name && strcmp(rsc->clone_name, id) == 0) { -+ } else if (is_set(flags, pe_find_anon) && is_not_set(rsc->flags, pe_rsc_unique)) { -+ char *tmp = clone_strip(rsc->id); -+ if(strcmp(tmp, id) == 0) { - match = TRUE; - } -+ free(tmp); - } - - if (match && on_node) { -diff --git a/lib/pengine/status.c b/lib/pengine/status.c -index 09874a3..ec5a028 100644 ---- a/lib/pengine/status.c -+++ b/lib/pengine/status.c -@@ -248,13 +248,19 @@ set_working_set_defaults(pe_working_set_t * data_set) - resource_t * - pe_find_resource(GListPtr rsc_list, const char *id) - { -+ return pe_find_resource_with_flags(rsc_list, id, pe_find_renamed | pe_find_current); -+} -+ -+resource_t * -+pe_find_resource_with_flags(GListPtr rsc_list, const char *id, enum pe_find flags) -+{ - GListPtr rIter = NULL; - - for (rIter = rsc_list; id && rIter; rIter = rIter->next) { - resource_t *parent = rIter->data; - - resource_t *match = -- parent->fns->find_rsc(parent, id, NULL, pe_find_renamed | pe_find_current); -+ parent->fns->find_rsc(parent, id, NULL, flags); - if (match != NULL) { - return match; - } -diff --git a/tools/crm_resource.c b/tools/crm_resource.c -index 0eefa3b..56a1d09 100644 ---- a/tools/crm_resource.c -+++ b/tools/crm_resource.c -@@ -674,7 +674,7 @@ main(int argc, char **argv) - goto bail; - } - -- rsc = pe_find_resource(data_set.resources, rsc_id); -+ rsc = pe_find_resource_with_flags(data_set.resources, rsc_id, pe_find_renamed | pe_find_current | pe_find_anon); - - rc = -EINVAL; - if (rsc == NULL) { -@@ -692,7 +692,7 @@ main(int argc, char **argv) - - } else if (rsc_cmd == 'A' || rsc_cmd == 'a') { - GListPtr lpc = NULL; -- resource_t *rsc = pe_find_resource(data_set.resources, rsc_id); -+ resource_t *rsc = pe_find_resource_with_flags(data_set.resources, rsc_id, pe_find_renamed | pe_find_current | pe_find_anon); - xmlNode *cib_constraints = get_object_root(XML_CIB_TAG_CONSTRAINTS, data_set.input); - - if (rsc == NULL) { -@@ -804,7 +804,7 @@ main(int argc, char **argv) - rc = cli_resource_move(rsc_id, host_uname, cib_conn, &data_set); - - } else if (rsc_cmd == 'B' && host_uname) { -- resource_t *rsc = pe_find_resource(data_set.resources, rsc_id); -+ resource_t *rsc = pe_find_resource_with_flags(data_set.resources, rsc_id, pe_find_renamed | pe_find_current | pe_find_anon); - node_t *dest = pe_find_node(data_set.nodes, host_uname); - - rc = -ENXIO; -@@ -821,7 +821,7 @@ main(int argc, char **argv) - rc = cli_resource_ban(rsc_id, dest->details->uname, NULL, cib_conn); - - } else if (rsc_cmd == 'B' || rsc_cmd == 'M') { -- resource_t *rsc = pe_find_resource(data_set.resources, rsc_id); -+ resource_t *rsc = pe_find_resource_with_flags(data_set.resources, rsc_id, pe_find_renamed | pe_find_current | pe_find_anon); - - rc = -ENXIO; - if (rsc_id == NULL) { -@@ -939,7 +939,7 @@ main(int argc, char **argv) - rc = cli_resource_delete_attribute(rsc_id, prop_set, prop_id, prop_name, cib_conn, &data_set); - - } else if (rsc_cmd == 'C' && rsc_id) { -- resource_t *rsc = pe_find_resource(data_set.resources, rsc_id); -+ resource_t *rsc = pe_find_resource_with_flags(data_set.resources, rsc_id, pe_find_renamed | pe_find_current | pe_find_anon); - - if(do_force == FALSE) { - rsc = uber_parent(rsc); --- -1.8.3.1 - diff --git a/SOURCES/099-remote-probe.patch b/SOURCES/099-remote-probe.patch deleted file mode 100644 index 4270633..0000000 --- a/SOURCES/099-remote-probe.patch +++ /dev/null @@ -1,2990 +0,0 @@ -From 2bf3f0bff047ca85919d99e8e43d1725a88e59d0 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 13 Oct 2017 21:40:41 +1100 -Subject: [PATCH 1/3] Log: PE: Detailed resource information should include - connection resource state - ---- - lib/pengine/native.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/pengine/native.c b/lib/pengine/native.c -index 777dcf3..d23b588 100644 ---- a/lib/pengine/native.c -+++ b/lib/pengine/native.c -@@ -488,7 +488,7 @@ common_print(resource_t * rsc, const char *pre_text, const char *name, node_t *n - - if (rsc->meta) { - const char *is_internal = g_hash_table_lookup(rsc->meta, XML_RSC_ATTR_INTERNAL_RSC); -- if (crm_is_true(is_internal)) { -+ if (crm_is_true(is_internal) && is_not_set(options, pe_print_clone_details)) { - crm_trace("skipping print of internal resource %s", rsc->id); - return; - } --- -1.8.3.1 - - -From c3d4ec0377a5e742a7aca5b129139f1ad970e4f7 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 13 Oct 2017 21:45:28 +1100 -Subject: [PATCH 2/3] Fix: PE: Do not probe connection resources until the - container is active - -Otherwise we cannot rely on the REMOTE_CONTAINER_HACK logic for -replacing 'addr' with the node where the container is running. - -This leads to monitor operations that include addr="#uname" or even -the wrong node. - -If these operations detect the resource as running (after a cleanup) -then the digests won't match when the PE runs next, it will appear -the resource has changed definition and we will reload/restart it. ---- - include/crm/pengine/status.h | 4 ++++ - pengine/container.c | 35 ++++++++++++++++++++++++++++------- - pengine/graph.c | 20 ++++++++++++++++++++ - 3 files changed, 52 insertions(+), 7 deletions(-) - -diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h -index 17787dd..3786ca9 100644 ---- a/include/crm/pengine/status.h -+++ b/include/crm/pengine/status.h -@@ -429,6 +429,10 @@ enum pe_ordering { - * ensure instances of 'then' on 'nodeX' are too. - * Only really useful if 'then' is a clone and 'first' is not - */ -+ pe_order_probe = 0x800, /* If 'first->rsc' is -+ * - running but about to stop, ignore the constraint -+ * - otherwise, behave as runnable_left -+ */ - - pe_order_restart = 0x1000, /* 'then' is runnable if 'first' is optional or runnable */ - pe_order_stonith_stop = 0x2000, /* only applies if the action is non-pseudo */ -diff --git a/pengine/container.c b/pengine/container.c -index df5a238..a884516 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -823,16 +823,27 @@ container_expand(resource_t * rsc, pe_working_set_t * data_set) - for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - -- - CRM_ASSERT(tuple); -- if (tuple->docker && tuple->remote && tuple->docker->allocated_to -- && fix_remote_addr(tuple->remote)) { -+ if (tuple->remote && tuple->docker && fix_remote_addr(tuple->remote)) { - - // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside -+ pe_node_t *node = tuple->docker->allocated_to; - xmlNode *nvpair = get_xpath_object("//nvpair[@name='addr']", tuple->remote->xml, LOG_ERR); - -- g_hash_table_replace(tuple->remote->parameters, strdup("addr"), strdup(tuple->docker->allocated_to->details->uname)); -- crm_xml_add(nvpair, "value", tuple->docker->allocated_to->details->uname); -+ if(node == NULL && tuple->docker->running_on) { -+ /* If it wont be running anywhere after the -+ * transition, go with where it's running now. -+ */ -+ node = tuple->docker->running_on->data; -+ } -+ -+ if(node != NULL) { -+ g_hash_table_replace(tuple->remote->parameters, strdup("addr"), strdup(node->details->uname)); -+ crm_xml_add(nvpair, "value", node->details->uname); -+ -+ } else if(fix_remote_addr(tuple->remote)) { -+ crm_trace("Cannot fix address for %s", tuple->remote->id); -+ } - } - if(tuple->ip) { - tuple->ip->cmds->expand(tuple->ip, data_set); -@@ -897,8 +908,18 @@ container_create_probe(resource_t * rsc, node_t * node, action_t * complete, - } - } - } -- if(tuple->remote) { -- any_created |= tuple->remote->cmds->create_probe(tuple->remote, node, complete, force, data_set); -+ if(tuple->remote && tuple->remote->cmds->create_probe(tuple->remote, node, complete, force, data_set)) { -+ /* Do not probe the remote resource until we know where docker is running -+ * Required for REMOTE_CONTAINER_HACK to correctly probe remote resources -+ */ -+ char *probe_uuid = generate_op_key(tuple->remote->id, RSC_STATUS, 0); -+ action_t *probe = find_first_action(tuple->remote->actions, probe_uuid, NULL, node); -+ any_created = TRUE; -+ -+ crm_trace("Ordering %s probe on %s", tuple->remote->id, node->details->uname); -+ custom_action_order(tuple->docker, generate_op_key(tuple->docker->id, RSC_START, 0), NULL, -+ tuple->remote, NULL, probe, pe_order_probe, data_set); -+ free(probe_uuid); - } - } - return any_created; -diff --git a/pengine/graph.c b/pengine/graph.c -index 822e1c7..e3ee4fc 100644 ---- a/pengine/graph.c -+++ b/pengine/graph.c -@@ -294,6 +294,26 @@ graph_update_action(action_t * first, action_t * then, node_t * node, - } - } - -+ if (then->rsc && is_set(type, pe_order_probe)) { -+ processed = TRUE; -+ -+ 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); -+ -+ } else { -+ pe_rsc_trace(then->rsc, "Enforcing %s then %s", first->uuid, then->uuid); -+ changed |= then->rsc->cmds->update_actions(first, then, node, first_flags, -+ pe_action_runnable, pe_order_runnable_left); -+ } -+ -+ if (changed) { -+ pe_rsc_trace(then->rsc, "runnable: %s then %s: changed", first->uuid, then->uuid); -+ } else { -+ crm_trace("runnable: %s then %s", first->uuid, then->uuid); -+ } -+ } -+ - if (type & pe_order_runnable_left) { - processed = TRUE; - if (then->rsc) { --- -1.8.3.1 - - -From b2ca8d533e1fa076da9df5ce966747344fd0813e Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Fri, 13 Oct 2017 21:53:53 +1100 -Subject: [PATCH 3/3] Test: PE: Do not probe connection resources until the - container is active - ---- - pengine/regression.sh | 4 + - pengine/test10/bundle-nested-colocation.dot | 18 +++ - pengine/test10/bundle-nested-colocation.exp | 108 ++++++++++++--- - pengine/test10/bundle-nested-colocation.summary | 28 ++-- - pengine/test10/bundle-order-fencing.exp | 18 +-- - pengine/test10/bundle-order-partial-start.dot | 1 + - pengine/test10/bundle-order-partial-start.exp | 6 +- - pengine/test10/bundle-order-partial-start.summary | 4 +- - pengine/test10/bundle-order-partial-stop.exp | 6 +- - pengine/test10/bundle-order-startup-clone-2.dot | 18 +++ - pengine/test10/bundle-order-startup-clone-2.exp | 108 ++++++++++++--- - .../test10/bundle-order-startup-clone-2.summary | 58 ++++---- - pengine/test10/bundle-order-startup-clone.dot | 12 +- - pengine/test10/bundle-order-startup-clone.exp | 101 ++++++-------- - pengine/test10/bundle-order-startup-clone.summary | 13 +- - pengine/test10/bundle-order-startup.dot | 3 + - pengine/test10/bundle-order-startup.exp | 18 ++- - pengine/test10/bundle-order-startup.summary | 24 ++-- - pengine/test10/bundle-order-stop-clone.exp | 6 +- - pengine/test10/bundle-order-stop.exp | 6 +- - pengine/test10/bundle-probe-order-1.dot | 11 ++ - pengine/test10/bundle-probe-order-1.exp | 83 ++++++++++++ - pengine/test10/bundle-probe-order-1.scores | 149 +++++++++++++++++++++ - pengine/test10/bundle-probe-order-1.summary | 32 +++++ - pengine/test10/bundle-probe-order-1.xml | 95 +++++++++++++ - pengine/test10/bundle-probe-order-2.dot | 9 ++ - pengine/test10/bundle-probe-order-2.exp | 65 +++++++++ - pengine/test10/bundle-probe-order-2.scores | 149 +++++++++++++++++++++ - pengine/test10/bundle-probe-order-2.summary | 32 +++++ - pengine/test10/bundle-probe-order-2.xml | 127 ++++++++++++++++++ - pengine/test10/bundle-probe-order-3.dot | 10 ++ - pengine/test10/bundle-probe-order-3.exp | 74 ++++++++++ - pengine/test10/bundle-probe-order-3.scores | 149 +++++++++++++++++++++ - pengine/test10/bundle-probe-order-3.summary | 31 +++++ - pengine/test10/bundle-probe-order-3.xml | 117 ++++++++++++++++ - 35 files changed, 1509 insertions(+), 184 deletions(-) - create mode 100644 pengine/test10/bundle-probe-order-1.dot - create mode 100644 pengine/test10/bundle-probe-order-1.exp - create mode 100644 pengine/test10/bundle-probe-order-1.scores - create mode 100644 pengine/test10/bundle-probe-order-1.summary - create mode 100644 pengine/test10/bundle-probe-order-1.xml - create mode 100644 pengine/test10/bundle-probe-order-2.dot - create mode 100644 pengine/test10/bundle-probe-order-2.exp - create mode 100644 pengine/test10/bundle-probe-order-2.scores - create mode 100644 pengine/test10/bundle-probe-order-2.summary - create mode 100644 pengine/test10/bundle-probe-order-2.xml - create mode 100644 pengine/test10/bundle-probe-order-3.dot - create mode 100644 pengine/test10/bundle-probe-order-3.exp - create mode 100644 pengine/test10/bundle-probe-order-3.scores - create mode 100644 pengine/test10/bundle-probe-order-3.summary - create mode 100644 pengine/test10/bundle-probe-order-3.xml - -diff --git a/pengine/regression.sh b/pengine/regression.sh -index aeff13a..6ec5848 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -823,6 +823,10 @@ do_test bundle-nested-colocation "Colocation of nested connection resources" - - do_test bundle-order-fencing "Order pseudo bundle fencing after parent node fencing if both are happening" - -+do_test bundle-probe-order-1 "order 1" -+do_test bundle-probe-order-2 "order 2" -+do_test bundle-probe-order-3 "order 3" -+ - echo "" - do_test whitebox-fail1 "Fail whitebox container rsc." - do_test whitebox-fail2 "Fail whitebox container rsc lrmd connection." -diff --git a/pengine/test10/bundle-nested-colocation.dot b/pengine/test10/bundle-nested-colocation.dot -index 21c9700..46cc569 100644 ---- a/pengine/test10/bundle-nested-colocation.dot -+++ b/pengine/test10/bundle-nested-colocation.dot -@@ -77,6 +77,12 @@ digraph "g" { - "rabbitmq-bundle-clone_start_0" -> "rabbitmq:2_start_0 rabbitmq-bundle-2" [ style = bold] - "rabbitmq-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"] - "rabbitmq-bundle-docker-0_monitor_60000 overcloud-rabbit-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq-bundle-0_monitor_0 overcloud-controller-0" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq-bundle-0_monitor_0 overcloud-controller-1" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq-bundle-0_monitor_0 overcloud-controller-2" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq-bundle-0_monitor_0 overcloud-galera-0" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq-bundle-0_monitor_0 overcloud-galera-1" [ style = bold] -+"rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq-bundle-0_monitor_0 overcloud-galera-2" [ style = bold] - "rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq-bundle-0_start_0 overcloud-controller-0" [ style = bold] - "rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq-bundle-docker-0_monitor_60000 overcloud-rabbit-0" [ style = bold] - "rabbitmq-bundle-docker-0_start_0 overcloud-rabbit-0" -> "rabbitmq-bundle_running_0" [ style = bold] -@@ -87,6 +93,12 @@ digraph "g" { - "rabbitmq-bundle-docker-0_stop_0 overcloud-rabbit-0" -> "rabbitmq-bundle_stopped_0" [ style = bold] - "rabbitmq-bundle-docker-0_stop_0 overcloud-rabbit-0" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-docker-1_monitor_60000 overcloud-rabbit-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle-1_monitor_0 overcloud-controller-0" [ style = bold] -+"rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle-1_monitor_0 overcloud-controller-1" [ style = bold] -+"rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle-1_monitor_0 overcloud-controller-2" [ style = bold] -+"rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle-1_monitor_0 overcloud-galera-0" [ style = bold] -+"rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle-1_monitor_0 overcloud-galera-1" [ style = bold] -+"rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle-1_monitor_0 overcloud-galera-2" [ style = bold] - "rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle-1_start_0 overcloud-controller-1" [ style = bold] - "rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle-docker-1_monitor_60000 overcloud-rabbit-1" [ style = bold] - "rabbitmq-bundle-docker-1_start_0 overcloud-rabbit-1" -> "rabbitmq-bundle_running_0" [ style = bold] -@@ -97,6 +109,12 @@ digraph "g" { - "rabbitmq-bundle-docker-1_stop_0 overcloud-rabbit-1" -> "rabbitmq-bundle_stopped_0" [ style = bold] - "rabbitmq-bundle-docker-1_stop_0 overcloud-rabbit-1" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-docker-2_monitor_60000 overcloud-rabbit-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle-2_monitor_0 overcloud-controller-0" [ style = bold] -+"rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle-2_monitor_0 overcloud-controller-1" [ style = bold] -+"rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle-2_monitor_0 overcloud-controller-2" [ style = bold] -+"rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle-2_monitor_0 overcloud-galera-0" [ style = bold] -+"rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle-2_monitor_0 overcloud-galera-1" [ style = bold] -+"rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle-2_monitor_0 overcloud-galera-2" [ style = bold] - "rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle-2_start_0 overcloud-controller-2" [ style = bold] - "rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle-docker-2_monitor_60000 overcloud-rabbit-2" [ style = bold] - "rabbitmq-bundle-docker-2_start_0 overcloud-rabbit-2" -> "rabbitmq-bundle_running_0" [ style = bold] -diff --git a/pengine/test10/bundle-nested-colocation.exp b/pengine/test10/bundle-nested-colocation.exp -index 1f2396e..fe77003 100644 ---- a/pengine/test10/bundle-nested-colocation.exp -+++ b/pengine/test10/bundle-nested-colocation.exp -@@ -391,7 +391,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -400,7 +404,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -409,7 +417,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -418,7 +430,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -427,7 +443,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -436,7 +456,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -531,7 +555,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -540,7 +568,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -549,7 +581,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -558,7 +594,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -567,7 +607,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -576,7 +620,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -671,7 +719,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -680,7 +732,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -689,7 +745,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -698,7 +758,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -707,7 +771,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -716,7 +784,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-nested-colocation.summary b/pengine/test10/bundle-nested-colocation.summary -index 1986763..2eee05e 100644 ---- a/pengine/test10/bundle-nested-colocation.summary -+++ b/pengine/test10/bundle-nested-colocation.summary -@@ -29,41 +29,41 @@ Transition Summary: - - Executing cluster transition: - * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 -+ * Pseudo action: rabbitmq-bundle_stop_0 -+ * Pseudo action: rabbitmq-bundle_start_0 -+ * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0 -+ * Resource action: rabbitmq-bundle-docker-0 stop on overcloud-rabbit-0 -+ * Resource action: rabbitmq-bundle-docker-0 start on overcloud-rabbit-0 -+ * Resource action: rabbitmq-bundle-docker-0 monitor=60000 on overcloud-rabbit-0 - * Resource action: rabbitmq-bundle-0 monitor on overcloud-galera-2 - * Resource action: rabbitmq-bundle-0 monitor on overcloud-galera-1 - * Resource action: rabbitmq-bundle-0 monitor on overcloud-galera-0 - * Resource action: rabbitmq-bundle-0 monitor on overcloud-controller-2 - * Resource action: rabbitmq-bundle-0 monitor on overcloud-controller-1 - * Resource action: rabbitmq-bundle-0 monitor on overcloud-controller-0 -+ * Resource action: rabbitmq-bundle-docker-1 stop on overcloud-rabbit-1 -+ * Resource action: rabbitmq-bundle-docker-1 start on overcloud-rabbit-1 -+ * Resource action: rabbitmq-bundle-docker-1 monitor=60000 on overcloud-rabbit-1 - * Resource action: rabbitmq-bundle-1 monitor on overcloud-galera-2 - * Resource action: rabbitmq-bundle-1 monitor on overcloud-galera-1 - * Resource action: rabbitmq-bundle-1 monitor on overcloud-galera-0 - * Resource action: rabbitmq-bundle-1 monitor on overcloud-controller-2 - * Resource action: rabbitmq-bundle-1 monitor on overcloud-controller-1 - * Resource action: rabbitmq-bundle-1 monitor on overcloud-controller-0 -+ * Resource action: rabbitmq-bundle-docker-2 stop on overcloud-rabbit-2 -+ * Resource action: rabbitmq-bundle-docker-2 start on overcloud-rabbit-2 -+ * Resource action: rabbitmq-bundle-docker-2 monitor=60000 on overcloud-rabbit-2 - * Resource action: rabbitmq-bundle-2 monitor on overcloud-galera-2 - * Resource action: rabbitmq-bundle-2 monitor on overcloud-galera-1 - * Resource action: rabbitmq-bundle-2 monitor on overcloud-galera-0 - * Resource action: rabbitmq-bundle-2 monitor on overcloud-controller-2 - * Resource action: rabbitmq-bundle-2 monitor on overcloud-controller-1 - * Resource action: rabbitmq-bundle-2 monitor on overcloud-controller-0 -- * Pseudo action: rabbitmq-bundle_stop_0 -- * Pseudo action: rabbitmq-bundle_start_0 -- * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0 -- * Resource action: rabbitmq-bundle-docker-0 stop on overcloud-rabbit-0 -- * Resource action: rabbitmq-bundle-docker-0 start on overcloud-rabbit-0 -- * Resource action: rabbitmq-bundle-docker-0 monitor=60000 on overcloud-rabbit-0 -+ * Pseudo action: rabbitmq-bundle_stopped_0 -+ * Pseudo action: all_stopped - * Resource action: rabbitmq-bundle-0 start on overcloud-controller-0 -- * Resource action: rabbitmq-bundle-docker-1 stop on overcloud-rabbit-1 -- * Resource action: rabbitmq-bundle-docker-1 start on overcloud-rabbit-1 -- * Resource action: rabbitmq-bundle-docker-1 monitor=60000 on overcloud-rabbit-1 - * Resource action: rabbitmq-bundle-1 start on overcloud-controller-1 -- * Resource action: rabbitmq-bundle-docker-2 stop on overcloud-rabbit-2 -- * Resource action: rabbitmq-bundle-docker-2 start on overcloud-rabbit-2 -- * Resource action: rabbitmq-bundle-docker-2 monitor=60000 on overcloud-rabbit-2 - * Resource action: rabbitmq-bundle-2 start on overcloud-controller-2 -- * Pseudo action: rabbitmq-bundle_stopped_0 -- * Pseudo action: all_stopped - * Resource action: rabbitmq:0 monitor on rabbitmq-bundle-0 - * Resource action: rabbitmq:1 monitor on rabbitmq-bundle-1 - * Resource action: rabbitmq:2 monitor on rabbitmq-bundle-2 -diff --git a/pengine/test10/bundle-order-fencing.exp b/pengine/test10/bundle-order-fencing.exp -index 6782060..dab0dd4 100644 ---- a/pengine/test10/bundle-order-fencing.exp -+++ b/pengine/test10/bundle-order-fencing.exp -@@ -379,7 +379,7 @@ - - - -- -+ - - - -@@ -398,7 +398,7 @@ - - - -- -+ - - - -@@ -407,7 +407,7 @@ - - - -- -+ - - - -@@ -577,7 +577,7 @@ - - - -- -+ - - - -@@ -596,7 +596,7 @@ - - - -- -+ - - - -@@ -605,7 +605,7 @@ - - - -- -+ - - - -@@ -1437,7 +1437,7 @@ - - - -- -+ - - - -@@ -1456,7 +1456,7 @@ - - - -- -+ - - - -@@ -1465,7 +1465,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start.dot b/pengine/test10/bundle-order-partial-start.dot -index 1106b28..f8292eb 100644 ---- a/pengine/test10/bundle-order-partial-start.dot -+++ b/pengine/test10/bundle-order-partial-start.dot -@@ -11,6 +11,7 @@ digraph "g" { - "galera-bundle-docker-0_monitor_0 undercloud" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_monitor_0 undercloud" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle_running_0" [ style = bold] -diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp -index e883a3b..037c3e0 100644 ---- a/pengine/test10/bundle-order-partial-start.exp -+++ b/pengine/test10/bundle-order-partial-start.exp -@@ -288,7 +288,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start.summary b/pengine/test10/bundle-order-partial-start.summary -index fb8e7de..a79fbf3 100644 ---- a/pengine/test10/bundle-order-partial-start.summary -+++ b/pengine/test10/bundle-order-partial-start.summary -@@ -32,7 +32,6 @@ Executing cluster transition: - * Resource action: rabbitmq:0 monitor on rabbitmq-bundle-0 - * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 - * Resource action: galera-bundle-docker-0 monitor on undercloud -- * Resource action: galera-bundle-0 monitor on undercloud - * Pseudo action: redis-bundle-master_pre_notify_promote_0 - * Resource action: haproxy-bundle-docker-0 monitor on undercloud - * Pseudo action: haproxy-bundle_start_0 -@@ -63,10 +62,11 @@ Executing cluster transition: - * Pseudo action: galera-bundle_start_0 - * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera-bundle-docker-0 start on undercloud -+ * Resource action: galera-bundle-0 monitor on undercloud -+ * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud - * Resource action: galera-bundle-0 start on undercloud - * Resource action: galera:0 start on galera-bundle-0 - * Pseudo action: galera-bundle-master_running_0 -- * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud - * Resource action: galera-bundle-0 monitor=60000 on undercloud - * Pseudo action: galera-bundle_running_0 - * Resource action: galera:0 monitor=30000 on galera-bundle-0 -diff --git a/pengine/test10/bundle-order-partial-stop.exp b/pengine/test10/bundle-order-partial-stop.exp -index 1dff657..c0724c7 100644 ---- a/pengine/test10/bundle-order-partial-stop.exp -+++ b/pengine/test10/bundle-order-partial-stop.exp -@@ -128,7 +128,7 @@ - - - -- -+ - - - -@@ -261,7 +261,7 @@ - - - -- -+ - - - -@@ -549,7 +549,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone-2.dot b/pengine/test10/bundle-order-startup-clone-2.dot -index 6026530..59a4fb4 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.dot -+++ b/pengine/test10/bundle-order-startup-clone-2.dot -@@ -51,6 +51,9 @@ digraph "g" { - "galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_monitor_0 metal-1" [ style = bold] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_monitor_0 metal-2" [ style = bold] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_monitor_0 metal-3" [ style = bold] - "galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-docker-0_monitor_60000 metal-1" [ style = bold] - "galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle_running_0" [ style = bold] -@@ -72,6 +75,9 @@ digraph "g" { - "galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle-1_monitor_0 metal-1" [ style = bold] -+"galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle-1_monitor_0 metal-2" [ style = bold] -+"galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle-1_monitor_0 metal-3" [ style = bold] - "galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle-docker-1_monitor_60000 metal-2" [ style = bold] - "galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle_running_0" [ style = bold] -@@ -93,6 +99,9 @@ digraph "g" { - "galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle-2_monitor_0 metal-1" [ style = bold] -+"galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle-2_monitor_0 metal-2" [ style = bold] -+"galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle-2_monitor_0 metal-3" [ style = bold] - "galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle-2_start_0 metal-3" [ style = bold] - "galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle-docker-2_monitor_60000 metal-3" [ style = bold] - "galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle_running_0" [ style = bold] -@@ -237,6 +246,9 @@ digraph "g" { - "redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle-0_monitor_0 metal-1" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle-0_monitor_0 metal-2" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle-0_monitor_0 metal-3" [ style = bold] - "redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle-docker-0_monitor_60000 metal-1" [ style = bold] - "redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle_running_0" [ style = bold] -@@ -259,6 +271,9 @@ digraph "g" { - "redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle-1_monitor_0 metal-1" [ style = bold] -+"redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle-1_monitor_0 metal-2" [ style = bold] -+"redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle-1_monitor_0 metal-3" [ style = bold] - "redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle-docker-1_monitor_60000 metal-2" [ style = bold] - "redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle_running_0" [ style = bold] -@@ -281,6 +296,9 @@ digraph "g" { - "redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle-2_monitor_0 metal-1" [ style = bold] -+"redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle-2_monitor_0 metal-2" [ style = bold] -+"redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle-2_monitor_0 metal-3" [ style = bold] - "redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle-2_start_0 metal-3" [ style = bold] - "redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle-docker-2_monitor_60000 metal-3" [ style = bold] - "redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle_running_0" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup-clone-2.exp b/pengine/test10/bundle-order-startup-clone-2.exp -index ae499c0..b2bbf52 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.exp -+++ b/pengine/test10/bundle-order-startup-clone-2.exp -@@ -597,7 +597,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -606,7 +610,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -615,7 +623,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -739,7 +751,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -748,7 +764,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -757,7 +777,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -881,7 +905,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -890,7 +918,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -899,7 +931,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -1814,7 +1850,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -1823,7 +1863,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -1832,7 +1876,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -1956,7 +2004,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -1965,7 +2017,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -1974,7 +2030,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -2098,7 +2158,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -2107,7 +2171,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -2116,7 +2184,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone-2.summary b/pengine/test10/bundle-order-startup-clone-2.summary -index 07e6f00..f2dd8c3 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.summary -+++ b/pengine/test10/bundle-order-startup-clone-2.summary -@@ -52,21 +52,12 @@ Executing cluster transition: - * Resource action: galera-bundle-docker-0 monitor on metal-3 - * Resource action: galera-bundle-docker-0 monitor on metal-2 - * Resource action: galera-bundle-docker-0 monitor on metal-1 -- * Resource action: galera-bundle-0 monitor on metal-3 -- * Resource action: galera-bundle-0 monitor on metal-2 -- * Resource action: galera-bundle-0 monitor on metal-1 - * Resource action: galera-bundle-docker-1 monitor on metal-3 - * Resource action: galera-bundle-docker-1 monitor on metal-2 - * Resource action: galera-bundle-docker-1 monitor on metal-1 -- * Resource action: galera-bundle-1 monitor on metal-3 -- * Resource action: galera-bundle-1 monitor on metal-2 -- * Resource action: galera-bundle-1 monitor on metal-1 - * Resource action: galera-bundle-docker-2 monitor on metal-3 - * Resource action: galera-bundle-docker-2 monitor on metal-2 - * Resource action: galera-bundle-docker-2 monitor on metal-1 -- * Resource action: galera-bundle-2 monitor on metal-3 -- * Resource action: galera-bundle-2 monitor on metal-2 -- * Resource action: galera-bundle-2 monitor on metal-1 - * Resource action: haproxy-bundle-docker-0 monitor on metal-3 - * Resource action: haproxy-bundle-docker-0 monitor on metal-2 - * Resource action: haproxy-bundle-docker-0 monitor on metal-1 -@@ -80,21 +71,12 @@ Executing cluster transition: - * Resource action: redis-bundle-docker-0 monitor on metal-3 - * Resource action: redis-bundle-docker-0 monitor on metal-2 - * Resource action: redis-bundle-docker-0 monitor on metal-1 -- * Resource action: redis-bundle-0 monitor on metal-3 -- * Resource action: redis-bundle-0 monitor on metal-2 -- * Resource action: redis-bundle-0 monitor on metal-1 - * Resource action: redis-bundle-docker-1 monitor on metal-3 - * Resource action: redis-bundle-docker-1 monitor on metal-2 - * Resource action: redis-bundle-docker-1 monitor on metal-1 -- * Resource action: redis-bundle-1 monitor on metal-3 -- * Resource action: redis-bundle-1 monitor on metal-2 -- * Resource action: redis-bundle-1 monitor on metal-1 - * Resource action: redis-bundle-docker-2 monitor on metal-3 - * Resource action: redis-bundle-docker-2 monitor on metal-2 - * Resource action: redis-bundle-docker-2 monitor on metal-1 -- * Resource action: redis-bundle-2 monitor on metal-3 -- * Resource action: redis-bundle-2 monitor on metal-2 -- * Resource action: redis-bundle-2 monitor on metal-1 - * Pseudo action: redis-bundle_start_0 - * Pseudo action: haproxy-bundle_start_0 - * Pseudo action: storage-clone_confirmed-pre_notify_start_0 -@@ -104,24 +86,33 @@ Executing cluster transition: - * Pseudo action: redis-bundle-master_confirmed-pre_notify_start_0 - * Pseudo action: redis-bundle-master_start_0 - * Resource action: redis-bundle-docker-0 start on metal-1 -- * Resource action: redis-bundle-0 start on metal-1 -+ * Resource action: redis-bundle-0 monitor on metal-3 -+ * Resource action: redis-bundle-0 monitor on metal-2 -+ * Resource action: redis-bundle-0 monitor on metal-1 - * Resource action: redis-bundle-docker-1 start on metal-2 -- * Resource action: redis-bundle-1 start on metal-2 -+ * Resource action: redis-bundle-1 monitor on metal-3 -+ * Resource action: redis-bundle-1 monitor on metal-2 -+ * Resource action: redis-bundle-1 monitor on metal-1 - * Resource action: redis-bundle-docker-2 start on metal-3 -- * Resource action: redis-bundle-2 start on metal-3 -+ * Resource action: redis-bundle-2 monitor on metal-3 -+ * Resource action: redis-bundle-2 monitor on metal-2 -+ * Resource action: redis-bundle-2 monitor on metal-1 - * Pseudo action: haproxy-bundle_running_0 - * Resource action: haproxy-bundle-docker-0 monitor=60000 on metal-1 - * Resource action: haproxy-bundle-docker-1 monitor=60000 on metal-2 - * Resource action: haproxy-bundle-docker-2 monitor=60000 on metal-3 -+ * Resource action: redis-bundle-docker-0 monitor=60000 on metal-1 -+ * Resource action: redis-bundle-0 start on metal-1 -+ * Resource action: redis-bundle-docker-1 monitor=60000 on metal-2 -+ * Resource action: redis-bundle-1 start on metal-2 -+ * Resource action: redis-bundle-docker-2 monitor=60000 on metal-3 -+ * Resource action: redis-bundle-2 start on metal-3 - * Resource action: redis:0 start on redis-bundle-0 - * Resource action: redis:1 start on redis-bundle-1 - * Resource action: redis:2 start on redis-bundle-2 - * Pseudo action: redis-bundle-master_running_0 -- * Resource action: redis-bundle-docker-0 monitor=60000 on metal-1 - * Resource action: redis-bundle-0 monitor=60000 on metal-1 -- * Resource action: redis-bundle-docker-1 monitor=60000 on metal-2 - * Resource action: redis-bundle-1 monitor=60000 on metal-2 -- * Resource action: redis-bundle-docker-2 monitor=60000 on metal-3 - * Resource action: redis-bundle-2 monitor=60000 on metal-3 - * Pseudo action: redis-bundle-master_post_notify_running_0 - * Resource action: redis:0 notify on redis-bundle-0 -@@ -165,20 +156,29 @@ Executing cluster transition: - * Resource action: storage:2 monitor=30000 on metal-3 - * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera-bundle-docker-0 start on metal-1 -- * Resource action: galera-bundle-0 start on metal-1 -+ * Resource action: galera-bundle-0 monitor on metal-3 -+ * Resource action: galera-bundle-0 monitor on metal-2 -+ * Resource action: galera-bundle-0 monitor on metal-1 - * Resource action: galera-bundle-docker-1 start on metal-2 -- * Resource action: galera-bundle-1 start on metal-2 -+ * Resource action: galera-bundle-1 monitor on metal-3 -+ * Resource action: galera-bundle-1 monitor on metal-2 -+ * Resource action: galera-bundle-1 monitor on metal-1 - * Resource action: galera-bundle-docker-2 start on metal-3 -+ * Resource action: galera-bundle-2 monitor on metal-3 -+ * Resource action: galera-bundle-2 monitor on metal-2 -+ * Resource action: galera-bundle-2 monitor on metal-1 -+ * Resource action: galera-bundle-docker-0 monitor=60000 on metal-1 -+ * Resource action: galera-bundle-0 start on metal-1 -+ * Resource action: galera-bundle-docker-1 monitor=60000 on metal-2 -+ * Resource action: galera-bundle-1 start on metal-2 -+ * Resource action: galera-bundle-docker-2 monitor=60000 on metal-3 - * Resource action: galera-bundle-2 start on metal-3 - * Resource action: galera:0 start on galera-bundle-0 - * Resource action: galera:1 start on galera-bundle-1 - * Resource action: galera:2 start on galera-bundle-2 - * Pseudo action: galera-bundle-master_running_0 -- * Resource action: galera-bundle-docker-0 monitor=60000 on metal-1 - * Resource action: galera-bundle-0 monitor=60000 on metal-1 -- * Resource action: galera-bundle-docker-1 monitor=60000 on metal-2 - * Resource action: galera-bundle-1 monitor=60000 on metal-2 -- * Resource action: galera-bundle-docker-2 monitor=60000 on metal-3 - * Resource action: galera-bundle-2 monitor=60000 on metal-3 - * Pseudo action: galera-bundle_running_0 - * Resource action: galera:0 monitor=30000 on galera-bundle-0 -diff --git a/pengine/test10/bundle-order-startup-clone.dot b/pengine/test10/bundle-order-startup-clone.dot -index 39f3635..8426bd2 100644 ---- a/pengine/test10/bundle-order-startup-clone.dot -+++ b/pengine/test10/bundle-order-startup-clone.dot -@@ -1,10 +1,10 @@ - digraph "g" { - "galera-bundle-0_monitor_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] --"galera-bundle-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_monitor_0 metal-1" [ style=dashed color="red" fontcolor="black"] - "galera-bundle-0_monitor_0 metal-2" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] --"galera-bundle-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_monitor_0 metal-2" [ style=dashed color="red" 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" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-0_monitor_0 metal-3" [ style=dashed color="red" 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] - "galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_20000 galera-bundle-0" [ style = dashed] -@@ -21,6 +21,9 @@ digraph "g" { - "galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-master_start_0" [ style = dashed] - "galera-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_60000 metal-1" [ style=dashed color="red" fontcolor="black"] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_monitor_0 metal-1" [ style = dashed] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_monitor_0 metal-2" [ style = dashed] -+"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_monitor_0 metal-3" [ style = dashed] - "galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] - "galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-docker-0_monitor_60000 metal-1" [ style = dashed] - "galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle_running_0" [ style = dashed] -@@ -77,6 +80,9 @@ digraph "g" { - "redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle-0_monitor_0 metal-1" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle-0_monitor_0 metal-2" [ style = bold] -+"redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle-0_monitor_0 metal-3" [ style = bold] - "redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle-0_start_0 metal-2" [ style = bold] - "redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle-docker-0_monitor_60000 metal-2" [ style = bold] - "redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle_running_0" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup-clone.exp b/pengine/test10/bundle-order-startup-clone.exp -index 9e3dd9b..46d969c 100644 ---- a/pengine/test10/bundle-order-startup-clone.exp -+++ b/pengine/test10/bundle-order-startup-clone.exp -@@ -55,33 +55,6 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -@@ -93,7 +66,7 @@ - - - -- -+ - - - -@@ -115,7 +88,7 @@ - - - -- -+ - - - -@@ -124,7 +97,7 @@ - - - -- -+ - - - -@@ -133,7 +106,7 @@ - - - -- -+ - - - -@@ -142,7 +115,7 @@ - - - -- -+ - - - -@@ -155,7 +128,7 @@ - - - -- -+ - - - -@@ -174,7 +147,7 @@ - - - -- -+ - - - -@@ -193,7 +166,7 @@ - - - -- -+ - - - -@@ -212,7 +185,7 @@ - - - -- -+ - - - -@@ -227,7 +200,7 @@ - - - -- -+ - - - -@@ -242,7 +215,7 @@ - - - -- -+ - - - -@@ -254,7 +227,7 @@ - - - -- -+ - - - -@@ -262,7 +235,7 @@ - - - -- -+ - - - -@@ -277,7 +250,7 @@ - - - -- -+ - - - -@@ -301,7 +274,7 @@ - - - -- -+ - - - -@@ -314,7 +287,7 @@ - - - -- -+ - - - -@@ -336,7 +309,7 @@ - - - -- -+ - - - -@@ -345,7 +318,7 @@ - - - -- -+ - - - -@@ -354,7 +327,7 @@ - - - -- -+ - - - -@@ -363,7 +336,7 @@ - - - -- -+ - - - -@@ -376,7 +349,7 @@ - - - -- -+ - - - -@@ -398,34 +371,46 @@ - - - -- -+ - - - - - - -- -+ -+ -+ -+ -+ - -- -+ - - - - - - -- -+ -+ -+ -+ -+ - -- -+ - - - - - - -- -+ -+ -+ -+ -+ - -- -+ - - - -@@ -440,7 +425,7 @@ - - - -- -+ - - - -@@ -448,7 +433,7 @@ - - - -- -+ - - - -@@ -460,7 +445,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone.summary b/pengine/test10/bundle-order-startup-clone.summary -index 1346bda..8a737fd 100644 ---- a/pengine/test10/bundle-order-startup-clone.summary -+++ b/pengine/test10/bundle-order-startup-clone.summary -@@ -31,9 +31,6 @@ Executing cluster transition: - * Resource action: galera-bundle-docker-0 monitor on metal-3 - * Resource action: galera-bundle-docker-0 monitor on metal-2 - * Resource action: galera-bundle-docker-0 monitor on metal-1 -- * Resource action: galera-bundle-0 monitor on metal-3 -- * Resource action: galera-bundle-0 monitor on metal-2 -- * Resource action: galera-bundle-0 monitor on metal-1 - * Resource action: haproxy-bundle-docker-0 monitor on metal-3 - * Resource action: haproxy-bundle-docker-0 monitor on metal-2 - * Resource action: haproxy-bundle-docker-0 monitor on metal-1 -@@ -41,21 +38,21 @@ Executing cluster transition: - * Resource action: redis-bundle-docker-0 monitor on metal-3 - * Resource action: redis-bundle-docker-0 monitor on metal-2 - * Resource action: redis-bundle-docker-0 monitor on metal-1 -- * Resource action: redis-bundle-0 monitor on metal-3 -- * Resource action: redis-bundle-0 monitor on metal-2 -- * Resource action: redis-bundle-0 monitor on metal-1 - * Pseudo action: redis-bundle_start_0 - * Pseudo action: haproxy-bundle_start_0 - * Resource action: haproxy-bundle-docker-0 start on metal-2 - * Pseudo action: redis-bundle-master_confirmed-pre_notify_start_0 - * Pseudo action: redis-bundle-master_start_0 - * Resource action: redis-bundle-docker-0 start on metal-2 -- * Resource action: redis-bundle-0 start on metal-2 -+ * Resource action: redis-bundle-0 monitor on metal-3 -+ * Resource action: redis-bundle-0 monitor on metal-2 -+ * Resource action: redis-bundle-0 monitor on metal-1 - * Pseudo action: haproxy-bundle_running_0 - * Resource action: haproxy-bundle-docker-0 monitor=60000 on metal-2 -+ * Resource action: redis-bundle-docker-0 monitor=60000 on metal-2 -+ * Resource action: redis-bundle-0 start on metal-2 - * Resource action: redis:0 start on redis-bundle-0 - * Pseudo action: redis-bundle-master_running_0 -- * Resource action: redis-bundle-docker-0 monitor=60000 on metal-2 - * Resource action: redis-bundle-0 monitor=60000 on metal-2 - * Pseudo action: redis-bundle-master_post_notify_running_0 - * Resource action: redis:0 notify on redis-bundle-0 -diff --git a/pengine/test10/bundle-order-startup.dot b/pengine/test10/bundle-order-startup.dot -index 213fa4c..0f7bfd2 100644 ---- a/pengine/test10/bundle-order-startup.dot -+++ b/pengine/test10/bundle-order-startup.dot -@@ -11,6 +11,7 @@ digraph "g" { - "galera-bundle-docker-0_monitor_0 undercloud" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_monitor_0 undercloud" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] - "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle_running_0" [ style = bold] -@@ -113,6 +114,7 @@ digraph "g" { - "rabbitmq-bundle-docker-0_monitor_0 undercloud" -> "rabbitmq-bundle-docker-0_start_0 undercloud" [ style = bold] - "rabbitmq-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "rabbitmq-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle-0_monitor_0 undercloud" [ style = bold] - "rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle-0_start_0 undercloud" [ style = bold] - "rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle-docker-0_monitor_60000 undercloud" [ style = bold] - "rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle_running_0" [ style = bold] -@@ -140,6 +142,7 @@ digraph "g" { - "redis-bundle-docker-0_monitor_0 undercloud" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-0_monitor_0 undercloud" [ style = bold] - "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-0_start_0 undercloud" [ style = bold] - "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-docker-0_monitor_60000 undercloud" [ style = bold] - "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle_running_0" [ style = bold] -diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp -index 77e67bd..3f50562 100644 ---- a/pengine/test10/bundle-order-startup.exp -+++ b/pengine/test10/bundle-order-startup.exp -@@ -207,7 +207,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -364,7 +368,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -@@ -593,7 +601,11 @@ - - - -- -+ -+ -+ -+ -+ - - - -diff --git a/pengine/test10/bundle-order-startup.summary b/pengine/test10/bundle-order-startup.summary -index 8e6b685..5512692 100644 ---- a/pengine/test10/bundle-order-startup.summary -+++ b/pengine/test10/bundle-order-startup.summary -@@ -41,12 +41,9 @@ Transition Summary: - Executing cluster transition: - * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0 - * Resource action: rabbitmq-bundle-docker-0 monitor on undercloud -- * Resource action: rabbitmq-bundle-0 monitor on undercloud - * Resource action: galera-bundle-docker-0 monitor on undercloud -- * Resource action: galera-bundle-0 monitor on undercloud - * Pseudo action: redis-bundle-master_pre_notify_start_0 - * Resource action: redis-bundle-docker-0 monitor on undercloud -- * Resource action: redis-bundle-0 monitor on undercloud - * Resource action: ip-192.168.122.254 monitor on undercloud - * Resource action: ip-192.168.122.250 monitor on undercloud - * Resource action: ip-192.168.122.249 monitor on undercloud -@@ -60,7 +57,7 @@ Executing cluster transition: - * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0 - * Pseudo action: rabbitmq-bundle-clone_start_0 - * Resource action: rabbitmq-bundle-docker-0 start on undercloud -- * Resource action: rabbitmq-bundle-0 start on undercloud -+ * Resource action: rabbitmq-bundle-0 monitor on undercloud - * Pseudo action: redis-bundle-master_confirmed-pre_notify_start_0 - * Resource action: ip-192.168.122.254 start on undercloud - * Resource action: ip-192.168.122.250 start on undercloud -@@ -71,10 +68,8 @@ Executing cluster transition: - * Resource action: openstack-cinder-volume-docker-0 start on undercloud - * Pseudo action: openstack-cinder-volume_running_0 - * Pseudo action: haproxy-bundle_start_0 -- * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 -- * Pseudo action: rabbitmq-bundle-clone_running_0 - * Resource action: rabbitmq-bundle-docker-0 monitor=60000 on undercloud -- * Resource action: rabbitmq-bundle-0 monitor=60000 on undercloud -+ * Resource action: rabbitmq-bundle-0 start on undercloud - * Resource action: ip-192.168.122.254 monitor=10000 on undercloud - * Resource action: ip-192.168.122.250 monitor=10000 on undercloud - * Resource action: ip-192.168.122.249 monitor=10000 on undercloud -@@ -85,16 +80,20 @@ Executing cluster transition: - * Resource action: openstack-cinder-volume-docker-0 monitor=60000 on undercloud - * Pseudo action: haproxy-bundle_running_0 - * Pseudo action: redis-bundle_start_0 -- * Pseudo action: rabbitmq-bundle-clone_post_notify_running_0 -+ * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 -+ * Pseudo action: rabbitmq-bundle-clone_running_0 -+ * Resource action: rabbitmq-bundle-0 monitor=60000 on undercloud - * Pseudo action: redis-bundle-master_start_0 - * Resource action: redis-bundle-docker-0 start on undercloud -- * Resource action: redis-bundle-0 start on undercloud -+ * Resource action: redis-bundle-0 monitor on undercloud - * Resource action: haproxy-bundle-docker-0 monitor=60000 on undercloud -+ * Pseudo action: rabbitmq-bundle-clone_post_notify_running_0 -+ * Resource action: redis-bundle-docker-0 monitor=60000 on undercloud -+ * Resource action: redis-bundle-0 start on undercloud - * Resource action: rabbitmq:0 notify on rabbitmq-bundle-0 - * Pseudo action: rabbitmq-bundle-clone_confirmed-post_notify_running_0 - * Resource action: redis:0 start on redis-bundle-0 - * Pseudo action: redis-bundle-master_running_0 -- * Resource action: redis-bundle-docker-0 monitor=60000 on undercloud - * Resource action: redis-bundle-0 monitor=60000 on undercloud - * Pseudo action: rabbitmq-bundle_running_0 - * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 -@@ -105,12 +104,13 @@ Executing cluster transition: - * Pseudo action: galera-bundle_start_0 - * Pseudo action: galera-bundle-master_start_0 - * Resource action: galera-bundle-docker-0 start on undercloud -- * Resource action: galera-bundle-0 start on undercloud -+ * Resource action: galera-bundle-0 monitor on undercloud - * Resource action: redis:0 monitor=60000 on redis-bundle-0 - * Resource action: redis:0 monitor=45000 on redis-bundle-0 -+ * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud -+ * Resource action: galera-bundle-0 start on undercloud - * Resource action: galera:0 start on galera-bundle-0 - * Pseudo action: galera-bundle-master_running_0 -- * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud - * Resource action: galera-bundle-0 monitor=60000 on undercloud - * Pseudo action: galera-bundle_running_0 - * Resource action: galera:0 monitor=30000 on galera-bundle-0 -diff --git a/pengine/test10/bundle-order-stop-clone.exp b/pengine/test10/bundle-order-stop-clone.exp -index a1106aa..71e2bf7 100644 ---- a/pengine/test10/bundle-order-stop-clone.exp -+++ b/pengine/test10/bundle-order-stop-clone.exp -@@ -259,7 +259,7 @@ - - - -- -+ - - - -@@ -281,7 +281,7 @@ - - - -- -+ - - - -@@ -290,7 +290,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-stop.exp b/pengine/test10/bundle-order-stop.exp -index 1dff657..c0724c7 100644 ---- a/pengine/test10/bundle-order-stop.exp -+++ b/pengine/test10/bundle-order-stop.exp -@@ -128,7 +128,7 @@ - - - -- -+ - - - -@@ -261,7 +261,7 @@ - - - -- -+ - - - -@@ -549,7 +549,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-probe-order-1.dot b/pengine/test10/bundle-probe-order-1.dot -new file mode 100644 -index 0000000..8ba1e50 ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-1.dot -@@ -0,0 +1,11 @@ -+digraph "g" { -+"galera-bundle-docker-0_monitor_0 centos1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_0 centos2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-0_monitor_0 centos3" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-1_monitor_0 centos1" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-1_monitor_0 centos2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-docker-1_monitor_0 centos3" [ 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"] -+"galera-bundle-docker-2_monitor_0 centos3" [ style=bold color="green" fontcolor="black"] -+} -diff --git a/pengine/test10/bundle-probe-order-1.exp b/pengine/test10/bundle-probe-order-1.exp -new file mode 100644 -index 0000000..51d6d2e ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-1.exp -@@ -0,0 +1,83 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-probe-order-1.scores b/pengine/test10/bundle-probe-order-1.scores -new file mode 100644 -index 0000000..48e1355 ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-1.scores -@@ -0,0 +1,149 @@ -+Allocation scores: -+Using the original execution date of: 2017-10-12 07:31:56Z -+clone_color: galera-bundle-master allocation score on centos1: -INFINITY -+clone_color: galera-bundle-master allocation score on centos2: -INFINITY -+clone_color: galera-bundle-master allocation score on centos3: -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:0 allocation score on centos1: -INFINITY -+clone_color: galera:0 allocation score on centos2: -INFINITY -+clone_color: galera:0 allocation score on centos3: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:1 allocation score on centos1: -INFINITY -+clone_color: galera:1 allocation score on centos2: -INFINITY -+clone_color: galera:1 allocation score on centos3: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-1: INFINITY -+clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:2 allocation score on centos1: -INFINITY -+clone_color: galera:2 allocation score on centos2: -INFINITY -+clone_color: galera:2 allocation score on centos3: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-2: INFINITY -+container_color: galera-bundle allocation score on centos1: -INFINITY -+container_color: galera-bundle allocation score on centos2: 0 -+container_color: galera-bundle allocation score on centos3: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-0 allocation score on centos1: 0 -+container_color: galera-bundle-0 allocation score on centos2: 0 -+container_color: galera-bundle-0 allocation score on centos3: 0 -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-1 allocation score on centos1: 0 -+container_color: galera-bundle-1 allocation score on centos2: 0 -+container_color: galera-bundle-1 allocation score on centos3: 0 -+container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-2 allocation score on centos1: 0 -+container_color: galera-bundle-2 allocation score on centos2: 0 -+container_color: galera-bundle-2 allocation score on centos3: 0 -+container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on centos1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on centos2: 0 -+container_color: galera-bundle-docker-0 allocation score on centos3: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on centos1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on centos2: 0 -+container_color: galera-bundle-docker-1 allocation score on centos3: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on centos1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on centos2: 0 -+container_color: galera-bundle-docker-2 allocation score on centos3: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-master allocation score on centos1: 0 -+container_color: galera-bundle-master allocation score on centos2: 0 -+container_color: galera-bundle-master allocation score on centos3: 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:0 allocation score on centos1: 0 -+container_color: galera:0 allocation score on centos2: 0 -+container_color: galera:0 allocation score on centos3: 0 -+container_color: galera:0 allocation score on galera-bundle-0: 500 -+container_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:1 allocation score on centos1: 0 -+container_color: galera:1 allocation score on centos2: 0 -+container_color: galera:1 allocation score on centos3: 0 -+container_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-1: 500 -+container_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:2 allocation score on centos1: 0 -+container_color: galera:2 allocation score on centos2: 0 -+container_color: galera:2 allocation score on centos3: 0 -+container_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-2: 500 -+galera:0 promotion score on none: 0 -+galera:1 promotion score on none: 0 -+galera:2 promotion score on none: 0 -+native_color: galera-bundle-0 allocation score on centos1: 0 -+native_color: galera-bundle-0 allocation score on centos2: 0 -+native_color: galera-bundle-0 allocation score on centos3: 0 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-1 allocation score on centos1: 0 -+native_color: galera-bundle-1 allocation score on centos2: 0 -+native_color: galera-bundle-1 allocation score on centos3: 0 -+native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-2 allocation score on centos1: 0 -+native_color: galera-bundle-2 allocation score on centos2: 0 -+native_color: galera-bundle-2 allocation score on centos3: 0 -+native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on centos1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on centos2: 0 -+native_color: galera-bundle-docker-0 allocation score on centos3: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on centos1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on centos2: 0 -+native_color: galera-bundle-docker-1 allocation score on centos3: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on centos1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on centos2: 0 -+native_color: galera-bundle-docker-2 allocation score on centos3: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:0 allocation score on centos1: -INFINITY -+native_color: galera:0 allocation score on centos2: -INFINITY -+native_color: galera:0 allocation score on centos3: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:1 allocation score on centos1: -INFINITY -+native_color: galera:1 allocation score on centos2: -INFINITY -+native_color: galera:1 allocation score on centos3: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-1: INFINITY -+native_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:2 allocation score on centos1: -INFINITY -+native_color: galera:2 allocation score on centos2: -INFINITY -+native_color: galera:2 allocation score on centos3: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-2: INFINITY -diff --git a/pengine/test10/bundle-probe-order-1.summary b/pengine/test10/bundle-probe-order-1.summary -new file mode 100644 -index 0000000..23cc84f ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-1.summary -@@ -0,0 +1,32 @@ -+Using the original execution date of: 2017-10-12 07:31:56Z -+ -+Current cluster status: -+Online: [ centos1 centos2 centos3 ] -+ -+ Docker container set: galera-bundle [docker.io/tripleoupstream/centos-binary-mariadb:latest] (unmanaged) -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped (unmanaged) -+ galera-bundle-1 (ocf::heartbeat:galera): Stopped (unmanaged) -+ galera-bundle-2 (ocf::heartbeat:galera): Stopped (unmanaged) -+ -+Transition Summary: -+ -+Executing cluster transition: -+ * Resource action: galera-bundle-docker-0 monitor on centos3 -+ * Resource action: galera-bundle-docker-0 monitor on centos2 -+ * Resource action: galera-bundle-docker-0 monitor on centos1 -+ * Resource action: galera-bundle-docker-1 monitor on centos3 -+ * Resource action: galera-bundle-docker-1 monitor on centos2 -+ * Resource action: galera-bundle-docker-1 monitor on centos1 -+ * Resource action: galera-bundle-docker-2 monitor on centos3 -+ * Resource action: galera-bundle-docker-2 monitor on centos2 -+ * Resource action: galera-bundle-docker-2 monitor on centos1 -+Using the original execution date of: 2017-10-12 07:31:56Z -+ -+Revised cluster status: -+Online: [ centos1 centos2 centos3 ] -+ -+ Docker container set: galera-bundle [docker.io/tripleoupstream/centos-binary-mariadb:latest] (unmanaged) -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped (unmanaged) -+ galera-bundle-1 (ocf::heartbeat:galera): Stopped (unmanaged) -+ galera-bundle-2 (ocf::heartbeat:galera): Stopped (unmanaged) -+ -diff --git a/pengine/test10/bundle-probe-order-1.xml b/pengine/test10/bundle-probe-order-1.xml -new file mode 100644 -index 0000000..fb4f10d ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-1.xml -@@ -0,0 +1,95 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-probe-order-2.dot b/pengine/test10/bundle-probe-order-2.dot -new file mode 100644 -index 0000000..4fba741 ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-2.dot -@@ -0,0 +1,9 @@ -+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"] -+"galera-bundle-docker-2_monitor_0 centos3" [ style=bold color="green" fontcolor="black"] -+"galera:0_monitor_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] -+} -diff --git a/pengine/test10/bundle-probe-order-2.exp b/pengine/test10/bundle-probe-order-2.exp -new file mode 100644 -index 0000000..222ec81 ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-2.exp -@@ -0,0 +1,65 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-probe-order-2.scores b/pengine/test10/bundle-probe-order-2.scores -new file mode 100644 -index 0000000..1d2c261 ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-2.scores -@@ -0,0 +1,149 @@ -+Allocation scores: -+Using the original execution date of: 2017-10-12 07:31:57Z -+clone_color: galera-bundle-master allocation score on centos1: -INFINITY -+clone_color: galera-bundle-master allocation score on centos2: -INFINITY -+clone_color: galera-bundle-master allocation score on centos3: -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:0 allocation score on centos1: -INFINITY -+clone_color: galera:0 allocation score on centos2: -INFINITY -+clone_color: galera:0 allocation score on centos3: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:1 allocation score on centos1: -INFINITY -+clone_color: galera:1 allocation score on centos2: -INFINITY -+clone_color: galera:1 allocation score on centos3: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-1: INFINITY -+clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:2 allocation score on centos1: -INFINITY -+clone_color: galera:2 allocation score on centos2: -INFINITY -+clone_color: galera:2 allocation score on centos3: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-2: INFINITY -+container_color: galera-bundle allocation score on centos1: -INFINITY -+container_color: galera-bundle allocation score on centos2: 0 -+container_color: galera-bundle allocation score on centos3: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-0 allocation score on centos1: 0 -+container_color: galera-bundle-0 allocation score on centos2: INFINITY -+container_color: galera-bundle-0 allocation score on centos3: 0 -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-1 allocation score on centos1: 0 -+container_color: galera-bundle-1 allocation score on centos2: 0 -+container_color: galera-bundle-1 allocation score on centos3: 0 -+container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-2 allocation score on centos1: 0 -+container_color: galera-bundle-2 allocation score on centos2: 0 -+container_color: galera-bundle-2 allocation score on centos3: 0 -+container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on centos1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on centos2: INFINITY -+container_color: galera-bundle-docker-0 allocation score on centos3: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on centos1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on centos2: 0 -+container_color: galera-bundle-docker-1 allocation score on centos3: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on centos1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on centos2: 0 -+container_color: galera-bundle-docker-2 allocation score on centos3: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-master allocation score on centos1: 0 -+container_color: galera-bundle-master allocation score on centos2: 0 -+container_color: galera-bundle-master allocation score on centos3: 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:0 allocation score on centos1: 0 -+container_color: galera:0 allocation score on centos2: 0 -+container_color: galera:0 allocation score on centos3: 0 -+container_color: galera:0 allocation score on galera-bundle-0: 500 -+container_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:1 allocation score on centos1: 0 -+container_color: galera:1 allocation score on centos2: 0 -+container_color: galera:1 allocation score on centos3: 0 -+container_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-1: 500 -+container_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:2 allocation score on centos1: 0 -+container_color: galera:2 allocation score on centos2: 0 -+container_color: galera:2 allocation score on centos3: 0 -+container_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-2: 500 -+galera:0 promotion score on none: 0 -+galera:1 promotion score on none: 0 -+galera:2 promotion score on none: 0 -+native_color: galera-bundle-0 allocation score on centos1: 0 -+native_color: galera-bundle-0 allocation score on centos2: INFINITY -+native_color: galera-bundle-0 allocation score on centos3: 0 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-1 allocation score on centos1: 0 -+native_color: galera-bundle-1 allocation score on centos2: 0 -+native_color: galera-bundle-1 allocation score on centos3: 0 -+native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-2 allocation score on centos1: 0 -+native_color: galera-bundle-2 allocation score on centos2: 0 -+native_color: galera-bundle-2 allocation score on centos3: 0 -+native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on centos1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on centos2: INFINITY -+native_color: galera-bundle-docker-0 allocation score on centos3: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on centos1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on centos2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on centos3: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on centos1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on centos2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on centos3: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:0 allocation score on centos1: -INFINITY -+native_color: galera:0 allocation score on centos2: -INFINITY -+native_color: galera:0 allocation score on centos3: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:1 allocation score on centos1: -INFINITY -+native_color: galera:1 allocation score on centos2: -INFINITY -+native_color: galera:1 allocation score on centos3: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-1: INFINITY -+native_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:2 allocation score on centos1: -INFINITY -+native_color: galera:2 allocation score on centos2: -INFINITY -+native_color: galera:2 allocation score on centos3: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-2: INFINITY -diff --git a/pengine/test10/bundle-probe-order-2.summary b/pengine/test10/bundle-probe-order-2.summary -new file mode 100644 -index 0000000..e094e26 ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-2.summary -@@ -0,0 +1,32 @@ -+Using the original execution date of: 2017-10-12 07:31:57Z -+ -+Current cluster status: -+ContainerNode galera-bundle-0:galera-bundle-docker-0: maintenance -+Online: [ centos1 centos2 centos3 ] -+ -+ Docker container set: galera-bundle [docker.io/tripleoupstream/centos-binary-mariadb:latest] (unmanaged) -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped centos2 (unmanaged) -+ galera-bundle-1 (ocf::heartbeat:galera): Stopped (unmanaged) -+ galera-bundle-2 (ocf::heartbeat:galera): Stopped (unmanaged) -+ -+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 -+ * Resource action: galera-bundle-docker-2 monitor on centos2 -+ * Resource action: galera-bundle-docker-2 monitor on centos1 -+Using the original execution date of: 2017-10-12 07:31:57Z -+ -+Revised cluster status: -+ContainerNode galera-bundle-0:galera-bundle-docker-0: maintenance -+Online: [ centos1 centos2 centos3 ] -+ -+ Docker container set: galera-bundle [docker.io/tripleoupstream/centos-binary-mariadb:latest] (unmanaged) -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped centos2 (unmanaged) -+ galera-bundle-1 (ocf::heartbeat:galera): Stopped (unmanaged) -+ galera-bundle-2 (ocf::heartbeat:galera): Stopped (unmanaged) -+ -diff --git a/pengine/test10/bundle-probe-order-2.xml b/pengine/test10/bundle-probe-order-2.xml -new file mode 100644 -index 0000000..e5a3959 ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-2.xml -@@ -0,0 +1,127 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-probe-order-3.dot b/pengine/test10/bundle-probe-order-3.dot -new file mode 100644 -index 0000000..4dc54b5 ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-3.dot -@@ -0,0 +1,10 @@ -+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"] -+"galera-bundle-docker-2_monitor_0 centos3" [ style=bold color="green" fontcolor="black"] -+} -diff --git a/pengine/test10/bundle-probe-order-3.exp b/pengine/test10/bundle-probe-order-3.exp -new file mode 100644 -index 0000000..5546bc9 ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-3.exp -@@ -0,0 +1,74 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-probe-order-3.scores b/pengine/test10/bundle-probe-order-3.scores -new file mode 100644 -index 0000000..d3338e4 ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-3.scores -@@ -0,0 +1,149 @@ -+Allocation scores: -+Using the original execution date of: 2017-10-12 07:31:57Z -+clone_color: galera-bundle-master allocation score on centos1: -INFINITY -+clone_color: galera-bundle-master allocation score on centos2: -INFINITY -+clone_color: galera-bundle-master allocation score on centos3: -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:0 allocation score on centos1: -INFINITY -+clone_color: galera:0 allocation score on centos2: -INFINITY -+clone_color: galera:0 allocation score on centos3: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:1 allocation score on centos1: -INFINITY -+clone_color: galera:1 allocation score on centos2: -INFINITY -+clone_color: galera:1 allocation score on centos3: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:1 allocation score on galera-bundle-1: INFINITY -+clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+clone_color: galera:2 allocation score on centos1: -INFINITY -+clone_color: galera:2 allocation score on centos2: -INFINITY -+clone_color: galera:2 allocation score on centos3: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+clone_color: galera:2 allocation score on galera-bundle-2: INFINITY -+container_color: galera-bundle allocation score on centos1: -INFINITY -+container_color: galera-bundle allocation score on centos2: 0 -+container_color: galera-bundle allocation score on centos3: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-0 allocation score on centos1: 0 -+container_color: galera-bundle-0 allocation score on centos2: 0 -+container_color: galera-bundle-0 allocation score on centos3: 0 -+container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-1 allocation score on centos1: 0 -+container_color: galera-bundle-1 allocation score on centos2: 0 -+container_color: galera-bundle-1 allocation score on centos3: 0 -+container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-2 allocation score on centos1: 0 -+container_color: galera-bundle-2 allocation score on centos2: 0 -+container_color: galera-bundle-2 allocation score on centos3: 0 -+container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on centos1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on centos2: INFINITY -+container_color: galera-bundle-docker-0 allocation score on centos3: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on centos1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on centos2: 0 -+container_color: galera-bundle-docker-1 allocation score on centos3: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on centos1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on centos2: 0 -+container_color: galera-bundle-docker-2 allocation score on centos3: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-master allocation score on centos1: 0 -+container_color: galera-bundle-master allocation score on centos2: 0 -+container_color: galera-bundle-master allocation score on centos3: 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:0 allocation score on centos1: 0 -+container_color: galera:0 allocation score on centos2: 0 -+container_color: galera:0 allocation score on centos3: 0 -+container_color: galera:0 allocation score on galera-bundle-0: 500 -+container_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:1 allocation score on centos1: 0 -+container_color: galera:1 allocation score on centos2: 0 -+container_color: galera:1 allocation score on centos3: 0 -+container_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:1 allocation score on galera-bundle-1: 500 -+container_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+container_color: galera:2 allocation score on centos1: 0 -+container_color: galera:2 allocation score on centos2: 0 -+container_color: galera:2 allocation score on centos3: 0 -+container_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+container_color: galera:2 allocation score on galera-bundle-2: 500 -+galera:0 promotion score on none: 0 -+galera:1 promotion score on none: 0 -+galera:2 promotion score on none: 0 -+native_color: galera-bundle-0 allocation score on centos1: 0 -+native_color: galera-bundle-0 allocation score on centos2: 0 -+native_color: galera-bundle-0 allocation score on centos3: 0 -+native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-1 allocation score on centos1: 0 -+native_color: galera-bundle-1 allocation score on centos2: 0 -+native_color: galera-bundle-1 allocation score on centos3: 0 -+native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-2 allocation score on centos1: 0 -+native_color: galera-bundle-2 allocation score on centos2: 0 -+native_color: galera-bundle-2 allocation score on centos3: 0 -+native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on centos1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on centos2: INFINITY -+native_color: galera-bundle-docker-0 allocation score on centos3: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on centos1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on centos2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on centos3: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on centos1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on centos2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on centos3: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:0 allocation score on centos1: -INFINITY -+native_color: galera:0 allocation score on centos2: -INFINITY -+native_color: galera:0 allocation score on centos3: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:0 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:1 allocation score on centos1: -INFINITY -+native_color: galera:1 allocation score on centos2: -INFINITY -+native_color: galera:1 allocation score on centos3: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:1 allocation score on galera-bundle-1: INFINITY -+native_color: galera:1 allocation score on galera-bundle-2: -INFINITY -+native_color: galera:2 allocation score on centos1: -INFINITY -+native_color: galera:2 allocation score on centos2: -INFINITY -+native_color: galera:2 allocation score on centos3: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-0: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-1: -INFINITY -+native_color: galera:2 allocation score on galera-bundle-2: INFINITY -diff --git a/pengine/test10/bundle-probe-order-3.summary b/pengine/test10/bundle-probe-order-3.summary -new file mode 100644 -index 0000000..4faaa6d ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-3.summary -@@ -0,0 +1,31 @@ -+Using the original execution date of: 2017-10-12 07:31:57Z -+ -+Current cluster status: -+Online: [ centos1 centos2 centos3 ] -+ -+ Docker container set: galera-bundle [docker.io/tripleoupstream/centos-binary-mariadb:latest] (unmanaged) -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped centos2 (unmanaged) -+ galera-bundle-1 (ocf::heartbeat:galera): Stopped (unmanaged) -+ galera-bundle-2 (ocf::heartbeat:galera): Stopped (unmanaged) -+ -+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 -+ * Resource action: galera-bundle-docker-1 monitor on centos2 -+ * Resource action: galera-bundle-docker-2 monitor on centos3 -+ * Resource action: galera-bundle-docker-2 monitor on centos2 -+ * Resource action: galera-bundle-docker-2 monitor on centos1 -+Using the original execution date of: 2017-10-12 07:31:57Z -+ -+Revised cluster status: -+Online: [ centos1 centos2 centos3 ] -+ -+ Docker container set: galera-bundle [docker.io/tripleoupstream/centos-binary-mariadb:latest] (unmanaged) -+ galera-bundle-0 (ocf::heartbeat:galera): Stopped centos2 (unmanaged) -+ galera-bundle-1 (ocf::heartbeat:galera): Stopped (unmanaged) -+ galera-bundle-2 (ocf::heartbeat:galera): Stopped (unmanaged) -+ -diff --git a/pengine/test10/bundle-probe-order-3.xml b/pengine/test10/bundle-probe-order-3.xml -new file mode 100644 -index 0000000..c33543e ---- /dev/null -+++ b/pengine/test10/bundle-probe-order-3.xml -@@ -0,0 +1,117 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.8.3.1 - diff --git a/SOURCES/100-bundle-fixes.patch b/SOURCES/100-bundle-fixes.patch deleted file mode 100644 index 96eb61e..0000000 --- a/SOURCES/100-bundle-fixes.patch +++ /dev/null @@ -1,7518 +0,0 @@ -From cacbac0677bb5285f16bdb16272dbbe02a7984d2 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 23 Oct 2017 12:06:46 +1100 -Subject: [PATCH 1/6] Fix: PE: Exclude resources and nodes from the - symmetric_default constraint in some circumstances - -This is particularly relevant to bundles where only specific nodes -are allowed to a particular resource. Previously, even if we set the -tuple up correctly during container_unpack(), common_unpack() would -re-add the full node set afterwards recursively via the parent. - -Similarly, the bundle "nodes" are not eligable for running any other -resource than the one container_unpack() assigned it and there is no -reason to add it to their allowed_nodes list. - -Keeping the allowed_nodes list concise also ensures crm_resource ---cleanup does the bare minimum necessary when the resource is in an -unknown state. ---- - lib/pengine/container.c | 9 +++++++++ - lib/pengine/utils.c | 16 +++++++++++++++- - 2 files changed, 24 insertions(+), 1 deletion(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index 75c5961..b66c57d 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -463,8 +463,15 @@ create_remote_resource( - tuple->node->rsc_discover_mode = pe_discover_exclusive; - - /* Ensure the node shows up as allowed and with the correct discovery set */ -+ g_hash_table_destroy(tuple->child->allowed_nodes); -+ tuple->child->allowed_nodes = g_hash_table_new_full(crm_str_hash, g_str_equal, NULL, g_hash_destroy_str); - g_hash_table_insert(tuple->child->allowed_nodes, (gpointer) tuple->node->details->id, node_copy(tuple->node)); - -+ { -+ node_t *copy = node_copy(tuple->node); -+ copy->weight = -INFINITY; -+ g_hash_table_insert(tuple->child->parent->allowed_nodes, (gpointer) tuple->node->details->id, copy); -+ } - if (common_unpack(xml_remote, &tuple->remote, parent, data_set) == FALSE) { - return FALSE; - } -@@ -478,6 +485,7 @@ create_remote_resource( - } - - tuple->node->details->remote_rsc = tuple->remote; -+ tuple->remote->container = tuple->docker; // Ensures is_container_remote_node() functions correctly immediately - - /* #kind is irrelevant to bundles since it is only used in location - * constraint rules, and those don't matter for resources inside -@@ -761,6 +769,7 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) - for(childIter = container_data->child->children; childIter != NULL; childIter = childIter->next) { - container_grouping_t *tuple = calloc(1, sizeof(container_grouping_t)); - tuple->child = childIter->data; -+ tuple->child->exclusive_discover = TRUE; - tuple->offset = lpc++; - - // Ensure the child's notify gets set based on the underlying primitive's value -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index 780eb17..d9cace2 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -1447,7 +1447,21 @@ resource_node_score(resource_t * rsc, node_t * node, int score, const char *tag) - { - node_t *match = NULL; - -- if (rsc->children) { -+ if(rsc->exclusive_discover && safe_str_eq(tag, "symmetric_default")) { -+ /* A terrible implementation via string comparision but -+ * exclusive resources should not have the symmetric_default -+ * constraint applied to them. -+ */ -+ return; -+ -+ } else if(node->rsc_discover_mode == pe_discover_never && safe_str_eq(tag, "symmetric_default")) { -+ /* Another terrible implementation via string comparision but -+ * exclusive node should also not be included in the -+ * symmetric_default constraint. -+ */ -+ return; -+ -+ } else if (rsc->children) { - GListPtr gIter = rsc->children; - - for (; gIter != NULL; gIter = gIter->next) { --- -1.8.3.1 - - -From f764f368e28b5713cf5061844869b78e1f8a5384 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 23 Oct 2017 13:51:41 +1100 -Subject: [PATCH 2/6] Test: PE: Exclude resources and nodes from the - symmetric_default constraint in some circumstances - ---- - pengine/test10/bundle-nested-colocation.scores | 159 ---- - pengine/test10/bundle-order-fencing.exp | 44 +- - pengine/test10/bundle-order-fencing.scores | 825 +------------------ - pengine/test10/bundle-order-partial-start-2.exp | 6 +- - pengine/test10/bundle-order-partial-start-2.scores | 148 +--- - pengine/test10/bundle-order-partial-start.exp | 6 +- - pengine/test10/bundle-order-partial-start.scores | 148 +--- - pengine/test10/bundle-order-partial-stop.exp | 10 +- - pengine/test10/bundle-order-partial-stop.scores | 132 +-- - pengine/test10/bundle-order-startup-clone-2.exp | 30 +- - pengine/test10/bundle-order-startup-clone-2.scores | 315 ------- - pengine/test10/bundle-order-startup-clone.exp | 4 +- - pengine/test10/bundle-order-startup-clone.scores | 49 -- - pengine/test10/bundle-order-startup.exp | 4 +- - pengine/test10/bundle-order-startup.scores | 132 +-- - pengine/test10/bundle-order-stop-clone.scores | 318 ------- - pengine/test10/bundle-order-stop.exp | 10 +- - pengine/test10/bundle-order-stop.scores | 132 +-- - pengine/test10/bundle-probe-order-1.scores | 84 -- - pengine/test10/bundle-probe-order-2.scores | 84 -- - pengine/test10/bundle-probe-order-3.scores | 84 -- - pengine/test10/remote-fence-unclean-3.scores | 912 +-------------------- - 22 files changed, 105 insertions(+), 3531 deletions(-) - -diff --git a/pengine/test10/bundle-nested-colocation.scores b/pengine/test10/bundle-nested-colocation.scores -index 83d776d..70a500c 100644 ---- a/pengine/test10/bundle-nested-colocation.scores -+++ b/pengine/test10/bundle-nested-colocation.scores -@@ -12,41 +12,8 @@ clone_color: rabbitmq-bundle-clone allocation score on overcloud-rabbit-2: -INFI - 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 overcloud-controller-0: -INFINITY --clone_color: rabbitmq:0 allocation score on overcloud-controller-1: -INFINITY --clone_color: rabbitmq:0 allocation score on overcloud-controller-2: -INFINITY --clone_color: rabbitmq:0 allocation score on overcloud-galera-0: -INFINITY --clone_color: rabbitmq:0 allocation score on overcloud-galera-1: -INFINITY --clone_color: rabbitmq:0 allocation score on overcloud-galera-2: -INFINITY --clone_color: rabbitmq:0 allocation score on overcloud-rabbit-0: -INFINITY --clone_color: rabbitmq:0 allocation score on overcloud-rabbit-1: -INFINITY --clone_color: rabbitmq:0 allocation score on overcloud-rabbit-2: -INFINITY - clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-controller-0: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-controller-1: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-controller-2: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-galera-0: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-galera-1: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-galera-2: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-rabbit-0: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-rabbit-1: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-rabbit-2: -INFINITY --clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY --clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-controller-0: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-controller-1: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-controller-2: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-galera-0: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-galera-1: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-galera-2: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-rabbit-0: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-rabbit-1: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-rabbit-2: -INFINITY --clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-1: -INFINITY - clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY - container_color: galera-bundle allocation score on overcloud-controller-0: -INFINITY - container_color: galera-bundle allocation score on overcloud-controller-1: -INFINITY -@@ -57,9 +24,6 @@ container_color: galera-bundle allocation score on overcloud-galera-2: 0 - container_color: galera-bundle allocation score on overcloud-rabbit-0: -INFINITY - container_color: galera-bundle allocation score on overcloud-rabbit-1: -INFINITY - container_color: galera-bundle allocation score on overcloud-rabbit-2: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-2: -INFINITY - container_color: galera-bundle-docker-0 allocation score on overcloud-controller-0: -INFINITY - container_color: galera-bundle-docker-0 allocation score on overcloud-controller-1: -INFINITY - container_color: galera-bundle-docker-0 allocation score on overcloud-controller-2: -INFINITY -@@ -69,9 +33,6 @@ container_color: galera-bundle-docker-0 allocation score on overcloud-galera-2: - container_color: galera-bundle-docker-0 allocation score on overcloud-rabbit-0: -INFINITY - container_color: galera-bundle-docker-0 allocation score on overcloud-rabbit-1: -INFINITY - container_color: galera-bundle-docker-0 allocation score on overcloud-rabbit-2: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: galera-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY - container_color: galera-bundle-docker-1 allocation score on overcloud-controller-1: -INFINITY - container_color: galera-bundle-docker-1 allocation score on overcloud-controller-2: -INFINITY -@@ -81,9 +42,6 @@ container_color: galera-bundle-docker-1 allocation score on overcloud-galera-2: - container_color: galera-bundle-docker-1 allocation score on overcloud-rabbit-0: -INFINITY - container_color: galera-bundle-docker-1 allocation score on overcloud-rabbit-1: -INFINITY - container_color: galera-bundle-docker-1 allocation score on overcloud-rabbit-2: -INFINITY --container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: galera-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY - container_color: galera-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY - container_color: galera-bundle-docker-2 allocation score on overcloud-controller-2: -INFINITY -@@ -93,9 +51,6 @@ container_color: galera-bundle-docker-2 allocation score on overcloud-galera-2: - container_color: galera-bundle-docker-2 allocation score on overcloud-rabbit-0: -INFINITY - container_color: galera-bundle-docker-2 allocation score on overcloud-rabbit-1: -INFINITY - container_color: galera-bundle-docker-2 allocation score on overcloud-rabbit-2: -INFINITY --container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle allocation score on overcloud-controller-0: -INFINITY - container_color: rabbitmq-bundle allocation score on overcloud-controller-1: -INFINITY - container_color: rabbitmq-bundle allocation score on overcloud-controller-2: -INFINITY -@@ -105,9 +60,6 @@ container_color: rabbitmq-bundle allocation score on overcloud-galera-2: -INFINI - container_color: rabbitmq-bundle allocation score on overcloud-rabbit-0: 1 - container_color: rabbitmq-bundle allocation score on overcloud-rabbit-1: 1 - container_color: rabbitmq-bundle allocation score on overcloud-rabbit-2: 1 --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on overcloud-controller-0: 0 - container_color: rabbitmq-bundle-0 allocation score on overcloud-controller-1: 0 - container_color: rabbitmq-bundle-0 allocation score on overcloud-controller-2: 0 -@@ -117,9 +69,6 @@ container_color: rabbitmq-bundle-0 allocation score on overcloud-galera-2: 0 - container_color: rabbitmq-bundle-0 allocation score on overcloud-rabbit-0: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on overcloud-rabbit-1: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on overcloud-rabbit-2: -INFINITY --container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-1 allocation score on overcloud-controller-0: 0 - container_color: rabbitmq-bundle-1 allocation score on overcloud-controller-1: 0 - container_color: rabbitmq-bundle-1 allocation score on overcloud-controller-2: 0 -@@ -129,9 +78,6 @@ container_color: rabbitmq-bundle-1 allocation score on overcloud-galera-2: 0 - container_color: rabbitmq-bundle-1 allocation score on overcloud-rabbit-0: -INFINITY - container_color: rabbitmq-bundle-1 allocation score on overcloud-rabbit-1: -INFINITY - container_color: rabbitmq-bundle-1 allocation score on overcloud-rabbit-2: -INFINITY --container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-2 allocation score on overcloud-controller-0: 0 - container_color: rabbitmq-bundle-2 allocation score on overcloud-controller-1: 0 - container_color: rabbitmq-bundle-2 allocation score on overcloud-controller-2: 0 -@@ -141,9 +87,6 @@ container_color: rabbitmq-bundle-2 allocation score on overcloud-galera-2: 0 - container_color: rabbitmq-bundle-2 allocation score on overcloud-rabbit-0: -INFINITY - container_color: rabbitmq-bundle-2 allocation score on overcloud-rabbit-1: -INFINITY - container_color: rabbitmq-bundle-2 allocation score on overcloud-rabbit-2: -INFINITY --container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-clone allocation score on overcloud-controller-0: 0 - container_color: rabbitmq-bundle-clone allocation score on overcloud-controller-1: 0 - container_color: rabbitmq-bundle-clone allocation score on overcloud-controller-2: 0 -@@ -165,9 +108,6 @@ container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-galera-2 - container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-rabbit-0: INFINITY - container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-rabbit-1: 1 - container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-rabbit-2: 1 --container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY - container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-1: -INFINITY - container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-2: -INFINITY -@@ -177,9 +117,6 @@ container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-galera-2 - container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-rabbit-0: 1 - container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-rabbit-1: INFINITY - container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-rabbit-2: 1 --container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY - container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY - container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-2: -INFINITY -@@ -189,44 +126,8 @@ container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-galera-2 - container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-rabbit-0: 1 - container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-rabbit-1: 1 - container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-rabbit-2: INFINITY --container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: rabbitmq:0 allocation score on overcloud-controller-0: 0 --container_color: rabbitmq:0 allocation score on overcloud-controller-1: 0 --container_color: rabbitmq:0 allocation score on overcloud-controller-2: 0 --container_color: rabbitmq:0 allocation score on overcloud-galera-0: 0 --container_color: rabbitmq:0 allocation score on overcloud-galera-1: 0 --container_color: rabbitmq:0 allocation score on overcloud-galera-2: 0 --container_color: rabbitmq:0 allocation score on overcloud-rabbit-0: 0 --container_color: rabbitmq:0 allocation score on overcloud-rabbit-1: 0 --container_color: rabbitmq:0 allocation score on overcloud-rabbit-2: 0 - container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 500 --container_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: rabbitmq:1 allocation score on overcloud-controller-0: 0 --container_color: rabbitmq:1 allocation score on overcloud-controller-1: 0 --container_color: rabbitmq:1 allocation score on overcloud-controller-2: 0 --container_color: rabbitmq:1 allocation score on overcloud-galera-0: 0 --container_color: rabbitmq:1 allocation score on overcloud-galera-1: 0 --container_color: rabbitmq:1 allocation score on overcloud-galera-2: 0 --container_color: rabbitmq:1 allocation score on overcloud-rabbit-0: 0 --container_color: rabbitmq:1 allocation score on overcloud-rabbit-1: 0 --container_color: rabbitmq:1 allocation score on overcloud-rabbit-2: 0 --container_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: 500 --container_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: rabbitmq:2 allocation score on overcloud-controller-0: 0 --container_color: rabbitmq:2 allocation score on overcloud-controller-1: 0 --container_color: rabbitmq:2 allocation score on overcloud-controller-2: 0 --container_color: rabbitmq:2 allocation score on overcloud-galera-0: 0 --container_color: rabbitmq:2 allocation score on overcloud-galera-1: 0 --container_color: rabbitmq:2 allocation score on overcloud-galera-2: 0 --container_color: rabbitmq:2 allocation score on overcloud-rabbit-0: 0 --container_color: rabbitmq:2 allocation score on overcloud-rabbit-1: 0 --container_color: rabbitmq:2 allocation score on overcloud-rabbit-2: 0 --container_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq:2 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: 500 - native_color: galera-bundle-docker-0 allocation score on overcloud-controller-0: -INFINITY - native_color: galera-bundle-docker-0 allocation score on overcloud-controller-1: -INFINITY -@@ -237,9 +138,6 @@ native_color: galera-bundle-docker-0 allocation score on overcloud-galera-2: 0 - native_color: galera-bundle-docker-0 allocation score on overcloud-rabbit-0: -INFINITY - native_color: galera-bundle-docker-0 allocation score on overcloud-rabbit-1: -INFINITY - native_color: galera-bundle-docker-0 allocation score on overcloud-rabbit-2: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: galera-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY - native_color: galera-bundle-docker-1 allocation score on overcloud-controller-1: -INFINITY - native_color: galera-bundle-docker-1 allocation score on overcloud-controller-2: -INFINITY -@@ -249,9 +147,6 @@ native_color: galera-bundle-docker-1 allocation score on overcloud-galera-2: 0 - native_color: galera-bundle-docker-1 allocation score on overcloud-rabbit-0: -INFINITY - native_color: galera-bundle-docker-1 allocation score on overcloud-rabbit-1: -INFINITY - native_color: galera-bundle-docker-1 allocation score on overcloud-rabbit-2: -INFINITY --native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: galera-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY - native_color: galera-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY - native_color: galera-bundle-docker-2 allocation score on overcloud-controller-2: -INFINITY -@@ -261,9 +156,6 @@ native_color: galera-bundle-docker-2 allocation score on overcloud-galera-2: INF - native_color: galera-bundle-docker-2 allocation score on overcloud-rabbit-0: -INFINITY - native_color: galera-bundle-docker-2 allocation score on overcloud-rabbit-1: -INFINITY - native_color: galera-bundle-docker-2 allocation score on overcloud-rabbit-2: -INFINITY --native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: overcloud-rabbit-0 allocation score on overcloud-controller-0: INFINITY - native_color: overcloud-rabbit-0 allocation score on overcloud-controller-1: 0 - native_color: overcloud-rabbit-0 allocation score on overcloud-controller-2: 0 -@@ -300,9 +192,6 @@ native_color: rabbitmq-bundle-0 allocation score on overcloud-galera-2: -INFINIT - native_color: rabbitmq-bundle-0 allocation score on overcloud-rabbit-0: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on overcloud-rabbit-1: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on overcloud-rabbit-2: -INFINITY --native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: rabbitmq-bundle-1 allocation score on overcloud-controller-0: -INFINITY - native_color: rabbitmq-bundle-1 allocation score on overcloud-controller-1: 0 - native_color: rabbitmq-bundle-1 allocation score on overcloud-controller-2: -INFINITY -@@ -312,9 +201,6 @@ native_color: rabbitmq-bundle-1 allocation score on overcloud-galera-2: -INFINIT - native_color: rabbitmq-bundle-1 allocation score on overcloud-rabbit-0: -INFINITY - native_color: rabbitmq-bundle-1 allocation score on overcloud-rabbit-1: -INFINITY - native_color: rabbitmq-bundle-1 allocation score on overcloud-rabbit-2: -INFINITY --native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: rabbitmq-bundle-2 allocation score on overcloud-controller-0: -INFINITY - native_color: rabbitmq-bundle-2 allocation score on overcloud-controller-1: -INFINITY - native_color: rabbitmq-bundle-2 allocation score on overcloud-controller-2: 0 -@@ -324,9 +210,6 @@ native_color: rabbitmq-bundle-2 allocation score on overcloud-galera-2: -INFINIT - native_color: rabbitmq-bundle-2 allocation score on overcloud-rabbit-0: -INFINITY - native_color: rabbitmq-bundle-2 allocation score on overcloud-rabbit-1: -INFINITY - native_color: rabbitmq-bundle-2 allocation score on overcloud-rabbit-2: -INFINITY --native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-0: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-1: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-2: -INFINITY -@@ -336,9 +219,6 @@ native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-galera-2: - - native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-rabbit-0: INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-rabbit-1: -9999 - native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-rabbit-2: -9999 --native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY - native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-1: -INFINITY - native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-2: -INFINITY -@@ -348,9 +228,6 @@ native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-galera-2: - - native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-rabbit-0: -INFINITY - native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-rabbit-1: INFINITY - native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-rabbit-2: -9999 --native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY - native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY - native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-2: -INFINITY -@@ -360,42 +237,6 @@ native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-galera-2: - - native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-rabbit-0: -INFINITY - native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-rabbit-1: -INFINITY - native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-rabbit-2: INFINITY --native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-controller-0: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-controller-1: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-controller-2: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-galera-0: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-galera-1: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-galera-2: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-rabbit-0: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-rabbit-1: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-rabbit-2: -INFINITY - native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --native_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-controller-0: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-controller-1: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-controller-2: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-galera-0: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-galera-1: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-galera-2: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-rabbit-0: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-rabbit-1: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-rabbit-2: -INFINITY --native_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY --native_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-controller-0: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-controller-1: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-controller-2: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-galera-0: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-galera-1: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-galera-2: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-rabbit-0: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-rabbit-1: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-rabbit-2: -INFINITY --native_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq:2 allocation score on rabbitmq-bundle-1: -INFINITY - native_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY -diff --git a/pengine/test10/bundle-order-fencing.exp b/pengine/test10/bundle-order-fencing.exp -index dab0dd4..c4e4ec1 100644 ---- a/pengine/test10/bundle-order-fencing.exp -+++ b/pengine/test10/bundle-order-fencing.exp -@@ -632,7 +632,7 @@ - - - -- -+ - - - -@@ -645,7 +645,7 @@ - - - -- -+ - - - -@@ -658,7 +658,7 @@ - - - -- -+ - - - -@@ -700,7 +700,7 @@ - - - -- -+ - - - -@@ -721,7 +721,7 @@ - - - -- -+ - - - -@@ -737,7 +737,7 @@ - - - -- -+ - - - -@@ -750,7 +750,7 @@ - - - -- -+ - - - -@@ -763,7 +763,7 @@ - - - -- -+ - - - -@@ -776,7 +776,7 @@ - - - -- -+ - - - -@@ -789,7 +789,7 @@ - - - -- -+ - - - -@@ -802,7 +802,7 @@ - - - -- -+ - - - -@@ -815,7 +815,7 @@ - - - -- -+ - - - -@@ -828,7 +828,7 @@ - - - -- -+ - - - -@@ -872,7 +872,7 @@ - - - -- -+ - - - -@@ -912,7 +912,7 @@ - - - -- -+ - - - -@@ -925,7 +925,7 @@ - - - -- -+ - - - -@@ -938,7 +938,7 @@ - - - -- -+ - - - -@@ -951,7 +951,7 @@ - - - -- -+ - - - -@@ -964,7 +964,7 @@ - - - -- -+ - - - -@@ -977,7 +977,7 @@ - - - -- -+ - - - -@@ -990,7 +990,7 @@ - - - -- -+ - - - -@@ -1003,7 +1003,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-fencing.scores b/pengine/test10/bundle-order-fencing.scores -index 25c3e79..19649f2 100644 ---- a/pengine/test10/bundle-order-fencing.scores -+++ b/pengine/test10/bundle-order-fencing.scores -@@ -6,207 +6,57 @@ clone_color: galera-bundle-master allocation score on controller-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 rabbitmq-bundle-0: -INFINITY --clone_color: galera-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: galera-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: galera:0 allocation score on controller-0: -INFINITY --clone_color: galera:0 allocation score on controller-1: -INFINITY --clone_color: galera:0 allocation score on controller-2: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY --clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: galera:1 allocation score on controller-0: -INFINITY --clone_color: galera:1 allocation score on controller-1: -INFINITY --clone_color: galera:1 allocation score on controller-2: -INFINITY --clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY - clone_color: galera:1 allocation score on galera-bundle-1: INFINITY --clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: galera:2 allocation score on controller-0: -INFINITY --clone_color: galera:2 allocation score on controller-1: -INFINITY --clone_color: galera:2 allocation score on controller-2: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY - clone_color: galera:2 allocation score on galera-bundle-2: INFINITY --clone_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: galera:2 allocation score on rabbitmq-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 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 controller-0: -INFINITY --clone_color: rabbitmq:0 allocation score on controller-1: -INFINITY --clone_color: rabbitmq:0 allocation score on controller-2: -INFINITY - clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: rabbitmq:1 allocation score on controller-0: -INFINITY --clone_color: rabbitmq:1 allocation score on controller-1: -INFINITY --clone_color: rabbitmq:1 allocation score on controller-2: -INFINITY --clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY --clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: rabbitmq:2 allocation score on controller-0: -INFINITY --clone_color: rabbitmq:2 allocation score on controller-1: -INFINITY --clone_color: rabbitmq:2 allocation score on controller-2: -INFINITY --clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: rabbitmq:2 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 galera-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY --clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: redis-bundle-master allocation score on rabbitmq-bundle-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 controller-0: -INFINITY --clone_color: redis:0 allocation score on controller-1: -INFINITY --clone_color: redis:0 allocation score on controller-2: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-1: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-2: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY - clone_color: redis:0 allocation score on redis-bundle-0: INFINITY --clone_color: redis:0 allocation score on redis-bundle-1: -INFINITY --clone_color: redis:0 allocation score on redis-bundle-2: -INFINITY --clone_color: redis:1 allocation score on controller-0: -INFINITY --clone_color: redis:1 allocation score on controller-1: -INFINITY --clone_color: redis:1 allocation score on controller-2: -INFINITY --clone_color: redis:1 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:1 allocation score on galera-bundle-1: -INFINITY --clone_color: redis:1 allocation score on galera-bundle-2: -INFINITY --clone_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: redis:1 allocation score on redis-bundle-0: -INFINITY - clone_color: redis:1 allocation score on redis-bundle-1: INFINITY --clone_color: redis:1 allocation score on redis-bundle-2: -INFINITY --clone_color: redis:2 allocation score on controller-0: -INFINITY --clone_color: redis:2 allocation score on controller-1: -INFINITY --clone_color: redis:2 allocation score on controller-2: -INFINITY --clone_color: redis:2 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:2 allocation score on galera-bundle-1: -INFINITY --clone_color: redis:2 allocation score on galera-bundle-2: -INFINITY --clone_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: redis:2 allocation score on redis-bundle-0: -INFINITY --clone_color: redis:2 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: 0 - container_color: galera-bundle allocation score on controller-1: 0 - container_color: galera-bundle allocation score on controller-2: 0 --container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-2: -INFINITY - container_color: galera-bundle-0 allocation score on controller-0: INFINITY - 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 galera-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY --container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: galera-bundle-1 allocation score on controller-0: 0 - container_color: galera-bundle-1 allocation score on controller-1: INFINITY - container_color: galera-bundle-1 allocation score on controller-2: 0 --container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY --container_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-1 allocation score on rabbitmq-bundle-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: INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY --container_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-2 allocation score on rabbitmq-bundle-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: 0 - container_color: galera-bundle-docker-0 allocation score on controller-2: 0 --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: galera-bundle-docker-1 allocation score on controller-0: 0 - container_color: galera-bundle-docker-1 allocation score on controller-1: INFINITY - container_color: galera-bundle-docker-1 allocation score on controller-2: 0 --container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: galera-bundle-docker-2 allocation score on controller-0: 0 - container_color: galera-bundle-docker-2 allocation score on controller-1: 0 - container_color: galera-bundle-docker-2 allocation score on controller-2: INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-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 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 rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY --container_color: galera:0 allocation score on controller-0: 0 --container_color: galera:0 allocation score on controller-1: 0 --container_color: galera:0 allocation score on controller-2: 0 - container_color: galera:0 allocation score on galera-bundle-0: INFINITY --container_color: galera:0 allocation score on galera-bundle-1: -INFINITY --container_color: galera:0 allocation score on galera-bundle-2: -INFINITY --container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: galera:1 allocation score on controller-0: 0 --container_color: galera:1 allocation score on controller-1: 0 --container_color: galera:1 allocation score on controller-2: 0 --container_color: galera:1 allocation score on galera-bundle-0: -INFINITY - container_color: galera:1 allocation score on galera-bundle-1: INFINITY --container_color: galera:1 allocation score on galera-bundle-2: -INFINITY --container_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: galera:2 allocation score on controller-0: 0 --container_color: galera:2 allocation score on controller-1: 0 --container_color: galera:2 allocation score on controller-2: 0 --container_color: galera:2 allocation score on galera-bundle-0: -INFINITY --container_color: galera:2 allocation score on galera-bundle-1: -INFINITY - container_color: galera:2 allocation score on galera-bundle-2: INFINITY --container_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera:2 allocation score on rabbitmq-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 -@@ -228,69 +78,6 @@ 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 galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-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 -@@ -312,69 +99,6 @@ container_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFI - 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 galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-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 -@@ -396,69 +120,6 @@ container_color: haproxy-bundle-docker-1 allocation score on controller-2: INFIN - 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 galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -@@ -480,99 +141,27 @@ container_color: haproxy-bundle-docker-2 allocation score on controller-2: -INFI - 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: 0 --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY - container_color: rabbitmq-bundle allocation score on controller-0: 0 - container_color: rabbitmq-bundle allocation score on controller-1: 0 - container_color: rabbitmq-bundle allocation score on controller-2: 0 --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on controller-0: INFINITY - container_color: rabbitmq-bundle-0 allocation score on controller-1: 0 - container_color: rabbitmq-bundle-0 allocation score on controller-2: 0 --container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-1 allocation score on controller-0: 0 - container_color: rabbitmq-bundle-1 allocation score on controller-1: INFINITY - container_color: rabbitmq-bundle-1 allocation score on controller-2: 0 --container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-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 rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-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 rabbitmq-bundle-0: 0 --container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-1: 0 --container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-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: 0 - container_color: rabbitmq-bundle-docker-0 allocation score on controller-2: 0 -@@ -582,164 +171,44 @@ container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-2: - container_color: rabbitmq-bundle-docker-1 allocation score on controller-0: 0 - container_color: rabbitmq-bundle-docker-1 allocation score on controller-1: INFINITY - container_color: rabbitmq-bundle-docker-1 allocation score on controller-2: 0 --container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-docker-2 allocation score on controller-0: 0 - container_color: rabbitmq-bundle-docker-2 allocation score on controller-1: 0 - container_color: rabbitmq-bundle-docker-2 allocation score on controller-2: INFINITY --container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: rabbitmq:0 allocation score on controller-0: 0 --container_color: rabbitmq:0 allocation score on controller-1: 0 --container_color: rabbitmq:0 allocation score on controller-2: 0 - container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --container_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: 0 --container_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: 0 --container_color: rabbitmq:1 allocation score on controller-0: 0 --container_color: rabbitmq:1 allocation score on controller-1: 0 --container_color: rabbitmq:1 allocation score on controller-2: 0 --container_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: 0 - container_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY --container_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: 0 --container_color: rabbitmq:2 allocation score on controller-0: 0 --container_color: rabbitmq:2 allocation score on controller-1: 0 --container_color: rabbitmq:2 allocation score on controller-2: 0 --container_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: 0 --container_color: rabbitmq:2 allocation score on rabbitmq-bundle-1: 0 - 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 galera-bundle-0: -INFINITY --container_color: redis-bundle allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle allocation score on galera-bundle-2: -INFINITY --container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-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 galera-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY --container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY - container_color: redis-bundle-1 allocation score on controller-0: 0 - container_color: redis-bundle-1 allocation score on controller-1: INFINITY - container_color: redis-bundle-1 allocation score on controller-2: 0 --container_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY --container_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-1 allocation score on redis-bundle-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 galera-bundle-0: -INFINITY --container_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY --container_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-2 allocation score on redis-bundle-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 galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-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: INFINITY - container_color: redis-bundle-docker-1 allocation score on controller-2: 0 --container_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-docker-1 allocation score on redis-bundle-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 galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-docker-2 allocation score on redis-bundle-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 galera-bundle-0: -INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY --container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY - 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 controller-0: 0 --container_color: redis:0 allocation score on controller-1: 0 --container_color: redis:0 allocation score on controller-2: 0 --container_color: redis:0 allocation score on galera-bundle-0: -INFINITY --container_color: redis:0 allocation score on galera-bundle-1: -INFINITY --container_color: redis:0 allocation score on galera-bundle-2: -INFINITY --container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: redis:0 allocation score on redis-bundle-0: INFINITY --container_color: redis:0 allocation score on redis-bundle-1: -INFINITY --container_color: redis:0 allocation score on redis-bundle-2: -INFINITY --container_color: redis:1 allocation score on controller-0: 0 --container_color: redis:1 allocation score on controller-1: 0 --container_color: redis:1 allocation score on controller-2: 0 --container_color: redis:1 allocation score on galera-bundle-0: -INFINITY --container_color: redis:1 allocation score on galera-bundle-1: -INFINITY --container_color: redis:1 allocation score on galera-bundle-2: -INFINITY --container_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis:1 allocation score on redis-bundle-0: -INFINITY - container_color: redis:1 allocation score on redis-bundle-1: INFINITY --container_color: redis:1 allocation score on redis-bundle-2: -INFINITY --container_color: redis:2 allocation score on controller-0: 0 --container_color: redis:2 allocation score on controller-1: 0 --container_color: redis:2 allocation score on controller-2: 0 --container_color: redis:2 allocation score on galera-bundle-0: -INFINITY --container_color: redis:2 allocation score on galera-bundle-1: -INFINITY --container_color: redis:2 allocation score on galera-bundle-2: -INFINITY --container_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis:2 allocation score on redis-bundle-0: -INFINITY --container_color: redis:2 allocation score on redis-bundle-1: -INFINITY - container_color: redis:2 allocation score on redis-bundle-2: INFINITY - galera:0 promotion score on galera-bundle-0: -1 - galera:1 promotion score on galera-bundle-1: 100 -@@ -747,222 +216,66 @@ galera:2 promotion score on galera-bundle-2: 100 - native_color: galera-bundle-0 allocation score on controller-0: INFINITY - native_color: galera-bundle-0 allocation score on controller-1: 0 - native_color: galera-bundle-0 allocation score on controller-2: 0 --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY --native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: galera-bundle-1 allocation score on controller-0: 0 - native_color: galera-bundle-1 allocation score on controller-1: INFINITY - native_color: galera-bundle-1 allocation score on controller-2: 0 --native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY --native_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: galera-bundle-2 allocation score on controller-0: 0 - 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 galera-bundle-0: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY --native_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-2 allocation score on rabbitmq-bundle-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 galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-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: 0 --native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-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 galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: galera:0 allocation score on controller-0: -INFINITY --native_color: galera:0 allocation score on controller-1: -INFINITY --native_color: galera:0 allocation score on controller-2: -INFINITY - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on galera-bundle-1: -INFINITY --native_color: galera:0 allocation score on galera-bundle-2: -INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: galera:1 allocation score on controller-0: -INFINITY --native_color: galera:1 allocation score on controller-1: -INFINITY --native_color: galera:1 allocation score on controller-2: -INFINITY --native_color: galera:1 allocation score on galera-bundle-0: -INFINITY - native_color: galera:1 allocation score on galera-bundle-1: INFINITY --native_color: galera:1 allocation score on galera-bundle-2: -INFINITY --native_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: galera:2 allocation score on controller-0: -INFINITY --native_color: galera:2 allocation score on controller-1: -INFINITY --native_color: galera:2 allocation score on controller-2: -INFINITY --native_color: galera:2 allocation score on galera-bundle-0: -INFINITY --native_color: galera:2 allocation score on galera-bundle-1: -INFINITY - native_color: galera:2 allocation score on galera-bundle-2: INFINITY --native_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera:2 allocation score on rabbitmq-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: -INFINITY - native_color: haproxy-bundle-docker-0 allocation score on controller-2: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-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 galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY - native_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY - native_color: haproxy-bundle-docker-2 allocation score on controller-1: INFINITY - native_color: haproxy-bundle-docker-2 allocation score on controller-2: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY - native_color: ip-10.0.0.109 allocation score on controller-0: -INFINITY - native_color: ip-10.0.0.109 allocation score on controller-1: 0 - native_color: ip-10.0.0.109 allocation score on controller-2: 0 --native_color: ip-10.0.0.109 allocation score on galera-bundle-0: -INFINITY --native_color: ip-10.0.0.109 allocation score on galera-bundle-1: -INFINITY --native_color: ip-10.0.0.109 allocation score on galera-bundle-2: -INFINITY --native_color: ip-10.0.0.109 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-10.0.0.109 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: ip-10.0.0.109 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: ip-10.0.0.109 allocation score on redis-bundle-0: -INFINITY --native_color: ip-10.0.0.109 allocation score on redis-bundle-1: -INFINITY --native_color: ip-10.0.0.109 allocation score on redis-bundle-2: -INFINITY - native_color: ip-172.17.1.14 allocation score on controller-0: -INFINITY - native_color: ip-172.17.1.14 allocation score on controller-1: 0 - native_color: ip-172.17.1.14 allocation score on controller-2: INFINITY --native_color: ip-172.17.1.14 allocation score on galera-bundle-0: -INFINITY --native_color: ip-172.17.1.14 allocation score on galera-bundle-1: -INFINITY --native_color: ip-172.17.1.14 allocation score on galera-bundle-2: -INFINITY --native_color: ip-172.17.1.14 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-172.17.1.14 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: ip-172.17.1.14 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: ip-172.17.1.14 allocation score on redis-bundle-0: -INFINITY --native_color: ip-172.17.1.14 allocation score on redis-bundle-1: -INFINITY --native_color: ip-172.17.1.14 allocation score on redis-bundle-2: -INFINITY - native_color: ip-172.17.1.19 allocation score on controller-0: -INFINITY - 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 galera-bundle-0: -INFINITY --native_color: ip-172.17.1.19 allocation score on galera-bundle-1: -INFINITY --native_color: ip-172.17.1.19 allocation score on galera-bundle-2: -INFINITY --native_color: ip-172.17.1.19 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-172.17.1.19 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: ip-172.17.1.19 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: ip-172.17.1.19 allocation score on redis-bundle-0: -INFINITY --native_color: ip-172.17.1.19 allocation score on redis-bundle-1: -INFINITY --native_color: ip-172.17.1.19 allocation score on redis-bundle-2: -INFINITY - native_color: ip-172.17.3.19 allocation score on controller-0: -INFINITY - native_color: ip-172.17.3.19 allocation score on controller-1: 0 - native_color: ip-172.17.3.19 allocation score on controller-2: INFINITY --native_color: ip-172.17.3.19 allocation score on galera-bundle-0: -INFINITY --native_color: ip-172.17.3.19 allocation score on galera-bundle-1: -INFINITY --native_color: ip-172.17.3.19 allocation score on galera-bundle-2: -INFINITY --native_color: ip-172.17.3.19 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-172.17.3.19 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: ip-172.17.3.19 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: ip-172.17.3.19 allocation score on redis-bundle-0: -INFINITY --native_color: ip-172.17.3.19 allocation score on redis-bundle-1: -INFINITY --native_color: ip-172.17.3.19 allocation score on redis-bundle-2: -INFINITY - native_color: ip-172.17.4.11 allocation score on controller-0: -INFINITY - native_color: ip-172.17.4.11 allocation score on controller-1: 0 - native_color: ip-172.17.4.11 allocation score on controller-2: 0 --native_color: ip-172.17.4.11 allocation score on galera-bundle-0: -INFINITY --native_color: ip-172.17.4.11 allocation score on galera-bundle-1: -INFINITY --native_color: ip-172.17.4.11 allocation score on galera-bundle-2: -INFINITY --native_color: ip-172.17.4.11 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-172.17.4.11 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: ip-172.17.4.11 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: ip-172.17.4.11 allocation score on redis-bundle-0: -INFINITY --native_color: ip-172.17.4.11 allocation score on redis-bundle-1: -INFINITY --native_color: ip-172.17.4.11 allocation score on redis-bundle-2: -INFINITY - native_color: ip-192.168.24.7 allocation score on controller-0: -INFINITY - native_color: ip-192.168.24.7 allocation score on controller-1: 0 - native_color: ip-192.168.24.7 allocation score on controller-2: 0 --native_color: ip-192.168.24.7 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.24.7 allocation score on galera-bundle-1: -INFINITY --native_color: ip-192.168.24.7 allocation score on galera-bundle-2: -INFINITY --native_color: ip-192.168.24.7 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.24.7 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: ip-192.168.24.7 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: ip-192.168.24.7 allocation score on redis-bundle-0: -INFINITY --native_color: ip-192.168.24.7 allocation score on redis-bundle-1: -INFINITY --native_color: ip-192.168.24.7 allocation score on redis-bundle-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: INFINITY --native_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY --native_color: openstack-cinder-volume allocation score on galera-bundle-1: -INFINITY --native_color: openstack-cinder-volume allocation score on galera-bundle-2: -INFINITY --native_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY --native_color: openstack-cinder-volume allocation score on rabbitmq-bundle-1: -INFINITY --native_color: openstack-cinder-volume allocation score on rabbitmq-bundle-2: -INFINITY --native_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY --native_color: openstack-cinder-volume allocation score on redis-bundle-1: -INFINITY --native_color: openstack-cinder-volume allocation score on redis-bundle-2: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on controller-0: INFINITY - native_color: rabbitmq-bundle-0 allocation score on controller-1: 0 - native_color: rabbitmq-bundle-0 allocation score on controller-2: 0 --native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: rabbitmq-bundle-1 allocation score on controller-0: 0 - native_color: rabbitmq-bundle-1 allocation score on controller-1: INFINITY - native_color: rabbitmq-bundle-1 allocation score on controller-2: 0 --native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY - native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: rabbitmq-bundle-2 allocation score on controller-0: 0 - native_color: rabbitmq-bundle-2 allocation score on controller-1: 0 - native_color: rabbitmq-bundle-2 allocation score on controller-2: INFINITY --native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-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 -@@ -972,177 +285,45 @@ native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-2: -I - 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: 0 --native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY - native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY - 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 rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY - native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: rabbitmq:0 allocation score on controller-0: -INFINITY --native_color: rabbitmq:0 allocation score on controller-1: -INFINITY --native_color: rabbitmq:0 allocation score on controller-2: -INFINITY - native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --native_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: rabbitmq:1 allocation score on controller-0: -INFINITY --native_color: rabbitmq:1 allocation score on controller-1: -INFINITY --native_color: rabbitmq:1 allocation score on controller-2: -INFINITY --native_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY --native_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: rabbitmq:2 allocation score on controller-0: -INFINITY --native_color: rabbitmq:2 allocation score on controller-1: -INFINITY --native_color: rabbitmq:2 allocation score on controller-2: -INFINITY --native_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq:2 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 galera-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY --native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY - native_color: redis-bundle-1 allocation score on controller-0: 0 - native_color: redis-bundle-1 allocation score on controller-1: INFINITY - native_color: redis-bundle-1 allocation score on controller-2: 0 --native_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY --native_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-1 allocation score on redis-bundle-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 galera-bundle-0: -INFINITY --native_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY --native_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-2 allocation score on redis-bundle-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: -INFINITY - native_color: redis-bundle-docker-0 allocation score on controller-2: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-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: INFINITY - native_color: redis-bundle-docker-1 allocation score on controller-2: 0 --native_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-docker-1 allocation score on redis-bundle-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: -INFINITY - native_color: redis-bundle-docker-2 allocation score on controller-2: INFINITY --native_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --native_color: redis:0 allocation score on controller-0: -INFINITY --native_color: redis:0 allocation score on controller-1: -INFINITY --native_color: redis:0 allocation score on controller-2: -INFINITY --native_color: redis:0 allocation score on galera-bundle-0: -INFINITY --native_color: redis:0 allocation score on galera-bundle-1: -INFINITY --native_color: redis:0 allocation score on galera-bundle-2: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: redis:0 allocation score on redis-bundle-0: INFINITY --native_color: redis:0 allocation score on redis-bundle-1: -INFINITY --native_color: redis:0 allocation score on redis-bundle-2: -INFINITY --native_color: redis:1 allocation score on controller-0: -INFINITY --native_color: redis:1 allocation score on controller-1: -INFINITY --native_color: redis:1 allocation score on controller-2: -INFINITY --native_color: redis:1 allocation score on galera-bundle-0: -INFINITY --native_color: redis:1 allocation score on galera-bundle-1: -INFINITY --native_color: redis:1 allocation score on galera-bundle-2: -INFINITY --native_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis:1 allocation score on redis-bundle-0: -INFINITY - native_color: redis:1 allocation score on redis-bundle-1: INFINITY --native_color: redis:1 allocation score on redis-bundle-2: -INFINITY --native_color: redis:2 allocation score on controller-0: -INFINITY --native_color: redis:2 allocation score on controller-1: -INFINITY --native_color: redis:2 allocation score on controller-2: -INFINITY --native_color: redis:2 allocation score on galera-bundle-0: -INFINITY --native_color: redis:2 allocation score on galera-bundle-1: -INFINITY --native_color: redis:2 allocation score on galera-bundle-2: -INFINITY --native_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis:2 allocation score on redis-bundle-0: -INFINITY --native_color: redis:2 allocation score on redis-bundle-1: -INFINITY - native_color: redis:2 allocation score on redis-bundle-2: INFINITY - native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on controller-0: INFINITY - native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on controller-1: -INFINITY - native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on controller-2: 0 --native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on galera-bundle-0: -INFINITY --native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on galera-bundle-1: -INFINITY --native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on galera-bundle-2: -INFINITY --native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on rabbitmq-bundle-0: -INFINITY --native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on rabbitmq-bundle-1: -INFINITY --native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on rabbitmq-bundle-2: -INFINITY --native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on redis-bundle-0: -INFINITY --native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on redis-bundle-1: -INFINITY --native_color: stonith-fence_ipmilan-5254000dcb3f allocation score on redis-bundle-2: -INFINITY - native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on controller-0: INFINITY - native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on controller-1: 0 - native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on controller-2: -INFINITY --native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on galera-bundle-0: -INFINITY --native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on galera-bundle-1: -INFINITY --native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on galera-bundle-2: -INFINITY --native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on redis-bundle-0: -INFINITY --native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on redis-bundle-1: -INFINITY --native_color: stonith-fence_ipmilan-5254003e8e97 allocation score on redis-bundle-2: -INFINITY - native_color: stonith-fence_ipmilan-525400efba5c allocation score on controller-0: -INFINITY - native_color: stonith-fence_ipmilan-525400efba5c allocation score on controller-1: 0 - native_color: stonith-fence_ipmilan-525400efba5c allocation score on controller-2: INFINITY --native_color: stonith-fence_ipmilan-525400efba5c allocation score on galera-bundle-0: -INFINITY --native_color: stonith-fence_ipmilan-525400efba5c allocation score on galera-bundle-1: -INFINITY --native_color: stonith-fence_ipmilan-525400efba5c allocation score on galera-bundle-2: -INFINITY --native_color: stonith-fence_ipmilan-525400efba5c allocation score on rabbitmq-bundle-0: -INFINITY --native_color: stonith-fence_ipmilan-525400efba5c allocation score on rabbitmq-bundle-1: -INFINITY --native_color: stonith-fence_ipmilan-525400efba5c allocation score on rabbitmq-bundle-2: -INFINITY --native_color: stonith-fence_ipmilan-525400efba5c allocation score on redis-bundle-0: -INFINITY --native_color: stonith-fence_ipmilan-525400efba5c allocation score on redis-bundle-1: -INFINITY --native_color: stonith-fence_ipmilan-525400efba5c allocation score on redis-bundle-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-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp -index 1be25f6..c253553 100644 ---- a/pengine/test10/bundle-order-partial-start-2.exp -+++ b/pengine/test10/bundle-order-partial-start-2.exp -@@ -317,7 +317,7 @@ - - - -- -+ - - - -@@ -330,7 +330,7 @@ - - - -- -+ - - - -@@ -359,7 +359,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start-2.scores b/pengine/test10/bundle-order-partial-start-2.scores -index b4a441d..954661e 100644 ---- a/pengine/test10/bundle-order-partial-start-2.scores -+++ b/pengine/test10/bundle-order-partial-start-2.scores -@@ -1,61 +1,19 @@ - Allocation scores: - clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 --clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: galera-bundle-master allocation score on undercloud: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:0 allocation score on undercloud: -INFINITY - clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 - clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY - clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 - clone_color: redis-bundle-master allocation score on undercloud: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis:0 allocation score on redis-bundle-0: INFINITY --clone_color: redis:0 allocation score on undercloud: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle allocation score on undercloud: 0 --container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-0 allocation score on undercloud: INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY - container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on undercloud: 0 - container_color: galera:0 allocation score on galera-bundle-0: 500 --container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera:0 allocation score on undercloud: 0 --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 -@@ -64,134 +22,46 @@ container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 - container_color: openstack-cinder-volume allocation score on undercloud: 0 --container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle allocation score on undercloud: 0 --container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY --container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 - container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY - container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 500 --container_color: rabbitmq:0 allocation score on undercloud: 0 --container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle allocation score on undercloud: 0 --container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-0 allocation score on undercloud: INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-master allocation score on undercloud: 0 --container_color: redis:0 allocation score on galera-bundle-0: -INFINITY --container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis:0 allocation score on redis-bundle-0: INFINITY --container_color: redis:0 allocation score on undercloud: 0 - galera:0 promotion score on galera-bundle-0: -1 --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera-bundle-0 allocation score on undercloud: INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:0 allocation score on undercloud: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 - native_color: ip-192.168.122.247 allocation score on undercloud: INFINITY --native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.248 allocation score on undercloud: INFINITY --native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.249 allocation score on undercloud: INFINITY --native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.250 allocation score on undercloud: INFINITY --native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.253 allocation score on undercloud: INFINITY --native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.254 allocation score on undercloud: INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY --native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY - native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --native_color: rabbitmq:0 allocation score on undercloud: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY - native_color: redis-bundle-0 allocation score on undercloud: INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY --native_color: redis:0 allocation score on galera-bundle-0: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: redis:0 allocation score on redis-bundle-0: INFINITY --native_color: redis:0 allocation score on undercloud: -INFINITY - redis:0 promotion score on redis-bundle-0: 3000 -diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp -index 037c3e0..21012ce 100644 ---- a/pengine/test10/bundle-order-partial-start.exp -+++ b/pengine/test10/bundle-order-partial-start.exp -@@ -298,7 +298,7 @@ - - - -- -+ - - - -@@ -311,7 +311,7 @@ - - - -- -+ - - - -@@ -340,7 +340,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start.scores b/pengine/test10/bundle-order-partial-start.scores -index 1c50e66..a9b2f06 100644 ---- a/pengine/test10/bundle-order-partial-start.scores -+++ b/pengine/test10/bundle-order-partial-start.scores -@@ -1,61 +1,19 @@ - Allocation scores: - clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 --clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: galera-bundle-master allocation score on undercloud: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:0 allocation score on undercloud: -INFINITY - clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 - clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY - clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 - clone_color: redis-bundle-master allocation score on undercloud: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis:0 allocation score on redis-bundle-0: INFINITY --clone_color: redis:0 allocation score on undercloud: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle allocation score on undercloud: 0 --container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-0 allocation score on undercloud: 0 --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-docker-0 allocation score on undercloud: 0 - container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on undercloud: 0 - container_color: galera:0 allocation score on galera-bundle-0: 500 --container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera:0 allocation score on undercloud: 0 --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 -@@ -64,134 +22,46 @@ container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -+container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 - container_color: openstack-cinder-volume allocation score on undercloud: 0 --container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle allocation score on undercloud: 0 --container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY --container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 - container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY - container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 500 --container_color: rabbitmq:0 allocation score on undercloud: 0 --container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle allocation score on undercloud: 0 --container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-0 allocation score on undercloud: INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-master allocation score on undercloud: 0 --container_color: redis:0 allocation score on galera-bundle-0: -INFINITY --container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis:0 allocation score on redis-bundle-0: INFINITY --container_color: redis:0 allocation score on undercloud: 0 - galera:0 promotion score on galera-bundle-0: -1 --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera-bundle-0 allocation score on undercloud: 10000 --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera-bundle-docker-0 allocation score on undercloud: 0 - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:0 allocation score on undercloud: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 - native_color: ip-192.168.122.247 allocation score on undercloud: INFINITY --native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.248 allocation score on undercloud: INFINITY --native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.249 allocation score on undercloud: INFINITY --native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.250 allocation score on undercloud: INFINITY --native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.253 allocation score on undercloud: INFINITY --native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.254 allocation score on undercloud: INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY --native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY - native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --native_color: rabbitmq:0 allocation score on undercloud: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY - native_color: redis-bundle-0 allocation score on undercloud: INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY --native_color: redis:0 allocation score on galera-bundle-0: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: redis:0 allocation score on redis-bundle-0: INFINITY --native_color: redis:0 allocation score on undercloud: -INFINITY - redis:0 promotion score on redis-bundle-0: 3000 -diff --git a/pengine/test10/bundle-order-partial-stop.exp b/pengine/test10/bundle-order-partial-stop.exp -index c0724c7..0bd404a 100644 ---- a/pengine/test10/bundle-order-partial-stop.exp -+++ b/pengine/test10/bundle-order-partial-stop.exp -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -293,7 +293,7 @@ - - - -- -+ - - - -@@ -306,7 +306,7 @@ - - - -- -+ - - - -@@ -319,7 +319,7 @@ - - - -- -+ - - - -@@ -338,7 +338,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-stop.scores b/pengine/test10/bundle-order-partial-stop.scores -index 528842e..abe9bbc 100644 ---- a/pengine/test10/bundle-order-partial-stop.scores -+++ b/pengine/test10/bundle-order-partial-stop.scores -@@ -1,61 +1,19 @@ - Allocation scores: - clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 --clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: galera-bundle-master allocation score on undercloud: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:0 allocation score on undercloud: -INFINITY - clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 - clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY - clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 - clone_color: redis-bundle-master allocation score on undercloud: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis:0 allocation score on redis-bundle-0: INFINITY --clone_color: redis:0 allocation score on undercloud: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle allocation score on undercloud: 0 --container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-0 allocation score on undercloud: INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY - container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on undercloud: 0 - container_color: galera:0 allocation score on galera-bundle-0: INFINITY --container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera:0 allocation score on undercloud: 0 --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 -@@ -64,30 +22,6 @@ container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -@@ -96,104 +30,40 @@ container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINI - container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY - container_color: openstack-cinder-volume allocation score on undercloud: 0 --container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle allocation score on undercloud: 0 --container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY --container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 - container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY - container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --container_color: rabbitmq:0 allocation score on undercloud: 0 --container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle allocation score on undercloud: 0 --container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-0 allocation score on undercloud: INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-master allocation score on undercloud: 0 --container_color: redis:0 allocation score on galera-bundle-0: -INFINITY --container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis:0 allocation score on redis-bundle-0: INFINITY --container_color: redis:0 allocation score on undercloud: 0 - galera:0 promotion score on galera-bundle-0: 100 --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera-bundle-0 allocation score on undercloud: INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera-bundle-docker-0 allocation score on undercloud: -INFINITY - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:0 allocation score on undercloud: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY --native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.247 allocation score on undercloud: -INFINITY --native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.248 allocation score on undercloud: -INFINITY --native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.249 allocation score on undercloud: -INFINITY --native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.250 allocation score on undercloud: -INFINITY --native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.253 allocation score on undercloud: -INFINITY --native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.254 allocation score on undercloud: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: -INFINITY --native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: -INFINITY - native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --native_color: rabbitmq:0 allocation score on undercloud: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY - native_color: redis-bundle-0 allocation score on undercloud: INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: redis-bundle-docker-0 allocation score on undercloud: -INFINITY --native_color: redis:0 allocation score on galera-bundle-0: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: redis:0 allocation score on redis-bundle-0: INFINITY --native_color: redis:0 allocation score on undercloud: -INFINITY - redis:0 promotion score on redis-bundle-0: 1 -diff --git a/pengine/test10/bundle-order-startup-clone-2.exp b/pengine/test10/bundle-order-startup-clone-2.exp -index b2bbf52..53ca437 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.exp -+++ b/pengine/test10/bundle-order-startup-clone-2.exp -@@ -1181,7 +1181,7 @@ - - - -- -+ - - - -@@ -1194,7 +1194,7 @@ - - - -- -+ - - - -@@ -1207,7 +1207,7 @@ - - - -- -+ - - - -@@ -1245,7 +1245,7 @@ - - - -- -+ - - - -@@ -1267,7 +1267,7 @@ - - - -- -+ - - - -@@ -1286,7 +1286,7 @@ - - - -- -+ - - - -@@ -1299,7 +1299,7 @@ - - - -- -+ - - - -@@ -1312,7 +1312,7 @@ - - - -- -+ - - - -@@ -1350,7 +1350,7 @@ - - - -- -+ - - - -@@ -1375,7 +1375,7 @@ - - - -- -+ - - - -@@ -1397,7 +1397,7 @@ - - - -- -+ - - - -@@ -1410,7 +1410,7 @@ - - - -- -+ - - - -@@ -1423,7 +1423,7 @@ - - - -- -+ - - - -@@ -1461,7 +1461,7 @@ - - - -- -+ - - - -@@ -1486,7 +1486,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone-2.scores b/pengine/test10/bundle-order-startup-clone-2.scores -index bcc4905..30e15d8 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.scores -+++ b/pengine/test10/bundle-order-startup-clone-2.scores -@@ -7,29 +7,8 @@ clone_color: galera-bundle-master allocation score on metal-2: -INFINITY - clone_color: galera-bundle-master allocation score on metal-3: -INFINITY - clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY --clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:0 allocation score on metal-1: -INFINITY --clone_color: galera:0 allocation score on metal-2: -INFINITY --clone_color: galera:0 allocation score on metal-3: -INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY - clone_color: galera:1 allocation score on galera-bundle-1: INFINITY --clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:1 allocation score on metal-1: -INFINITY --clone_color: galera:1 allocation score on metal-2: -INFINITY --clone_color: galera:1 allocation score on metal-3: -INFINITY --clone_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY - clone_color: galera:2 allocation score on galera-bundle-2: INFINITY --clone_color: galera:2 allocation score on metal-1: -INFINITY --clone_color: galera:2 allocation score on metal-2: -INFINITY --clone_color: galera:2 allocation score on metal-3: -INFINITY --clone_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY - clone_color: redis-bundle-master allocation score on metal-1: -INFINITY - clone_color: redis-bundle-master allocation score on metal-2: -INFINITY - clone_color: redis-bundle-master allocation score on metal-3: -INFINITY -@@ -37,35 +16,8 @@ clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINIT - 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 galera-bundle-0: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-1: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-2: -INFINITY --clone_color: redis:0 allocation score on metal-1: -INFINITY --clone_color: redis:0 allocation score on metal-2: -INFINITY --clone_color: redis:0 allocation score on metal-3: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis:0 allocation score on redis-bundle-0: INFINITY --clone_color: redis:0 allocation score on redis-bundle-1: -INFINITY --clone_color: redis:0 allocation score on redis-bundle-2: -INFINITY --clone_color: redis:1 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:1 allocation score on galera-bundle-1: -INFINITY --clone_color: redis:1 allocation score on galera-bundle-2: -INFINITY --clone_color: redis:1 allocation score on metal-1: -INFINITY --clone_color: redis:1 allocation score on metal-2: -INFINITY --clone_color: redis:1 allocation score on metal-3: -INFINITY --clone_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis:1 allocation score on redis-bundle-0: -INFINITY - clone_color: redis:1 allocation score on redis-bundle-1: INFINITY --clone_color: redis:1 allocation score on redis-bundle-2: -INFINITY --clone_color: redis:2 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:2 allocation score on galera-bundle-1: -INFINITY --clone_color: redis:2 allocation score on galera-bundle-2: -INFINITY --clone_color: redis:2 allocation score on metal-1: -INFINITY --clone_color: redis:2 allocation score on metal-2: -INFINITY --clone_color: redis:2 allocation score on metal-3: -INFINITY --clone_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis:2 allocation score on redis-bundle-0: -INFINITY --clone_color: redis:2 allocation score on redis-bundle-1: -INFINITY - clone_color: redis:2 allocation score on redis-bundle-2: INFINITY - clone_color: storage-clone allocation score on metal-1: 0 - clone_color: storage-clone allocation score on metal-2: 0 -@@ -87,51 +39,30 @@ clone_color: storage:3 allocation score on metal-1: 0 - clone_color: storage:3 allocation score on metal-2: 0 - clone_color: storage:3 allocation score on metal-3: 0 - clone_color: storage:3 allocation score on rabbitmq-bundle-0: 0 --container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle allocation score on metal-1: 0 - container_color: galera-bundle allocation score on metal-2: 0 - container_color: galera-bundle allocation score on metal-3: 0 - container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-0 allocation score on metal-1: 0 - container_color: galera-bundle-0 allocation score on metal-2: 0 - container_color: galera-bundle-0 allocation score on metal-3: 0 - container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-1 allocation score on metal-1: 0 - container_color: galera-bundle-1 allocation score on metal-2: 0 - container_color: galera-bundle-1 allocation score on metal-3: 0 - container_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-2 allocation score on metal-1: 0 - container_color: galera-bundle-2 allocation score on metal-2: 0 - container_color: galera-bundle-2 allocation score on metal-3: 0 - container_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-0 allocation score on metal-1: 0 - container_color: galera-bundle-docker-0 allocation score on metal-2: 0 - container_color: galera-bundle-docker-0 allocation score on metal-3: 0 - container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-1 allocation score on metal-1: 0 - container_color: galera-bundle-docker-1 allocation score on metal-2: 0 - container_color: galera-bundle-docker-1 allocation score on metal-3: 0 - container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-2 allocation score on metal-1: 0 - container_color: galera-bundle-docker-2 allocation score on metal-2: 0 - container_color: galera-bundle-docker-2 allocation score on metal-3: 0 -@@ -144,38 +75,8 @@ container_color: galera-bundle-master allocation score on metal-2: 0 - container_color: galera-bundle-master allocation score on metal-3: 0 - container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: 0 - container_color: galera:0 allocation score on galera-bundle-0: 500 --container_color: galera:0 allocation score on galera-bundle-1: -INFINITY --container_color: galera:0 allocation score on galera-bundle-2: -INFINITY --container_color: galera:0 allocation score on metal-1: 0 --container_color: galera:0 allocation score on metal-2: 0 --container_color: galera:0 allocation score on metal-3: 0 --container_color: galera:0 allocation score on rabbitmq-bundle-0: 0 --container_color: galera:1 allocation score on galera-bundle-0: -INFINITY - container_color: galera:1 allocation score on galera-bundle-1: 500 --container_color: galera:1 allocation score on galera-bundle-2: -INFINITY --container_color: galera:1 allocation score on metal-1: 0 --container_color: galera:1 allocation score on metal-2: 0 --container_color: galera:1 allocation score on metal-3: 0 --container_color: galera:1 allocation score on rabbitmq-bundle-0: 0 --container_color: galera:2 allocation score on galera-bundle-0: -INFINITY --container_color: galera:2 allocation score on galera-bundle-1: -INFINITY - container_color: galera:2 allocation score on galera-bundle-2: 500 --container_color: galera:2 allocation score on metal-1: 0 --container_color: galera:2 allocation score on metal-2: 0 --container_color: galera:2 allocation score on metal-3: 0 --container_color: galera:2 allocation score on rabbitmq-bundle-0: 0 --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY - container_color: haproxy-bundle allocation score on metal-1: 0 - container_color: haproxy-bundle allocation score on metal-1: 0 - container_color: haproxy-bundle allocation score on metal-1: 0 -@@ -192,18 +93,6 @@ container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 - container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 - container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 - container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 - container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 - container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 -@@ -220,18 +109,6 @@ container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: - container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: 0 --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY -@@ -248,18 +125,6 @@ container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: - container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: 0 --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY -@@ -276,79 +141,34 @@ container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: - container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: 0 --container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle allocation score on metal-1: 0 - container_color: redis-bundle allocation score on metal-2: 0 - container_color: redis-bundle allocation score on metal-3: 0 - container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-0 allocation score on metal-1: 0 - container_color: redis-bundle-0 allocation score on metal-2: 0 - container_color: redis-bundle-0 allocation score on metal-3: 0 - container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-1 allocation score on metal-1: 0 - container_color: redis-bundle-1 allocation score on metal-2: 0 - container_color: redis-bundle-1 allocation score on metal-3: 0 - container_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-2 allocation score on metal-1: 0 - container_color: redis-bundle-2 allocation score on metal-2: 0 - container_color: redis-bundle-2 allocation score on metal-3: 0 - container_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-docker-0 allocation score on metal-1: 0 - container_color: redis-bundle-docker-0 allocation score on metal-2: 0 - container_color: redis-bundle-docker-0 allocation score on metal-3: 0 - container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-docker-1 allocation score on metal-1: 0 - container_color: redis-bundle-docker-1 allocation score on metal-2: 0 - container_color: redis-bundle-docker-1 allocation score on metal-3: 0 - container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-docker-2 allocation score on metal-1: 0 - container_color: redis-bundle-docker-2 allocation score on metal-2: 0 - container_color: redis-bundle-docker-2 allocation score on metal-3: 0 - container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-master allocation score on metal-1: 0 - container_color: redis-bundle-master allocation score on metal-2: 0 - container_color: redis-bundle-master allocation score on metal-3: 0 -@@ -356,212 +176,77 @@ container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: 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 galera-bundle-0: -INFINITY --container_color: redis:0 allocation score on galera-bundle-1: -INFINITY --container_color: redis:0 allocation score on galera-bundle-2: -INFINITY --container_color: redis:0 allocation score on metal-1: 0 --container_color: redis:0 allocation score on metal-2: 0 --container_color: redis:0 allocation score on metal-3: 0 --container_color: redis:0 allocation score on rabbitmq-bundle-0: 0 - container_color: redis:0 allocation score on redis-bundle-0: 500 --container_color: redis:0 allocation score on redis-bundle-1: -INFINITY --container_color: redis:0 allocation score on redis-bundle-2: -INFINITY --container_color: redis:1 allocation score on galera-bundle-0: -INFINITY --container_color: redis:1 allocation score on galera-bundle-1: -INFINITY --container_color: redis:1 allocation score on galera-bundle-2: -INFINITY --container_color: redis:1 allocation score on metal-1: 0 --container_color: redis:1 allocation score on metal-2: 0 --container_color: redis:1 allocation score on metal-3: 0 --container_color: redis:1 allocation score on rabbitmq-bundle-0: 0 --container_color: redis:1 allocation score on redis-bundle-0: -INFINITY - container_color: redis:1 allocation score on redis-bundle-1: 500 --container_color: redis:1 allocation score on redis-bundle-2: -INFINITY --container_color: redis:2 allocation score on galera-bundle-0: -INFINITY --container_color: redis:2 allocation score on galera-bundle-1: -INFINITY --container_color: redis:2 allocation score on galera-bundle-2: -INFINITY --container_color: redis:2 allocation score on metal-1: 0 --container_color: redis:2 allocation score on metal-2: 0 --container_color: redis:2 allocation score on metal-3: 0 --container_color: redis:2 allocation score on rabbitmq-bundle-0: 0 --container_color: redis:2 allocation score on redis-bundle-0: -INFINITY --container_color: redis:2 allocation score on redis-bundle-1: -INFINITY - container_color: redis:2 allocation score on redis-bundle-2: 500 - galera:0 promotion score on galera-bundle-0: -1 - galera:1 promotion score on galera-bundle-1: -1 - galera:2 promotion score on galera-bundle-2: -1 --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-0 allocation score on metal-1: 10000 - native_color: galera-bundle-0 allocation score on metal-2: 0 - native_color: galera-bundle-0 allocation score on metal-3: 0 - native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-1 allocation score on metal-1: 0 - native_color: galera-bundle-1 allocation score on metal-2: 10000 - native_color: galera-bundle-1 allocation score on metal-3: 0 - native_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-2 allocation score on metal-1: 0 - native_color: galera-bundle-2 allocation score on metal-2: 0 - native_color: galera-bundle-2 allocation score on metal-3: 10000 - native_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-0 allocation score on metal-1: 0 - native_color: galera-bundle-docker-0 allocation score on metal-2: 0 - native_color: galera-bundle-docker-0 allocation score on metal-3: 0 - native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-1 allocation score on metal-1: -INFINITY - native_color: galera-bundle-docker-1 allocation score on metal-2: 0 - native_color: galera-bundle-docker-1 allocation score on metal-3: 0 - native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-2 allocation score on metal-1: -INFINITY - native_color: galera-bundle-docker-2 allocation score on metal-2: -INFINITY - native_color: galera-bundle-docker-2 allocation score on metal-3: 0 - native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on galera-bundle-1: -INFINITY --native_color: galera:0 allocation score on galera-bundle-2: -INFINITY --native_color: galera:0 allocation score on metal-1: -INFINITY --native_color: galera:0 allocation score on metal-2: -INFINITY --native_color: galera:0 allocation score on metal-3: -INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:1 allocation score on galera-bundle-0: -INFINITY - native_color: galera:1 allocation score on galera-bundle-1: INFINITY --native_color: galera:1 allocation score on galera-bundle-2: -INFINITY --native_color: galera:1 allocation score on metal-1: -INFINITY --native_color: galera:1 allocation score on metal-2: -INFINITY --native_color: galera:1 allocation score on metal-3: -INFINITY --native_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:2 allocation score on galera-bundle-0: -INFINITY --native_color: galera:2 allocation score on galera-bundle-1: -INFINITY - native_color: galera:2 allocation score on galera-bundle-2: INFINITY --native_color: galera:2 allocation score on metal-1: -INFINITY --native_color: galera:2 allocation score on metal-2: -INFINITY --native_color: galera:2 allocation score on metal-3: -INFINITY --native_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 - native_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 - native_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 - native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - native_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY - native_color: haproxy-bundle-docker-1 allocation score on metal-2: 0 - native_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 - native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - native_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY - native_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY - native_color: haproxy-bundle-docker-2 allocation score on metal-3: 0 - native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-0 allocation score on metal-1: 10000 - native_color: redis-bundle-0 allocation score on metal-2: 0 - native_color: redis-bundle-0 allocation score on metal-3: 0 - native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-1 allocation score on metal-1: 0 - native_color: redis-bundle-1 allocation score on metal-2: 10000 - native_color: redis-bundle-1 allocation score on metal-3: 0 - native_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-2 allocation score on metal-1: 0 - native_color: redis-bundle-2 allocation score on metal-2: 0 - native_color: redis-bundle-2 allocation score on metal-3: 10000 - native_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-docker-0 allocation score on metal-1: 0 - native_color: redis-bundle-docker-0 allocation score on metal-2: -INFINITY - native_color: redis-bundle-docker-0 allocation score on metal-3: -INFINITY - native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-docker-1 allocation score on metal-1: -INFINITY - native_color: redis-bundle-docker-1 allocation score on metal-2: 0 - native_color: redis-bundle-docker-1 allocation score on metal-3: -INFINITY - native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-docker-2 allocation score on metal-1: -INFINITY - native_color: redis-bundle-docker-2 allocation score on metal-2: -INFINITY - native_color: redis-bundle-docker-2 allocation score on metal-3: 0 - native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --native_color: redis:0 allocation score on galera-bundle-0: -INFINITY --native_color: redis:0 allocation score on galera-bundle-1: -INFINITY --native_color: redis:0 allocation score on galera-bundle-2: -INFINITY --native_color: redis:0 allocation score on metal-1: -INFINITY --native_color: redis:0 allocation score on metal-2: -INFINITY --native_color: redis:0 allocation score on metal-3: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: redis:0 allocation score on redis-bundle-0: INFINITY --native_color: redis:0 allocation score on redis-bundle-1: -INFINITY --native_color: redis:0 allocation score on redis-bundle-2: -INFINITY --native_color: redis:1 allocation score on galera-bundle-0: -INFINITY --native_color: redis:1 allocation score on galera-bundle-1: -INFINITY --native_color: redis:1 allocation score on galera-bundle-2: -INFINITY --native_color: redis:1 allocation score on metal-1: -INFINITY --native_color: redis:1 allocation score on metal-2: -INFINITY --native_color: redis:1 allocation score on metal-3: -INFINITY --native_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis:1 allocation score on redis-bundle-0: -INFINITY - native_color: redis:1 allocation score on redis-bundle-1: INFINITY --native_color: redis:1 allocation score on redis-bundle-2: -INFINITY --native_color: redis:2 allocation score on galera-bundle-0: -INFINITY --native_color: redis:2 allocation score on galera-bundle-1: -INFINITY --native_color: redis:2 allocation score on galera-bundle-2: -INFINITY --native_color: redis:2 allocation score on metal-1: -INFINITY --native_color: redis:2 allocation score on metal-2: -INFINITY --native_color: redis:2 allocation score on metal-3: -INFINITY --native_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis:2 allocation score on redis-bundle-0: -INFINITY --native_color: redis:2 allocation score on redis-bundle-1: -INFINITY - native_color: redis:2 allocation score on redis-bundle-2: INFINITY - native_color: storage:0 allocation score on metal-1: 0 - native_color: storage:0 allocation score on metal-2: 0 -diff --git a/pengine/test10/bundle-order-startup-clone.exp b/pengine/test10/bundle-order-startup-clone.exp -index 46d969c..123f0e2 100644 ---- a/pengine/test10/bundle-order-startup-clone.exp -+++ b/pengine/test10/bundle-order-startup-clone.exp -@@ -119,7 +119,7 @@ - - - -- -+ - - - -@@ -170,7 +170,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone.scores b/pengine/test10/bundle-order-startup-clone.scores -index 4361fc4..8786633 100644 ---- a/pengine/test10/bundle-order-startup-clone.scores -+++ b/pengine/test10/bundle-order-startup-clone.scores -@@ -5,21 +5,11 @@ clone_color: galera-bundle-master allocation score on metal-2: -INFINITY - clone_color: galera-bundle-master allocation score on metal-3: -INFINITY - clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on metal-1: -INFINITY --clone_color: galera:0 allocation score on metal-2: -INFINITY --clone_color: galera:0 allocation score on metal-3: -INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY - clone_color: redis-bundle-master allocation score on metal-1: -INFINITY - clone_color: redis-bundle-master allocation score on metal-2: -INFINITY - clone_color: redis-bundle-master allocation score on metal-3: -INFINITY - clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 --clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:0 allocation score on metal-1: -INFINITY --clone_color: redis:0 allocation score on metal-2: -INFINITY --clone_color: redis:0 allocation score on metal-3: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis:0 allocation score on redis-bundle-0: INFINITY - clone_color: storage-clone allocation score on metal-1: 0 - clone_color: storage-clone allocation score on metal-2: 0 -@@ -41,17 +31,14 @@ clone_color: storage:3 allocation score on metal-1: 0 - clone_color: storage:3 allocation score on metal-2: 0 - clone_color: storage:3 allocation score on metal-3: 0 - clone_color: storage:3 allocation score on rabbitmq-bundle-0: 0 --container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY - container_color: galera-bundle allocation score on metal-1: 0 - container_color: galera-bundle allocation score on metal-2: 0 - container_color: galera-bundle allocation score on metal-3: 0 - container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY - container_color: galera-bundle-0 allocation score on metal-1: 0 - container_color: galera-bundle-0 allocation score on metal-2: 0 - container_color: galera-bundle-0 allocation score on metal-3: 0 - container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY - container_color: galera-bundle-docker-0 allocation score on metal-1: 0 - container_color: galera-bundle-docker-0 allocation score on metal-2: 0 - container_color: galera-bundle-docker-0 allocation score on metal-3: 0 -@@ -62,12 +49,6 @@ container_color: galera-bundle-master allocation score on metal-2: 0 - container_color: galera-bundle-master allocation score on metal-3: 0 - container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: 0 - container_color: galera:0 allocation score on galera-bundle-0: 500 --container_color: galera:0 allocation score on metal-1: 0 --container_color: galera:0 allocation score on metal-2: 0 --container_color: galera:0 allocation score on metal-3: 0 --container_color: galera:0 allocation score on rabbitmq-bundle-0: 0 --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY - container_color: haproxy-bundle allocation score on metal-1: 0 - container_color: haproxy-bundle allocation score on metal-1: 0 - container_color: haproxy-bundle allocation score on metal-2: 0 -@@ -76,8 +57,6 @@ container_color: haproxy-bundle allocation score on metal-3: 0 - container_color: haproxy-bundle allocation score on metal-3: 0 - container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 - container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 - container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 - container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 -@@ -86,74 +65,46 @@ container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 - container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 - container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: 0 --container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY - container_color: redis-bundle allocation score on metal-1: 0 - container_color: redis-bundle allocation score on metal-2: 0 - container_color: redis-bundle allocation score on metal-3: 0 - container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY - container_color: redis-bundle-0 allocation score on metal-1: 0 - container_color: redis-bundle-0 allocation score on metal-2: 0 - container_color: redis-bundle-0 allocation score on metal-3: 0 - container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY - container_color: redis-bundle-docker-0 allocation score on metal-1: 0 - container_color: redis-bundle-docker-0 allocation score on metal-2: 0 - container_color: redis-bundle-docker-0 allocation score on metal-3: 0 - container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY - container_color: redis-bundle-master allocation score on metal-1: 0 - container_color: redis-bundle-master allocation score on metal-2: 0 - container_color: redis-bundle-master allocation score on metal-3: 0 - container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: 0 - container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY --container_color: redis:0 allocation score on galera-bundle-0: -INFINITY --container_color: redis:0 allocation score on metal-1: 0 --container_color: redis:0 allocation score on metal-2: 0 --container_color: redis:0 allocation score on metal-3: 0 --container_color: redis:0 allocation score on rabbitmq-bundle-0: 0 - container_color: redis:0 allocation score on redis-bundle-0: 500 - galera:0 promotion score on galera-bundle-0: -1 --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY - native_color: galera-bundle-0 allocation score on metal-1: 10000 - native_color: galera-bundle-0 allocation score on metal-2: 0 - native_color: galera-bundle-0 allocation score on metal-3: 0 - native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY - native_color: galera-bundle-docker-0 allocation score on metal-1: 0 - native_color: galera-bundle-docker-0 allocation score on metal-2: 0 - native_color: galera-bundle-docker-0 allocation score on metal-3: 0 - native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on metal-1: -INFINITY --native_color: galera:0 allocation score on metal-2: -INFINITY --native_color: galera:0 allocation score on metal-3: -INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY - native_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 - native_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 - native_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 - native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY - native_color: redis-bundle-0 allocation score on metal-1: 0 - native_color: redis-bundle-0 allocation score on metal-2: 10000 - native_color: redis-bundle-0 allocation score on metal-3: 0 - native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY - native_color: redis-bundle-docker-0 allocation score on metal-1: -INFINITY - native_color: redis-bundle-docker-0 allocation score on metal-2: 0 - native_color: redis-bundle-docker-0 allocation score on metal-3: -INFINITY - native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --native_color: redis:0 allocation score on galera-bundle-0: -INFINITY --native_color: redis:0 allocation score on metal-1: -INFINITY --native_color: redis:0 allocation score on metal-2: -INFINITY --native_color: redis:0 allocation score on metal-3: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: redis:0 allocation score on redis-bundle-0: INFINITY - native_color: storage:0 allocation score on metal-1: 0 - native_color: storage:0 allocation score on metal-2: 0 -diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp -index 3f50562..9ed9c3d 100644 ---- a/pengine/test10/bundle-order-startup.exp -+++ b/pengine/test10/bundle-order-startup.exp -@@ -378,7 +378,7 @@ - - - -- -+ - - - -@@ -429,7 +429,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup.scores b/pengine/test10/bundle-order-startup.scores -index d49dd6e..1ca7652 100644 ---- a/pengine/test10/bundle-order-startup.scores -+++ b/pengine/test10/bundle-order-startup.scores -@@ -1,61 +1,19 @@ - Allocation scores: - clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 --clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: galera-bundle-master allocation score on undercloud: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:0 allocation score on undercloud: -INFINITY - clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 - clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY - clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 - clone_color: redis-bundle-master allocation score on undercloud: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis:0 allocation score on redis-bundle-0: INFINITY --clone_color: redis:0 allocation score on undercloud: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle allocation score on undercloud: 0 --container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-0 allocation score on undercloud: 0 --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-docker-0 allocation score on undercloud: 0 - container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on undercloud: 0 - container_color: galera:0 allocation score on galera-bundle-0: 500 --container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera:0 allocation score on undercloud: 0 --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 -@@ -64,30 +22,6 @@ container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 - container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 - container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 -@@ -96,102 +30,38 @@ container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 - container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 - container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 - container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 --container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY - container_color: openstack-cinder-volume allocation score on undercloud: 0 --container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: 0 --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle allocation score on undercloud: 0 --container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on undercloud: 0 --container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 - container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: 0 - container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 500 --container_color: rabbitmq:0 allocation score on undercloud: 0 --container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle allocation score on undercloud: 0 --container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-0 allocation score on undercloud: 0 --container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-docker-0 allocation score on undercloud: 0 --container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-master allocation score on undercloud: 0 --container_color: redis:0 allocation score on galera-bundle-0: -INFINITY --container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis:0 allocation score on redis-bundle-0: 500 --container_color: redis:0 allocation score on undercloud: 0 - galera:0 promotion score on galera-bundle-0: -1 --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera-bundle-0 allocation score on undercloud: 10000 --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera-bundle-docker-0 allocation score on undercloud: 0 - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:0 allocation score on undercloud: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 --native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.247 allocation score on undercloud: 0 --native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.248 allocation score on undercloud: 0 --native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.249 allocation score on undercloud: 0 --native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.250 allocation score on undercloud: 0 --native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.253 allocation score on undercloud: 0 --native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.254 allocation score on undercloud: 0 --native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: 0 --native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on undercloud: 10000 - native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: 0 - native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --native_color: rabbitmq:0 allocation score on undercloud: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY - native_color: redis-bundle-0 allocation score on undercloud: 10000 --native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: redis-bundle-docker-0 allocation score on undercloud: 0 --native_color: redis:0 allocation score on galera-bundle-0: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: redis:0 allocation score on redis-bundle-0: INFINITY --native_color: redis:0 allocation score on undercloud: -INFINITY - redis:0 promotion score on redis-bundle-0: -1 -diff --git a/pengine/test10/bundle-order-stop-clone.scores b/pengine/test10/bundle-order-stop-clone.scores -index f8ec05c..584af30 100644 ---- a/pengine/test10/bundle-order-stop-clone.scores -+++ b/pengine/test10/bundle-order-stop-clone.scores -@@ -7,29 +7,8 @@ clone_color: galera-bundle-master allocation score on metal-2: -INFINITY - clone_color: galera-bundle-master allocation score on metal-3: -INFINITY - clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY --clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:0 allocation score on metal-1: -INFINITY --clone_color: galera:0 allocation score on metal-2: -INFINITY --clone_color: galera:0 allocation score on metal-3: -INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY - clone_color: galera:1 allocation score on galera-bundle-1: INFINITY --clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:1 allocation score on metal-1: -INFINITY --clone_color: galera:1 allocation score on metal-2: -INFINITY --clone_color: galera:1 allocation score on metal-3: -INFINITY --clone_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY - clone_color: galera:2 allocation score on galera-bundle-2: INFINITY --clone_color: galera:2 allocation score on metal-1: -INFINITY --clone_color: galera:2 allocation score on metal-2: -INFINITY --clone_color: galera:2 allocation score on metal-3: -INFINITY --clone_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY - clone_color: redis-bundle-master allocation score on metal-1: -INFINITY - clone_color: redis-bundle-master allocation score on metal-2: -INFINITY - clone_color: redis-bundle-master allocation score on metal-3: -INFINITY -@@ -37,35 +16,8 @@ clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINIT - 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 galera-bundle-0: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-1: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-2: -INFINITY --clone_color: redis:0 allocation score on metal-1: -INFINITY --clone_color: redis:0 allocation score on metal-2: -INFINITY --clone_color: redis:0 allocation score on metal-3: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis:0 allocation score on redis-bundle-0: INFINITY --clone_color: redis:0 allocation score on redis-bundle-1: -INFINITY --clone_color: redis:0 allocation score on redis-bundle-2: -INFINITY --clone_color: redis:1 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:1 allocation score on galera-bundle-1: -INFINITY --clone_color: redis:1 allocation score on galera-bundle-2: -INFINITY --clone_color: redis:1 allocation score on metal-1: -INFINITY --clone_color: redis:1 allocation score on metal-2: -INFINITY --clone_color: redis:1 allocation score on metal-3: -INFINITY --clone_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis:1 allocation score on redis-bundle-0: -INFINITY - clone_color: redis:1 allocation score on redis-bundle-1: INFINITY --clone_color: redis:1 allocation score on redis-bundle-2: -INFINITY --clone_color: redis:2 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:2 allocation score on galera-bundle-1: -INFINITY --clone_color: redis:2 allocation score on galera-bundle-2: -INFINITY --clone_color: redis:2 allocation score on metal-1: -INFINITY --clone_color: redis:2 allocation score on metal-2: -INFINITY --clone_color: redis:2 allocation score on metal-3: -INFINITY --clone_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis:2 allocation score on redis-bundle-0: -INFINITY --clone_color: redis:2 allocation score on redis-bundle-1: -INFINITY - clone_color: redis:2 allocation score on redis-bundle-2: INFINITY - clone_color: storage-clone allocation score on metal-1: -INFINITY - clone_color: storage-clone allocation score on metal-2: 0 -@@ -87,51 +39,30 @@ clone_color: storage:3 allocation score on metal-1: -INFINITY - clone_color: storage:3 allocation score on metal-2: 0 - clone_color: storage:3 allocation score on metal-3: 0 - clone_color: storage:3 allocation score on rabbitmq-bundle-0: 0 --container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle allocation score on metal-1: 0 - container_color: galera-bundle allocation score on metal-2: 0 - container_color: galera-bundle allocation score on metal-3: 0 - container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-0 allocation score on metal-1: INFINITY - container_color: galera-bundle-0 allocation score on metal-2: 0 - container_color: galera-bundle-0 allocation score on metal-3: 0 - container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-1 allocation score on metal-1: 0 - container_color: galera-bundle-1 allocation score on metal-2: INFINITY - container_color: galera-bundle-1 allocation score on metal-3: 0 - container_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-2 allocation score on metal-1: 0 - container_color: galera-bundle-2 allocation score on metal-2: 0 - container_color: galera-bundle-2 allocation score on metal-3: INFINITY - container_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-0 allocation score on metal-1: INFINITY - container_color: galera-bundle-docker-0 allocation score on metal-2: 0 - container_color: galera-bundle-docker-0 allocation score on metal-3: 0 - container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-1 allocation score on metal-1: 0 - container_color: galera-bundle-docker-1 allocation score on metal-2: INFINITY - container_color: galera-bundle-docker-1 allocation score on metal-3: 0 - container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-2 allocation score on metal-1: 0 - container_color: galera-bundle-docker-2 allocation score on metal-2: 0 - container_color: galera-bundle-docker-2 allocation score on metal-3: INFINITY -@@ -144,38 +75,8 @@ container_color: galera-bundle-master allocation score on metal-2: 0 - container_color: galera-bundle-master allocation score on metal-3: 0 - container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: 0 - container_color: galera:0 allocation score on galera-bundle-0: INFINITY --container_color: galera:0 allocation score on galera-bundle-1: -INFINITY --container_color: galera:0 allocation score on galera-bundle-2: -INFINITY --container_color: galera:0 allocation score on metal-1: 0 --container_color: galera:0 allocation score on metal-2: 0 --container_color: galera:0 allocation score on metal-3: 0 --container_color: galera:0 allocation score on rabbitmq-bundle-0: 0 --container_color: galera:1 allocation score on galera-bundle-0: -INFINITY - container_color: galera:1 allocation score on galera-bundle-1: INFINITY --container_color: galera:1 allocation score on galera-bundle-2: -INFINITY --container_color: galera:1 allocation score on metal-1: 0 --container_color: galera:1 allocation score on metal-2: 0 --container_color: galera:1 allocation score on metal-3: 0 --container_color: galera:1 allocation score on rabbitmq-bundle-0: 0 --container_color: galera:2 allocation score on galera-bundle-0: -INFINITY --container_color: galera:2 allocation score on galera-bundle-1: -INFINITY - container_color: galera:2 allocation score on galera-bundle-2: INFINITY --container_color: galera:2 allocation score on metal-1: 0 --container_color: galera:2 allocation score on metal-2: 0 --container_color: galera:2 allocation score on metal-3: 0 --container_color: galera:2 allocation score on rabbitmq-bundle-0: 0 --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY - container_color: haproxy-bundle allocation score on metal-1: 0 - container_color: haproxy-bundle allocation score on metal-1: 0 - container_color: haproxy-bundle allocation score on metal-1: 0 -@@ -192,18 +93,6 @@ container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 - container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 - container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 - container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY - container_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY - container_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY -@@ -220,18 +109,6 @@ container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: - container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: 0 --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY -@@ -248,18 +125,6 @@ container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: - container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: 0 --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY -@@ -276,79 +141,34 @@ container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: - container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: 0 --container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle allocation score on metal-1: 0 - container_color: redis-bundle allocation score on metal-2: 0 - container_color: redis-bundle allocation score on metal-3: 0 - container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-0 allocation score on metal-1: INFINITY - container_color: redis-bundle-0 allocation score on metal-2: 0 - container_color: redis-bundle-0 allocation score on metal-3: 0 - container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-1 allocation score on metal-1: 0 - container_color: redis-bundle-1 allocation score on metal-2: INFINITY - container_color: redis-bundle-1 allocation score on metal-3: 0 - container_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-2 allocation score on metal-1: 0 - container_color: redis-bundle-2 allocation score on metal-2: 0 - container_color: redis-bundle-2 allocation score on metal-3: INFINITY - container_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-docker-0 allocation score on metal-1: INFINITY - container_color: redis-bundle-docker-0 allocation score on metal-2: 0 - container_color: redis-bundle-docker-0 allocation score on metal-3: 0 - container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-docker-1 allocation score on metal-1: 0 - container_color: redis-bundle-docker-1 allocation score on metal-2: INFINITY - container_color: redis-bundle-docker-1 allocation score on metal-3: 0 - container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-docker-2 allocation score on metal-1: 0 - container_color: redis-bundle-docker-2 allocation score on metal-2: 0 - container_color: redis-bundle-docker-2 allocation score on metal-3: INFINITY - container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-master allocation score on metal-1: 0 - container_color: redis-bundle-master allocation score on metal-2: 0 - container_color: redis-bundle-master allocation score on metal-3: 0 -@@ -356,66 +176,24 @@ container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: 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 galera-bundle-0: -INFINITY --container_color: redis:0 allocation score on galera-bundle-1: -INFINITY --container_color: redis:0 allocation score on galera-bundle-2: -INFINITY --container_color: redis:0 allocation score on metal-1: 0 --container_color: redis:0 allocation score on metal-2: 0 --container_color: redis:0 allocation score on metal-3: 0 --container_color: redis:0 allocation score on rabbitmq-bundle-0: 0 - container_color: redis:0 allocation score on redis-bundle-0: INFINITY --container_color: redis:0 allocation score on redis-bundle-1: -INFINITY --container_color: redis:0 allocation score on redis-bundle-2: -INFINITY --container_color: redis:1 allocation score on galera-bundle-0: -INFINITY --container_color: redis:1 allocation score on galera-bundle-1: -INFINITY --container_color: redis:1 allocation score on galera-bundle-2: -INFINITY --container_color: redis:1 allocation score on metal-1: 0 --container_color: redis:1 allocation score on metal-2: 0 --container_color: redis:1 allocation score on metal-3: 0 --container_color: redis:1 allocation score on rabbitmq-bundle-0: 0 --container_color: redis:1 allocation score on redis-bundle-0: -INFINITY - container_color: redis:1 allocation score on redis-bundle-1: INFINITY --container_color: redis:1 allocation score on redis-bundle-2: -INFINITY --container_color: redis:2 allocation score on galera-bundle-0: -INFINITY --container_color: redis:2 allocation score on galera-bundle-1: -INFINITY --container_color: redis:2 allocation score on galera-bundle-2: -INFINITY --container_color: redis:2 allocation score on metal-1: 0 --container_color: redis:2 allocation score on metal-2: 0 --container_color: redis:2 allocation score on metal-3: 0 --container_color: redis:2 allocation score on rabbitmq-bundle-0: 0 --container_color: redis:2 allocation score on redis-bundle-0: -INFINITY --container_color: redis:2 allocation score on redis-bundle-1: -INFINITY - container_color: redis:2 allocation score on redis-bundle-2: INFINITY - galera:0 promotion score on galera-bundle-0: -1 - galera:1 promotion score on galera-bundle-1: -1 - galera:2 promotion score on galera-bundle-2: -1 --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-0 allocation score on metal-1: INFINITY - native_color: galera-bundle-0 allocation score on metal-2: -10000 - native_color: galera-bundle-0 allocation score on metal-3: -10000 - native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-1 allocation score on metal-1: 0 - native_color: galera-bundle-1 allocation score on metal-2: INFINITY - native_color: galera-bundle-1 allocation score on metal-3: 0 - native_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-2 allocation score on metal-1: 0 - native_color: galera-bundle-2 allocation score on metal-2: 0 - native_color: galera-bundle-2 allocation score on metal-3: INFINITY - native_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-0 allocation score on metal-1: -INFINITY - native_color: galera-bundle-docker-0 allocation score on metal-1: -INFINITY - native_color: galera-bundle-docker-0 allocation score on metal-2: -INFINITY -@@ -424,151 +202,55 @@ native_color: galera-bundle-docker-0 allocation score on metal-3: -INFINITY - native_color: galera-bundle-docker-0 allocation score on metal-3: 0 - native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-1 allocation score on metal-1: -INFINITY - native_color: galera-bundle-docker-1 allocation score on metal-2: INFINITY - native_color: galera-bundle-docker-1 allocation score on metal-3: 0 - native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-2 allocation score on metal-1: -INFINITY - native_color: galera-bundle-docker-2 allocation score on metal-2: -INFINITY - native_color: galera-bundle-docker-2 allocation score on metal-3: INFINITY - native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on galera-bundle-1: -INFINITY --native_color: galera:0 allocation score on galera-bundle-2: -INFINITY --native_color: galera:0 allocation score on metal-1: -INFINITY --native_color: galera:0 allocation score on metal-2: -INFINITY --native_color: galera:0 allocation score on metal-3: -INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:1 allocation score on galera-bundle-0: -INFINITY - native_color: galera:1 allocation score on galera-bundle-1: INFINITY --native_color: galera:1 allocation score on galera-bundle-2: -INFINITY --native_color: galera:1 allocation score on metal-1: -INFINITY --native_color: galera:1 allocation score on metal-2: -INFINITY --native_color: galera:1 allocation score on metal-3: -INFINITY --native_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:2 allocation score on galera-bundle-0: -INFINITY --native_color: galera:2 allocation score on galera-bundle-1: -INFINITY - native_color: galera:2 allocation score on galera-bundle-2: INFINITY --native_color: galera:2 allocation score on metal-1: -INFINITY --native_color: galera:2 allocation score on metal-2: -INFINITY --native_color: galera:2 allocation score on metal-3: -INFINITY --native_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY - native_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 - native_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 - native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - native_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY - native_color: haproxy-bundle-docker-1 allocation score on metal-2: INFINITY - native_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 - native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - native_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY - native_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY - native_color: haproxy-bundle-docker-2 allocation score on metal-3: INFINITY - native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-0 allocation score on metal-1: INFINITY - native_color: redis-bundle-0 allocation score on metal-2: 0 - native_color: redis-bundle-0 allocation score on metal-3: 0 - native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-1 allocation score on metal-1: 0 - native_color: redis-bundle-1 allocation score on metal-2: INFINITY - native_color: redis-bundle-1 allocation score on metal-3: 0 - native_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-2 allocation score on metal-1: 0 - native_color: redis-bundle-2 allocation score on metal-2: 0 - native_color: redis-bundle-2 allocation score on metal-3: INFINITY - native_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-docker-0 allocation score on metal-1: INFINITY - native_color: redis-bundle-docker-0 allocation score on metal-2: -INFINITY - native_color: redis-bundle-docker-0 allocation score on metal-3: -INFINITY - native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-docker-1 allocation score on metal-1: -INFINITY - native_color: redis-bundle-docker-1 allocation score on metal-2: INFINITY - native_color: redis-bundle-docker-1 allocation score on metal-3: -INFINITY - native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-docker-2 allocation score on metal-1: -INFINITY - native_color: redis-bundle-docker-2 allocation score on metal-2: -INFINITY - native_color: redis-bundle-docker-2 allocation score on metal-3: INFINITY - native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --native_color: redis:0 allocation score on galera-bundle-0: -INFINITY --native_color: redis:0 allocation score on galera-bundle-1: -INFINITY --native_color: redis:0 allocation score on galera-bundle-2: -INFINITY --native_color: redis:0 allocation score on metal-1: -INFINITY --native_color: redis:0 allocation score on metal-2: -INFINITY --native_color: redis:0 allocation score on metal-3: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: redis:0 allocation score on redis-bundle-0: INFINITY --native_color: redis:0 allocation score on redis-bundle-1: -INFINITY --native_color: redis:0 allocation score on redis-bundle-2: -INFINITY --native_color: redis:1 allocation score on galera-bundle-0: -INFINITY --native_color: redis:1 allocation score on galera-bundle-1: -INFINITY --native_color: redis:1 allocation score on galera-bundle-2: -INFINITY --native_color: redis:1 allocation score on metal-1: -INFINITY --native_color: redis:1 allocation score on metal-2: -INFINITY --native_color: redis:1 allocation score on metal-3: -INFINITY --native_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis:1 allocation score on redis-bundle-0: -INFINITY - native_color: redis:1 allocation score on redis-bundle-1: INFINITY --native_color: redis:1 allocation score on redis-bundle-2: -INFINITY --native_color: redis:2 allocation score on galera-bundle-0: -INFINITY --native_color: redis:2 allocation score on galera-bundle-1: -INFINITY --native_color: redis:2 allocation score on galera-bundle-2: -INFINITY --native_color: redis:2 allocation score on metal-1: -INFINITY --native_color: redis:2 allocation score on metal-2: -INFINITY --native_color: redis:2 allocation score on metal-3: -INFINITY --native_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis:2 allocation score on redis-bundle-0: -INFINITY --native_color: redis:2 allocation score on redis-bundle-1: -INFINITY - native_color: redis:2 allocation score on redis-bundle-2: INFINITY - native_color: storage:0 allocation score on metal-1: -INFINITY - native_color: storage:0 allocation score on metal-2: -INFINITY -diff --git a/pengine/test10/bundle-order-stop.exp b/pengine/test10/bundle-order-stop.exp -index c0724c7..0bd404a 100644 ---- a/pengine/test10/bundle-order-stop.exp -+++ b/pengine/test10/bundle-order-stop.exp -@@ -280,7 +280,7 @@ - - - -- -+ - - - -@@ -293,7 +293,7 @@ - - - -- -+ - - - -@@ -306,7 +306,7 @@ - - - -- -+ - - - -@@ -319,7 +319,7 @@ - - - -- -+ - - - -@@ -338,7 +338,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-stop.scores b/pengine/test10/bundle-order-stop.scores -index 528842e..abe9bbc 100644 ---- a/pengine/test10/bundle-order-stop.scores -+++ b/pengine/test10/bundle-order-stop.scores -@@ -1,61 +1,19 @@ - Allocation scores: - clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 --clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: galera-bundle-master allocation score on undercloud: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:0 allocation score on undercloud: -INFINITY - clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 - clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY - clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 - clone_color: redis-bundle-master allocation score on undercloud: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: redis:0 allocation score on redis-bundle-0: INFINITY --clone_color: redis:0 allocation score on undercloud: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle allocation score on undercloud: 0 --container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-0 allocation score on undercloud: INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY - container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: galera-bundle-master allocation score on undercloud: 0 - container_color: galera:0 allocation score on galera-bundle-0: INFINITY --container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera:0 allocation score on undercloud: 0 --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 -@@ -64,30 +22,6 @@ container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 - container_color: haproxy-bundle allocation score on undercloud: 0 --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY -@@ -96,104 +30,40 @@ container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINI - container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY - container_color: openstack-cinder-volume allocation score on undercloud: 0 --container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle allocation score on undercloud: 0 --container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY --container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 - container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY - container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --container_color: rabbitmq:0 allocation score on undercloud: 0 --container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle allocation score on undercloud: 0 --container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-0 allocation score on undercloud: INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY - container_color: redis-bundle-master allocation score on undercloud: 0 --container_color: redis:0 allocation score on galera-bundle-0: -INFINITY --container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: redis:0 allocation score on redis-bundle-0: INFINITY --container_color: redis:0 allocation score on undercloud: 0 - galera:0 promotion score on galera-bundle-0: 100 --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera-bundle-0 allocation score on undercloud: INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: galera-bundle-docker-0 allocation score on undercloud: -INFINITY - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:0 allocation score on undercloud: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY --native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.247 allocation score on undercloud: -INFINITY --native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.248 allocation score on undercloud: -INFINITY --native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.249 allocation score on undercloud: -INFINITY --native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.250 allocation score on undercloud: -INFINITY --native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.253 allocation score on undercloud: -INFINITY --native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY - native_color: ip-192.168.122.254 allocation score on undercloud: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: -INFINITY --native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: -INFINITY - native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --native_color: rabbitmq:0 allocation score on undercloud: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY - native_color: redis-bundle-0 allocation score on undercloud: INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY - native_color: redis-bundle-docker-0 allocation score on undercloud: -INFINITY --native_color: redis:0 allocation score on galera-bundle-0: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: redis:0 allocation score on redis-bundle-0: INFINITY --native_color: redis:0 allocation score on undercloud: -INFINITY - redis:0 promotion score on redis-bundle-0: 1 -diff --git a/pengine/test10/bundle-probe-order-1.scores b/pengine/test10/bundle-probe-order-1.scores -index 48e1355..f5c85b9 100644 ---- a/pengine/test10/bundle-probe-order-1.scores -+++ b/pengine/test10/bundle-probe-order-1.scores -@@ -6,89 +6,38 @@ clone_color: galera-bundle-master allocation score on centos3: -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:0 allocation score on centos1: -INFINITY --clone_color: galera:0 allocation score on centos2: -INFINITY --clone_color: galera:0 allocation score on centos3: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY --clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:1 allocation score on centos1: -INFINITY --clone_color: galera:1 allocation score on centos2: -INFINITY --clone_color: galera:1 allocation score on centos3: -INFINITY --clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY - clone_color: galera:1 allocation score on galera-bundle-1: INFINITY --clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:2 allocation score on centos1: -INFINITY --clone_color: galera:2 allocation score on centos2: -INFINITY --clone_color: galera:2 allocation score on centos3: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY - clone_color: galera:2 allocation score on galera-bundle-2: INFINITY - container_color: galera-bundle allocation score on centos1: -INFINITY - container_color: galera-bundle allocation score on centos2: 0 - container_color: galera-bundle allocation score on centos3: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-0 allocation score on centos1: 0 - container_color: galera-bundle-0 allocation score on centos2: 0 - container_color: galera-bundle-0 allocation score on centos3: 0 --container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-1 allocation score on centos1: 0 - container_color: galera-bundle-1 allocation score on centos2: 0 - container_color: galera-bundle-1 allocation score on centos3: 0 --container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-2 allocation score on centos1: 0 - container_color: galera-bundle-2 allocation score on centos2: 0 - container_color: galera-bundle-2 allocation score on centos3: 0 --container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-0 allocation score on centos1: -INFINITY - container_color: galera-bundle-docker-0 allocation score on centos2: 0 - container_color: galera-bundle-docker-0 allocation score on centos3: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-1 allocation score on centos1: -INFINITY - container_color: galera-bundle-docker-1 allocation score on centos2: 0 - container_color: galera-bundle-docker-1 allocation score on centos3: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-2 allocation score on centos1: -INFINITY - container_color: galera-bundle-docker-2 allocation score on centos2: 0 - container_color: galera-bundle-docker-2 allocation score on centos3: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-master allocation score on centos1: 0 - container_color: galera-bundle-master allocation score on centos2: 0 - container_color: galera-bundle-master allocation score on centos3: 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:0 allocation score on centos1: 0 --container_color: galera:0 allocation score on centos2: 0 --container_color: galera:0 allocation score on centos3: 0 - container_color: galera:0 allocation score on galera-bundle-0: 500 --container_color: galera:0 allocation score on galera-bundle-1: -INFINITY --container_color: galera:0 allocation score on galera-bundle-2: -INFINITY --container_color: galera:1 allocation score on centos1: 0 --container_color: galera:1 allocation score on centos2: 0 --container_color: galera:1 allocation score on centos3: 0 --container_color: galera:1 allocation score on galera-bundle-0: -INFINITY - container_color: galera:1 allocation score on galera-bundle-1: 500 --container_color: galera:1 allocation score on galera-bundle-2: -INFINITY --container_color: galera:2 allocation score on centos1: 0 --container_color: galera:2 allocation score on centos2: 0 --container_color: galera:2 allocation score on centos3: 0 --container_color: galera:2 allocation score on galera-bundle-0: -INFINITY --container_color: galera:2 allocation score on galera-bundle-1: -INFINITY - container_color: galera:2 allocation score on galera-bundle-2: 500 - galera:0 promotion score on none: 0 - galera:1 promotion score on none: 0 -@@ -96,54 +45,21 @@ galera:2 promotion score on none: 0 - native_color: galera-bundle-0 allocation score on centos1: 0 - native_color: galera-bundle-0 allocation score on centos2: 0 - native_color: galera-bundle-0 allocation score on centos3: 0 --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-1 allocation score on centos1: 0 - native_color: galera-bundle-1 allocation score on centos2: 0 - native_color: galera-bundle-1 allocation score on centos3: 0 --native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-2 allocation score on centos1: 0 - native_color: galera-bundle-2 allocation score on centos2: 0 - native_color: galera-bundle-2 allocation score on centos3: 0 --native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-0 allocation score on centos1: -INFINITY - native_color: galera-bundle-docker-0 allocation score on centos2: 0 - native_color: galera-bundle-docker-0 allocation score on centos3: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-1 allocation score on centos1: -INFINITY - native_color: galera-bundle-docker-1 allocation score on centos2: 0 - native_color: galera-bundle-docker-1 allocation score on centos3: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-2 allocation score on centos1: -INFINITY - native_color: galera-bundle-docker-2 allocation score on centos2: 0 - native_color: galera-bundle-docker-2 allocation score on centos3: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --native_color: galera:0 allocation score on centos1: -INFINITY --native_color: galera:0 allocation score on centos2: -INFINITY --native_color: galera:0 allocation score on centos3: -INFINITY - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on galera-bundle-1: -INFINITY --native_color: galera:0 allocation score on galera-bundle-2: -INFINITY --native_color: galera:1 allocation score on centos1: -INFINITY --native_color: galera:1 allocation score on centos2: -INFINITY --native_color: galera:1 allocation score on centos3: -INFINITY --native_color: galera:1 allocation score on galera-bundle-0: -INFINITY - native_color: galera:1 allocation score on galera-bundle-1: INFINITY --native_color: galera:1 allocation score on galera-bundle-2: -INFINITY --native_color: galera:2 allocation score on centos1: -INFINITY --native_color: galera:2 allocation score on centos2: -INFINITY --native_color: galera:2 allocation score on centos3: -INFINITY --native_color: galera:2 allocation score on galera-bundle-0: -INFINITY --native_color: galera:2 allocation score on galera-bundle-1: -INFINITY - native_color: galera:2 allocation score on galera-bundle-2: INFINITY -diff --git a/pengine/test10/bundle-probe-order-2.scores b/pengine/test10/bundle-probe-order-2.scores -index 1d2c261..a1b6b24 100644 ---- a/pengine/test10/bundle-probe-order-2.scores -+++ b/pengine/test10/bundle-probe-order-2.scores -@@ -6,89 +6,38 @@ clone_color: galera-bundle-master allocation score on centos3: -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:0 allocation score on centos1: -INFINITY --clone_color: galera:0 allocation score on centos2: -INFINITY --clone_color: galera:0 allocation score on centos3: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY --clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:1 allocation score on centos1: -INFINITY --clone_color: galera:1 allocation score on centos2: -INFINITY --clone_color: galera:1 allocation score on centos3: -INFINITY --clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY - clone_color: galera:1 allocation score on galera-bundle-1: INFINITY --clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:2 allocation score on centos1: -INFINITY --clone_color: galera:2 allocation score on centos2: -INFINITY --clone_color: galera:2 allocation score on centos3: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY - clone_color: galera:2 allocation score on galera-bundle-2: INFINITY - container_color: galera-bundle allocation score on centos1: -INFINITY - container_color: galera-bundle allocation score on centos2: 0 - container_color: galera-bundle allocation score on centos3: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-0 allocation score on centos1: 0 - container_color: galera-bundle-0 allocation score on centos2: INFINITY - container_color: galera-bundle-0 allocation score on centos3: 0 --container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-1 allocation score on centos1: 0 - container_color: galera-bundle-1 allocation score on centos2: 0 - container_color: galera-bundle-1 allocation score on centos3: 0 --container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-2 allocation score on centos1: 0 - container_color: galera-bundle-2 allocation score on centos2: 0 - container_color: galera-bundle-2 allocation score on centos3: 0 --container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-0 allocation score on centos1: -INFINITY - container_color: galera-bundle-docker-0 allocation score on centos2: INFINITY - container_color: galera-bundle-docker-0 allocation score on centos3: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-1 allocation score on centos1: -INFINITY - container_color: galera-bundle-docker-1 allocation score on centos2: 0 - container_color: galera-bundle-docker-1 allocation score on centos3: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-2 allocation score on centos1: -INFINITY - container_color: galera-bundle-docker-2 allocation score on centos2: 0 - container_color: galera-bundle-docker-2 allocation score on centos3: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-master allocation score on centos1: 0 - container_color: galera-bundle-master allocation score on centos2: 0 - container_color: galera-bundle-master allocation score on centos3: 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:0 allocation score on centos1: 0 --container_color: galera:0 allocation score on centos2: 0 --container_color: galera:0 allocation score on centos3: 0 - container_color: galera:0 allocation score on galera-bundle-0: 500 --container_color: galera:0 allocation score on galera-bundle-1: -INFINITY --container_color: galera:0 allocation score on galera-bundle-2: -INFINITY --container_color: galera:1 allocation score on centos1: 0 --container_color: galera:1 allocation score on centos2: 0 --container_color: galera:1 allocation score on centos3: 0 --container_color: galera:1 allocation score on galera-bundle-0: -INFINITY - container_color: galera:1 allocation score on galera-bundle-1: 500 --container_color: galera:1 allocation score on galera-bundle-2: -INFINITY --container_color: galera:2 allocation score on centos1: 0 --container_color: galera:2 allocation score on centos2: 0 --container_color: galera:2 allocation score on centos3: 0 --container_color: galera:2 allocation score on galera-bundle-0: -INFINITY --container_color: galera:2 allocation score on galera-bundle-1: -INFINITY - container_color: galera:2 allocation score on galera-bundle-2: 500 - galera:0 promotion score on none: 0 - galera:1 promotion score on none: 0 -@@ -96,54 +45,21 @@ galera:2 promotion score on none: 0 - native_color: galera-bundle-0 allocation score on centos1: 0 - native_color: galera-bundle-0 allocation score on centos2: INFINITY - native_color: galera-bundle-0 allocation score on centos3: 0 --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-1 allocation score on centos1: 0 - native_color: galera-bundle-1 allocation score on centos2: 0 - native_color: galera-bundle-1 allocation score on centos3: 0 --native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-2 allocation score on centos1: 0 - native_color: galera-bundle-2 allocation score on centos2: 0 - native_color: galera-bundle-2 allocation score on centos3: 0 --native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-0 allocation score on centos1: -INFINITY - native_color: galera-bundle-docker-0 allocation score on centos2: INFINITY - native_color: galera-bundle-docker-0 allocation score on centos3: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-1 allocation score on centos1: -INFINITY - native_color: galera-bundle-docker-1 allocation score on centos2: -INFINITY - native_color: galera-bundle-docker-1 allocation score on centos3: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-2 allocation score on centos1: -INFINITY - native_color: galera-bundle-docker-2 allocation score on centos2: -INFINITY - native_color: galera-bundle-docker-2 allocation score on centos3: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --native_color: galera:0 allocation score on centos1: -INFINITY --native_color: galera:0 allocation score on centos2: -INFINITY --native_color: galera:0 allocation score on centos3: -INFINITY - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on galera-bundle-1: -INFINITY --native_color: galera:0 allocation score on galera-bundle-2: -INFINITY --native_color: galera:1 allocation score on centos1: -INFINITY --native_color: galera:1 allocation score on centos2: -INFINITY --native_color: galera:1 allocation score on centos3: -INFINITY --native_color: galera:1 allocation score on galera-bundle-0: -INFINITY - native_color: galera:1 allocation score on galera-bundle-1: INFINITY --native_color: galera:1 allocation score on galera-bundle-2: -INFINITY --native_color: galera:2 allocation score on centos1: -INFINITY --native_color: galera:2 allocation score on centos2: -INFINITY --native_color: galera:2 allocation score on centos3: -INFINITY --native_color: galera:2 allocation score on galera-bundle-0: -INFINITY --native_color: galera:2 allocation score on galera-bundle-1: -INFINITY - native_color: galera:2 allocation score on galera-bundle-2: INFINITY -diff --git a/pengine/test10/bundle-probe-order-3.scores b/pengine/test10/bundle-probe-order-3.scores -index d3338e4..294b3f6 100644 ---- a/pengine/test10/bundle-probe-order-3.scores -+++ b/pengine/test10/bundle-probe-order-3.scores -@@ -6,89 +6,38 @@ clone_color: galera-bundle-master allocation score on centos3: -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:0 allocation score on centos1: -INFINITY --clone_color: galera:0 allocation score on centos2: -INFINITY --clone_color: galera:0 allocation score on centos3: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY --clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:1 allocation score on centos1: -INFINITY --clone_color: galera:1 allocation score on centos2: -INFINITY --clone_color: galera:1 allocation score on centos3: -INFINITY --clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY - clone_color: galera:1 allocation score on galera-bundle-1: INFINITY --clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:2 allocation score on centos1: -INFINITY --clone_color: galera:2 allocation score on centos2: -INFINITY --clone_color: galera:2 allocation score on centos3: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY - clone_color: galera:2 allocation score on galera-bundle-2: INFINITY - container_color: galera-bundle allocation score on centos1: -INFINITY - container_color: galera-bundle allocation score on centos2: 0 - container_color: galera-bundle allocation score on centos3: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-0 allocation score on centos1: 0 - container_color: galera-bundle-0 allocation score on centos2: 0 - container_color: galera-bundle-0 allocation score on centos3: 0 --container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-1 allocation score on centos1: 0 - container_color: galera-bundle-1 allocation score on centos2: 0 - container_color: galera-bundle-1 allocation score on centos3: 0 --container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-2 allocation score on centos1: 0 - container_color: galera-bundle-2 allocation score on centos2: 0 - container_color: galera-bundle-2 allocation score on centos3: 0 --container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-0 allocation score on centos1: -INFINITY - container_color: galera-bundle-docker-0 allocation score on centos2: INFINITY - container_color: galera-bundle-docker-0 allocation score on centos3: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-1 allocation score on centos1: -INFINITY - container_color: galera-bundle-docker-1 allocation score on centos2: 0 - container_color: galera-bundle-docker-1 allocation score on centos3: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-2 allocation score on centos1: -INFINITY - container_color: galera-bundle-docker-2 allocation score on centos2: 0 - container_color: galera-bundle-docker-2 allocation score on centos3: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-master allocation score on centos1: 0 - container_color: galera-bundle-master allocation score on centos2: 0 - container_color: galera-bundle-master allocation score on centos3: 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:0 allocation score on centos1: 0 --container_color: galera:0 allocation score on centos2: 0 --container_color: galera:0 allocation score on centos3: 0 - container_color: galera:0 allocation score on galera-bundle-0: 500 --container_color: galera:0 allocation score on galera-bundle-1: -INFINITY --container_color: galera:0 allocation score on galera-bundle-2: -INFINITY --container_color: galera:1 allocation score on centos1: 0 --container_color: galera:1 allocation score on centos2: 0 --container_color: galera:1 allocation score on centos3: 0 --container_color: galera:1 allocation score on galera-bundle-0: -INFINITY - container_color: galera:1 allocation score on galera-bundle-1: 500 --container_color: galera:1 allocation score on galera-bundle-2: -INFINITY --container_color: galera:2 allocation score on centos1: 0 --container_color: galera:2 allocation score on centos2: 0 --container_color: galera:2 allocation score on centos3: 0 --container_color: galera:2 allocation score on galera-bundle-0: -INFINITY --container_color: galera:2 allocation score on galera-bundle-1: -INFINITY - container_color: galera:2 allocation score on galera-bundle-2: 500 - galera:0 promotion score on none: 0 - galera:1 promotion score on none: 0 -@@ -96,54 +45,21 @@ galera:2 promotion score on none: 0 - native_color: galera-bundle-0 allocation score on centos1: 0 - native_color: galera-bundle-0 allocation score on centos2: 0 - native_color: galera-bundle-0 allocation score on centos3: 0 --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-1 allocation score on centos1: 0 - native_color: galera-bundle-1 allocation score on centos2: 0 - native_color: galera-bundle-1 allocation score on centos3: 0 --native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-2 allocation score on centos1: 0 - native_color: galera-bundle-2 allocation score on centos2: 0 - native_color: galera-bundle-2 allocation score on centos3: 0 --native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-0 allocation score on centos1: -INFINITY - native_color: galera-bundle-docker-0 allocation score on centos2: INFINITY - native_color: galera-bundle-docker-0 allocation score on centos3: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-1 allocation score on centos1: -INFINITY - native_color: galera-bundle-docker-1 allocation score on centos2: -INFINITY - native_color: galera-bundle-docker-1 allocation score on centos3: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-2 allocation score on centos1: -INFINITY - native_color: galera-bundle-docker-2 allocation score on centos2: -INFINITY - native_color: galera-bundle-docker-2 allocation score on centos3: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --native_color: galera:0 allocation score on centos1: -INFINITY --native_color: galera:0 allocation score on centos2: -INFINITY --native_color: galera:0 allocation score on centos3: -INFINITY - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on galera-bundle-1: -INFINITY --native_color: galera:0 allocation score on galera-bundle-2: -INFINITY --native_color: galera:1 allocation score on centos1: -INFINITY --native_color: galera:1 allocation score on centos2: -INFINITY --native_color: galera:1 allocation score on centos3: -INFINITY --native_color: galera:1 allocation score on galera-bundle-0: -INFINITY - native_color: galera:1 allocation score on galera-bundle-1: INFINITY --native_color: galera:1 allocation score on galera-bundle-2: -INFINITY --native_color: galera:2 allocation score on centos1: -INFINITY --native_color: galera:2 allocation score on centos2: -INFINITY --native_color: galera:2 allocation score on centos3: -INFINITY --native_color: galera:2 allocation score on galera-bundle-0: -INFINITY --native_color: galera:2 allocation score on galera-bundle-1: -INFINITY - native_color: galera:2 allocation score on galera-bundle-2: INFINITY -diff --git a/pengine/test10/remote-fence-unclean-3.scores b/pengine/test10/remote-fence-unclean-3.scores -index dba2026..014dba6 100644 ---- a/pengine/test10/remote-fence-unclean-3.scores -+++ b/pengine/test10/remote-fence-unclean-3.scores -@@ -6,39 +6,9 @@ clone_color: galera-bundle-master allocation score on overcloud-controller-0: -I - clone_color: galera-bundle-master allocation score on overcloud-controller-1: -INFINITY - clone_color: galera-bundle-master allocation score on overcloud-controller-2: -INFINITY - clone_color: galera-bundle-master allocation score on overcloud-novacompute-0: -INFINITY --clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: galera-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY - clone_color: galera:0 allocation score on galera-bundle-0: INFINITY --clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY --clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:0 allocation score on overcloud-controller-0: -INFINITY --clone_color: galera:0 allocation score on overcloud-controller-1: -INFINITY --clone_color: galera:0 allocation score on overcloud-controller-2: -INFINITY --clone_color: galera:0 allocation score on overcloud-novacompute-0: -INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY - clone_color: galera:1 allocation score on galera-bundle-1: INFINITY --clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY --clone_color: galera:1 allocation score on overcloud-controller-0: -INFINITY --clone_color: galera:1 allocation score on overcloud-controller-1: -INFINITY --clone_color: galera:1 allocation score on overcloud-controller-2: -INFINITY --clone_color: galera:1 allocation score on overcloud-novacompute-0: -INFINITY --clone_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY --clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY - clone_color: galera:2 allocation score on galera-bundle-2: INFINITY --clone_color: galera:2 allocation score on overcloud-controller-0: -INFINITY --clone_color: galera:2 allocation score on overcloud-controller-1: -INFINITY --clone_color: galera:2 allocation score on overcloud-controller-2: -INFINITY --clone_color: galera:2 allocation score on overcloud-novacompute-0: -INFINITY --clone_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: galera:2 allocation score on rabbitmq-bundle-2: -INFINITY - clone_color: rabbitmq-bundle-clone allocation score on overcloud-controller-0: -INFINITY - clone_color: rabbitmq-bundle-clone allocation score on overcloud-controller-1: -INFINITY - clone_color: rabbitmq-bundle-clone allocation score on overcloud-controller-2: -INFINITY -@@ -46,149 +16,47 @@ clone_color: rabbitmq-bundle-clone allocation score on overcloud-novacompute-0: - 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 overcloud-controller-0: -INFINITY --clone_color: rabbitmq:0 allocation score on overcloud-controller-1: -INFINITY --clone_color: rabbitmq:0 allocation score on overcloud-controller-2: -INFINITY --clone_color: rabbitmq:0 allocation score on overcloud-novacompute-0: -INFINITY - clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-controller-0: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-controller-1: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-controller-2: -INFINITY --clone_color: rabbitmq:1 allocation score on overcloud-novacompute-0: -INFINITY --clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY - clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY --clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-controller-0: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-controller-1: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-controller-2: -INFINITY --clone_color: rabbitmq:2 allocation score on overcloud-novacompute-0: -INFINITY --clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: rabbitmq:2 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 galera-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY --clone_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY - clone_color: redis-bundle-master allocation score on overcloud-controller-0: -INFINITY - clone_color: redis-bundle-master allocation score on overcloud-controller-1: -INFINITY - clone_color: redis-bundle-master allocation score on overcloud-controller-2: -INFINITY - clone_color: redis-bundle-master allocation score on overcloud-novacompute-0: -INFINITY --clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: redis-bundle-master allocation score on rabbitmq-bundle-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 galera-bundle-0: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-1: -INFINITY --clone_color: redis:0 allocation score on galera-bundle-2: -INFINITY --clone_color: redis:0 allocation score on overcloud-controller-0: -INFINITY --clone_color: redis:0 allocation score on overcloud-controller-1: -INFINITY --clone_color: redis:0 allocation score on overcloud-controller-2: -INFINITY --clone_color: redis:0 allocation score on overcloud-novacompute-0: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY - clone_color: redis:0 allocation score on redis-bundle-0: INFINITY --clone_color: redis:0 allocation score on redis-bundle-1: -INFINITY --clone_color: redis:0 allocation score on redis-bundle-2: -INFINITY --clone_color: redis:1 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:1 allocation score on galera-bundle-1: -INFINITY --clone_color: redis:1 allocation score on galera-bundle-2: -INFINITY --clone_color: redis:1 allocation score on overcloud-controller-0: -INFINITY --clone_color: redis:1 allocation score on overcloud-controller-1: -INFINITY --clone_color: redis:1 allocation score on overcloud-controller-2: -INFINITY --clone_color: redis:1 allocation score on overcloud-novacompute-0: -INFINITY --clone_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: redis:1 allocation score on redis-bundle-0: -INFINITY - clone_color: redis:1 allocation score on redis-bundle-1: INFINITY --clone_color: redis:1 allocation score on redis-bundle-2: -INFINITY --clone_color: redis:2 allocation score on galera-bundle-0: -INFINITY --clone_color: redis:2 allocation score on galera-bundle-1: -INFINITY --clone_color: redis:2 allocation score on galera-bundle-2: -INFINITY --clone_color: redis:2 allocation score on overcloud-controller-0: -INFINITY --clone_color: redis:2 allocation score on overcloud-controller-1: -INFINITY --clone_color: redis:2 allocation score on overcloud-controller-2: -INFINITY --clone_color: redis:2 allocation score on overcloud-novacompute-0: -INFINITY --clone_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY --clone_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY --clone_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY --clone_color: redis:2 allocation score on redis-bundle-0: -INFINITY --clone_color: redis:2 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 galera-bundle-0: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle allocation score on overcloud-controller-0: 0 - container_color: galera-bundle allocation score on overcloud-controller-1: 0 - container_color: galera-bundle allocation score on overcloud-controller-2: 0 - container_color: galera-bundle allocation score on overcloud-novacompute-0: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-0 allocation score on overcloud-controller-0: INFINITY - container_color: galera-bundle-0 allocation score on overcloud-controller-1: 0 - container_color: galera-bundle-0 allocation score on overcloud-controller-2: 0 - container_color: galera-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY --container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-1 allocation score on overcloud-controller-0: 0 - container_color: galera-bundle-1 allocation score on overcloud-controller-1: INFINITY - container_color: galera-bundle-1 allocation score on overcloud-controller-2: 0 - container_color: galera-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY --container_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-2 allocation score on overcloud-controller-0: 0 - container_color: galera-bundle-2 allocation score on overcloud-controller-1: 0 - container_color: galera-bundle-2 allocation score on overcloud-controller-2: INFINITY - container_color: galera-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY --container_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY - container_color: galera-bundle-docker-0 allocation score on overcloud-controller-1: 0 - container_color: galera-bundle-docker-0 allocation score on overcloud-controller-2: 0 - container_color: galera-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-1 allocation score on overcloud-controller-0: 0 - container_color: galera-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY - container_color: galera-bundle-docker-1 allocation score on overcloud-controller-2: 0 - container_color: galera-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - container_color: galera-bundle-docker-2 allocation score on overcloud-controller-0: 0 - container_color: galera-bundle-docker-2 allocation score on overcloud-controller-1: 0 - container_color: galera-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY - container_color: galera-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY - 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 -@@ -196,60 +64,9 @@ container_color: galera-bundle-master allocation score on overcloud-controller-0 - container_color: galera-bundle-master allocation score on overcloud-controller-1: 0 - container_color: galera-bundle-master allocation score on overcloud-controller-2: 0 - container_color: galera-bundle-master allocation score on overcloud-novacompute-0: 0 --container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY - container_color: galera:0 allocation score on galera-bundle-0: INFINITY --container_color: galera:0 allocation score on galera-bundle-1: -INFINITY --container_color: galera:0 allocation score on galera-bundle-2: -INFINITY --container_color: galera:0 allocation score on overcloud-controller-0: 0 --container_color: galera:0 allocation score on overcloud-controller-1: 0 --container_color: galera:0 allocation score on overcloud-controller-2: 0 --container_color: galera:0 allocation score on overcloud-novacompute-0: 0 --container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: galera:1 allocation score on galera-bundle-0: -INFINITY - container_color: galera:1 allocation score on galera-bundle-1: INFINITY --container_color: galera:1 allocation score on galera-bundle-2: -INFINITY --container_color: galera:1 allocation score on overcloud-controller-0: 0 --container_color: galera:1 allocation score on overcloud-controller-1: 0 --container_color: galera:1 allocation score on overcloud-controller-2: 0 --container_color: galera:1 allocation score on overcloud-novacompute-0: 0 --container_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: galera:2 allocation score on galera-bundle-0: -INFINITY --container_color: galera:2 allocation score on galera-bundle-1: -INFINITY - container_color: galera:2 allocation score on galera-bundle-2: INFINITY --container_color: galera:2 allocation score on overcloud-controller-0: 0 --container_color: galera:2 allocation score on overcloud-controller-1: 0 --container_color: galera:2 allocation score on overcloud-controller-2: 0 --container_color: galera:2 allocation score on overcloud-novacompute-0: 0 --container_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: galera:2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY - container_color: haproxy-bundle allocation score on overcloud-controller-0: 0 - container_color: haproxy-bundle allocation score on overcloud-controller-0: 0 - container_color: haproxy-bundle allocation score on overcloud-controller-0: 0 -@@ -278,69 +95,6 @@ container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -IN - container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY - container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY - container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY - container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY - container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY -@@ -349,19 +103,19 @@ container_color: haproxy-bundle-docker-0 allocation score on overcloud-controlle - container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY - container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY - container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: 0 --container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: 0 - container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: 0 --container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY --container_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY - container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -@@ -369,69 +123,6 @@ container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompu - container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY - container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY -@@ -447,12 +138,12 @@ container_color: haproxy-bundle-docker-1 allocation score on overcloud-controlle - container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY - container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY - container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: 0 --container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY --container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY --container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY --container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY --container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY --container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: 0 -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: 0 - container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -@@ -460,69 +151,6 @@ container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompu - container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY - container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY -@@ -551,135 +179,48 @@ container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompu - container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY - container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: openstack-cinder-backup allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-backup allocation score on galera-bundle-1: -INFINITY --container_color: openstack-cinder-backup allocation score on galera-bundle-2: -INFINITY - container_color: openstack-cinder-backup allocation score on overcloud-controller-0: 0 - container_color: openstack-cinder-backup allocation score on overcloud-controller-1: 0 - container_color: openstack-cinder-backup allocation score on overcloud-controller-2: 0 - container_color: openstack-cinder-backup allocation score on overcloud-novacompute-0: -INFINITY --container_color: openstack-cinder-backup allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-backup allocation score on rabbitmq-bundle-1: -INFINITY --container_color: openstack-cinder-backup allocation score on rabbitmq-bundle-2: -INFINITY --container_color: openstack-cinder-backup allocation score on redis-bundle-0: -INFINITY --container_color: openstack-cinder-backup allocation score on redis-bundle-1: -INFINITY --container_color: openstack-cinder-backup allocation score on redis-bundle-2: -INFINITY --container_color: openstack-cinder-backup-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-backup-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: openstack-cinder-backup-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: openstack-cinder-backup-docker-0 allocation score on overcloud-controller-0: 0 - container_color: openstack-cinder-backup-docker-0 allocation score on overcloud-controller-1: INFINITY - container_color: openstack-cinder-backup-docker-0 allocation score on overcloud-controller-2: 0 - container_color: openstack-cinder-backup-docker-0 allocation score on overcloud-novacompute-0: -INFINITY --container_color: openstack-cinder-backup-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-backup-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: openstack-cinder-backup-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: openstack-cinder-backup-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: openstack-cinder-backup-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: openstack-cinder-backup-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on galera-bundle-1: -INFINITY --container_color: openstack-cinder-volume allocation score on galera-bundle-2: -INFINITY - container_color: openstack-cinder-volume allocation score on overcloud-controller-0: 0 - container_color: openstack-cinder-volume allocation score on overcloud-controller-1: 0 - container_color: openstack-cinder-volume allocation score on overcloud-controller-2: 0 - container_color: openstack-cinder-volume allocation score on overcloud-novacompute-0: -INFINITY --container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-1: -INFINITY --container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-2: -INFINITY --container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY --container_color: openstack-cinder-volume allocation score on redis-bundle-1: -INFINITY --container_color: openstack-cinder-volume allocation score on redis-bundle-2: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: openstack-cinder-volume-docker-0 allocation score on overcloud-controller-0: INFINITY - container_color: openstack-cinder-volume-docker-0 allocation score on overcloud-controller-1: 0 - container_color: openstack-cinder-volume-docker-0 allocation score on overcloud-controller-2: 0 - container_color: openstack-cinder-volume-docker-0 allocation score on overcloud-novacompute-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-2: -INFINITY - container_color: rabbitmq-bundle allocation score on overcloud-controller-0: 0 - container_color: rabbitmq-bundle allocation score on overcloud-controller-1: 0 - container_color: rabbitmq-bundle allocation score on overcloud-controller-2: 0 - container_color: rabbitmq-bundle allocation score on overcloud-novacompute-0: -INFINITY --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on overcloud-controller-0: INFINITY - container_color: rabbitmq-bundle-0 allocation score on overcloud-controller-1: 0 - container_color: rabbitmq-bundle-0 allocation score on overcloud-controller-2: 0 - container_color: rabbitmq-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY --container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-1 allocation score on overcloud-controller-0: 0 - container_color: rabbitmq-bundle-1 allocation score on overcloud-controller-1: INFINITY - container_color: rabbitmq-bundle-1 allocation score on overcloud-controller-2: 0 - container_color: rabbitmq-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY --container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-2 allocation score on overcloud-controller-0: 0 - container_color: rabbitmq-bundle-2 allocation score on overcloud-controller-1: 0 - container_color: rabbitmq-bundle-2 allocation score on overcloud-controller-2: INFINITY - container_color: rabbitmq-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY --container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-clone allocation score on overcloud-controller-0: 0 - container_color: rabbitmq-bundle-clone allocation score on overcloud-controller-1: 0 - container_color: rabbitmq-bundle-clone allocation score on overcloud-controller-2: 0 - container_color: rabbitmq-bundle-clone allocation score on overcloud-novacompute-0: 0 --container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 --container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-1: 0 --container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-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 overcloud-controller-0: INFINITY - container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-1: 0 - container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-2: 0 -@@ -691,179 +232,53 @@ container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controll - container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY - container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-2: 0 - container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY --container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY - container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-0: 0 - container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-1: 0 - container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY - container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY --container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY - container_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: rabbitmq:0 allocation score on overcloud-controller-0: 0 --container_color: rabbitmq:0 allocation score on overcloud-controller-1: 0 --container_color: rabbitmq:0 allocation score on overcloud-controller-2: 0 --container_color: rabbitmq:0 allocation score on overcloud-novacompute-0: 0 - container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --container_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: 0 --container_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: 0 --container_color: rabbitmq:1 allocation score on overcloud-controller-0: 0 --container_color: rabbitmq:1 allocation score on overcloud-controller-1: 0 --container_color: rabbitmq:1 allocation score on overcloud-controller-2: 0 --container_color: rabbitmq:1 allocation score on overcloud-novacompute-0: 0 --container_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: 0 - container_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY --container_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: 0 --container_color: rabbitmq:2 allocation score on overcloud-controller-0: 0 --container_color: rabbitmq:2 allocation score on overcloud-controller-1: 0 --container_color: rabbitmq:2 allocation score on overcloud-controller-2: 0 --container_color: rabbitmq:2 allocation score on overcloud-novacompute-0: 0 --container_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: 0 --container_color: rabbitmq:2 allocation score on rabbitmq-bundle-1: 0 - container_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY --container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle allocation score on overcloud-controller-0: 0 - container_color: redis-bundle allocation score on overcloud-controller-1: 0 - container_color: redis-bundle allocation score on overcloud-controller-2: 0 - container_color: redis-bundle allocation score on overcloud-novacompute-0: -INFINITY --container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-0 allocation score on overcloud-controller-0: INFINITY - container_color: redis-bundle-0 allocation score on overcloud-controller-1: 0 - container_color: redis-bundle-0 allocation score on overcloud-controller-2: 0 - container_color: redis-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY --container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-1 allocation score on overcloud-controller-0: 0 - container_color: redis-bundle-1 allocation score on overcloud-controller-1: INFINITY - container_color: redis-bundle-1 allocation score on overcloud-controller-2: 0 - container_color: redis-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY --container_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-2 allocation score on overcloud-controller-0: 0 - container_color: redis-bundle-2 allocation score on overcloud-controller-1: 0 - container_color: redis-bundle-2 allocation score on overcloud-controller-2: INFINITY - container_color: redis-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY --container_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY - container_color: redis-bundle-docker-0 allocation score on overcloud-controller-1: 0 - container_color: redis-bundle-docker-0 allocation score on overcloud-controller-2: 0 - container_color: redis-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-docker-1 allocation score on overcloud-controller-0: 0 - container_color: redis-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY - container_color: redis-bundle-docker-1 allocation score on overcloud-controller-2: 0 - container_color: redis-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-docker-2 allocation score on overcloud-controller-0: 0 - container_color: redis-bundle-docker-2 allocation score on overcloud-controller-1: 0 - container_color: redis-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY - container_color: redis-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --container_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --container_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY --container_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY - container_color: redis-bundle-master allocation score on overcloud-controller-0: 0 - container_color: redis-bundle-master allocation score on overcloud-controller-1: 0 - container_color: redis-bundle-master allocation score on overcloud-controller-2: 0 - container_color: redis-bundle-master allocation score on overcloud-novacompute-0: 0 --container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis-bundle-master allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis-bundle-master allocation score on rabbitmq-bundle-2: -INFINITY - 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 galera-bundle-0: -INFINITY --container_color: redis:0 allocation score on galera-bundle-1: -INFINITY --container_color: redis:0 allocation score on galera-bundle-2: -INFINITY --container_color: redis:0 allocation score on overcloud-controller-0: 0 --container_color: redis:0 allocation score on overcloud-controller-1: 0 --container_color: redis:0 allocation score on overcloud-controller-2: 0 --container_color: redis:0 allocation score on overcloud-novacompute-0: 0 --container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY - container_color: redis:0 allocation score on redis-bundle-0: INFINITY --container_color: redis:0 allocation score on redis-bundle-1: -INFINITY --container_color: redis:0 allocation score on redis-bundle-2: -INFINITY --container_color: redis:1 allocation score on galera-bundle-0: -INFINITY --container_color: redis:1 allocation score on galera-bundle-1: -INFINITY --container_color: redis:1 allocation score on galera-bundle-2: -INFINITY --container_color: redis:1 allocation score on overcloud-controller-0: 0 --container_color: redis:1 allocation score on overcloud-controller-1: 0 --container_color: redis:1 allocation score on overcloud-controller-2: 0 --container_color: redis:1 allocation score on overcloud-novacompute-0: 0 --container_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis:1 allocation score on redis-bundle-0: -INFINITY - container_color: redis:1 allocation score on redis-bundle-1: INFINITY --container_color: redis:1 allocation score on redis-bundle-2: -INFINITY --container_color: redis:2 allocation score on galera-bundle-0: -INFINITY --container_color: redis:2 allocation score on galera-bundle-1: -INFINITY --container_color: redis:2 allocation score on galera-bundle-2: -INFINITY --container_color: redis:2 allocation score on overcloud-controller-0: 0 --container_color: redis:2 allocation score on overcloud-controller-1: 0 --container_color: redis:2 allocation score on overcloud-controller-2: 0 --container_color: redis:2 allocation score on overcloud-novacompute-0: 0 --container_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY --container_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY --container_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY --container_color: redis:2 allocation score on redis-bundle-0: -INFINITY --container_color: redis:2 allocation score on redis-bundle-1: -INFINITY - 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 -@@ -875,239 +290,77 @@ native_color: fence1 allocation score on overcloud-novacompute-0: -INFINITY - native_color: fence1 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: fence1 allocation score on rabbitmq-bundle-1: -INFINITY - native_color: fence1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-0 allocation score on overcloud-controller-0: INFINITY - native_color: galera-bundle-0 allocation score on overcloud-controller-1: 0 - native_color: galera-bundle-0 allocation score on overcloud-controller-2: 0 - native_color: galera-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY --native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-1 allocation score on overcloud-controller-0: 0 - native_color: galera-bundle-1 allocation score on overcloud-controller-1: INFINITY - native_color: galera-bundle-1 allocation score on overcloud-controller-2: 0 - native_color: galera-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY --native_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-2 allocation score on overcloud-controller-0: 0 - native_color: galera-bundle-2 allocation score on overcloud-controller-1: 0 - native_color: galera-bundle-2 allocation score on overcloud-controller-2: INFINITY - native_color: galera-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY --native_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY - native_color: galera-bundle-docker-0 allocation score on overcloud-controller-1: 0 - native_color: galera-bundle-docker-0 allocation score on overcloud-controller-2: 0 - native_color: galera-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY - native_color: galera-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY - native_color: galera-bundle-docker-1 allocation score on overcloud-controller-2: 0 - native_color: galera-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - native_color: galera-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY - native_color: galera-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY - native_color: galera-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY - native_color: galera-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: galera:0 allocation score on galera-bundle-0: INFINITY --native_color: galera:0 allocation score on galera-bundle-1: -INFINITY --native_color: galera:0 allocation score on galera-bundle-2: -INFINITY --native_color: galera:0 allocation score on overcloud-controller-0: -INFINITY --native_color: galera:0 allocation score on overcloud-controller-1: -INFINITY --native_color: galera:0 allocation score on overcloud-controller-2: -INFINITY --native_color: galera:0 allocation score on overcloud-novacompute-0: -INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera:0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: galera:1 allocation score on galera-bundle-0: -INFINITY - native_color: galera:1 allocation score on galera-bundle-1: INFINITY --native_color: galera:1 allocation score on galera-bundle-2: -INFINITY --native_color: galera:1 allocation score on overcloud-controller-0: -INFINITY --native_color: galera:1 allocation score on overcloud-controller-1: -INFINITY --native_color: galera:1 allocation score on overcloud-controller-2: -INFINITY --native_color: galera:1 allocation score on overcloud-novacompute-0: -INFINITY --native_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera:1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: galera:2 allocation score on galera-bundle-0: -INFINITY --native_color: galera:2 allocation score on galera-bundle-1: -INFINITY - native_color: galera:2 allocation score on galera-bundle-2: INFINITY --native_color: galera:2 allocation score on overcloud-controller-0: -INFINITY --native_color: galera:2 allocation score on overcloud-controller-1: -INFINITY --native_color: galera:2 allocation score on overcloud-controller-2: -INFINITY --native_color: galera:2 allocation score on overcloud-novacompute-0: -INFINITY --native_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: galera:2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: galera:2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY --native_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: INFINITY --native_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-1: 0 -+native_color: haproxy-bundle-docker-0 allocation score on overcloud-controller-2: 0 - native_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - native_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY - native_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY --native_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on overcloud-controller-2: 0 - native_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - native_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY - native_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY - native_color: haproxy-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY - native_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --native_color: haproxy-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --native_color: ip-10.0.0.7 allocation score on galera-bundle-0: -INFINITY --native_color: ip-10.0.0.7 allocation score on galera-bundle-1: -INFINITY --native_color: ip-10.0.0.7 allocation score on galera-bundle-2: -INFINITY - native_color: ip-10.0.0.7 allocation score on overcloud-controller-0: 0 - native_color: ip-10.0.0.7 allocation score on overcloud-controller-1: INFINITY - native_color: ip-10.0.0.7 allocation score on overcloud-controller-2: 0 - native_color: ip-10.0.0.7 allocation score on overcloud-novacompute-0: -INFINITY --native_color: ip-10.0.0.7 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-10.0.0.7 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: ip-10.0.0.7 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: ip-10.0.0.7 allocation score on redis-bundle-0: -INFINITY --native_color: ip-10.0.0.7 allocation score on redis-bundle-1: -INFINITY --native_color: ip-10.0.0.7 allocation score on redis-bundle-2: -INFINITY --native_color: ip-172.16.1.9 allocation score on galera-bundle-0: -INFINITY --native_color: ip-172.16.1.9 allocation score on galera-bundle-1: -INFINITY --native_color: ip-172.16.1.9 allocation score on galera-bundle-2: -INFINITY - native_color: ip-172.16.1.9 allocation score on overcloud-controller-0: 0 - native_color: ip-172.16.1.9 allocation score on overcloud-controller-1: INFINITY - native_color: ip-172.16.1.9 allocation score on overcloud-controller-2: 0 - native_color: ip-172.16.1.9 allocation score on overcloud-novacompute-0: -INFINITY --native_color: ip-172.16.1.9 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-172.16.1.9 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: ip-172.16.1.9 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: ip-172.16.1.9 allocation score on redis-bundle-0: -INFINITY --native_color: ip-172.16.1.9 allocation score on redis-bundle-1: -INFINITY --native_color: ip-172.16.1.9 allocation score on redis-bundle-2: -INFINITY --native_color: ip-172.16.2.4 allocation score on galera-bundle-0: -INFINITY --native_color: ip-172.16.2.4 allocation score on galera-bundle-1: -INFINITY --native_color: ip-172.16.2.4 allocation score on galera-bundle-2: -INFINITY - native_color: ip-172.16.2.4 allocation score on overcloud-controller-0: 0 - native_color: ip-172.16.2.4 allocation score on overcloud-controller-1: 0 - native_color: ip-172.16.2.4 allocation score on overcloud-controller-2: INFINITY - native_color: ip-172.16.2.4 allocation score on overcloud-novacompute-0: -INFINITY --native_color: ip-172.16.2.4 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-172.16.2.4 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: ip-172.16.2.4 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: ip-172.16.2.4 allocation score on redis-bundle-0: -INFINITY --native_color: ip-172.16.2.4 allocation score on redis-bundle-1: -INFINITY --native_color: ip-172.16.2.4 allocation score on redis-bundle-2: -INFINITY --native_color: ip-172.16.2.8 allocation score on galera-bundle-0: -INFINITY --native_color: ip-172.16.2.8 allocation score on galera-bundle-1: -INFINITY --native_color: ip-172.16.2.8 allocation score on galera-bundle-2: -INFINITY - native_color: ip-172.16.2.8 allocation score on overcloud-controller-0: INFINITY - native_color: ip-172.16.2.8 allocation score on overcloud-controller-1: 0 - native_color: ip-172.16.2.8 allocation score on overcloud-controller-2: 0 - native_color: ip-172.16.2.8 allocation score on overcloud-novacompute-0: -INFINITY --native_color: ip-172.16.2.8 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-172.16.2.8 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: ip-172.16.2.8 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: ip-172.16.2.8 allocation score on redis-bundle-0: -INFINITY --native_color: ip-172.16.2.8 allocation score on redis-bundle-1: -INFINITY --native_color: ip-172.16.2.8 allocation score on redis-bundle-2: -INFINITY --native_color: ip-172.16.3.9 allocation score on galera-bundle-0: -INFINITY --native_color: ip-172.16.3.9 allocation score on galera-bundle-1: -INFINITY --native_color: ip-172.16.3.9 allocation score on galera-bundle-2: -INFINITY - native_color: ip-172.16.3.9 allocation score on overcloud-controller-0: 0 - native_color: ip-172.16.3.9 allocation score on overcloud-controller-1: 0 - native_color: ip-172.16.3.9 allocation score on overcloud-controller-2: INFINITY - native_color: ip-172.16.3.9 allocation score on overcloud-novacompute-0: -INFINITY --native_color: ip-172.16.3.9 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-172.16.3.9 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: ip-172.16.3.9 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: ip-172.16.3.9 allocation score on redis-bundle-0: -INFINITY --native_color: ip-172.16.3.9 allocation score on redis-bundle-1: -INFINITY --native_color: ip-172.16.3.9 allocation score on redis-bundle-2: -INFINITY --native_color: ip-192.168.24.9 allocation score on galera-bundle-0: -INFINITY --native_color: ip-192.168.24.9 allocation score on galera-bundle-1: -INFINITY --native_color: ip-192.168.24.9 allocation score on galera-bundle-2: -INFINITY - native_color: ip-192.168.24.9 allocation score on overcloud-controller-0: INFINITY - native_color: ip-192.168.24.9 allocation score on overcloud-controller-1: 0 - native_color: ip-192.168.24.9 allocation score on overcloud-controller-2: 0 - native_color: ip-192.168.24.9 allocation score on overcloud-novacompute-0: -INFINITY --native_color: ip-192.168.24.9 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: ip-192.168.24.9 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: ip-192.168.24.9 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: ip-192.168.24.9 allocation score on redis-bundle-0: -INFINITY --native_color: ip-192.168.24.9 allocation score on redis-bundle-1: -INFINITY --native_color: ip-192.168.24.9 allocation score on redis-bundle-2: -INFINITY --native_color: openstack-cinder-backup-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: openstack-cinder-backup-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: openstack-cinder-backup-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: openstack-cinder-backup-docker-0 allocation score on overcloud-controller-0: 0 - native_color: openstack-cinder-backup-docker-0 allocation score on overcloud-controller-1: INFINITY - native_color: openstack-cinder-backup-docker-0 allocation score on overcloud-controller-2: 0 - native_color: openstack-cinder-backup-docker-0 allocation score on overcloud-novacompute-0: -INFINITY --native_color: openstack-cinder-backup-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: openstack-cinder-backup-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: openstack-cinder-backup-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: openstack-cinder-backup-docker-0 allocation score on redis-bundle-0: -INFINITY --native_color: openstack-cinder-backup-docker-0 allocation score on redis-bundle-1: -INFINITY --native_color: openstack-cinder-backup-docker-0 allocation score on redis-bundle-2: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: openstack-cinder-volume-docker-0 allocation score on overcloud-controller-0: INFINITY - native_color: openstack-cinder-volume-docker-0 allocation score on overcloud-controller-1: 0 - native_color: openstack-cinder-volume-docker-0 allocation score on overcloud-controller-2: 0 - native_color: openstack-cinder-volume-docker-0 allocation score on overcloud-novacompute-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-1: -INFINITY --native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-2: -INFINITY - native_color: overcloud-novacompute-0 allocation score on overcloud-controller-0: -INFINITY - native_color: overcloud-novacompute-0 allocation score on overcloud-controller-1: -INFINITY - native_color: overcloud-novacompute-0 allocation score on overcloud-controller-2: -INFINITY -@@ -1119,23 +372,17 @@ native_color: rabbitmq-bundle-0 allocation score on overcloud-controller-0: INFI - native_color: rabbitmq-bundle-0 allocation score on overcloud-controller-1: 0 - native_color: rabbitmq-bundle-0 allocation score on overcloud-controller-2: 0 - native_color: rabbitmq-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY --native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY - native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: rabbitmq-bundle-1 allocation score on overcloud-controller-0: 0 - native_color: rabbitmq-bundle-1 allocation score on overcloud-controller-1: INFINITY - native_color: rabbitmq-bundle-1 allocation score on overcloud-controller-2: 0 - native_color: rabbitmq-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY --native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY - native_color: rabbitmq-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: rabbitmq-bundle-2 allocation score on overcloud-controller-0: 0 - native_color: rabbitmq-bundle-2 allocation score on overcloud-controller-1: 0 - native_color: rabbitmq-bundle-2 allocation score on overcloud-controller-2: INFINITY - native_color: rabbitmq-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY --native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: rabbitmq-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY - native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-1: 0 - native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-controller-2: 0 -@@ -1147,153 +394,42 @@ native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller- - native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY - native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-controller-2: 0 - native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY --native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY - native_color: rabbitmq-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY - native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY - native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY - native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY --native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY - native_color: rabbitmq-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-controller-0: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-controller-1: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-controller-2: -INFINITY --native_color: rabbitmq:0 allocation score on overcloud-novacompute-0: -INFINITY - native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY --native_color: rabbitmq:0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: rabbitmq:0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-controller-0: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-controller-1: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-controller-2: -INFINITY --native_color: rabbitmq:1 allocation score on overcloud-novacompute-0: -INFINITY --native_color: rabbitmq:1 allocation score on rabbitmq-bundle-0: -INFINITY - native_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY --native_color: rabbitmq:1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-controller-0: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-controller-1: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-controller-2: -INFINITY --native_color: rabbitmq:2 allocation score on overcloud-novacompute-0: -INFINITY --native_color: rabbitmq:2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: rabbitmq:2 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 galera-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-0 allocation score on overcloud-controller-0: INFINITY - native_color: redis-bundle-0 allocation score on overcloud-controller-1: 0 - native_color: redis-bundle-0 allocation score on overcloud-controller-2: 0 - native_color: redis-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY --native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis-bundle-0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-1 allocation score on overcloud-controller-0: 0 - native_color: redis-bundle-1 allocation score on overcloud-controller-1: INFINITY - native_color: redis-bundle-1 allocation score on overcloud-controller-2: 0 - native_color: redis-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY --native_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis-bundle-1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-2 allocation score on overcloud-controller-0: 0 - native_color: redis-bundle-2 allocation score on overcloud-controller-1: 0 - native_color: redis-bundle-2 allocation score on overcloud-controller-2: INFINITY - native_color: redis-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY --native_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis-bundle-2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-docker-0 allocation score on overcloud-controller-0: INFINITY - native_color: redis-bundle-docker-0 allocation score on overcloud-controller-1: 0 - native_color: redis-bundle-docker-0 allocation score on overcloud-controller-2: 0 - native_color: redis-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-docker-1 allocation score on overcloud-controller-0: -INFINITY - native_color: redis-bundle-docker-1 allocation score on overcloud-controller-1: INFINITY - native_color: redis-bundle-docker-1 allocation score on overcloud-controller-2: 0 - native_color: redis-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY --native_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY --native_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY - native_color: redis-bundle-docker-2 allocation score on overcloud-controller-0: -INFINITY - native_color: redis-bundle-docker-2 allocation score on overcloud-controller-1: -INFINITY - native_color: redis-bundle-docker-2 allocation score on overcloud-controller-2: INFINITY - native_color: redis-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY --native_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY --native_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY --native_color: redis:0 allocation score on galera-bundle-0: -INFINITY --native_color: redis:0 allocation score on galera-bundle-1: -INFINITY --native_color: redis:0 allocation score on galera-bundle-2: -INFINITY --native_color: redis:0 allocation score on overcloud-controller-0: -INFINITY --native_color: redis:0 allocation score on overcloud-controller-1: -INFINITY --native_color: redis:0 allocation score on overcloud-controller-2: -INFINITY --native_color: redis:0 allocation score on overcloud-novacompute-0: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis:0 allocation score on rabbitmq-bundle-2: -INFINITY - native_color: redis:0 allocation score on redis-bundle-0: INFINITY --native_color: redis:0 allocation score on redis-bundle-1: -INFINITY --native_color: redis:0 allocation score on redis-bundle-2: -INFINITY --native_color: redis:1 allocation score on galera-bundle-0: -INFINITY --native_color: redis:1 allocation score on galera-bundle-1: -INFINITY --native_color: redis:1 allocation score on galera-bundle-2: -INFINITY --native_color: redis:1 allocation score on overcloud-controller-0: -INFINITY --native_color: redis:1 allocation score on overcloud-controller-1: -INFINITY --native_color: redis:1 allocation score on overcloud-controller-2: -INFINITY --native_color: redis:1 allocation score on overcloud-novacompute-0: -INFINITY --native_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis:1 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis:1 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis:1 allocation score on redis-bundle-0: -INFINITY - native_color: redis:1 allocation score on redis-bundle-1: INFINITY --native_color: redis:1 allocation score on redis-bundle-2: -INFINITY --native_color: redis:2 allocation score on galera-bundle-0: -INFINITY --native_color: redis:2 allocation score on galera-bundle-1: -INFINITY --native_color: redis:2 allocation score on galera-bundle-2: -INFINITY --native_color: redis:2 allocation score on overcloud-controller-0: -INFINITY --native_color: redis:2 allocation score on overcloud-controller-1: -INFINITY --native_color: redis:2 allocation score on overcloud-controller-2: -INFINITY --native_color: redis:2 allocation score on overcloud-novacompute-0: -INFINITY --native_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY --native_color: redis:2 allocation score on rabbitmq-bundle-1: -INFINITY --native_color: redis:2 allocation score on rabbitmq-bundle-2: -INFINITY --native_color: redis:2 allocation score on redis-bundle-0: -INFINITY --native_color: redis:2 allocation score on redis-bundle-1: -INFINITY - native_color: redis:2 allocation score on redis-bundle-2: INFINITY - redis:0 promotion score on redis-bundle-0: 1 - redis:1 promotion score on redis-bundle-1: 1 --- -1.8.3.1 - - -From e1e81ae8802296987c2b956946e00437471e24a4 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 23 Oct 2017 14:14:11 +1100 -Subject: [PATCH 3/6] Fix: PE: Consolidate REMOTE_CONTAINER_HACK logic - ---- - include/crm/pengine/internal.h | 3 +- - lib/pengine/container.c | 99 +++++++++++++++++++++++++++++++++ - lib/pengine/utils.c | 44 ++------------- - pengine/container.c | 23 +++----- - pengine/test10/bundle-probe-order-2.xml | 4 +- - 5 files changed, 114 insertions(+), 59 deletions(-) - -diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h -index 70dd7c7..97ec8c3 100644 ---- a/include/crm/pengine/internal.h -+++ b/include/crm/pengine/internal.h -@@ -297,7 +297,8 @@ node_t *pe_create_node(const char *id, const char *uname, const char *type, - bool remote_id_conflict(const char *remote_name, pe_working_set_t *data); - void common_print(resource_t * rsc, const char *pre_text, const char *name, node_t *node, long options, void *print_data); - resource_t *find_container_child(const char *stem, resource_t * rsc, node_t *node); --bool fix_remote_addr(resource_t * rsc); -+bool container_fix_remote_addr(resource_t *rsc); -+const char *container_fix_remote_addr_in(resource_t *rsc, xmlNode *xml, const char *field); - const char *pe_node_attribute_calculated(pe_node_t *node, const char *name, resource_t *rsc); - const char *pe_node_attribute_raw(pe_node_t *node, const char *name); - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index b66c57d..d25d5a9 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -718,6 +718,105 @@ static void port_free(container_port_t *port) - free(port); - } - -+static container_grouping_t * -+tuple_for_remote(resource_t *remote) -+{ -+ resource_t *top = remote; -+ container_variant_data_t *container_data = NULL; -+ -+ if (top == NULL) { -+ return NULL; -+ } -+ -+ while (top->parent != NULL) { -+ top = top->parent; -+ } -+ -+ get_container_variant_data(container_data, top); -+ for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { -+ container_grouping_t *tuple = (container_grouping_t *)gIter->data; -+ if(tuple->remote == remote) { -+ return tuple; -+ } -+ } -+ CRM_LOG_ASSERT(FALSE); -+ return NULL; -+} -+ -+bool -+container_fix_remote_addr(resource_t *rsc) -+{ -+ const char *name; -+ const char *value; -+ const char *attr_list[] = { -+ XML_ATTR_TYPE, -+ XML_AGENT_ATTR_CLASS, -+ XML_AGENT_ATTR_PROVIDER -+ }; -+ const char *value_list[] = { -+ "remote", -+ PCMK_RESOURCE_CLASS_OCF, -+ "pacemaker" -+ }; -+ -+ if(rsc == NULL) { -+ return FALSE; -+ } -+ -+ name = "addr"; -+ value = g_hash_table_lookup(rsc->parameters, name); -+ if (safe_str_eq(value, "#uname") == FALSE) { -+ return FALSE; -+ } -+ -+ for (int lpc = 0; lpc < DIMOF(attr_list); lpc++) { -+ name = attr_list[lpc]; -+ value = crm_element_value(rsc->xml, attr_list[lpc]); -+ if (safe_str_eq(value, value_list[lpc]) == FALSE) { -+ return FALSE; -+ } -+ } -+ return TRUE; -+} -+ -+const char * -+container_fix_remote_addr_in(resource_t *rsc, xmlNode *xml, const char *field) -+{ -+ // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside -+ -+ pe_node_t *node = NULL; -+ container_grouping_t *tuple = NULL; -+ -+ if(container_fix_remote_addr(rsc) == FALSE) { -+ return NULL; -+ } -+ -+ tuple = tuple_for_remote(rsc); -+ if(tuple == NULL) { -+ return NULL; -+ } -+ -+ node = tuple->docker->allocated_to; -+ if(node == NULL && tuple->docker->running_on) { -+ /* If it wont be running anywhere after the -+ * transition, go with where it's running now. -+ */ -+ node = tuple->docker->running_on->data; -+ } -+ -+ if(node == NULL) { -+ crm_trace("Cannot fix address for %s", tuple->remote->id); -+ return NULL; -+ } -+ -+ crm_trace("Fixing addr for %s on %s", rsc->id, node->details->uname); -+ if(xml != NULL && field != NULL) { -+ crm_xml_add(xml, field, node->details->uname); -+ } -+ -+ return node->details->uname; -+} -+ - gboolean - container_unpack(resource_t * rsc, pe_working_set_t * data_set) - { -diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c -index d9cace2..272fa16 100644 ---- a/lib/pengine/utils.c -+++ b/lib/pengine/utils.c -@@ -949,42 +1836,6 @@ filter_parameters(xmlNode * param_set, const char *param_string, bool need_prese - } - } - --bool fix_remote_addr(resource_t * rsc) --{ -- const char *name; -- const char *value; -- const char *attr_list[] = { -- XML_ATTR_TYPE, -- XML_AGENT_ATTR_CLASS, -- XML_AGENT_ATTR_PROVIDER -- }; -- const char *value_list[] = { -- "remote", -- "ocf", -- "pacemaker" -- }; -- -- if(rsc == NULL) { -- return FALSE; -- } -- -- name = "addr"; -- value = g_hash_table_lookup(rsc->parameters, name); -- if (safe_str_eq(value, "#uname") == FALSE) { -- return FALSE; -- } -- -- for (int lpc = 0; lpc < DIMOF(attr_list); lpc++) { -- name = attr_list[lpc]; -- value = crm_element_value(rsc->xml, attr_list[lpc]); -- if (safe_str_eq(value, value_list[lpc]) == FALSE) { -- return FALSE; -- } -- } -- -- return TRUE; --} -- - static op_digest_cache_t * - rsc_action_digest(resource_t * rsc, const char *task, const char *key, - node_t * node, xmlNode * xml_op, pe_working_set_t * data_set) -@@ -2009,10 +1881,10 @@ rsc_action_digest(resource_t * rsc, const char *task, const char *key, - //pe_get_versioned_attributes(local_versioned_params, rsc, node, data_set); - - data->params_all = create_xml_node(NULL, XML_TAG_PARAMS); -- if (fix_remote_addr(rsc)) { -- // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside -- crm_xml_add(data->params_all, "addr", node->details->uname); -- crm_trace("Fixing addr for %s on %s", rsc->id, node->details->uname); -+ -+ // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside -+ if (container_fix_remote_addr_in(rsc, data->params_all, "addr")) { -+ crm_trace("Fixed addr for %s on %s", rsc->id, node->details->uname); - } - - g_hash_table_foreach(local_rsc_params, hash2field, data->params_all); -diff --git a/pengine/container.c b/pengine/container.c -index a884516..13ce155 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -824,25 +824,16 @@ container_expand(resource_t * rsc, pe_working_set_t * data_set) - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - - CRM_ASSERT(tuple); -- if (tuple->remote && tuple->docker && fix_remote_addr(tuple->remote)) { -- -+ if (tuple->remote && tuple->docker && container_fix_remote_addr(tuple->remote)) { - // REMOTE_CONTAINER_HACK: Allow remote nodes that start containers with pacemaker remote inside -- pe_node_t *node = tuple->docker->allocated_to; - xmlNode *nvpair = get_xpath_object("//nvpair[@name='addr']", tuple->remote->xml, LOG_ERR); -+ const char *calculated_addr = container_fix_remote_addr_in(tuple->remote, nvpair, "value"); - -- if(node == NULL && tuple->docker->running_on) { -- /* If it wont be running anywhere after the -- * transition, go with where it's running now. -- */ -- node = tuple->docker->running_on->data; -- } -- -- if(node != NULL) { -- g_hash_table_replace(tuple->remote->parameters, strdup("addr"), strdup(node->details->uname)); -- crm_xml_add(nvpair, "value", node->details->uname); -- -- } else if(fix_remote_addr(tuple->remote)) { -- crm_trace("Cannot fix address for %s", tuple->remote->id); -+ if (calculated_addr) { -+ crm_trace("Fixed addr for %s on %s", tuple->remote->id, calculated_addr); -+ g_hash_table_replace(tuple->remote->parameters, strdup("addr"), strdup(calculated_addr)); -+ } else { -+ crm_err("Could not fix addr for %s", tuple->remote->id); - } - } - if(tuple->ip) { -diff --git a/pengine/test10/bundle-probe-order-2.xml b/pengine/test10/bundle-probe-order-2.xml -index e5a3959..2e26033 100644 ---- a/pengine/test10/bundle-probe-order-2.xml -+++ b/pengine/test10/bundle-probe-order-2.xml -@@ -102,8 +102,8 @@ - - - -- -- -+ -+ - - - --- -1.8.3.1 - - -From 40aaa36500185f9f1c79925aa1fd28b89c85d89a Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 23 Oct 2017 14:15:43 +1100 -Subject: [PATCH 4/6] Fix: PE: Do not always expire failed operations of nested - remotes - -We don't want to expire the remote connection failures automatically -based on attribute changes when the remote connection is stopped because -the addr=#uname logic triggers far too many false positives. ---- - lib/pengine/unpack.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index 6436cb8..6ac58dd 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -2907,6 +2907,10 @@ static bool check_operation_expiry(resource_t *rsc, node_t *node, int rc, xmlNod - if (digest_data->rc == RSC_DIGEST_UNKNOWN) { - crm_trace("rsc op %s/%s on node %s does not have a op digest to compare against", rsc->id, - key, node->details->id); -+ } else if(container_fix_remote_addr(rsc) && digest_data->rc != RSC_DIGEST_MATCH) { -+ // We can't sanely check the changing 'addr' attribute. Yet -+ crm_trace("Ignoring rsc op %s/%s on node %s", rsc->id, key, node->details->id); -+ - } else if (digest_data->rc != RSC_DIGEST_MATCH) { - clear_reason = "resource parameters have changed"; - } --- -1.8.3.1 - - -From b4321a7c2ca814346d3b97a0e7b6c0915d6633a4 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 23 Oct 2017 16:47:53 +1100 -Subject: [PATCH 5/6] Fix: PE: There is no need for port mapping directives - when net=host is specified - ---- - lib/pengine/container.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index d25d5a9..f1f66a5 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -254,7 +254,8 @@ create_docker_resource( - if(tuple->ipaddr) { - offset += snprintf(buffer+offset, max-offset, " -p %s:%s:%s", - tuple->ipaddr, port->source, port->target); -- } else { -+ } else if(safe_str_neq(data->docker_network, "host")) { -+ // No need to do port mapping if net=host - offset += snprintf(buffer+offset, max-offset, " -p %s:%s", port->source, port->target); - } - } --- -1.8.3.1 - - -From 929ed9b8ed9e970b0dfa24533b5873f943295153 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 23 Oct 2017 16:48:07 +1100 -Subject: [PATCH 6/6] Test: PE: There is no need for port mapping directives - when net=host is specified - ---- - pengine/test10/bundle-nested-colocation.exp | 18 ++++---- - pengine/test10/bundle-order-fencing.exp | 6 +-- - pengine/test10/bundle-order-fencing.xml | 24 +++++----- - pengine/test10/bundle-order-partial-start-2.exp | 6 +-- - pengine/test10/bundle-order-partial-start-2.xml | 12 ++--- - pengine/test10/bundle-order-partial-start.exp | 6 +-- - pengine/test10/bundle-order-partial-start.xml | 8 ++-- - pengine/test10/bundle-order-partial-stop.exp | 6 +-- - pengine/test10/bundle-order-startup-clone-2.exp | 60 ++++++++++++------------- - pengine/test10/bundle-order-startup-clone.exp | 16 +++---- - pengine/test10/bundle-order-startup.exp | 18 ++++---- - pengine/test10/bundle-order-stop-clone.exp | 2 +- - pengine/test10/bundle-order-stop-clone.xml | 24 +++++----- - pengine/test10/bundle-order-stop.exp | 6 +-- - pengine/test10/bundle-probe-order-1.exp | 18 ++++---- - pengine/test10/bundle-probe-order-2.exp | 10 ++--- - pengine/test10/bundle-probe-order-2.xml | 4 +- - pengine/test10/bundle-probe-order-3.exp | 10 ++--- - pengine/test10/bundle-probe-order-3.xml | 4 +- - pengine/test10/remote-fence-unclean-3.xml | 36 +++++++-------- - 20 files changed, 147 insertions(+), 147 deletions(-) - -diff --git a/pengine/test10/bundle-nested-colocation.exp b/pengine/test10/bundle-nested-colocation.exp -index fe77003..315c4be 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-order-fencing.exp b/pengine/test10/bundle-order-fencing.exp -index c4e4ec1..c32e834 100644 ---- a/pengine/test10/bundle-order-fencing.exp -+++ b/pengine/test10/bundle-order-fencing.exp -@@ -361,7 +361,7 @@ - - - -- -+ - - - -@@ -559,7 +559,7 @@ - - - -- -+ - - - -@@ -1419,7 +1419,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-fencing.xml b/pengine/test10/bundle-order-fencing.xml -index b303116..96eba09 100644 ---- a/pengine/test10/bundle-order-fencing.xml -+++ b/pengine/test10/bundle-order-fencing.xml -@@ -419,8 +419,8 @@ - - - -- -- -+ -+ - - - -@@ -437,8 +437,8 @@ - - - -- -- -+ -+ - - - -@@ -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 c253553..cea15dd 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 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start-2.xml b/pengine/test10/bundle-order-partial-start-2.xml -index 9c4d40c..26fccf0 100644 ---- a/pengine/test10/bundle-order-partial-start-2.xml -+++ b/pengine/test10/bundle-order-partial-start-2.xml -@@ -307,24 +307,24 @@ - - - -- -- -+ -+ - - - - - - -- -- -+ -+ - - - - - - -- -- -+ -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp -index 21012ce..d21193a 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 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-partial-start.xml b/pengine/test10/bundle-order-partial-start.xml -index 907dbfb..9b28b0d 100644 ---- a/pengine/test10/bundle-order-partial-start.xml -+++ b/pengine/test10/bundle-order-partial-start.xml -@@ -307,16 +307,16 @@ - - - -- -- -+ -+ - - - - - - -- -- -+ -+ - - - -diff --git a/pengine/test10/bundle-order-partial-stop.exp b/pengine/test10/bundle-order-partial-stop.exp -index 0bd404a..f73a046 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 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone-2.exp b/pengine/test10/bundle-order-startup-clone-2.exp -index 53ca437..709bf6c 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 @@ - - - -- -+ - - - -@@ -532,7 +532,7 @@ - - - -- -+ - - - -@@ -541,7 +541,7 @@ - - - -- -+ - - - -@@ -550,7 +550,7 @@ - - - -- -+ - - - -@@ -633,7 +633,7 @@ - - - -- -+ - - - -@@ -646,7 +646,7 @@ - - - -- -+ - - - -@@ -686,7 +686,7 @@ - - - -- -+ - - - -@@ -695,7 +695,7 @@ - - - -- -+ - - - -@@ -704,7 +704,7 @@ - - - -- -+ - - - -@@ -787,7 +787,7 @@ - - - -- -+ - - - -@@ -800,7 +800,7 @@ - - - -- -+ - - - -@@ -840,7 +840,7 @@ - - - -- -+ - - - -@@ -849,7 +849,7 @@ - - - -- -+ - - - -@@ -858,7 +858,7 @@ - - - -- -+ - - - -@@ -1732,7 +1732,7 @@ - - - -- -+ - - - -@@ -1745,7 +1745,7 @@ - - - -- -+ - - - -@@ -1785,7 +1785,7 @@ - - - -- -+ - - - -@@ -1794,7 +1794,7 @@ - - - -- -+ - - - -@@ -1803,7 +1803,7 @@ - - - -- -+ - - - -@@ -1886,7 +1886,7 @@ - - - -- -+ - - - -@@ -1899,7 +1899,7 @@ - - - -- -+ - - - -@@ -1939,7 +1939,7 @@ - - - -- -+ - - - -@@ -1948,7 +1948,7 @@ - - - -- -+ - - - -@@ -1957,7 +1957,7 @@ - - - -- -+ - - - -@@ -2040,7 +2040,7 @@ - - - -- -+ - - - -@@ -2053,7 +2053,7 @@ - - - -- -+ - - - -@@ -2093,7 +2093,7 @@ - - - -- -+ - - - -@@ -2102,7 +2102,7 @@ - - - -- -+ - - - -@@ -2111,7 +2111,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-startup-clone.exp b/pengine/test10/bundle-order-startup-clone.exp -index 123f0e2..f4d61ee 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 @@ - - - -- -+ - - - -@@ -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 9ed9c3d..c025a41 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 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-stop-clone.exp b/pengine/test10/bundle-order-stop-clone.exp -index 71e2bf7..92ca6de 100644 ---- a/pengine/test10/bundle-order-stop-clone.exp -+++ b/pengine/test10/bundle-order-stop-clone.exp -@@ -243,7 +243,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-order-stop-clone.xml b/pengine/test10/bundle-order-stop-clone.xml -index 60db64d..87ed212 100644 ---- a/pengine/test10/bundle-order-stop-clone.xml -+++ b/pengine/test10/bundle-order-stop-clone.xml -@@ -193,8 +193,8 @@ - - - -- -- -+ -+ - - - -@@ -213,8 +213,8 @@ - - - -- -- -+ -+ - - - -@@ -245,8 +245,8 @@ - - - -- -- -+ -+ - - - -@@ -265,8 +265,8 @@ - - - -- -- -+ -+ - - - -@@ -297,8 +297,8 @@ - - - -- -- -+ -+ - - - -@@ -317,8 +317,8 @@ - - - -- -- -+ -+ - - - -diff --git a/pengine/test10/bundle-order-stop.exp b/pengine/test10/bundle-order-stop.exp -index 0bd404a..f73a046 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 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-probe-order-1.exp b/pengine/test10/bundle-probe-order-1.exp -index 51d6d2e..e70680b 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.exp b/pengine/test10/bundle-probe-order-2.exp -index 222ec81..f33da4d 100644 ---- a/pengine/test10/bundle-probe-order-2.exp -+++ b/pengine/test10/bundle-probe-order-2.exp -@@ -12,7 +12,7 @@ - - - -- -+ - - - -@@ -30,7 +30,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -@@ -48,7 +48,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-probe-order-2.xml b/pengine/test10/bundle-probe-order-2.xml -index 2e26033..014f117 100644 ---- a/pengine/test10/bundle-probe-order-2.xml -+++ b/pengine/test10/bundle-probe-order-2.xml -@@ -106,8 +106,8 @@ - - - -- -- -+ -+ - - - -diff --git a/pengine/test10/bundle-probe-order-3.exp b/pengine/test10/bundle-probe-order-3.exp -index 5546bc9..e93434b 100644 ---- a/pengine/test10/bundle-probe-order-3.exp -+++ b/pengine/test10/bundle-probe-order-3.exp -@@ -3,7 +3,7 @@ - - - -- -+ - - - -@@ -39,7 +39,7 @@ - - - -- -+ - - - -@@ -48,7 +48,7 @@ - - - -- -+ - - - -@@ -57,7 +57,7 @@ - - - -- -+ - - - -@@ -66,7 +66,7 @@ - - - -- -+ - - - -diff --git a/pengine/test10/bundle-probe-order-3.xml b/pengine/test10/bundle-probe-order-3.xml -index c33543e..72208db 100644 ---- a/pengine/test10/bundle-probe-order-3.xml -+++ b/pengine/test10/bundle-probe-order-3.xml -@@ -96,8 +96,8 @@ - - - -- -- -+ -+ - - - -diff --git a/pengine/test10/remote-fence-unclean-3.xml b/pengine/test10/remote-fence-unclean-3.xml -index 8856fc0..66a4d8b 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 @@ - - - -- -- -+ -+ - - - -@@ -491,8 +491,8 @@ - - - -- -- -+ -+ - - - -@@ -502,8 +502,8 @@ - - - -- -- -+ -+ - - - -@@ -522,8 +522,8 @@ - - - -- -- -+ -+ - - - -@@ -587,16 +587,16 @@ - - - -- -- -+ -+ - - - - - - -- -- -+ -+ - - - -@@ -609,8 +609,8 @@ - - - -- -- -+ -+ - - - --- -1.8.3.1 - diff --git a/SOURCES/101-bundle-probes.patch b/SOURCES/101-bundle-probes.patch deleted file mode 100644 index bc8691e..0000000 --- a/SOURCES/101-bundle-probes.patch +++ /dev/null @@ -1,3125 +0,0 @@ -From 03d40c024ab1bcae7d6b917d4771312169438aa6 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 24 Oct 2017 12:54:37 +1100 -Subject: [PATCH 1/4] Fix: PE: Bundles only need to wait for other containers - on the same node to be probed - ---- - pengine/container.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pengine/container.c b/pengine/container.c -index 13ce155..9c20910 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -894,7 +894,7 @@ container_create_probe(resource_t * rsc, node_t * node, action_t * complete, - - custom_action_order(tuple->docker, generate_op_key(tuple->docker->id, RSC_STATUS, 0), NULL, - other->docker, generate_op_key(other->docker->id, RSC_START, 0), NULL, -- pe_order_optional, data_set); -+ pe_order_optional|pe_order_same_node, data_set); - } - } - } --- -1.8.3.1 - - -From bee6a668ac6b8e825ba75fa92bb936ad246f08fd Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 24 Oct 2017 12:54:53 +1100 -Subject: [PATCH 2/4] Test: PE: Bundles only need to wait for other containers - on the same node to be probed - ---- - pengine/test10/bundle-order-startup-clone-2.dot | 36 -------- - pengine/test10/bundle-order-startup-clone-2.exp | 108 ------------------------ - 2 files changed, 144 deletions(-) - -diff --git a/pengine/test10/bundle-order-startup-clone-2.dot b/pengine/test10/bundle-order-startup-clone-2.dot -index 59a4fb4..b87b587 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.dot -+++ b/pengine/test10/bundle-order-startup-clone-2.dot -@@ -36,17 +36,13 @@ digraph "g" { - "galera-bundle-2_start_0 metal-3" -> "galera:2_start_0 galera-bundle-2" [ style = bold] - "galera-bundle-2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] --"galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] --"galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] --"galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] --"galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -@@ -61,15 +57,11 @@ digraph "g" { - "galera-bundle-docker-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] --"galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] --"galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] --"galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] --"galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] - "galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-master_start_0" [ style = bold] -@@ -84,17 +76,13 @@ digraph "g" { - "galera-bundle-docker-1_start_0 metal-2" -> "galera:1_start_0 galera-bundle-1" [ style = bold] - "galera-bundle-docker-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] - "galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] --"galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] --"galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] --"galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] --"galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-master_start_0" [ style = bold] - "galera-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -@@ -141,15 +129,11 @@ digraph "g" { - "galera:2_start_0 galera-bundle-2" -> "galera:2_monitor_30000 galera-bundle-2" [ style = bold] - "galera:2_start_0 galera-bundle-2" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-0_monitor_0 metal-1" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] --"haproxy-bundle-docker-0_monitor_0 metal-1" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] --"haproxy-bundle-docker-0_monitor_0 metal-1" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] - "haproxy-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-0_monitor_0 metal-2" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] - "haproxy-bundle-docker-0_monitor_0 metal-2" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] --"haproxy-bundle-docker-0_monitor_0 metal-2" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] - "haproxy-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-0_monitor_0 metal-3" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] --"haproxy-bundle-docker-0_monitor_0 metal-3" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] - "haproxy-bundle-docker-0_monitor_0 metal-3" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] - "haproxy-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] -@@ -158,13 +142,9 @@ digraph "g" { - "haproxy-bundle-docker-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-1_monitor_0 metal-1" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] - "haproxy-bundle-docker-1_monitor_0 metal-1" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] --"haproxy-bundle-docker-1_monitor_0 metal-1" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] - "haproxy-bundle-docker-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] --"haproxy-bundle-docker-1_monitor_0 metal-2" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] - "haproxy-bundle-docker-1_monitor_0 metal-2" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] --"haproxy-bundle-docker-1_monitor_0 metal-2" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] - "haproxy-bundle-docker-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] --"haproxy-bundle-docker-1_monitor_0 metal-3" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] - "haproxy-bundle-docker-1_monitor_0 metal-3" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] - "haproxy-bundle-docker-1_monitor_0 metal-3" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] - "haproxy-bundle-docker-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -@@ -173,15 +153,11 @@ digraph "g" { - "haproxy-bundle-docker-1_start_0 metal-2" -> "haproxy-bundle_running_0" [ style = bold] - "haproxy-bundle-docker-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-2_monitor_0 metal-1" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] --"haproxy-bundle-docker-2_monitor_0 metal-1" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] - "haproxy-bundle-docker-2_monitor_0 metal-1" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] - "haproxy-bundle-docker-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] --"haproxy-bundle-docker-2_monitor_0 metal-2" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] - "haproxy-bundle-docker-2_monitor_0 metal-2" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] - "haproxy-bundle-docker-2_monitor_0 metal-2" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] - "haproxy-bundle-docker-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] --"haproxy-bundle-docker-2_monitor_0 metal-3" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] --"haproxy-bundle-docker-2_monitor_0 metal-3" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] - "haproxy-bundle-docker-2_monitor_0 metal-3" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] - "haproxy-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] - "haproxy-bundle-docker-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] -@@ -231,17 +207,13 @@ digraph "g" { - "redis-bundle-2_start_0 metal-3" -> "redis:2_start_0 redis-bundle-2" [ style = bold] - "redis-bundle-2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] --"redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] --"redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] --"redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] --"redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -@@ -257,15 +229,11 @@ digraph "g" { - "redis-bundle-docker-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] --"redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] --"redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] --"redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] --"redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] - "redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-master_start_0" [ style = bold] -@@ -281,17 +249,13 @@ digraph "g" { - "redis-bundle-docker-1_start_0 metal-2" -> "redis:1_start_0 redis-bundle-1" [ style = bold] - "redis-bundle-docker-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] - "redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] --"redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] --"redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] --"redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] --"redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-master_start_0" [ style = bold] - "redis-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bundle-order-startup-clone-2.exp b/pengine/test10/bundle-order-startup-clone-2.exp -index 709bf6c..0ffa79b 100644 ---- a/pengine/test10/bundle-order-startup-clone-2.exp -+++ b/pengine/test10/bundle-order-startup-clone-2.exp -@@ -509,21 +509,9 @@ - - - -- -- -- -- -- -- - - - -- -- -- -- -- -- - - - -@@ -651,15 +639,9 @@ - - - -- -- -- - - - -- -- -- - - - -@@ -669,15 +651,9 @@ - - - -- -- -- - - - -- -- -- - - - -@@ -805,21 +781,9 @@ - - - -- -- -- -- -- -- - - - -- -- -- -- -- -- - - - -@@ -971,21 +935,9 @@ - - - -- -- -- -- -- -- - - - -- -- -- -- -- -- - - - -@@ -1039,15 +991,9 @@ - - - -- -- -- - - - -- -- -- - - - -@@ -1057,15 +1003,9 @@ - - - -- -- -- - - - -- -- -- - - - -@@ -1119,21 +1059,9 @@ - - - -- -- -- -- -- -- - - - -- -- -- -- -- -- - - - -@@ -1762,21 +1690,9 @@ - - - -- -- -- -- -- -- - - - -- -- -- -- -- -- - - - -@@ -1904,15 +1820,9 @@ - - - -- -- -- - - - -- -- -- - - - -@@ -1922,15 +1832,9 @@ - - - -- -- -- - - - -- -- -- - - - -@@ -2058,21 +1962,9 @@ - - - -- -- -- -- -- -- - - - -- -- -- -- -- -- - - - --- -1.8.3.1 - - -From cafc6b1adca133b18c6769ab7eb09a869dccdfb2 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 24 Oct 2017 13:20:56 +1100 -Subject: [PATCH 3/4] Fix: PE: Bare metal remotes _can_ run resources now and - must be probed - ---- - pengine/native.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pengine/native.c b/pengine/native.c -index c87127f..64a8a90 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -2803,7 +2803,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - if (safe_str_eq(class, PCMK_RESOURCE_CLASS_STONITH)) { - pe_rsc_trace(rsc, "Skipping probe for %s on node %s, remote-nodes do not run stonith agents.", rsc->id, node->details->id); - return FALSE; -- } else if (rsc_contains_remote_node(data_set, rsc)) { -+ } else if (is_container_remote_node(node) && rsc_contains_remote_node(data_set, rsc)) { - pe_rsc_trace(rsc, "Skipping probe for %s on node %s, remote-nodes can not run resources that contain connection resources.", rsc->id, node->details->id); - return FALSE; - } else if (rsc->is_remote_node) { --- -1.8.3.1 - - -From bec14bed319ad11f59878cf53093a1bbe31e9a0c Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 24 Oct 2017 13:21:16 +1100 -Subject: [PATCH 4/4] Test: PE: Bare metal remotes _can_ run resources now and - must be probed - ---- - pengine/regression.sh | 1 + - pengine/test10/bundle-probe-remotes.dot | 359 ++++++ - pengine/test10/bundle-probe-remotes.exp | 1804 +++++++++++++++++++++++++++ - pengine/test10/bundle-probe-remotes.scores | 211 ++++ - pengine/test10/bundle-probe-remotes.summary | 166 +++ - pengine/test10/bundle-probe-remotes.xml | 65 + - 6 files changed, 2606 insertions(+) - create mode 100644 pengine/test10/bundle-probe-remotes.dot - create mode 100644 pengine/test10/bundle-probe-remotes.exp - create mode 100644 pengine/test10/bundle-probe-remotes.scores - create mode 100644 pengine/test10/bundle-probe-remotes.summary - create mode 100644 pengine/test10/bundle-probe-remotes.xml - -diff --git a/pengine/regression.sh b/pengine/regression.sh -index 6ec5848..ec775a3 100755 ---- a/pengine/regression.sh -+++ b/pengine/regression.sh -@@ -826,6 +826,7 @@ do_test bundle-order-fencing "Order pseudo bundle fencing after parent node fenc - do_test bundle-probe-order-1 "order 1" - do_test bundle-probe-order-2 "order 2" - do_test bundle-probe-order-3 "order 3" -+do_test bundle-probe-remotes "Ensure remotes get probed too" - - echo "" - do_test whitebox-fail1 "Fail whitebox container rsc." -diff --git a/pengine/test10/bundle-probe-remotes.dot b/pengine/test10/bundle-probe-remotes.dot -new file mode 100644 -index 0000000..1daf35d ---- /dev/null -+++ b/pengine/test10/bundle-probe-remotes.dot -@@ -0,0 +1,359 @@ -+digraph "g" { -+"c09-h08-r630_monitor_0 c09-h05-r630" -> "c09-h08-r630_start_0 c09-h05-r630" [ style = bold] -+"c09-h08-r630_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h08-r630_monitor_0 c09-h06-r630" -> "c09-h08-r630_start_0 c09-h05-r630" [ style = bold] -+"c09-h08-r630_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h08-r630_monitor_0 c09-h07-r630" -> "c09-h08-r630_start_0 c09-h05-r630" [ style = bold] -+"c09-h08-r630_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h08-r630_monitor_60000 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h08-r630_start_0 c09-h05-r630" -> "c09-h08-r630_monitor_60000 c09-h05-r630" [ style = bold] -+"c09-h08-r630_start_0 c09-h05-r630" -> "scale1-bundle-docker-0_monitor_0 c09-h08-r630" [ style = bold] -+"c09-h08-r630_start_0 c09-h05-r630" -> "scale1-bundle-docker-1_monitor_0 c09-h08-r630" [ style = bold] -+"c09-h08-r630_start_0 c09-h05-r630" -> "scale1-bundle-docker-2_monitor_0 c09-h08-r630" [ style = bold] -+"c09-h08-r630_start_0 c09-h05-r630" -> "scale1-bundle-docker-3_monitor_0 c09-h08-r630" [ style = bold] -+"c09-h08-r630_start_0 c09-h05-r630" -> "scale1-bundle-docker-3_monitor_60000 c09-h08-r630" [ style = bold] -+"c09-h08-r630_start_0 c09-h05-r630" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"c09-h08-r630_start_0 c09-h05-r630" -> "scale1-bundle-docker-4_monitor_0 c09-h08-r630" [ style = bold] -+"c09-h08-r630_start_0 c09-h05-r630" -> "scale1-bundle-docker-5_monitor_0 c09-h08-r630" [ style = bold] -+"c09-h08-r630_start_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h09-r630_monitor_0 c09-h05-r630" -> "c09-h09-r630_start_0 c09-h06-r630" [ style = bold] -+"c09-h09-r630_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h09-r630_monitor_0 c09-h06-r630" -> "c09-h09-r630_start_0 c09-h06-r630" [ style = bold] -+"c09-h09-r630_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h09-r630_monitor_0 c09-h07-r630" -> "c09-h09-r630_start_0 c09-h06-r630" [ style = bold] -+"c09-h09-r630_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h09-r630_monitor_60000 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h09-r630_start_0 c09-h06-r630" -> "c09-h09-r630_monitor_60000 c09-h06-r630" [ style = bold] -+"c09-h09-r630_start_0 c09-h06-r630" -> "scale1-bundle-docker-0_monitor_0 c09-h09-r630" [ style = bold] -+"c09-h09-r630_start_0 c09-h06-r630" -> "scale1-bundle-docker-1_monitor_0 c09-h09-r630" [ style = bold] -+"c09-h09-r630_start_0 c09-h06-r630" -> "scale1-bundle-docker-2_monitor_0 c09-h09-r630" [ style = bold] -+"c09-h09-r630_start_0 c09-h06-r630" -> "scale1-bundle-docker-3_monitor_0 c09-h09-r630" [ style = bold] -+"c09-h09-r630_start_0 c09-h06-r630" -> "scale1-bundle-docker-4_monitor_0 c09-h09-r630" [ style = bold] -+"c09-h09-r630_start_0 c09-h06-r630" -> "scale1-bundle-docker-4_monitor_60000 c09-h09-r630" [ style = bold] -+"c09-h09-r630_start_0 c09-h06-r630" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"c09-h09-r630_start_0 c09-h06-r630" -> "scale1-bundle-docker-5_monitor_0 c09-h09-r630" [ style = bold] -+"c09-h09-r630_start_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h10-r630_monitor_0 c09-h05-r630" -> "c09-h10-r630_start_0 c09-h07-r630" [ style = bold] -+"c09-h10-r630_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h10-r630_monitor_0 c09-h06-r630" -> "c09-h10-r630_start_0 c09-h07-r630" [ style = bold] -+"c09-h10-r630_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h10-r630_monitor_0 c09-h07-r630" -> "c09-h10-r630_start_0 c09-h07-r630" [ style = bold] -+"c09-h10-r630_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h10-r630_monitor_60000 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"c09-h10-r630_start_0 c09-h07-r630" -> "c09-h10-r630_monitor_60000 c09-h07-r630" [ style = bold] -+"c09-h10-r630_start_0 c09-h07-r630" -> "scale1-bundle-docker-0_monitor_0 c09-h10-r630" [ style = bold] -+"c09-h10-r630_start_0 c09-h07-r630" -> "scale1-bundle-docker-1_monitor_0 c09-h10-r630" [ style = bold] -+"c09-h10-r630_start_0 c09-h07-r630" -> "scale1-bundle-docker-2_monitor_0 c09-h10-r630" [ style = bold] -+"c09-h10-r630_start_0 c09-h07-r630" -> "scale1-bundle-docker-3_monitor_0 c09-h10-r630" [ style = bold] -+"c09-h10-r630_start_0 c09-h07-r630" -> "scale1-bundle-docker-4_monitor_0 c09-h10-r630" [ style = bold] -+"c09-h10-r630_start_0 c09-h07-r630" -> "scale1-bundle-docker-5_monitor_0 c09-h10-r630" [ style = bold] -+"c09-h10-r630_start_0 c09-h07-r630" -> "scale1-bundle-docker-5_monitor_60000 c09-h10-r630" [ style = bold] -+"c09-h10-r630_start_0 c09-h07-r630" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"c09-h10-r630_start_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"dummy1:0_monitor_10000 scale1-bundle-0" [ style=bold color="green" fontcolor="black"] -+"dummy1:0_start_0 scale1-bundle-0" -> "dummy1:0_monitor_10000 scale1-bundle-0" [ style = bold] -+"dummy1:0_start_0 scale1-bundle-0" -> "dummy1:1_start_0 scale1-bundle-1" [ style = bold] -+"dummy1:0_start_0 scale1-bundle-0" -> "scale1-bundle-clone_running_0" [ style = bold] -+"dummy1:0_start_0 scale1-bundle-0" [ style=bold color="green" fontcolor="black"] -+"dummy1:1_monitor_10000 scale1-bundle-1" [ style=bold color="green" fontcolor="black"] -+"dummy1:1_start_0 scale1-bundle-1" -> "dummy1:1_monitor_10000 scale1-bundle-1" [ style = bold] -+"dummy1:1_start_0 scale1-bundle-1" -> "dummy1:2_start_0 scale1-bundle-2" [ style = bold] -+"dummy1:1_start_0 scale1-bundle-1" -> "scale1-bundle-clone_running_0" [ style = bold] -+"dummy1:1_start_0 scale1-bundle-1" [ style=bold color="green" fontcolor="black"] -+"dummy1:2_monitor_10000 scale1-bundle-2" [ style=bold color="green" fontcolor="black"] -+"dummy1:2_start_0 scale1-bundle-2" -> "dummy1:2_monitor_10000 scale1-bundle-2" [ style = bold] -+"dummy1:2_start_0 scale1-bundle-2" -> "dummy1:3_start_0 scale1-bundle-3" [ style = bold] -+"dummy1:2_start_0 scale1-bundle-2" -> "scale1-bundle-clone_running_0" [ style = bold] -+"dummy1:2_start_0 scale1-bundle-2" [ style=bold color="green" fontcolor="black"] -+"dummy1:3_monitor_10000 scale1-bundle-3" [ style=bold color="green" fontcolor="black"] -+"dummy1:3_start_0 scale1-bundle-3" -> "dummy1:3_monitor_10000 scale1-bundle-3" [ style = bold] -+"dummy1:3_start_0 scale1-bundle-3" -> "dummy1:4_start_0 scale1-bundle-4" [ style = bold] -+"dummy1:3_start_0 scale1-bundle-3" -> "scale1-bundle-clone_running_0" [ style = bold] -+"dummy1:3_start_0 scale1-bundle-3" [ style=bold color="green" fontcolor="black"] -+"dummy1:4_monitor_10000 scale1-bundle-4" [ style=bold color="green" fontcolor="black"] -+"dummy1:4_start_0 scale1-bundle-4" -> "dummy1:4_monitor_10000 scale1-bundle-4" [ style = bold] -+"dummy1:4_start_0 scale1-bundle-4" -> "dummy1:5_start_0 scale1-bundle-5" [ style = bold] -+"dummy1:4_start_0 scale1-bundle-4" -> "scale1-bundle-clone_running_0" [ style = bold] -+"dummy1:4_start_0 scale1-bundle-4" [ style=bold color="green" fontcolor="black"] -+"dummy1:5_monitor_10000 scale1-bundle-5" [ style=bold color="green" fontcolor="black"] -+"dummy1:5_start_0 scale1-bundle-5" -> "dummy1:5_monitor_10000 scale1-bundle-5" [ style = bold] -+"dummy1:5_start_0 scale1-bundle-5" -> "scale1-bundle-clone_running_0" [ style = bold] -+"dummy1:5_start_0 scale1-bundle-5" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-0_monitor_0 c09-h05-r630" -> "scale1-bundle-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-0_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-0_monitor_0 c09-h06-r630" -> "scale1-bundle-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-0_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-0_monitor_0 c09-h07-r630" -> "scale1-bundle-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-0_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-0_monitor_60000 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-0_start_0 c09-h05-r630" -> "dummy1:0_monitor_10000 scale1-bundle-0" [ style = bold] -+"scale1-bundle-0_start_0 c09-h05-r630" -> "dummy1:0_start_0 scale1-bundle-0" [ style = bold] -+"scale1-bundle-0_start_0 c09-h05-r630" -> "scale1-bundle-0_monitor_60000 c09-h05-r630" [ style = bold] -+"scale1-bundle-0_start_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-1_monitor_0 c09-h05-r630" -> "scale1-bundle-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-1_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-1_monitor_0 c09-h06-r630" -> "scale1-bundle-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-1_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-1_monitor_0 c09-h07-r630" -> "scale1-bundle-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-1_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-1_monitor_60000 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-1_start_0 c09-h06-r630" -> "dummy1:1_monitor_10000 scale1-bundle-1" [ style = bold] -+"scale1-bundle-1_start_0 c09-h06-r630" -> "dummy1:1_start_0 scale1-bundle-1" [ style = bold] -+"scale1-bundle-1_start_0 c09-h06-r630" -> "scale1-bundle-1_monitor_60000 c09-h06-r630" [ style = bold] -+"scale1-bundle-1_start_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-2_monitor_0 c09-h05-r630" -> "scale1-bundle-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-2_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-2_monitor_0 c09-h06-r630" -> "scale1-bundle-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-2_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-2_monitor_0 c09-h07-r630" -> "scale1-bundle-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-2_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-2_monitor_60000 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-2_start_0 c09-h07-r630" -> "dummy1:2_monitor_10000 scale1-bundle-2" [ style = bold] -+"scale1-bundle-2_start_0 c09-h07-r630" -> "dummy1:2_start_0 scale1-bundle-2" [ style = bold] -+"scale1-bundle-2_start_0 c09-h07-r630" -> "scale1-bundle-2_monitor_60000 c09-h07-r630" [ style = bold] -+"scale1-bundle-2_start_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-3_monitor_0 c09-h05-r630" -> "scale1-bundle-3_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-3_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-3_monitor_0 c09-h06-r630" -> "scale1-bundle-3_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-3_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-3_monitor_0 c09-h07-r630" -> "scale1-bundle-3_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-3_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-3_monitor_60000 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-3_start_0 c09-h05-r630" -> "dummy1:3_monitor_10000 scale1-bundle-3" [ style = bold] -+"scale1-bundle-3_start_0 c09-h05-r630" -> "dummy1:3_start_0 scale1-bundle-3" [ style = bold] -+"scale1-bundle-3_start_0 c09-h05-r630" -> "scale1-bundle-3_monitor_60000 c09-h05-r630" [ style = bold] -+"scale1-bundle-3_start_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-4_monitor_0 c09-h05-r630" -> "scale1-bundle-4_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-4_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-4_monitor_0 c09-h06-r630" -> "scale1-bundle-4_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-4_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-4_monitor_0 c09-h07-r630" -> "scale1-bundle-4_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-4_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-4_monitor_60000 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-4_start_0 c09-h06-r630" -> "dummy1:4_monitor_10000 scale1-bundle-4" [ style = bold] -+"scale1-bundle-4_start_0 c09-h06-r630" -> "dummy1:4_start_0 scale1-bundle-4" [ style = bold] -+"scale1-bundle-4_start_0 c09-h06-r630" -> "scale1-bundle-4_monitor_60000 c09-h06-r630" [ style = bold] -+"scale1-bundle-4_start_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-5_monitor_0 c09-h05-r630" -> "scale1-bundle-5_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-5_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-5_monitor_0 c09-h06-r630" -> "scale1-bundle-5_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-5_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-5_monitor_0 c09-h07-r630" -> "scale1-bundle-5_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-5_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-5_monitor_60000 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-5_start_0 c09-h07-r630" -> "dummy1:5_monitor_10000 scale1-bundle-5" [ style = bold] -+"scale1-bundle-5_start_0 c09-h07-r630" -> "dummy1:5_start_0 scale1-bundle-5" [ style = bold] -+"scale1-bundle-5_start_0 c09-h07-r630" -> "scale1-bundle-5_monitor_60000 c09-h07-r630" [ style = bold] -+"scale1-bundle-5_start_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-clone_running_0" -> "scale1-bundle_running_0" [ style = bold] -+"scale1-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] -+"scale1-bundle-clone_start_0" -> "dummy1:0_start_0 scale1-bundle-0" [ style = bold] -+"scale1-bundle-clone_start_0" -> "dummy1:1_start_0 scale1-bundle-1" [ style = bold] -+"scale1-bundle-clone_start_0" -> "dummy1:2_start_0 scale1-bundle-2" [ style = bold] -+"scale1-bundle-clone_start_0" -> "dummy1:3_start_0 scale1-bundle-3" [ style = bold] -+"scale1-bundle-clone_start_0" -> "dummy1:4_start_0 scale1-bundle-4" [ style = bold] -+"scale1-bundle-clone_start_0" -> "dummy1:5_start_0 scale1-bundle-5" [ style = bold] -+"scale1-bundle-clone_start_0" -> "scale1-bundle-clone_running_0" [ style = bold] -+"scale1-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"] -+"scale1-bundle-docker-0_monitor_0 c09-h05-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h05-r630" -> "scale1-bundle-docker-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-0_monitor_0 c09-h06-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h06-r630" -> "scale1-bundle-docker-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h06-r630" -> "scale1-bundle-docker-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-0_monitor_0 c09-h07-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h07-r630" -> "scale1-bundle-docker-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h07-r630" -> "scale1-bundle-docker-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-0_monitor_0 c09-h08-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h08-r630" -> "scale1-bundle-docker-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h08-r630" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h08-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-0_monitor_0 c09-h09-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h09-r630" -> "scale1-bundle-docker-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h09-r630" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h09-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-0_monitor_0 c09-h10-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h10-r630" -> "scale1-bundle-docker-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h10-r630" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"scale1-bundle-docker-0_monitor_0 c09-h10-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-0_monitor_60000 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-0_start_0 c09-h05-r630" -> "dummy1:0_start_0 scale1-bundle-0" [ style = bold] -+"scale1-bundle-docker-0_start_0 c09-h05-r630" -> "scale1-bundle-0_monitor_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-0_start_0 c09-h05-r630" -> "scale1-bundle-0_monitor_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-0_start_0 c09-h05-r630" -> "scale1-bundle-0_monitor_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-0_start_0 c09-h05-r630" -> "scale1-bundle-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-0_start_0 c09-h05-r630" -> "scale1-bundle-docker-0_monitor_60000 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-0_start_0 c09-h05-r630" -> "scale1-bundle_running_0" [ style = bold] -+"scale1-bundle-docker-0_start_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-1_monitor_0 c09-h05-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h05-r630" -> "scale1-bundle-docker-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h05-r630" -> "scale1-bundle-docker-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-1_monitor_0 c09-h06-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h06-r630" -> "scale1-bundle-docker-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-1_monitor_0 c09-h07-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h07-r630" -> "scale1-bundle-docker-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h07-r630" -> "scale1-bundle-docker-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-1_monitor_0 c09-h08-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h08-r630" -> "scale1-bundle-docker-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h08-r630" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h08-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-1_monitor_0 c09-h09-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h09-r630" -> "scale1-bundle-docker-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h09-r630" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h09-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-1_monitor_0 c09-h10-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h10-r630" -> "scale1-bundle-docker-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h10-r630" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"scale1-bundle-docker-1_monitor_0 c09-h10-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-1_monitor_60000 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-1_start_0 c09-h06-r630" -> "dummy1:1_start_0 scale1-bundle-1" [ style = bold] -+"scale1-bundle-docker-1_start_0 c09-h06-r630" -> "scale1-bundle-1_monitor_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-1_start_0 c09-h06-r630" -> "scale1-bundle-1_monitor_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-1_start_0 c09-h06-r630" -> "scale1-bundle-1_monitor_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-1_start_0 c09-h06-r630" -> "scale1-bundle-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-1_start_0 c09-h06-r630" -> "scale1-bundle-docker-1_monitor_60000 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-1_start_0 c09-h06-r630" -> "scale1-bundle_running_0" [ style = bold] -+"scale1-bundle-docker-1_start_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-2_monitor_0 c09-h05-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h05-r630" -> "scale1-bundle-docker-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h05-r630" -> "scale1-bundle-docker-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-2_monitor_0 c09-h06-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h06-r630" -> "scale1-bundle-docker-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h06-r630" -> "scale1-bundle-docker-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-2_monitor_0 c09-h07-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h07-r630" -> "scale1-bundle-docker-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-2_monitor_0 c09-h08-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h08-r630" -> "scale1-bundle-docker-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h08-r630" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h08-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-2_monitor_0 c09-h09-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h09-r630" -> "scale1-bundle-docker-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h09-r630" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h09-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-2_monitor_0 c09-h10-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h10-r630" -> "scale1-bundle-docker-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h10-r630" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"scale1-bundle-docker-2_monitor_0 c09-h10-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-2_monitor_60000 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-2_start_0 c09-h07-r630" -> "dummy1:2_start_0 scale1-bundle-2" [ style = bold] -+"scale1-bundle-docker-2_start_0 c09-h07-r630" -> "scale1-bundle-2_monitor_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-2_start_0 c09-h07-r630" -> "scale1-bundle-2_monitor_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-2_start_0 c09-h07-r630" -> "scale1-bundle-2_monitor_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-2_start_0 c09-h07-r630" -> "scale1-bundle-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-2_start_0 c09-h07-r630" -> "scale1-bundle-docker-2_monitor_60000 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-2_start_0 c09-h07-r630" -> "scale1-bundle_running_0" [ style = bold] -+"scale1-bundle-docker-2_start_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-3_monitor_0 c09-h05-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h05-r630" -> "scale1-bundle-docker-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h05-r630" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-3_monitor_0 c09-h06-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h06-r630" -> "scale1-bundle-docker-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h06-r630" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-3_monitor_0 c09-h07-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h07-r630" -> "scale1-bundle-docker-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h07-r630" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-3_monitor_0 c09-h08-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h08-r630" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h08-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-3_monitor_0 c09-h09-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h09-r630" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h09-r630" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h09-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-3_monitor_0 c09-h10-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h10-r630" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h10-r630" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"scale1-bundle-docker-3_monitor_0 c09-h10-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-3_monitor_60000 c09-h08-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-3_start_0 c09-h08-r630" -> "dummy1:3_start_0 scale1-bundle-3" [ style = bold] -+"scale1-bundle-docker-3_start_0 c09-h08-r630" -> "scale1-bundle-3_monitor_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-3_start_0 c09-h08-r630" -> "scale1-bundle-3_monitor_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-3_start_0 c09-h08-r630" -> "scale1-bundle-3_monitor_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-3_start_0 c09-h08-r630" -> "scale1-bundle-3_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-3_start_0 c09-h08-r630" -> "scale1-bundle-docker-3_monitor_60000 c09-h08-r630" [ style = bold] -+"scale1-bundle-docker-3_start_0 c09-h08-r630" -> "scale1-bundle_running_0" [ style = bold] -+"scale1-bundle-docker-3_start_0 c09-h08-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-4_monitor_0 c09-h05-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h05-r630" -> "scale1-bundle-docker-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h05-r630" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-4_monitor_0 c09-h06-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h06-r630" -> "scale1-bundle-docker-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h06-r630" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-4_monitor_0 c09-h07-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h07-r630" -> "scale1-bundle-docker-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h07-r630" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-4_monitor_0 c09-h08-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h08-r630" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h08-r630" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h08-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-4_monitor_0 c09-h09-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h09-r630" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h09-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-4_monitor_0 c09-h10-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h10-r630" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h10-r630" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"scale1-bundle-docker-4_monitor_0 c09-h10-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-4_monitor_60000 c09-h09-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-4_start_0 c09-h09-r630" -> "dummy1:4_start_0 scale1-bundle-4" [ style = bold] -+"scale1-bundle-docker-4_start_0 c09-h09-r630" -> "scale1-bundle-4_monitor_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-4_start_0 c09-h09-r630" -> "scale1-bundle-4_monitor_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-4_start_0 c09-h09-r630" -> "scale1-bundle-4_monitor_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-4_start_0 c09-h09-r630" -> "scale1-bundle-4_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-4_start_0 c09-h09-r630" -> "scale1-bundle-docker-4_monitor_60000 c09-h09-r630" [ style = bold] -+"scale1-bundle-docker-4_start_0 c09-h09-r630" -> "scale1-bundle_running_0" [ style = bold] -+"scale1-bundle-docker-4_start_0 c09-h09-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-5_monitor_0 c09-h05-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h05-r630" -> "scale1-bundle-docker-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h05-r630" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h05-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-5_monitor_0 c09-h06-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h06-r630" -> "scale1-bundle-docker-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h06-r630" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h06-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-5_monitor_0 c09-h07-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h07-r630" -> "scale1-bundle-docker-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h07-r630" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h07-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-5_monitor_0 c09-h08-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h08-r630" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h08-r630" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h08-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-5_monitor_0 c09-h09-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h09-r630" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h09-r630" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h09-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-5_monitor_0 c09-h10-r630" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h10-r630" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"scale1-bundle-docker-5_monitor_0 c09-h10-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-5_monitor_60000 c09-h10-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle-docker-5_start_0 c09-h10-r630" -> "dummy1:5_start_0 scale1-bundle-5" [ style = bold] -+"scale1-bundle-docker-5_start_0 c09-h10-r630" -> "scale1-bundle-5_monitor_0 c09-h05-r630" [ style = bold] -+"scale1-bundle-docker-5_start_0 c09-h10-r630" -> "scale1-bundle-5_monitor_0 c09-h06-r630" [ style = bold] -+"scale1-bundle-docker-5_start_0 c09-h10-r630" -> "scale1-bundle-5_monitor_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-5_start_0 c09-h10-r630" -> "scale1-bundle-5_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle-docker-5_start_0 c09-h10-r630" -> "scale1-bundle-docker-5_monitor_60000 c09-h10-r630" [ style = bold] -+"scale1-bundle-docker-5_start_0 c09-h10-r630" -> "scale1-bundle_running_0" [ style = bold] -+"scale1-bundle-docker-5_start_0 c09-h10-r630" [ style=bold color="green" fontcolor="black"] -+"scale1-bundle_running_0" [ style=bold color="green" fontcolor="orange"] -+"scale1-bundle_start_0" -> "scale1-bundle-clone_start_0" [ style = bold] -+"scale1-bundle_start_0" -> "scale1-bundle-docker-0_start_0 c09-h05-r630" [ style = bold] -+"scale1-bundle_start_0" -> "scale1-bundle-docker-1_start_0 c09-h06-r630" [ style = bold] -+"scale1-bundle_start_0" -> "scale1-bundle-docker-2_start_0 c09-h07-r630" [ style = bold] -+"scale1-bundle_start_0" -> "scale1-bundle-docker-3_start_0 c09-h08-r630" [ style = bold] -+"scale1-bundle_start_0" -> "scale1-bundle-docker-4_start_0 c09-h09-r630" [ style = bold] -+"scale1-bundle_start_0" -> "scale1-bundle-docker-5_start_0 c09-h10-r630" [ style = bold] -+"scale1-bundle_start_0" [ style=bold color="green" fontcolor="orange"] -+} -diff --git a/pengine/test10/bundle-probe-remotes.exp b/pengine/test10/bundle-probe-remotes.exp -new file mode 100644 -index 0000000..ebf778c ---- /dev/null -+++ b/pengine/test10/bundle-probe-remotes.exp -@@ -0,0 +1,1804 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/pengine/test10/bundle-probe-remotes.scores b/pengine/test10/bundle-probe-remotes.scores -new file mode 100644 -index 0000000..2ea125f ---- /dev/null -+++ b/pengine/test10/bundle-probe-remotes.scores -@@ -0,0 +1,211 @@ -+Allocation scores: -+clone_color: dummy1:0 allocation score on scale1-bundle-0: INFINITY -+clone_color: dummy1:1 allocation score on scale1-bundle-1: INFINITY -+clone_color: dummy1:2 allocation score on scale1-bundle-2: INFINITY -+clone_color: dummy1:3 allocation score on scale1-bundle-3: INFINITY -+clone_color: dummy1:4 allocation score on scale1-bundle-4: INFINITY -+clone_color: dummy1:5 allocation score on scale1-bundle-5: INFINITY -+clone_color: scale1-bundle-clone allocation score on c09-h05-r630: -INFINITY -+clone_color: scale1-bundle-clone allocation score on c09-h06-r630: -INFINITY -+clone_color: scale1-bundle-clone allocation score on c09-h07-r630: -INFINITY -+clone_color: scale1-bundle-clone allocation score on c09-h08-r630: -INFINITY -+clone_color: scale1-bundle-clone allocation score on c09-h09-r630: -INFINITY -+clone_color: scale1-bundle-clone allocation score on c09-h10-r630: -INFINITY -+clone_color: scale1-bundle-clone allocation score on scale1-bundle-0: 0 -+clone_color: scale1-bundle-clone allocation score on scale1-bundle-1: 0 -+clone_color: scale1-bundle-clone allocation score on scale1-bundle-2: 0 -+clone_color: scale1-bundle-clone allocation score on scale1-bundle-3: 0 -+clone_color: scale1-bundle-clone allocation score on scale1-bundle-4: 0 -+clone_color: scale1-bundle-clone allocation score on scale1-bundle-5: 0 -+container_color: dummy1:0 allocation score on scale1-bundle-0: 500 -+container_color: dummy1:1 allocation score on scale1-bundle-1: 500 -+container_color: dummy1:2 allocation score on scale1-bundle-2: 500 -+container_color: dummy1:3 allocation score on scale1-bundle-3: 500 -+container_color: dummy1:4 allocation score on scale1-bundle-4: 500 -+container_color: dummy1:5 allocation score on scale1-bundle-5: 500 -+container_color: scale1-bundle allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle allocation score on c09-h08-r630: 0 -+container_color: scale1-bundle allocation score on c09-h09-r630: 0 -+container_color: scale1-bundle allocation score on c09-h10-r630: 0 -+container_color: scale1-bundle-0 allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-0 allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-0 allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-0 allocation score on c09-h08-r630: -INFINITY -+container_color: scale1-bundle-0 allocation score on c09-h09-r630: -INFINITY -+container_color: scale1-bundle-0 allocation score on c09-h10-r630: -INFINITY -+container_color: scale1-bundle-1 allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-1 allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-1 allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-1 allocation score on c09-h08-r630: -INFINITY -+container_color: scale1-bundle-1 allocation score on c09-h09-r630: -INFINITY -+container_color: scale1-bundle-1 allocation score on c09-h10-r630: -INFINITY -+container_color: scale1-bundle-2 allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-2 allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-2 allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-2 allocation score on c09-h08-r630: -INFINITY -+container_color: scale1-bundle-2 allocation score on c09-h09-r630: -INFINITY -+container_color: scale1-bundle-2 allocation score on c09-h10-r630: -INFINITY -+container_color: scale1-bundle-3 allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-3 allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-3 allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-3 allocation score on c09-h08-r630: -INFINITY -+container_color: scale1-bundle-3 allocation score on c09-h09-r630: -INFINITY -+container_color: scale1-bundle-3 allocation score on c09-h10-r630: -INFINITY -+container_color: scale1-bundle-4 allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-4 allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-4 allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-4 allocation score on c09-h08-r630: -INFINITY -+container_color: scale1-bundle-4 allocation score on c09-h09-r630: -INFINITY -+container_color: scale1-bundle-4 allocation score on c09-h10-r630: -INFINITY -+container_color: scale1-bundle-5 allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-5 allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-5 allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-5 allocation score on c09-h08-r630: -INFINITY -+container_color: scale1-bundle-5 allocation score on c09-h09-r630: -INFINITY -+container_color: scale1-bundle-5 allocation score on c09-h10-r630: -INFINITY -+container_color: scale1-bundle-clone allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-clone allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-clone allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-clone allocation score on c09-h08-r630: 0 -+container_color: scale1-bundle-clone allocation score on c09-h09-r630: 0 -+container_color: scale1-bundle-clone allocation score on c09-h10-r630: 0 -+container_color: scale1-bundle-clone allocation score on scale1-bundle-0: -INFINITY -+container_color: scale1-bundle-clone allocation score on scale1-bundle-1: -INFINITY -+container_color: scale1-bundle-clone allocation score on scale1-bundle-2: -INFINITY -+container_color: scale1-bundle-clone allocation score on scale1-bundle-3: -INFINITY -+container_color: scale1-bundle-clone allocation score on scale1-bundle-4: -INFINITY -+container_color: scale1-bundle-clone allocation score on scale1-bundle-5: -INFINITY -+container_color: scale1-bundle-docker-0 allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-docker-0 allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-docker-0 allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-docker-0 allocation score on c09-h08-r630: 0 -+container_color: scale1-bundle-docker-0 allocation score on c09-h09-r630: 0 -+container_color: scale1-bundle-docker-0 allocation score on c09-h10-r630: 0 -+container_color: scale1-bundle-docker-1 allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-docker-1 allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-docker-1 allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-docker-1 allocation score on c09-h08-r630: 0 -+container_color: scale1-bundle-docker-1 allocation score on c09-h09-r630: 0 -+container_color: scale1-bundle-docker-1 allocation score on c09-h10-r630: 0 -+container_color: scale1-bundle-docker-2 allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-docker-2 allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-docker-2 allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-docker-2 allocation score on c09-h08-r630: 0 -+container_color: scale1-bundle-docker-2 allocation score on c09-h09-r630: 0 -+container_color: scale1-bundle-docker-2 allocation score on c09-h10-r630: 0 -+container_color: scale1-bundle-docker-3 allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-docker-3 allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-docker-3 allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-docker-3 allocation score on c09-h08-r630: 0 -+container_color: scale1-bundle-docker-3 allocation score on c09-h09-r630: 0 -+container_color: scale1-bundle-docker-3 allocation score on c09-h10-r630: 0 -+container_color: scale1-bundle-docker-4 allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-docker-4 allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-docker-4 allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-docker-4 allocation score on c09-h08-r630: 0 -+container_color: scale1-bundle-docker-4 allocation score on c09-h09-r630: 0 -+container_color: scale1-bundle-docker-4 allocation score on c09-h10-r630: 0 -+container_color: scale1-bundle-docker-5 allocation score on c09-h05-r630: 0 -+container_color: scale1-bundle-docker-5 allocation score on c09-h06-r630: 0 -+container_color: scale1-bundle-docker-5 allocation score on c09-h07-r630: 0 -+container_color: scale1-bundle-docker-5 allocation score on c09-h08-r630: 0 -+container_color: scale1-bundle-docker-5 allocation score on c09-h09-r630: 0 -+container_color: scale1-bundle-docker-5 allocation score on c09-h10-r630: 0 -+native_color: c09-h08-r630 allocation score on c09-h05-r630: 0 -+native_color: c09-h08-r630 allocation score on c09-h06-r630: 0 -+native_color: c09-h08-r630 allocation score on c09-h07-r630: 0 -+native_color: c09-h08-r630 allocation score on c09-h08-r630: -INFINITY -+native_color: c09-h08-r630 allocation score on c09-h09-r630: -INFINITY -+native_color: c09-h08-r630 allocation score on c09-h10-r630: -INFINITY -+native_color: c09-h09-r630 allocation score on c09-h05-r630: 0 -+native_color: c09-h09-r630 allocation score on c09-h06-r630: 0 -+native_color: c09-h09-r630 allocation score on c09-h07-r630: 0 -+native_color: c09-h09-r630 allocation score on c09-h08-r630: -INFINITY -+native_color: c09-h09-r630 allocation score on c09-h09-r630: -INFINITY -+native_color: c09-h09-r630 allocation score on c09-h10-r630: -INFINITY -+native_color: c09-h10-r630 allocation score on c09-h05-r630: 0 -+native_color: c09-h10-r630 allocation score on c09-h06-r630: 0 -+native_color: c09-h10-r630 allocation score on c09-h07-r630: 0 -+native_color: c09-h10-r630 allocation score on c09-h08-r630: -INFINITY -+native_color: c09-h10-r630 allocation score on c09-h09-r630: -INFINITY -+native_color: c09-h10-r630 allocation score on c09-h10-r630: -INFINITY -+native_color: dummy1:0 allocation score on scale1-bundle-0: INFINITY -+native_color: dummy1:1 allocation score on scale1-bundle-1: INFINITY -+native_color: dummy1:2 allocation score on scale1-bundle-2: INFINITY -+native_color: dummy1:3 allocation score on scale1-bundle-3: INFINITY -+native_color: dummy1:4 allocation score on scale1-bundle-4: INFINITY -+native_color: dummy1:5 allocation score on scale1-bundle-5: INFINITY -+native_color: scale1-bundle-0 allocation score on c09-h05-r630: 10000 -+native_color: scale1-bundle-0 allocation score on c09-h06-r630: 0 -+native_color: scale1-bundle-0 allocation score on c09-h07-r630: 0 -+native_color: scale1-bundle-0 allocation score on c09-h08-r630: -INFINITY -+native_color: scale1-bundle-0 allocation score on c09-h09-r630: -INFINITY -+native_color: scale1-bundle-0 allocation score on c09-h10-r630: -INFINITY -+native_color: scale1-bundle-1 allocation score on c09-h05-r630: 0 -+native_color: scale1-bundle-1 allocation score on c09-h06-r630: 10000 -+native_color: scale1-bundle-1 allocation score on c09-h07-r630: 0 -+native_color: scale1-bundle-1 allocation score on c09-h08-r630: -INFINITY -+native_color: scale1-bundle-1 allocation score on c09-h09-r630: -INFINITY -+native_color: scale1-bundle-1 allocation score on c09-h10-r630: -INFINITY -+native_color: scale1-bundle-2 allocation score on c09-h05-r630: 0 -+native_color: scale1-bundle-2 allocation score on c09-h06-r630: 0 -+native_color: scale1-bundle-2 allocation score on c09-h07-r630: 10000 -+native_color: scale1-bundle-2 allocation score on c09-h08-r630: -INFINITY -+native_color: scale1-bundle-2 allocation score on c09-h09-r630: -INFINITY -+native_color: scale1-bundle-2 allocation score on c09-h10-r630: -INFINITY -+native_color: scale1-bundle-3 allocation score on c09-h05-r630: 0 -+native_color: scale1-bundle-3 allocation score on c09-h06-r630: -INFINITY -+native_color: scale1-bundle-3 allocation score on c09-h07-r630: -INFINITY -+native_color: scale1-bundle-3 allocation score on c09-h08-r630: -INFINITY -+native_color: scale1-bundle-3 allocation score on c09-h09-r630: -INFINITY -+native_color: scale1-bundle-3 allocation score on c09-h10-r630: -INFINITY -+native_color: scale1-bundle-4 allocation score on c09-h05-r630: -INFINITY -+native_color: scale1-bundle-4 allocation score on c09-h06-r630: 0 -+native_color: scale1-bundle-4 allocation score on c09-h07-r630: -INFINITY -+native_color: scale1-bundle-4 allocation score on c09-h08-r630: -INFINITY -+native_color: scale1-bundle-4 allocation score on c09-h09-r630: -INFINITY -+native_color: scale1-bundle-4 allocation score on c09-h10-r630: -INFINITY -+native_color: scale1-bundle-5 allocation score on c09-h05-r630: -INFINITY -+native_color: scale1-bundle-5 allocation score on c09-h06-r630: -INFINITY -+native_color: scale1-bundle-5 allocation score on c09-h07-r630: 0 -+native_color: scale1-bundle-5 allocation score on c09-h08-r630: -INFINITY -+native_color: scale1-bundle-5 allocation score on c09-h09-r630: -INFINITY -+native_color: scale1-bundle-5 allocation score on c09-h10-r630: -INFINITY -+native_color: scale1-bundle-docker-0 allocation score on c09-h05-r630: 0 -+native_color: scale1-bundle-docker-0 allocation score on c09-h06-r630: 0 -+native_color: scale1-bundle-docker-0 allocation score on c09-h07-r630: 0 -+native_color: scale1-bundle-docker-0 allocation score on c09-h08-r630: -10000 -+native_color: scale1-bundle-docker-0 allocation score on c09-h09-r630: -10000 -+native_color: scale1-bundle-docker-0 allocation score on c09-h10-r630: -10000 -+native_color: scale1-bundle-docker-1 allocation score on c09-h05-r630: -INFINITY -+native_color: scale1-bundle-docker-1 allocation score on c09-h06-r630: 0 -+native_color: scale1-bundle-docker-1 allocation score on c09-h07-r630: 0 -+native_color: scale1-bundle-docker-1 allocation score on c09-h08-r630: -10000 -+native_color: scale1-bundle-docker-1 allocation score on c09-h09-r630: -10000 -+native_color: scale1-bundle-docker-1 allocation score on c09-h10-r630: -10000 -+native_color: scale1-bundle-docker-2 allocation score on c09-h05-r630: -INFINITY -+native_color: scale1-bundle-docker-2 allocation score on c09-h06-r630: -INFINITY -+native_color: scale1-bundle-docker-2 allocation score on c09-h07-r630: 0 -+native_color: scale1-bundle-docker-2 allocation score on c09-h08-r630: -10000 -+native_color: scale1-bundle-docker-2 allocation score on c09-h09-r630: -10000 -+native_color: scale1-bundle-docker-2 allocation score on c09-h10-r630: -10000 -+native_color: scale1-bundle-docker-3 allocation score on c09-h05-r630: -INFINITY -+native_color: scale1-bundle-docker-3 allocation score on c09-h06-r630: -INFINITY -+native_color: scale1-bundle-docker-3 allocation score on c09-h07-r630: -INFINITY -+native_color: scale1-bundle-docker-3 allocation score on c09-h08-r630: 0 -+native_color: scale1-bundle-docker-3 allocation score on c09-h09-r630: 0 -+native_color: scale1-bundle-docker-3 allocation score on c09-h10-r630: 0 -+native_color: scale1-bundle-docker-4 allocation score on c09-h05-r630: -INFINITY -+native_color: scale1-bundle-docker-4 allocation score on c09-h06-r630: -INFINITY -+native_color: scale1-bundle-docker-4 allocation score on c09-h07-r630: -INFINITY -+native_color: scale1-bundle-docker-4 allocation score on c09-h08-r630: -INFINITY -+native_color: scale1-bundle-docker-4 allocation score on c09-h09-r630: 0 -+native_color: scale1-bundle-docker-4 allocation score on c09-h10-r630: 0 -+native_color: scale1-bundle-docker-5 allocation score on c09-h05-r630: -INFINITY -+native_color: scale1-bundle-docker-5 allocation score on c09-h06-r630: -INFINITY -+native_color: scale1-bundle-docker-5 allocation score on c09-h07-r630: -INFINITY -+native_color: scale1-bundle-docker-5 allocation score on c09-h08-r630: -INFINITY -+native_color: scale1-bundle-docker-5 allocation score on c09-h09-r630: -INFINITY -+native_color: scale1-bundle-docker-5 allocation score on c09-h10-r630: 0 -diff --git a/pengine/test10/bundle-probe-remotes.summary b/pengine/test10/bundle-probe-remotes.summary -new file mode 100644 -index 0000000..cd4f7c1 ---- /dev/null -+++ b/pengine/test10/bundle-probe-remotes.summary -@@ -0,0 +1,166 @@ -+ -+Current cluster status: -+Online: [ c09-h05-r630 c09-h06-r630 c09-h07-r630 ] -+RemoteOFFLINE: [ c09-h08-r630 c09-h09-r630 c09-h10-r630 ] -+ -+ c09-h08-r630 (ocf::pacemaker:remote): Stopped -+ c09-h09-r630 (ocf::pacemaker:remote): Stopped -+ c09-h10-r630 (ocf::pacemaker:remote): Stopped -+ Docker container set: scale1-bundle [beekhof:remote] -+ scale1-bundle-0 (ocf::pacemaker:Dummy): Stopped -+ scale1-bundle-1 (ocf::pacemaker:Dummy): Stopped -+ scale1-bundle-2 (ocf::pacemaker:Dummy): Stopped -+ scale1-bundle-3 (ocf::pacemaker:Dummy): Stopped -+ scale1-bundle-4 (ocf::pacemaker:Dummy): Stopped -+ scale1-bundle-5 (ocf::pacemaker:Dummy): Stopped -+ -+Transition Summary: -+ * Start c09-h08-r630 ( c09-h05-r630 ) -+ * Start c09-h09-r630 ( c09-h06-r630 ) -+ * Start c09-h10-r630 ( c09-h07-r630 ) -+ * Start scale1-bundle-docker-0 ( c09-h05-r630 ) -+ * Start scale1-bundle-0 ( c09-h05-r630 ) -+ * Start dummy1:0 ( scale1-bundle-0 ) -+ * Start scale1-bundle-docker-1 ( c09-h06-r630 ) -+ * Start scale1-bundle-1 ( c09-h06-r630 ) -+ * Start dummy1:1 ( scale1-bundle-1 ) -+ * Start scale1-bundle-docker-2 ( c09-h07-r630 ) -+ * Start scale1-bundle-2 ( c09-h07-r630 ) -+ * Start dummy1:2 ( scale1-bundle-2 ) -+ * Start scale1-bundle-docker-3 ( c09-h08-r630 ) -+ * Start scale1-bundle-3 ( c09-h05-r630 ) -+ * Start dummy1:3 ( scale1-bundle-3 ) -+ * Start scale1-bundle-docker-4 ( c09-h09-r630 ) -+ * Start scale1-bundle-4 ( c09-h06-r630 ) -+ * Start dummy1:4 ( scale1-bundle-4 ) -+ * Start scale1-bundle-docker-5 ( c09-h10-r630 ) -+ * Start scale1-bundle-5 ( c09-h07-r630 ) -+ * Start dummy1:5 ( scale1-bundle-5 ) -+ -+Executing cluster transition: -+ * Resource action: c09-h08-r630 monitor on c09-h07-r630 -+ * Resource action: c09-h08-r630 monitor on c09-h06-r630 -+ * Resource action: c09-h08-r630 monitor on c09-h05-r630 -+ * Resource action: c09-h09-r630 monitor on c09-h07-r630 -+ * Resource action: c09-h09-r630 monitor on c09-h06-r630 -+ * Resource action: c09-h09-r630 monitor on c09-h05-r630 -+ * Resource action: c09-h10-r630 monitor on c09-h07-r630 -+ * Resource action: c09-h10-r630 monitor on c09-h06-r630 -+ * Resource action: c09-h10-r630 monitor on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-0 monitor on c09-h07-r630 -+ * Resource action: scale1-bundle-docker-0 monitor on c09-h06-r630 -+ * Resource action: scale1-bundle-docker-0 monitor on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-1 monitor on c09-h07-r630 -+ * Resource action: scale1-bundle-docker-1 monitor on c09-h06-r630 -+ * Resource action: scale1-bundle-docker-1 monitor on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-2 monitor on c09-h07-r630 -+ * Resource action: scale1-bundle-docker-2 monitor on c09-h06-r630 -+ * Resource action: scale1-bundle-docker-2 monitor on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-3 monitor on c09-h07-r630 -+ * Resource action: scale1-bundle-docker-3 monitor on c09-h06-r630 -+ * Resource action: scale1-bundle-docker-3 monitor on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-4 monitor on c09-h07-r630 -+ * Resource action: scale1-bundle-docker-4 monitor on c09-h06-r630 -+ * Resource action: scale1-bundle-docker-4 monitor on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-5 monitor on c09-h07-r630 -+ * Resource action: scale1-bundle-docker-5 monitor on c09-h06-r630 -+ * Resource action: scale1-bundle-docker-5 monitor on c09-h05-r630 -+ * Pseudo action: scale1-bundle_start_0 -+ * Resource action: c09-h08-r630 start on c09-h05-r630 -+ * Resource action: c09-h09-r630 start on c09-h06-r630 -+ * Resource action: c09-h10-r630 start on c09-h07-r630 -+ * Resource action: scale1-bundle-docker-0 monitor on c09-h10-r630 -+ * Resource action: scale1-bundle-docker-0 monitor on c09-h09-r630 -+ * Resource action: scale1-bundle-docker-0 monitor on c09-h08-r630 -+ * Resource action: scale1-bundle-docker-1 monitor on c09-h10-r630 -+ * Resource action: scale1-bundle-docker-1 monitor on c09-h09-r630 -+ * Resource action: scale1-bundle-docker-1 monitor on c09-h08-r630 -+ * Resource action: scale1-bundle-docker-2 monitor on c09-h10-r630 -+ * Resource action: scale1-bundle-docker-2 monitor on c09-h09-r630 -+ * Resource action: scale1-bundle-docker-2 monitor on c09-h08-r630 -+ * Resource action: scale1-bundle-docker-3 monitor on c09-h10-r630 -+ * Resource action: scale1-bundle-docker-3 monitor on c09-h09-r630 -+ * Resource action: scale1-bundle-docker-3 monitor on c09-h08-r630 -+ * Resource action: scale1-bundle-docker-4 monitor on c09-h10-r630 -+ * Resource action: scale1-bundle-docker-4 monitor on c09-h09-r630 -+ * Resource action: scale1-bundle-docker-4 monitor on c09-h08-r630 -+ * Resource action: scale1-bundle-docker-5 monitor on c09-h10-r630 -+ * Resource action: scale1-bundle-docker-5 monitor on c09-h09-r630 -+ * Resource action: scale1-bundle-docker-5 monitor on c09-h08-r630 -+ * Resource action: c09-h08-r630 monitor=60000 on c09-h05-r630 -+ * Resource action: c09-h09-r630 monitor=60000 on c09-h06-r630 -+ * Resource action: c09-h10-r630 monitor=60000 on c09-h07-r630 -+ * Pseudo action: scale1-bundle-clone_start_0 -+ * Resource action: scale1-bundle-docker-0 start on c09-h05-r630 -+ * Resource action: scale1-bundle-0 monitor on c09-h07-r630 -+ * Resource action: scale1-bundle-0 monitor on c09-h06-r630 -+ * Resource action: scale1-bundle-0 monitor on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-1 start on c09-h06-r630 -+ * Resource action: scale1-bundle-1 monitor on c09-h07-r630 -+ * Resource action: scale1-bundle-1 monitor on c09-h06-r630 -+ * Resource action: scale1-bundle-1 monitor on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-2 start on c09-h07-r630 -+ * Resource action: scale1-bundle-2 monitor on c09-h07-r630 -+ * Resource action: scale1-bundle-2 monitor on c09-h06-r630 -+ * Resource action: scale1-bundle-2 monitor on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-3 start on c09-h08-r630 -+ * Resource action: scale1-bundle-3 monitor on c09-h07-r630 -+ * Resource action: scale1-bundle-3 monitor on c09-h06-r630 -+ * Resource action: scale1-bundle-3 monitor on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-4 start on c09-h09-r630 -+ * Resource action: scale1-bundle-4 monitor on c09-h07-r630 -+ * Resource action: scale1-bundle-4 monitor on c09-h06-r630 -+ * Resource action: scale1-bundle-4 monitor on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-5 start on c09-h10-r630 -+ * Resource action: scale1-bundle-5 monitor on c09-h07-r630 -+ * Resource action: scale1-bundle-5 monitor on c09-h06-r630 -+ * Resource action: scale1-bundle-5 monitor on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-0 monitor=60000 on c09-h05-r630 -+ * Resource action: scale1-bundle-0 start on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-1 monitor=60000 on c09-h06-r630 -+ * Resource action: scale1-bundle-1 start on c09-h06-r630 -+ * Resource action: scale1-bundle-docker-2 monitor=60000 on c09-h07-r630 -+ * Resource action: scale1-bundle-2 start on c09-h07-r630 -+ * Resource action: scale1-bundle-docker-3 monitor=60000 on c09-h08-r630 -+ * Resource action: scale1-bundle-3 start on c09-h05-r630 -+ * Resource action: scale1-bundle-docker-4 monitor=60000 on c09-h09-r630 -+ * Resource action: scale1-bundle-4 start on c09-h06-r630 -+ * Resource action: scale1-bundle-docker-5 monitor=60000 on c09-h10-r630 -+ * Resource action: scale1-bundle-5 start on c09-h07-r630 -+ * Resource action: dummy1:0 start on scale1-bundle-0 -+ * Resource action: dummy1:1 start on scale1-bundle-1 -+ * Resource action: dummy1:2 start on scale1-bundle-2 -+ * Resource action: dummy1:3 start on scale1-bundle-3 -+ * Resource action: dummy1:4 start on scale1-bundle-4 -+ * Resource action: dummy1:5 start on scale1-bundle-5 -+ * Pseudo action: scale1-bundle-clone_running_0 -+ * Resource action: scale1-bundle-0 monitor=60000 on c09-h05-r630 -+ * Resource action: scale1-bundle-1 monitor=60000 on c09-h06-r630 -+ * Resource action: scale1-bundle-2 monitor=60000 on c09-h07-r630 -+ * Resource action: scale1-bundle-3 monitor=60000 on c09-h05-r630 -+ * Resource action: scale1-bundle-4 monitor=60000 on c09-h06-r630 -+ * Resource action: scale1-bundle-5 monitor=60000 on c09-h07-r630 -+ * Pseudo action: scale1-bundle_running_0 -+ * Resource action: dummy1:0 monitor=10000 on scale1-bundle-0 -+ * Resource action: dummy1:1 monitor=10000 on scale1-bundle-1 -+ * Resource action: dummy1:2 monitor=10000 on scale1-bundle-2 -+ * Resource action: dummy1:3 monitor=10000 on scale1-bundle-3 -+ * Resource action: dummy1:4 monitor=10000 on scale1-bundle-4 -+ * Resource action: dummy1:5 monitor=10000 on scale1-bundle-5 -+ -+Revised cluster status: -+Online: [ c09-h05-r630 c09-h06-r630 c09-h07-r630 ] -+RemoteOnline: [ c09-h08-r630 c09-h09-r630 c09-h10-r630 ] -+Containers: [ scale1-bundle-0:scale1-bundle-docker-0 scale1-bundle-1:scale1-bundle-docker-1 scale1-bundle-2:scale1-bundle-docker-2 scale1-bundle-3:scale1-bundle-docker-3 scale1-bundle-4:scale1-bundle-docker-4 scale1-bundle-5:scale1-bundle-docker-5 ] -+ -+ c09-h08-r630 (ocf::pacemaker:remote): Started c09-h05-r630 -+ c09-h09-r630 (ocf::pacemaker:remote): Started c09-h06-r630 -+ c09-h10-r630 (ocf::pacemaker:remote): Started c09-h07-r630 -+ Docker container set: scale1-bundle [beekhof:remote] -+ scale1-bundle-0 (ocf::pacemaker:Dummy): Started c09-h05-r630 -+ scale1-bundle-1 (ocf::pacemaker:Dummy): Started c09-h06-r630 -+ scale1-bundle-2 (ocf::pacemaker:Dummy): Started c09-h07-r630 -+ scale1-bundle-3 (ocf::pacemaker:Dummy): Started c09-h08-r630 -+ scale1-bundle-4 (ocf::pacemaker:Dummy): Started c09-h09-r630 -+ scale1-bundle-5 (ocf::pacemaker:Dummy): Started c09-h10-r630 -+ -diff --git a/pengine/test10/bundle-probe-remotes.xml b/pengine/test10/bundle-probe-remotes.xml -new file mode 100644 -index 0000000..6e24589 ---- /dev/null -+++ b/pengine/test10/bundle-probe-remotes.xml -@@ -0,0 +1,65 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.8.3.1 - diff --git a/SOURCES/102-stop-before-probes.patch b/SOURCES/102-stop-before-probes.patch deleted file mode 100644 index 1dbb5ae..0000000 --- a/SOURCES/102-stop-before-probes.patch +++ /dev/null @@ -1,1795 +0,0 @@ -From 058d45e6adff4627bcd8504002d45df79bc4d1f6 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 25 Oct 2017 10:26:34 +1100 -Subject: [PATCH 1/4] Fix: PE: Use the node we already have and know isnt NULL - ---- - pengine/native.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/pengine/native.c b/pengine/native.c -index 64a8a90..82cfb57 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -2884,8 +2884,8 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - return FALSE; - } - -- if(allowed != NULL && is_container_remote_node(allowed)) { -- resource_t *remote = allowed->details->remote_rsc->container; -+ if(is_container_remote_node(node)) { -+ resource_t *remote = node->details->remote_rsc->container; - - if(remote->role == RSC_ROLE_STOPPED) { - /* If the container is stopped, then we know anything that -@@ -2922,8 +2922,8 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - /* Here we really we want to check if remote->stop is required, - * but that information doesn't exist yet - */ -- } else if(allowed->details->remote_requires_reset -- || allowed->details->unclean -+ } else if(node->details->remote_requires_reset -+ || node->details->unclean - || is_set(remote->flags, pe_rsc_failed) - || remote->next_role == RSC_ROLE_STOPPED - || (remote->allocated_to --- -1.8.3.1 - - -From b322110dd85215ec58ba0a53c5bce3007959a8cd Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 25 Oct 2017 10:27:09 +1100 -Subject: [PATCH 2/4] Fix: PE: Resources are allowed to stop before their state - is known everywhere - ---- - pengine/native.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/pengine/native.c b/pengine/native.c -index 82cfb57..5ba7b5f 100644 ---- a/pengine/native.c -+++ b/pengine/native.c -@@ -3007,8 +3007,14 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, - custom_action_order(rsc, NULL, probe, - top, reload_key(rsc), NULL, - pe_order_optional, data_set); -- -- if (node->details->shutdown == FALSE) { -+ -+ 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); --- -1.8.3.1 - - -From bc4228d8bc0bd074005dc9868f2cc892f9a763a6 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 25 Oct 2017 10:27:18 +1100 -Subject: [PATCH 3/4] Test: PE: Resources are allowed to stop before their - state is known everywhere - ---- - pengine/test10/594.dot | 1 - - pengine/test10/594.exp | 3 - - pengine/test10/662.dot | 2 - - pengine/test10/662.exp | 6 -- - pengine/test10/829.dot | 1 - - pengine/test10/829.exp | 3 - - pengine/test10/bug-cl-5247.dot | 3 - - pengine/test10/bug-cl-5247.exp | 12 +--- - pengine/test10/bug-cl-5247.summary | 4 +- - pengine/test10/bug-rh-1097457.dot | 2 - - pengine/test10/bug-rh-1097457.exp | 6 -- - pengine/test10/clone-no-shuffle.dot | 1 - - pengine/test10/clone-no-shuffle.exp | 6 +- - pengine/test10/clone-no-shuffle.summary | 2 +- - pengine/test10/group9.dot | 2 - - pengine/test10/group9.exp | 6 -- - pengine/test10/inc2.dot | 1 - - pengine/test10/inc2.exp | 3 - - pengine/test10/inc3.dot | 1 - - pengine/test10/inc3.exp | 3 - - pengine/test10/inc4.dot | 1 - - pengine/test10/inc4.exp | 3 - - pengine/test10/master-7.dot | 3 - - pengine/test10/master-7.exp | 9 --- - pengine/test10/master-9.dot | 1 - - pengine/test10/master-9.exp | 3 - - pengine/test10/migrate-3.dot | 1 - - pengine/test10/migrate-3.exp | 6 +- - pengine/test10/notify-3.dot | 1 - - pengine/test10/notify-3.exp | 3 - - pengine/test10/novell-252693-3.dot | 1 - - pengine/test10/novell-252693-3.exp | 3 - - pengine/test10/params-2.dot | 2 - - pengine/test10/params-2.exp | 9 +-- - pengine/test10/params-2.summary | 6 +- - pengine/test10/rec-rsc-1.dot | 1 - - pengine/test10/rec-rsc-1.exp | 6 +- - pengine/test10/rec-rsc-2.dot | 1 - - pengine/test10/rec-rsc-2.exp | 6 +- - pengine/test10/rec-rsc-5.dot | 1 - - pengine/test10/rec-rsc-5.exp | 3 - - pengine/test10/target-1.dot | 3 - - pengine/test10/target-1.exp | 12 +--- - pengine/test10/target-1.summary | 2 +- - pengine/test10/target-2.dot | 3 - - pengine/test10/target-2.exp | 12 +--- - pengine/test10/target-2.summary | 2 +- - pengine/test10/unrunnable-1.dot | 1 - - pengine/test10/whitebox-fail1.dot | 1 - - pengine/test10/whitebox-fail1.exp | 3 - - pengine/test10/whitebox-fail2.dot | 1 - - pengine/test10/whitebox-fail2.exp | 3 - - pengine/test10/whitebox-imply-stop-on-fence.dot | 8 --- - pengine/test10/whitebox-imply-stop-on-fence.exp | 24 ------- - pengine/test10/whitebox-ms-ordering.dot | 3 - - pengine/test10/whitebox-ms-ordering.exp | 9 --- - pengine/test10/whitebox-orphan-ms.dot | 18 ----- - pengine/test10/whitebox-orphan-ms.exp | 92 ++++++++++++------------- - pengine/test10/whitebox-orphaned.dot | 3 - - pengine/test10/whitebox-orphaned.exp | 70 +++++++++---------- - 60 files changed, 97 insertions(+), 311 deletions(-) - -diff --git a/pengine/test10/594.dot b/pengine/test10/594.dot -index 853f468..648a8f6 100644 ---- a/pengine/test10/594.dot -+++ b/pengine/test10/594.dot -@@ -15,7 +15,6 @@ digraph "g" { - "DoFencing_stop_0" [ style=bold color="green" fontcolor="orange" ] - "DoFencing_stopped_0" [ style=bold color="green" fontcolor="orange" ] - "all_stopped" [ style=bold color="green" fontcolor="orange" ] --"child_DoFencing:0_monitor_0 hadev1" -> "child_DoFencing:0_stop_0 hadev2" [ style = bold] - "child_DoFencing:0_monitor_0 hadev1" [ style=bold color="green" fontcolor="black" ] - "child_DoFencing:0_stop_0 hadev2" -> "DoFencing_stopped_0" [ style = bold] - "child_DoFencing:0_stop_0 hadev2" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/594.exp b/pengine/test10/594.exp -index 400a5e7..a0b9fe1 100644 ---- a/pengine/test10/594.exp -+++ b/pengine/test10/594.exp -@@ -125,9 +125,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/662.dot b/pengine/test10/662.dot -index b0c45a6..3287044 100644 ---- a/pengine/test10/662.dot -+++ b/pengine/test10/662.dot -@@ -7,9 +7,7 @@ - "DoFencing_stop_0" [ style=bold color="green" fontcolor="orange" ] - "DoFencing_stopped_0" [ style=bold color="green" fontcolor="orange" ] - "all_stopped" [ style=bold color="green" fontcolor="orange" ] --"child_DoFencing:0_monitor_0 c001n04" -> "child_DoFencing:0_stop_0 c001n02" [ style = bold] - "child_DoFencing:0_monitor_0 c001n04" [ style=bold color="green" fontcolor="black" ] --"child_DoFencing:0_monitor_0 c001n09" -> "child_DoFencing:0_stop_0 c001n02" [ style = bold] - "child_DoFencing:0_monitor_0 c001n09" [ style=bold color="green" fontcolor="black" ] - "child_DoFencing:0_stop_0 c001n02" -> "DoFencing_stopped_0" [ style = bold] - "child_DoFencing:0_stop_0 c001n02" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/662.exp b/pengine/test10/662.exp -index d05f4d3..4d95ef6 100644 ---- a/pengine/test10/662.exp -+++ b/pengine/test10/662.exp -@@ -188,12 +188,6 @@ - - - -- -- -- -- -- -- - - - -diff --git a/pengine/test10/829.dot b/pengine/test10/829.dot -index 8b95e2d..a0ea381 100644 ---- a/pengine/test10/829.dot -+++ b/pengine/test10/829.dot -@@ -6,7 +6,6 @@ digraph "g" { - "DoFencing_stop_0" [ style=bold color="green" fontcolor="orange" ] - "DoFencing_stopped_0" [ style=bold color="green" fontcolor="orange" ] - "all_stopped" [ style=bold color="green" fontcolor="orange" ] --"child_DoFencing:0_monitor_0 c001n01" -> "child_DoFencing:0_stop_0 c001n02" [ style = bold] - "child_DoFencing:0_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] - "child_DoFencing:0_stop_0 c001n02" -> "DoFencing_stopped_0" [ style = bold] - "child_DoFencing:0_stop_0 c001n02" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/829.exp b/pengine/test10/829.exp -index d1f85fa..a1617b9 100644 ---- a/pengine/test10/829.exp -+++ b/pengine/test10/829.exp -@@ -168,9 +168,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/bug-cl-5247.dot b/pengine/test10/bug-cl-5247.dot -index decf5c3..41895a1 100644 ---- a/pengine/test10/bug-cl-5247.dot -+++ b/pengine/test10/bug-cl-5247.dot -@@ -90,7 +90,6 @@ digraph "g" { - "pgsql_stop_0 pgsr02" -> "msPostgresql_stopped_0" [ style = bold] - "pgsql_stop_0 pgsr02" [ style=bold color="green" fontcolor="orange"] - "pgsr01_monitor_0 bl460g8n4" [ style=bold color="green" fontcolor="black"] --"pgsr02_monitor_0 bl460g8n3" -> "pgsr02_stop_0 bl460g8n4" [ style = bold] - "pgsr02_monitor_0 bl460g8n3" [ style=bold color="green" fontcolor="black"] - "pgsr02_stop_0 bl460g8n4" -> "all_stopped" [ style = bold] - "pgsr02_stop_0 bl460g8n4" -> "prmDB2_stop_0 bl460g8n4" [ style = bold] -@@ -128,7 +127,6 @@ digraph "g" { - "stonith_complete" -> "vip-rep_start_0 pgsr01" [ style = bold] - "stonith_complete" [ style=bold color="green" fontcolor="orange"] - "vip-master_monitor_0 pgsr01" -> "vip-master_start_0 pgsr01" [ style = bold] --"vip-master_monitor_0 pgsr01" -> "vip-master_stop_0 pgsr02" [ style = bold] - "vip-master_monitor_0 pgsr01" [ style=bold color="green" fontcolor="black"] - "vip-master_monitor_10000 pgsr01" [ style=bold color="green" fontcolor="black"] - "vip-master_start_0 pgsr01" -> "master-group_running_0" [ style = bold] -@@ -140,7 +138,6 @@ digraph "g" { - "vip-master_stop_0 pgsr02" -> "vip-master_start_0 pgsr01" [ style = bold] - "vip-master_stop_0 pgsr02" [ style=bold color="green" fontcolor="orange"] - "vip-rep_monitor_0 pgsr01" -> "vip-rep_start_0 pgsr01" [ style = bold] --"vip-rep_monitor_0 pgsr01" -> "vip-rep_stop_0 pgsr02" [ style = bold] - "vip-rep_monitor_0 pgsr01" [ style=bold color="green" fontcolor="black"] - "vip-rep_monitor_10000 pgsr01" [ style=bold color="green" fontcolor="black"] - "vip-rep_start_0 pgsr01" -> "master-group_running_0" [ style = bold] -diff --git a/pengine/test10/bug-cl-5247.exp b/pengine/test10/bug-cl-5247.exp -index 47c369a..7f55c64 100644 ---- a/pengine/test10/bug-cl-5247.exp -+++ b/pengine/test10/bug-cl-5247.exp -@@ -308,9 +308,6 @@ - - - -- -- -- - - - -@@ -376,9 +373,6 @@ - - - -- -- -- - - - -@@ -718,11 +712,7 @@ - - - -- -- -- -- -- -+ - - - -diff --git a/pengine/test10/bug-cl-5247.summary b/pengine/test10/bug-cl-5247.summary -index f15ef2e..99c00e9 100644 ---- a/pengine/test10/bug-cl-5247.summary -+++ b/pengine/test10/bug-cl-5247.summary -@@ -36,7 +36,9 @@ Executing cluster transition: - * Resource action: vip-rep monitor on pgsr01 - * Pseudo action: msPostgresql_pre_notify_demote_0 - * Resource action: pgsr01 monitor on bl460g8n4 -+ * Resource action: pgsr02 stop on bl460g8n4 - * Resource action: pgsr02 monitor on bl460g8n3 -+ * Resource action: prmDB2 stop on bl460g8n4 - * Pseudo action: grpStonith1_stopped_0 - * Pseudo action: grpStonith1_start_0 - * Pseudo action: grpStonith2_stopped_0 -@@ -44,8 +46,6 @@ Executing cluster transition: - * Resource action: pgsql notify on pgsr01 - * Pseudo action: msPostgresql_confirmed-pre_notify_demote_0 - * Pseudo action: msPostgresql_demote_0 -- * Resource action: pgsr02 stop on bl460g8n4 -- * Resource action: prmDB2 stop on bl460g8n4 - * Pseudo action: stonith-pgsr02-off on pgsr02 - * Pseudo action: stonith_complete - * Pseudo action: pgsql_post_notify_stop_0 -diff --git a/pengine/test10/bug-rh-1097457.dot b/pengine/test10/bug-rh-1097457.dot -index 7791e06..512510e 100644 ---- a/pengine/test10/bug-rh-1097457.dot -+++ b/pengine/test10/bug-rh-1097457.dot -@@ -60,10 +60,8 @@ digraph "g" { - "FSlun1_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] - "FSlun2_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] - "FSlun3_monitor_0 lamaVM1" -> "FSlun3_start_0 lama2" [ style = bold] --"FSlun3_monitor_0 lamaVM1" -> "FSlun3_stop_0 lamaVM2" [ style = bold] - "FSlun3_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] - "FSlun3_monitor_0 lamaVM3" -> "FSlun3_start_0 lama2" [ style = bold] --"FSlun3_monitor_0 lamaVM3" -> "FSlun3_stop_0 lamaVM2" [ style = bold] - "FSlun3_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] - "FSlun3_monitor_10000 lama2" [ style=bold color="green" fontcolor="black"] - "FSlun3_monitor_10000 lamaVM2" [ style=bold color="green" fontcolor="black"] -diff --git a/pengine/test10/bug-rh-1097457.exp b/pengine/test10/bug-rh-1097457.exp -index 33c13bd..e7e0e67 100644 ---- a/pengine/test10/bug-rh-1097457.exp -+++ b/pengine/test10/bug-rh-1097457.exp -@@ -105,12 +105,6 @@ - - - -- -- -- -- -- -- - - - -diff --git a/pengine/test10/clone-no-shuffle.dot b/pengine/test10/clone-no-shuffle.dot -index 7996ef4..883e779 100644 ---- a/pengine/test10/clone-no-shuffle.dot -+++ b/pengine/test10/clone-no-shuffle.dot -@@ -76,7 +76,6 @@ digraph "g" { - "stonith-1_monitor_0 dktest2sles10" -> "stonith-1_start_0 dktest1sles10" [ style = bold] - "stonith-1_monitor_0 dktest2sles10" [ style=bold color="green" fontcolor="black" ] - "stonith-1_start_0 dktest1sles10" [ style=bold color="green" fontcolor="black" ] --"testip_monitor_0 dktest1sles10" -> "testip_stop_0 dktest2sles10" [ style = bold] - "testip_monitor_0 dktest1sles10" [ style=bold color="green" fontcolor="black" ] - "testip_stop_0 dktest2sles10" -> "all_stopped" [ style = bold] - "testip_stop_0 dktest2sles10" -> "ms-drbd1_demote_0" [ style = bold] -diff --git a/pengine/test10/clone-no-shuffle.exp b/pengine/test10/clone-no-shuffle.exp -index 126914b..1d5d70a 100644 ---- a/pengine/test10/clone-no-shuffle.exp -+++ b/pengine/test10/clone-no-shuffle.exp -@@ -419,11 +419,7 @@ - - - -- -- -- -- -- -+ - - - -diff --git a/pengine/test10/clone-no-shuffle.summary b/pengine/test10/clone-no-shuffle.summary -index c69d8f3..c9cb373 100644 ---- a/pengine/test10/clone-no-shuffle.summary -+++ b/pengine/test10/clone-no-shuffle.summary -@@ -19,11 +19,11 @@ Executing cluster transition: - * Resource action: stonith-1 monitor on dktest1sles10 - * Resource action: drbd1:1 monitor on dktest1sles10 - * Pseudo action: ms-drbd1_pre_notify_demote_0 -+ * Resource action: testip stop on dktest2sles10 - * Resource action: testip monitor on dktest1sles10 - * Resource action: stonith-1 start on dktest1sles10 - * Resource action: drbd1:0 notify on dktest2sles10 - * Pseudo action: ms-drbd1_confirmed-pre_notify_demote_0 -- * Resource action: testip stop on dktest2sles10 - * Pseudo action: ms-drbd1_demote_0 - * Resource action: drbd1:0 demote on dktest2sles10 - * Pseudo action: ms-drbd1_demoted_0 -diff --git a/pengine/test10/group9.dot b/pengine/test10/group9.dot -index a83b9ad..bc58f15 100644 ---- a/pengine/test10/group9.dot -+++ b/pengine/test10/group9.dot -@@ -28,7 +28,6 @@ - "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] - "rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] - "rsc4_monitor_0 node2" -> "rsc4_start_0 node1" [ 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 node1" -> "foo_running_0" [ style = bold] - "rsc4_start_0 node1" -> "rsc5_start_0 node1" [ style = bold] -@@ -58,7 +57,6 @@ - "rsc6_stop_0 node1" -> "rsc6_start_0 node2" [ style = bold] - "rsc6_stop_0 node1" [ style=bold color="green" fontcolor="black" ] - "rsc7_monitor_0 node2" -> "rsc7_start_0 node2" [ style = bold] --"rsc7_monitor_0 node2" -> "rsc7_stop_0 node1" [ style = bold] - "rsc7_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] - "rsc7_start_0 node2" -> "bar_running_0" [ style = bold] - "rsc7_start_0 node2" -> "rsc8_start_0 node2" [ style = bold] -diff --git a/pengine/test10/group9.exp b/pengine/test10/group9.exp -index 66e85a4..f57f2b4 100644 ---- a/pengine/test10/group9.exp -+++ b/pengine/test10/group9.exp -@@ -119,9 +119,6 @@ - - - -- -- -- - - - -@@ -325,9 +322,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/inc2.dot b/pengine/test10/inc2.dot -index 88d210e..cd250e5 100644 ---- a/pengine/test10/inc2.dot -+++ b/pengine/test10/inc2.dot -@@ -22,7 +22,6 @@ - "child_rsc1:3_stop_0 node1" -> "child_rsc1:3_start_0 node2" [ style = bold] - "child_rsc1:3_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] - "child_rsc1:3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] --"child_rsc1:4_monitor_0 node2" -> "child_rsc1:4_stop_0 node1" [ style = bold] - "child_rsc1:4_monitor_0 node2" -> "rsc1_start_0" [ style = bold] - "child_rsc1:4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] - "child_rsc1:4_stop_0 node1" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/inc2.exp b/pengine/test10/inc2.exp -index 3fb5134..92b4cf1 100644 ---- a/pengine/test10/inc2.exp -+++ b/pengine/test10/inc2.exp -@@ -108,9 +108,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/inc3.dot b/pengine/test10/inc3.dot -index eb3e7e9..113541a 100644 ---- a/pengine/test10/inc3.dot -+++ b/pengine/test10/inc3.dot -@@ -22,7 +22,6 @@ - "child_rsc1:3_stop_0 node1" -> "child_rsc1:3_start_0 node2" [ style = bold] - "child_rsc1:3_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] - "child_rsc1:3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] --"child_rsc1:4_monitor_0 node2" -> "child_rsc1:4_stop_0 node1" [ style = bold] - "child_rsc1:4_monitor_0 node2" -> "rsc1_start_0" [ style = bold] - "child_rsc1:4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] - "child_rsc1:4_stop_0 node1" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/inc3.exp b/pengine/test10/inc3.exp -index e6b0982..4c1e46d 100644 ---- a/pengine/test10/inc3.exp -+++ b/pengine/test10/inc3.exp -@@ -108,9 +108,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/inc4.dot b/pengine/test10/inc4.dot -index 16f5f03..c5a1a00 100644 ---- a/pengine/test10/inc4.dot -+++ b/pengine/test10/inc4.dot -@@ -24,7 +24,6 @@ - "child_rsc1:3_stop_0 node1" -> "child_rsc1:3_start_0 node2" [ style = bold] - "child_rsc1:3_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] - "child_rsc1:3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] --"child_rsc1:4_monitor_0 node2" -> "child_rsc1:4_stop_0 node1" [ style = bold] - "child_rsc1:4_monitor_0 node2" -> "rsc1_start_0" [ style = bold] - "child_rsc1:4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] - "child_rsc1:4_stop_0 node1" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/inc4.exp b/pengine/test10/inc4.exp -index 1f4e71c..0d767d6 100644 ---- a/pengine/test10/inc4.exp -+++ b/pengine/test10/inc4.exp -@@ -117,9 +117,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/master-7.dot b/pengine/test10/master-7.dot -index c6bdd3c..51fcfd8 100644 ---- a/pengine/test10/master-7.dot -+++ b/pengine/test10/master-7.dot -@@ -80,11 +80,8 @@ digraph "g" { - "ocf_msdummy:0_stop_0 c001n01" -> "all_stopped" [ style = bold] - "ocf_msdummy:0_stop_0 c001n01" -> "master_rsc_1_stopped_0" [ style = bold] - "ocf_msdummy:0_stop_0 c001n01" [ style=bold color="green" fontcolor="orange" ] --"ocf_msdummy:4_monitor_0 c001n02" -> "ocf_msdummy:4_stop_0 c001n01" [ style = bold] - "ocf_msdummy:4_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] --"ocf_msdummy:4_monitor_0 c001n03" -> "ocf_msdummy:4_stop_0 c001n01" [ style = bold] - "ocf_msdummy:4_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] --"ocf_msdummy:4_monitor_0 c001n08" -> "ocf_msdummy:4_stop_0 c001n01" [ style = bold] - "ocf_msdummy:4_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] - "ocf_msdummy:4_stop_0 c001n01" -> "all_stopped" [ style = bold] - "ocf_msdummy:4_stop_0 c001n01" -> "master_rsc_1_stopped_0" [ style = bold] -diff --git a/pengine/test10/master-7.exp b/pengine/test10/master-7.exp -index 971949d..33b5d49 100644 ---- a/pengine/test10/master-7.exp -+++ b/pengine/test10/master-7.exp -@@ -456,15 +456,6 @@ - - - -- -- -- -- -- -- -- -- -- - - - -diff --git a/pengine/test10/master-9.dot b/pengine/test10/master-9.dot -index b6cc5e0..343bb2d 100644 ---- a/pengine/test10/master-9.dot -+++ b/pengine/test10/master-9.dot -@@ -5,7 +5,6 @@ - "DoFencing_stop_0" [ style=bold color="green" fontcolor="orange" ] - "DoFencing_stopped_0" [ style=bold color="green" fontcolor="orange" ] - "all_stopped" [ style=bold color="green" fontcolor="orange"] --"child_DoFencing:1_monitor_0 va1" -> "child_DoFencing:1_stop_0 ibm1" [ style = bold] - "child_DoFencing:1_monitor_0 va1" [ style=bold color="green" fontcolor="black" ] - "child_DoFencing:1_stop_0 ibm1" -> "DoFencing_stopped_0" [ style = bold] - "child_DoFencing:1_stop_0 ibm1" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/master-9.exp b/pengine/test10/master-9.exp -index 51ab23e..e845751 100644 ---- a/pengine/test10/master-9.exp -+++ b/pengine/test10/master-9.exp -@@ -8,9 +8,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/migrate-3.dot b/pengine/test10/migrate-3.dot -index 7b66503..a049b5b 100644 ---- a/pengine/test10/migrate-3.dot -+++ b/pengine/test10/migrate-3.dot -@@ -1,7 +1,6 @@ - digraph "g" { - "all_stopped" [ 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/migrate-3.exp b/pengine/test10/migrate-3.exp -index 1aeb422..6e8b041 100644 ---- a/pengine/test10/migrate-3.exp -+++ b/pengine/test10/migrate-3.exp -@@ -31,11 +31,7 @@ - - - -- -- -- -- -- -+ - - - -diff --git a/pengine/test10/notify-3.dot b/pengine/test10/notify-3.dot -index bf0d8af..26b4899 100644 ---- a/pengine/test10/notify-3.dot -+++ b/pengine/test10/notify-3.dot -@@ -23,7 +23,6 @@ - "child_rsc1:1_stop_0 node2" -> "child_rsc1:1_start_0 node1" [ style = bold] - "child_rsc1:1_stop_0 node2" -> "rsc1_stopped_0" [ style = bold] - "child_rsc1:1_stop_0 node2" [ style=bold color="green" fontcolor="black" ] --"child_rsc2:0_monitor_0 node2" -> "child_rsc2:0_stop_0 node1" [ style = bold] - "child_rsc2:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] - "child_rsc2:0_pre_notify_stop_0 node1" -> "rsc2_confirmed-pre_notify_stop_0" [ style = bold] - "child_rsc2:0_pre_notify_stop_0 node1" [ style=bold color="green" fontcolor="black" ] -diff --git a/pengine/test10/notify-3.exp b/pengine/test10/notify-3.exp -index 20028dd..fb96109 100644 ---- a/pengine/test10/notify-3.exp -+++ b/pengine/test10/notify-3.exp -@@ -328,9 +328,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/novell-252693-3.dot b/pengine/test10/novell-252693-3.dot -index 925ff92..e26b164 100644 ---- a/pengine/test10/novell-252693-3.dot -+++ b/pengine/test10/novell-252693-3.dot -@@ -70,7 +70,6 @@ - "evmsdcloneset_start_0" -> "evmsdclone:1_start_0 node1" [ style = bold] - "evmsdcloneset_start_0" -> "evmsdcloneset_running_0" [ style = bold] - "evmsdcloneset_start_0" [ style=bold color="green" fontcolor="orange" ] --"imagestoreclone:0_monitor_0 node1" -> "imagestoreclone:0_stop_0 node2" [ style = bold] - "imagestoreclone:0_monitor_0 node1" -> "imagestorecloneset_start_0" [ style = bold] - "imagestoreclone:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] - "imagestoreclone:0_monitor_20000 node1" [ style=bold color="green" fontcolor="black" ] -diff --git a/pengine/test10/novell-252693-3.exp b/pengine/test10/novell-252693-3.exp -index be4df36..9c97271 100644 ---- a/pengine/test10/novell-252693-3.exp -+++ b/pengine/test10/novell-252693-3.exp -@@ -349,9 +349,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/params-2.dot b/pengine/test10/params-2.dot -index 6a23fd7..67f2873 100644 ---- a/pengine/test10/params-2.dot -+++ b/pengine/test10/params-2.dot -@@ -1,9 +1,7 @@ - digraph "g" { - "all_stopped" [ style=bold color="green" fontcolor="orange" ] - "do_shutdown node1" [ style=bold color="green" fontcolor="black" ] --"rsc1_monitor_0 node2" -> "rsc1_stop_0 node1" [ style = bold] - "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] --"rsc1_monitor_0 node3" -> "rsc1_stop_0 node1" [ style = bold] - "rsc1_monitor_0 node3" [ style=bold color="green" fontcolor="black" ] - "rsc1_stop_0 node1" -> "all_stopped" [ style = bold] - "rsc1_stop_0 node1" -> "do_shutdown node1" [ style = bold] -diff --git a/pengine/test10/params-2.exp b/pengine/test10/params-2.exp -index 94f3773..3cbfe33 100644 ---- a/pengine/test10/params-2.exp -+++ b/pengine/test10/params-2.exp -@@ -6,14 +6,7 @@ - - - -- -- -- -- -- -- -- -- -+ - - - -diff --git a/pengine/test10/params-2.summary b/pengine/test10/params-2.summary -index 1e73e77..97510f6 100644 ---- a/pengine/test10/params-2.summary -+++ b/pengine/test10/params-2.summary -@@ -13,6 +13,7 @@ Transition Summary: - * Start rsc3 (node3) - - Executing cluster transition: -+ * Resource action: rsc1 stop on node1 - * Resource action: rsc1 monitor on node3 - * Resource action: rsc1 monitor on node2 - * Resource action: rsc2 monitor on node3 -@@ -21,11 +22,10 @@ Executing cluster transition: - * Resource action: rsc3 monitor on node2 - * Resource action: rsc3 monitor on node1 - * Resource action: rsc3 delete on node3 -- * Resource action: rsc1 stop on node1 -- * Resource action: rsc2 delete on node2 -- * Resource action: rsc3 start on node3 - * Cluster action: do_shutdown on node1 - * Pseudo action: all_stopped -+ * Resource action: rsc2 delete on node2 -+ * Resource action: rsc3 start on node3 - * Resource action: rsc2 start on node2 - - Revised cluster status: -diff --git a/pengine/test10/rec-rsc-1.dot b/pengine/test10/rec-rsc-1.dot -index 9c44648..f3755dc 100644 ---- a/pengine/test10/rec-rsc-1.dot -+++ b/pengine/test10/rec-rsc-1.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" [ style=bold color="green" fontcolor="black" ] - "rsc1_stop_0 node1" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/rec-rsc-1.exp b/pengine/test10/rec-rsc-1.exp -index f3db70c..32a3da6 100644 ---- a/pengine/test10/rec-rsc-1.exp -+++ b/pengine/test10/rec-rsc-1.exp -@@ -31,11 +31,7 @@ - - - -- -- -- -- -- -+ - - - -diff --git a/pengine/test10/rec-rsc-2.dot b/pengine/test10/rec-rsc-2.dot -index d26a4cb..88b09df 100644 ---- a/pengine/test10/rec-rsc-2.dot -+++ b/pengine/test10/rec-rsc-2.dot -@@ -2,7 +2,6 @@ - "Cancel rsc1_monitor_1 node1" [ style=bold color="green" fontcolor="black" ] - "all_stopped" [ style=bold color="green" fontcolor="orange" ] - "rsc1_monitor_0 node2" -> "rsc1_start_0 node1" [ 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 node1" [ style=bold color="green" fontcolor="black" ] - "rsc1_stop_0 node1" -> "Cancel rsc1_monitor_1 node1" [ style = bold] -diff --git a/pengine/test10/rec-rsc-2.exp b/pengine/test10/rec-rsc-2.exp -index 192b1ec..1d5bad7 100644 ---- a/pengine/test10/rec-rsc-2.exp -+++ b/pengine/test10/rec-rsc-2.exp -@@ -31,11 +31,7 @@ - - - -- -- -- -- -- -+ - - - -diff --git a/pengine/test10/rec-rsc-5.dot b/pengine/test10/rec-rsc-5.dot -index adc8b9f..7a20e74 100644 ---- a/pengine/test10/rec-rsc-5.dot -+++ b/pengine/test10/rec-rsc-5.dot -@@ -2,7 +2,6 @@ digraph "g" { - "all_stopped" -> "stonith-1_start_0 node1" [ style = bold] - "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_start_0 node1" [ style=bold color="green" fontcolor="black" ] - "rsc1_stop_0 node2" -> "all_stopped" [ style = bold] -diff --git a/pengine/test10/rec-rsc-5.exp b/pengine/test10/rec-rsc-5.exp -index b1f151b..3092adf 100644 ---- a/pengine/test10/rec-rsc-5.exp -+++ b/pengine/test10/rec-rsc-5.exp -@@ -53,9 +53,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/target-1.dot b/pengine/test10/target-1.dot -index 9d8e5bc..db6f64f 100644 ---- a/pengine/test10/target-1.dot -+++ b/pengine/test10/target-1.dot -@@ -9,11 +9,8 @@ - "rsc_c001n02_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] - "rsc_c001n02_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] - "rsc_c001n02_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] --"rsc_c001n08_monitor_0 c001n01" -> "rsc_c001n08_stop_0 c001n08" [ style = bold] - "rsc_c001n08_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] --"rsc_c001n08_monitor_0 c001n02" -> "rsc_c001n08_stop_0 c001n08" [ style = bold] - "rsc_c001n08_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] --"rsc_c001n08_monitor_0 c001n03" -> "rsc_c001n08_stop_0 c001n08" [ style = bold] - "rsc_c001n08_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] - "rsc_c001n08_stop_0 c001n08" -> "all_stopped" [ style = bold] - "rsc_c001n08_stop_0 c001n08" [ style=bold color="green" fontcolor="black" ] -diff --git a/pengine/test10/target-1.exp b/pengine/test10/target-1.exp -index 70d7f75..f4e79e7 100644 ---- a/pengine/test10/target-1.exp -+++ b/pengine/test10/target-1.exp -@@ -33,17 +33,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -+ - - - -diff --git a/pengine/test10/target-1.summary b/pengine/test10/target-1.summary -index a94241e..12bbe4e 100644 ---- a/pengine/test10/target-1.summary -+++ b/pengine/test10/target-1.summary -@@ -17,6 +17,7 @@ Executing cluster transition: - * Resource action: DcIPaddr monitor on c001n08 - * Resource action: DcIPaddr monitor on c001n03 - * Resource action: DcIPaddr monitor on c001n01 -+ * Resource action: rsc_c001n08 stop on c001n08 - * Resource action: rsc_c001n08 monitor on c001n03 - * Resource action: rsc_c001n08 monitor on c001n02 - * Resource action: rsc_c001n08 monitor on c001n01 -@@ -26,7 +27,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: rsc_c001n08 stop on c001n08 - * Pseudo action: all_stopped - - Revised cluster status: -diff --git a/pengine/test10/target-2.dot b/pengine/test10/target-2.dot -index f151c43..55b9d85 100644 ---- a/pengine/test10/target-2.dot -+++ b/pengine/test10/target-2.dot -@@ -12,11 +12,8 @@ digraph "g" { - "rsc_c001n03_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] - "rsc_c001n03_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] - "rsc_c001n03_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] --"rsc_c001n08_monitor_0 c001n01" -> "rsc_c001n08_stop_0 c001n08" [ style = bold] - "rsc_c001n08_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] --"rsc_c001n08_monitor_0 c001n02" -> "rsc_c001n08_stop_0 c001n08" [ style = bold] - "rsc_c001n08_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] --"rsc_c001n08_monitor_0 c001n03" -> "rsc_c001n08_stop_0 c001n08" [ style = bold] - "rsc_c001n08_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] - "rsc_c001n08_stop_0 c001n08" -> "all_stopped" [ style = bold] - "rsc_c001n08_stop_0 c001n08" [ style=bold color="green" fontcolor="black" ] -diff --git a/pengine/test10/target-2.exp b/pengine/test10/target-2.exp -index 63a8eec..6ced2e2 100644 ---- a/pengine/test10/target-2.exp -+++ b/pengine/test10/target-2.exp -@@ -33,17 +33,7 @@ - - - -- -- -- -- -- -- -- -- -- -- -- -+ - - - -diff --git a/pengine/test10/target-2.summary b/pengine/test10/target-2.summary -index bcefbef..a440494 100644 ---- a/pengine/test10/target-2.summary -+++ b/pengine/test10/target-2.summary -@@ -16,6 +16,7 @@ Executing cluster transition: - * Resource action: DcIPaddr monitor on c001n08 - * Resource action: DcIPaddr monitor on c001n03 - * Resource action: DcIPaddr monitor on c001n01 -+ * Resource action: rsc_c001n08 stop on c001n08 - * Resource action: rsc_c001n08 monitor on c001n03 - * Resource action: rsc_c001n08 monitor on c001n02 - * Resource action: rsc_c001n08 monitor on c001n01 -@@ -28,7 +29,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: rsc_c001n08 stop on c001n08 - * Pseudo action: all_stopped - - Revised cluster status: -diff --git a/pengine/test10/unrunnable-1.dot b/pengine/test10/unrunnable-1.dot -index 536864d..3e78165 100644 ---- a/pengine/test10/unrunnable-1.dot -+++ b/pengine/test10/unrunnable-1.dot -@@ -12,7 +12,6 @@ - "child_192.168.100.182_monitor_5000 c001n03" [ style=dashed color="red" fontcolor="black" ] - "child_192.168.100.183_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] - "child_192.168.100.183_monitor_5000 c001n03" [ style=dashed color="red" fontcolor="black" ] --"child_DoFencing:1_monitor_0 c001n03" -> "child_DoFencing:1_stop_0 c001n02" [ style = dashed] - "child_DoFencing:1_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] - "child_DoFencing:1_stop_0 c001n02" -> "DoFencing_stopped_0" [ style = dashed] - "child_DoFencing:1_stop_0 c001n02" -> "all_stopped" [ style = dashed] -diff --git a/pengine/test10/whitebox-fail1.dot b/pengine/test10/whitebox-fail1.dot -index 3cf4f76..bfff4bf 100644 ---- a/pengine/test10/whitebox-fail1.dot -+++ b/pengine/test10/whitebox-fail1.dot -@@ -1,7 +1,6 @@ - digraph "g" { - "A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] - "B_monitor_0 lxc2" -> "B_start_0 lxc1" [ 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 lxc1" [ style=bold color="green" fontcolor="black"] - "B_start_0 lxc1" -> "B_monitor_10000 lxc1" [ style = bold] -diff --git a/pengine/test10/whitebox-fail1.exp b/pengine/test10/whitebox-fail1.exp -index ab739b5..901a1e3 100644 ---- a/pengine/test10/whitebox-fail1.exp -+++ b/pengine/test10/whitebox-fail1.exp -@@ -196,9 +196,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/whitebox-fail2.dot b/pengine/test10/whitebox-fail2.dot -index 3cf4f76..bfff4bf 100644 ---- a/pengine/test10/whitebox-fail2.dot -+++ b/pengine/test10/whitebox-fail2.dot -@@ -1,7 +1,6 @@ - digraph "g" { - "A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] - "B_monitor_0 lxc2" -> "B_start_0 lxc1" [ 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 lxc1" [ style=bold color="green" fontcolor="black"] - "B_start_0 lxc1" -> "B_monitor_10000 lxc1" [ style = bold] -diff --git a/pengine/test10/whitebox-fail2.exp b/pengine/test10/whitebox-fail2.exp -index ab739b5..901a1e3 100644 ---- a/pengine/test10/whitebox-fail2.exp -+++ b/pengine/test10/whitebox-fail2.exp -@@ -196,9 +196,6 @@ - - - -- -- -- - - - -diff --git a/pengine/test10/whitebox-imply-stop-on-fence.dot b/pengine/test10/whitebox-imply-stop-on-fence.dot -index 1c41ad2..7b536ea 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.dot -+++ b/pengine/test10/whitebox-imply-stop-on-fence.dot -@@ -24,9 +24,7 @@ - "clvmd-clone_stop_0" [ style=bold color="green" fontcolor="orange"] - "clvmd-clone_stopped_0" -> "dlm-clone_stop_0" [ style = bold] - "clvmd-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] --"clvmd_monitor_0 lxc-01_kiff-02" -> "clvmd_stop_0 kiff-01" [ style = bold] - "clvmd_monitor_0 lxc-01_kiff-02" [ style=bold color="green" fontcolor="black"] --"clvmd_monitor_0 lxc-02_kiff-02" -> "clvmd_stop_0 kiff-01" [ style = bold] - "clvmd_monitor_0 lxc-02_kiff-02" [ style=bold color="green" fontcolor="black"] - "clvmd_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "clvmd_stop_0 kiff-01" -> "clvmd-clone_stopped_0" [ style = bold] -@@ -36,9 +34,7 @@ - "dlm-clone_stop_0" -> "dlm_stop_0 kiff-01" [ style = bold] - "dlm-clone_stop_0" [ style=bold color="green" fontcolor="orange"] - "dlm-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] --"dlm_monitor_0 lxc-01_kiff-02" -> "dlm_stop_0 kiff-01" [ style = bold] - "dlm_monitor_0 lxc-01_kiff-02" [ style=bold color="green" fontcolor="black"] --"dlm_monitor_0 lxc-02_kiff-02" -> "dlm_stop_0 kiff-01" [ style = bold] - "dlm_monitor_0 lxc-02_kiff-02" [ style=bold color="green" fontcolor="black"] - "dlm_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "dlm_stop_0 kiff-01" -> "dlm-clone_stopped_0" [ style = bold] -@@ -70,9 +66,7 @@ - "shared0-clone_stop_0" [ style=bold color="green" fontcolor="orange"] - "shared0-clone_stopped_0" -> "clvmd-clone_stop_0" [ style = bold] - "shared0-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] --"shared0_monitor_0 lxc-01_kiff-02" -> "shared0_stop_0 kiff-01" [ style = bold] - "shared0_monitor_0 lxc-01_kiff-02" [ style=bold color="green" fontcolor="black"] --"shared0_monitor_0 lxc-02_kiff-02" -> "shared0_stop_0 kiff-01" [ style = bold] - "shared0_monitor_0 lxc-02_kiff-02" [ style=bold color="green" fontcolor="black"] - "shared0_stop_0 kiff-01" -> "all_stopped" [ style = bold] - "shared0_stop_0 kiff-01" -> "clvmd_stop_0 kiff-01" [ style = bold] -@@ -105,10 +99,8 @@ - "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] --"vm-fs_monitor_0 lxc-01_kiff-02" -> "vm-fs_stop_0 lxc-01_kiff-01" [ style = bold] - "vm-fs_monitor_0 lxc-01_kiff-02" [ style=bold color="green" fontcolor="black"] - "vm-fs_monitor_0 lxc-02_kiff-02" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] --"vm-fs_monitor_0 lxc-02_kiff-02" -> "vm-fs_stop_0 lxc-01_kiff-01" [ style = bold] - "vm-fs_monitor_0 lxc-02_kiff-02" [ style=bold color="green" fontcolor="black"] - "vm-fs_monitor_20000 lxc-01_kiff-01" [ style=bold color="green" fontcolor="black"] - "vm-fs_start_0 lxc-01_kiff-01" -> "vm-fs_monitor_20000 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 9a469f2..f80dde1 100644 ---- a/pengine/test10/whitebox-imply-stop-on-fence.exp -+++ b/pengine/test10/whitebox-imply-stop-on-fence.exp -@@ -47,12 +47,6 @@ - - - -- -- -- -- -- -- - - - -@@ -119,12 +113,6 @@ - - - -- -- -- -- -- -- - - - -@@ -191,12 +179,6 @@ - - - -- -- -- -- -- -- - - - -@@ -395,12 +377,6 @@ - - - -- -- -- -- -- -- - - - -diff --git a/pengine/test10/whitebox-ms-ordering.dot b/pengine/test10/whitebox-ms-ordering.dot -index 84a0984..1f4d95b 100644 ---- a/pengine/test10/whitebox-ms-ordering.dot -+++ b/pengine/test10/whitebox-ms-ordering.dot -@@ -47,13 +47,10 @@ - "lxc-ms_demote_0 lxc1" -> "lxc-ms_stop_0 lxc1" [ style = bold] - "lxc-ms_demote_0 lxc1" [ style=bold color="green" fontcolor="orange"] - "lxc-ms_monitor_0 18node1" -> "lxc-ms-master_start_0" [ style = bold] --"lxc-ms_monitor_0 18node1" -> "lxc-ms_stop_0 lxc1" [ style = bold] - "lxc-ms_monitor_0 18node1" [ style=bold color="green" fontcolor="black"] - "lxc-ms_monitor_0 18node2" -> "lxc-ms-master_start_0" [ style = bold] --"lxc-ms_monitor_0 18node2" -> "lxc-ms_stop_0 lxc1" [ style = bold] - "lxc-ms_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] - "lxc-ms_monitor_0 18node3" -> "lxc-ms-master_start_0" [ style = bold] --"lxc-ms_monitor_0 18node3" -> "lxc-ms_stop_0 lxc1" [ style = bold] - "lxc-ms_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] - "lxc-ms_monitor_10000 lxc2" [ style=bold color="green" fontcolor="black"] - "lxc-ms_promote_0 lxc1" -> "lxc-ms-master_promoted_0" [ style = bold] -diff --git a/pengine/test10/whitebox-ms-ordering.exp b/pengine/test10/whitebox-ms-ordering.exp -index e5eb99c..c8fee5e 100644 ---- a/pengine/test10/whitebox-ms-ordering.exp -+++ b/pengine/test10/whitebox-ms-ordering.exp -@@ -158,15 +158,6 @@ - - - -- -- -- -- -- -- -- -- -- - - - -diff --git a/pengine/test10/whitebox-orphan-ms.dot b/pengine/test10/whitebox-orphan-ms.dot -index 4e2e211..46b6cda 100644 ---- a/pengine/test10/whitebox-orphan-ms.dot -+++ b/pengine/test10/whitebox-orphan-ms.dot -@@ -25,8 +25,6 @@ - "container2_stop_0 18node1" -> "container2_delete_0 18node2" [ style = bold] - "container2_stop_0 18node1" -> "container2_delete_0 18node3" [ style = bold] - "container2_stop_0 18node1" [ style=bold color="green" fontcolor="black"] --"lsb-dummy_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] --"lsb-dummy_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] - "lxc-ms_clear_failcount_0 lxc1" -> "lxc-ms_stop_0 lxc1" [ style = dashed] - "lxc-ms_clear_failcount_0 lxc1" -> "lxc-ms_stop_0 lxc2" [ style = dashed] - "lxc-ms_clear_failcount_0 lxc1" [ style=dashed color="red" fontcolor="black"] -@@ -71,20 +69,4 @@ - "lxc2_stop_0 18node1" -> "lxc2_delete_0 18node2" [ style = bold] - "lxc2_stop_0 18node1" -> "lxc2_delete_0 18node3" [ style = bold] - "lxc2_stop_0 18node1" [ style=bold color="green" fontcolor="black"] --"migrator_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] --"migrator_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] --"ping-1_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] --"ping-1_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] --"r192.168.122.87_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] --"r192.168.122.87_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] --"r192.168.122.88_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] --"r192.168.122.88_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] --"r192.168.122.89_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] --"r192.168.122.89_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] --"rsc_18node1_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] --"rsc_18node1_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] --"rsc_18node2_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] --"rsc_18node2_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] --"rsc_18node3_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] --"rsc_18node3_monitor_0 lxc2" [ style=dashed color="red" fontcolor="black"] - } -diff --git a/pengine/test10/whitebox-orphan-ms.exp b/pengine/test10/whitebox-orphan-ms.exp -index 564e92d..ef81317 100644 ---- a/pengine/test10/whitebox-orphan-ms.exp -+++ b/pengine/test10/whitebox-orphan-ms.exp -@@ -1,20 +1,20 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -23,14 +23,14 @@ - - - -- -+ - - - - - - -- -+ - - - -@@ -43,7 +43,7 @@ - - - -- -+ - - - -@@ -56,7 +56,7 @@ - - - -- -+ - - - -@@ -69,13 +69,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -85,10 +85,10 @@ - - - -- -+ - - -- -+ - - - -@@ -101,7 +101,7 @@ - - - -- -+ - - - -@@ -114,7 +114,7 @@ - - - -- -+ - - - -@@ -127,45 +127,45 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -174,7 +174,7 @@ - - - -- -+ - - - -@@ -190,10 +190,10 @@ - - - -- -+ - - -- -+ - - - -@@ -206,10 +206,10 @@ - - - -- -+ - - -- -+ - - - -@@ -222,16 +222,16 @@ - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -241,10 +241,10 @@ - - - -- -+ - - -- -+ - - - -@@ -257,7 +257,7 @@ - - - -- -+ - - - -@@ -270,7 +270,7 @@ - - - -- -+ - - - -@@ -283,20 +283,20 @@ - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - -@@ -309,7 +309,7 @@ - - - -- -+ - - - -@@ -322,7 +322,7 @@ - - - -- -+ - - - -@@ -335,7 +335,7 @@ - - - -- -+ - - - -@@ -347,25 +347,25 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -diff --git a/pengine/test10/whitebox-orphaned.dot b/pengine/test10/whitebox-orphaned.dot -index 4ef1f7e..48e167f 100644 ---- a/pengine/test10/whitebox-orphaned.dot -+++ b/pengine/test10/whitebox-orphaned.dot -@@ -1,5 +1,4 @@ - digraph "g" { --"A_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] - "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] -@@ -11,8 +10,6 @@ - "B_stop_0 lxc1" -> "all_stopped" [ style = bold] - "B_stop_0 lxc1" -> "lxc1_stop_0 18node2" [ style = bold] - "B_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] --"C_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] --"D_monitor_0 lxc1" [ style=dashed color="red" fontcolor="black"] - "D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] - "M-clone_stop_0" -> "M-clone_stopped_0" [ style = bold] - "M-clone_stop_0" -> "M_stop_0 lxc1" [ style = bold] -diff --git a/pengine/test10/whitebox-orphaned.exp b/pengine/test10/whitebox-orphaned.exp -index 843f186..b267010 100644 ---- a/pengine/test10/whitebox-orphaned.exp -+++ b/pengine/test10/whitebox-orphaned.exp -@@ -1,35 +1,35 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -37,7 +37,7 @@ - - - -- -+ - - - -@@ -46,49 +46,49 @@ - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - - - - -- -+ - - - - - -- -+ - - - -@@ -97,7 +97,7 @@ - - - -- -+ - - - -@@ -106,23 +106,23 @@ - - - -- -+ - - - - - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -138,7 +138,7 @@ - - - -- -+ - - - -@@ -151,7 +151,7 @@ - - - -- -+ - - - -@@ -164,13 +164,13 @@ - - - -- -+ - - - - - -- -+ - - - -@@ -180,19 +180,19 @@ - - - -- -+ - - -- -+ - - -- -+ - - - - - -- -+ - - - -@@ -208,7 +208,7 @@ - - - -- -+ - - - -@@ -221,7 +221,7 @@ - - - -- -+ - - - -@@ -234,7 +234,7 @@ - - - -- -+ - - - -@@ -246,16 +246,16 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - --- -1.8.3.1 - - -From 7bc58b42080989abd7080940f29543b09207f51f Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 25 Oct 2017 13:59:53 +1100 -Subject: [PATCH 4/4] Fix: PE: Have bundles log to stderr so that 'docker logs' - works - ---- - lib/pengine/container.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/lib/pengine/container.c b/lib/pengine/container.c -index f1f66a5..affe5ea 100644 ---- a/lib/pengine/container.c -+++ b/lib/pengine/container.c -@@ -215,6 +215,8 @@ create_docker_resource( - data->prefix, tuple->offset); - } - -+ offset += snprintf(buffer+offset, max-offset, " -e PCMK_stderr=1"); -+ - if(data->docker_network) { - // offset += snprintf(buffer+offset, max-offset, " --link-local-ip=%s", tuple->ipaddr); - offset += snprintf(buffer+offset, max-offset, " --net=%s", data->docker_network); --- -1.8.3.1 - diff --git a/SOURCES/103-use-of-null.patch b/SOURCES/103-use-of-null.patch deleted file mode 100644 index 9b86c12..0000000 --- a/SOURCES/103-use-of-null.patch +++ /dev/null @@ -1,29 +0,0 @@ -From a7a671ed9848bed9469b3166ac769183f1b791d4 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Fri, 3 Nov 2017 16:40:20 -0500 -Subject: [PATCH] Low: pengine: avoid not-really-possible use-of-NULL - -makes static analysis happy ---- - pengine/container.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/pengine/container.c b/pengine/container.c -index 9d49b7c..f5d916c 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -906,7 +906,10 @@ container_create_probe(resource_t * rsc, node_t * node, action_t * complete, - } - } - } -- if(tuple->remote && tuple->remote->cmds->create_probe(tuple->remote, node, complete, force, data_set)) { -+ if (tuple->docker && tuple->remote -+ && tuple->remote->cmds->create_probe(tuple->remote, node, complete, -+ force, data_set)) { -+ - /* Do not probe the remote resource until we know where docker is running - * Required for REMOTE_CONTAINER_HACK to correctly probe remote resources - */ --- -1.8.3.1 - diff --git a/SOURCES/104-cleanup-wait.patch b/SOURCES/104-cleanup-wait.patch deleted file mode 100644 index 3fce277..0000000 --- a/SOURCES/104-cleanup-wait.patch +++ /dev/null @@ -1,31 +0,0 @@ -From e3b825a72037538bdb7b181bb39cabc3f121d0d4 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Sun, 29 Oct 2017 16:33:13 +1100 -Subject: [PATCH] Fix: crm_resource: Ensure we wait for all messages before - exiting - -- Wait for deletions from remote nodes too - -Terminating too early prevents our delete operations being read by the -crmd process. ---- - tools/crm_resource_runtime.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c -index cab920b..809f641 100644 ---- a/tools/crm_resource_runtime.c -+++ b/tools/crm_resource_runtime.c -@@ -661,9 +661,7 @@ cli_resource_delete(crm_ipc_t *crmd_channel, const char *host_uname, - if (rc == pcmk_ok) { - char *attr_name = NULL; - -- if(node && node->details->remote_rsc == NULL && node->details->rsc_discovery_enabled) { - crmd_replies_needed++; -- } - - if(is_not_set(rsc->flags, pe_rsc_unique)) { - char *id = clone_strip(rsc->id); --- -1.8.3.1 - diff --git a/SOURCES/105-refactor.patch b/SOURCES/105-refactor.patch deleted file mode 100644 index ea9c9c0..0000000 --- a/SOURCES/105-refactor.patch +++ /dev/null @@ -1,230 +0,0 @@ -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 deleted file mode 100644 index 93695d8..0000000 --- a/SOURCES/106-probes.patch +++ /dev/null @@ -1,7442 +0,0 @@ -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 deleted file mode 100644 index 4d26bd8..0000000 --- a/SOURCES/107-unfencing.patch +++ /dev/null @@ -1,825 +0,0 @@ -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 deleted file mode 100644 index 616cb69..0000000 --- a/SOURCES/108-bundle-migrate.patch +++ /dev/null @@ -1,23 +0,0 @@ -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 deleted file mode 100644 index 660abf9..0000000 --- a/SOURCES/109-bundles.patch +++ /dev/null @@ -1,6404 +0,0 @@ -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 deleted file mode 100644 index 98fcd71..0000000 --- a/SOURCES/110-bundles.patch +++ /dev/null @@ -1,200 +0,0 @@ -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 deleted file mode 100644 index cdbacc4..0000000 --- a/SOURCES/111-use-of-null.patch +++ /dev/null @@ -1,26 +0,0 @@ -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 deleted file mode 100644 index e9bb3ae..0000000 --- a/SOURCES/112-use-of-null.patch +++ /dev/null @@ -1,26 +0,0 @@ -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/SOURCES/113-bundles.patch b/SOURCES/113-bundles.patch deleted file mode 100644 index 28ea0ef..0000000 --- a/SOURCES/113-bundles.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 2ce5fc46463ff7b9a5a2c68602d8c5b35a7c37d7 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Tue, 16 Jan 2018 19:05:31 +1100 -Subject: [PATCH 1/2] Bug rhbz#1519812 - Prevent notify actions from causing - --wait to hang - ---- - tools/crm_resource_runtime.c | 21 ++++++++++++++++----- - 1 file changed, 16 insertions(+), 5 deletions(-) - -diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c -index 22bdebf..189d1b3 100644 ---- a/tools/crm_resource_runtime.c -+++ b/tools/crm_resource_runtime.c -@@ -1343,10 +1343,19 @@ done: - return rc; - } - --#define action_is_pending(action) \ -- ((is_set((action)->flags, pe_action_optional) == FALSE) \ -- && (is_set((action)->flags, pe_action_runnable) == TRUE) \ -- && (is_set((action)->flags, pe_action_pseudo) == FALSE)) -+static inline int action_is_pending(action_t *action) -+{ -+ if(is_set(action->flags, pe_action_optional)) { -+ return FALSE; -+ } else if(is_set(action->flags, pe_action_runnable) == FALSE) { -+ return FALSE; -+ } else if(is_set(action->flags, pe_action_pseudo)) { -+ return FALSE; -+ } else if(safe_str_eq("notify", action->task)) { -+ return FALSE; -+ } -+ return TRUE; -+} - - /*! - * \internal -@@ -1362,7 +1371,9 @@ actions_are_pending(GListPtr actions) - GListPtr action; - - for (action = actions; action != NULL; action = action->next) { -- if (action_is_pending((action_t *) action->data)) { -+ action_t *a = (action_t *)action->data; -+ if (action_is_pending(a)) { -+ crm_notice("Waiting for %s (flags=0x%.8x)", a->uuid, a->flags); - return TRUE; - } - } --- -1.8.3.1 - - -From ef15ea4f687e7f9ba1f8a99548ee1e0bf9d4b50a Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Mon, 22 Jan 2018 21:18:46 +1100 -Subject: [PATCH 2/2] Fix: rhbz#1527072 - Correctly observe colocation - constraints with bundles in the Master role - ---- - pengine/container.c | 14 +++++++++++--- - 1 file changed, 11 insertions(+), 3 deletions(-) - -diff --git a/pengine/container.c b/pengine/container.c -index f5d916c..15d094d 100644 ---- a/pengine/container.c -+++ b/pengine/container.c -@@ -486,10 +486,18 @@ container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc, rsc_colocatio - } else { - node_t *chosen = tuple->docker->fns->location(tuple->docker, NULL, FALSE); - -- if (chosen != NULL && is_set_recursive(tuple->docker, pe_rsc_block, TRUE) == FALSE) { -- pe_rsc_trace(rsc, "Allowing %s: %s %d", constraint->id, chosen->details->uname, chosen->weight); -- allocated_rhs = g_list_prepend(allocated_rhs, chosen); -+ if (chosen == NULL || is_set_recursive(tuple->docker, pe_rsc_block, TRUE)) { -+ continue; -+ } -+ if(constraint->role_rh >= RSC_ROLE_MASTER && tuple->child == NULL) { -+ continue; - } -+ if(constraint->role_rh >= RSC_ROLE_MASTER && tuple->child->next_role < RSC_ROLE_MASTER) { -+ continue; -+ } -+ -+ pe_rsc_trace(rsc, "Allowing %s: %s %d", constraint->id, chosen->details->uname, chosen->weight); -+ allocated_rhs = g_list_prepend(allocated_rhs, chosen); - } - } - --- -1.8.3.1 - diff --git a/SOURCES/lrmd-protocol-version.patch b/SOURCES/lrmd-protocol-version.patch index 65071b6..2a555e5 100644 --- a/SOURCES/lrmd-protocol-version.patch +++ b/SOURCES/lrmd-protocol-version.patch @@ -14,15 +14,15 @@ diff --git a/include/crm/lrmd.h b/include/crm/lrmd.h index 446b39c..a099315 100644 --- a/include/crm/lrmd.h +++ b/include/crm/lrmd.h -@@ -35,7 +35,7 @@ typedef struct lrmd_key_value_s { - struct lrmd_key_value_s *next; - } lrmd_key_value_t; - +@@ -38,7 +38,7 @@ typedef struct lrmd_key_value_s { + /* This should be bumped every time there is an incompatible change that + * prevents older clients from connecting to this version of the server. + */ -#define LRMD_PROTOCOL_VERSION "1.1" +#define LRMD_PROTOCOL_VERSION "1.0" - /* *INDENT-OFF* */ - #define DEFAULT_REMOTE_KEY_LOCATION "/etc/pacemaker/authkey" + /* This is the version that the client version will actually be compared + * against. This should be identical to LRMD_PROTOCOL_VERSION. However, we -- 1.8.3.1 diff --git a/SOURCES/regression-test-feature-set.patch b/SOURCES/regression-test-feature-set.patch deleted file mode 100644 index 2c4a364..0000000 --- a/SOURCES/regression-test-feature-set.patch +++ /dev/null @@ -1,348 +0,0 @@ -From fa856a94806e0d8ec849186ed7c01e317c93be45 Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Fri, 29 Sep 2017 15:50:12 -0500 -Subject: [PATCH] Test: pengine: lower test feature set for use with RHEL 7.4 - ---- - pengine/test10/remote-reconnect-delay.xml | 180 +++++++++++++++--------------- - 1 file changed, 90 insertions(+), 90 deletions(-) - -diff --git a/pengine/test10/remote-reconnect-delay.xml b/pengine/test10/remote-reconnect-delay.xml -index e9ed3e6..d544a2c 100644 ---- a/pengine/test10/remote-reconnect-delay.xml -+++ b/pengine/test10/remote-reconnect-delay.xml -@@ -1,4 +1,4 @@ -- -+ - - - -@@ -243,59 +243,59 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -- -+ -+ - - -- -+ - - -- -- -+ -+ - - -- -- -+ -+ - - -- -- -+ -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -- -- -+ -+ -+ - - -- -- -+ -+ - - - -@@ -310,60 +310,60 @@ - - - -- -- -+ -+ - - -- -- -+ -+ - - -- -+ - - -- -- -+ -+ - - -- -- -+ -+ - - -- -- -+ -+ - - -- -- -+ -+ - - -- -- -+ -+ - - -- -+ - - -- -- -+ -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -@@ -372,56 +372,56 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -- -+ -+ - - -- -- -+ -+ - - -- -+ - - -- -+ - - -- -- -+ -+ - - -- -- -+ -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - - -@@ -442,58 +442,58 @@ - - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -+ - - -- -- -+ -+ - - -- -- -+ -+ - - -- -+ - - -- -+ - - -- -- -+ -+ - - -- -- -+ -+ - - -- -- -+ -+ - - -- -- -+ -+ - - -- -+ - - -- -+ - - - --- -1.8.3.1 - diff --git a/SPECS/pacemaker.spec b/SPECS/pacemaker.spec index c7c86be..8df165d 100644 --- a/SPECS/pacemaker.spec +++ b/SPECS/pacemaker.spec @@ -13,12 +13,15 @@ ## Upstream pacemaker version, and its package version (specversion ## can be incremented to build packages reliably considered "newer" ## than previously built packages with the same pcmkversion) -%global pcmkversion 1.1.16 -%global specversion 12 +%global pcmkversion 1.1.18 +%global specversion 11 ## Upstream commit (or git tag, such as "Pacemaker-" plus the ## {pcmkversion} macro for an official release) to use for this package -%global commit 94ff4df51a55cc30d01843ea11b3292bac755432 +%global commit 2b07d5c5a908998891c3317faa30328c108d3a91 +## Since git v2.11, the extent of abbreviation is autoscaled by default +## (used to be constant of 7), so we need to convey it for non-tags, too. +%global commit_abbrev 7 # Define globals for convenient use later @@ -30,16 +33,21 @@ ## Short version of git commit %define shortcommit %(c=%{commit}; case ${c} in Pacemaker-*%{rparen} echo ${c:10};; - *%{rparen} echo ${c:0:7};; esac) + *%{rparen} echo ${c:0:%{commit_abbrev}};; esac) -## Whether this is a release candidate -%define pre_release %(s=%{shortcommit}; [ ${s: -4:3} != -rc ]; echo $?) +## Whether this is a tagged release +%define tag_release %([ %{commit} != Pacemaker-%{shortcommit} ]; echo $?) + +## Whether this is a release candidate (in case of a tagged release) +%define pre_release %([ "%{tag_release}" -eq 0 ] || { + case "%{shortcommit}" in *-rc[[:digit:]]*%{rparen} false;; + esac; }; echo $?) ## Whether this is a development branch %define post_release %([ %{commit} = Pacemaker-%{shortcommit} ]; echo $?) ## Turn off auto-compilation of python files outside site-packages directory, -## so that the -devel package is multilib-compliant +## so that the -libs-devel package is multilib-compliant (no *.py[co] files) %global __os_install_post %(echo '%{__os_install_post}' | { sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g'; }) @@ -81,8 +89,8 @@ # Definitions for backward compatibility with older RPM versions -## Ensure %license macro behaves consistently (older RPM will otherwise -## overwrite %license once it encounters "License:"). Courtesy Jason Tibbitts: +## Ensure the license macro behaves consistently (older RPM will otherwise +## overwrite it once it encounters "License:"). Courtesy Jason Tibbitts: ## https://pkgs.fedoraproject.org/cgit/rpms/epel-rpm-macros.git/tree/macros.zzz-epel?h=el6&id=e1adcb77 %if !%{defined _licensedir} %define description %{lua: @@ -91,6 +99,7 @@ } %endif + # Define conditionals so that "rpmbuild --with " and # "rpmbuild --without " can enable and disable specific features @@ -116,6 +125,10 @@ ## Add option to enable CMAN support %bcond_with cman +## Add option to turn on SNMP / ESMTP support +%bcond_with snmp +%bcond_with esmtp + ## Add option to turn off hardening of libraries and daemon executables %bcond_without hardening @@ -130,20 +143,27 @@ # Define the release version -%if %{with pre_release} || 0%{pre_release} +# (do not look at externally enforced pre-release flag for tagged releases +# as only -rc tags, captured with the second condition, implies that then) +%if (!%{tag_release} && %{with pre_release}) || 0%{pre_release} %if 0%{pre_release} %define pcmk_release 0.%{specversion}.%(s=%{shortcommit}; echo ${s: -3}) %else %define pcmk_release 0.%{specversion}.%{shortcommit}.git %endif %else +%if 0%{tag_release} +%define pcmk_release %{specversion} +%else +# Never use the short commit in a RHEL release number %define pcmk_release %{specversion} %endif +%endif Name: pacemaker Summary: Scalable High-Availability cluster resource manager Version: %{pcmkversion} -Release: %{pcmk_release}%{?dist}.8 +Release: %{pcmk_release}%{?dist} %if %{defined _unitdir} License: GPLv2+ and LGPLv2+ %else @@ -153,129 +173,26 @@ License: GPLv2+ and LGPLv2+ and BSD Url: http://www.clusterlabs.org Group: System Environment/Daemons -# eg. https://github.com/ClusterLabs/pacemaker/archive/8ae45302394b039fb098e150f156df29fc0cb576/pacemaker-8ae4530.tar.gz +# Hint: use "spectool -s 0 pacemaker.spec" (rpmdevtools) to check the final URL: +# https://github.com/ClusterLabs/pacemaker/archive/e91769e5a39f5cb2f7b097d3c612368f0530535e/pacemaker-e91769e.tar.gz Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz Source1: nagios-agents-metadata-%{nagios_hash}.tar.gz # upstream commits -Patch1: 001-crm_report-log-search.patch -Patch2: 002-crm_diff-no-version.patch -Patch3: 003-guest-pseudo-fence.patch -Patch4: 004-null-filename.patch -Patch5: 005-feature-set.patch -Patch6: 006-xml-stream.patch -Patch7: 007-schema.patch -Patch8: 008-systemd-reloads.patch -Patch9: 009-dup-stonith.patch -Patch10: 010-permissions.patch -Patch11: 011-pe-regression-test.patch -Patch12: 012-dbus.patch -Patch13: 013-alert_snmp.patch -Patch14: 014-dbus.patch -Patch15: 015-tools-test.patch -Patch16: 016-waitpid.patch -Patch17: 017-use-of-null.patch -Patch18: 018-crm_node-ra.patch -Patch19: 019-crm_node-ra-tests.patch -Patch20: 020-libservices.patch -Patch21: 021-xml-comments.patch -Patch22: 022-crm_attribute-ra.patch -Patch23: 023-use-of-null.patch -Patch24: 024-failcount-clear-fix.patch -Patch25: 025-pe-test.patch -Patch26: 026-cts.patch -Patch27: 027-crm_report-drbd.patch -Patch28: 028-libservices-memory-issues.patch -Patch29: 029-stonith-action-param.patch -Patch30: 030-crm_resource.patch -Patch31: 031-crm_resource-validate.patch -Patch32: 032-demote-recovery.patch -Patch33: 033-logging-spelling.patch -Patch34: 034-bundle.patch -Patch35: 035-unmanaged-remotes.patch -Patch36: 036-glib-compat.patch -Patch37: 037-clone-detection.patch -Patch38: 038-clone-handling.patch -Patch39: 039-bundle-fixes.patch -Patch40: 040-bundle-control-port.patch -Patch41: 041-bundle-port-fixes.patch -Patch42: 042-bundle-internal-port.patch -Patch43: 043-coverity-happy.patch -Patch44: 044-bundle-syntax.patch -Patch45: 045-bundle-logging.patch -Patch46: 046-bundle-run-command.patch -Patch47: 047-more-bundle-fixes.patch -Patch48: 048-bundle-hostname.patch -Patch49: 049-stonith-max-attempts.patch -Patch50: 050-stonith-fail-handling.patch -Patch51: 051-spelling.patch -Patch52: 052-hotplug-cpus.patch -Patch53: 053-ipc-eviction.patch -Patch54: 054-bundles-on-remotes.patch -Patch55: 055-bundle-interleave.patch -Patch56: 056-resource-agents-deps.patch -Patch57: 057-bundle-remote-remotes.patch -Patch58: 058-guest-cleanup.patch -Patch59: 059-soname-compat.patch -Patch60: 060-bundle-remote-fixes.patch -Patch61: 061-bundle-memory-fix.patch -Patch62: 062-remote-recovery.patch -Patch63: 063-empty-remotes.patch -Patch64: 064-bundle-meta.patch -Patch65: 065-coverity-cleanup.patch -Patch66: 066-forward-compat.patch -Patch67: 067-bundle-constraints.patch -Patch68: 068-bundle-weight-fix.patch -Patch69: 069-ipc-refactor.patch -Patch70: 070-check_positive_number.patch -Patch71: 071-cluster-ipc-limit.patch -Patch72: 072-bundle-placement.patch -Patch73: 073-shutdown-logging.patch -Patch74: 074-bundle-ordering.patch -Patch75: 075-bundle-memory.patch -Patch76: 076-quorum-loss.patch -Patch77: 077-reenable-fence-device.patch -Patch78: 078-fencing-memory.patch -Patch79: 079-crm_report.patch -Patch80: 080-docker-location.patch -Patch81: 081-fence-logs.patch -Patch82: 082-unrecoverable-remotes.patch -Patch83: 083-unrecoverable-remotes-test.patch -Patch84: 084-remote-fence-test.patch -Patch85: 085-remote-fence-test2.patch -Patch86: 086-nested-containers.patch -Patch87: 087-nested-containers-test.patch -Patch88: 088-str-table.patch -Patch89: 089-unfencing.patch -Patch90: 090-remote-fence-loop.patch -Patch91: 091-compat.patch -Patch92: 092-remote-fencing.patch -Patch93: 093-bundle-fixes.patch -Patch94: 094-attrd_updater.patch -Patch95: 095-attrd-client-leak.patch -Patch96: 096-digest-leak.patch -Patch97: 097-bundle-child-flags.patch -Patch98: 098-cleanup.patch -Patch99: 099-remote-probe.patch -Patch100: 100-bundle-fixes.patch -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 -Patch113: 113-bundles.patch +Patch1: 001-new-behavior.patch +Patch2: 002-fixes.patch +Patch3: 003-cleanup.patch +Patch4: 004-cleanup.patch +Patch5: 005-cleanup.patch +Patch6: 006-leaks.patch +Patch7: 007-bundles.patch +Patch8: 008-quorum.patch +Patch9: 009-crm_resource.patch +Patch10: 010-crm_master.patch # patches that aren't from upstream -Patch200: lrmd-protocol-version.patch -Patch201: rhbz-url.patch -Patch202: regression-test-feature-set.patch +Patch100: lrmd-protocol-version.patch +Patch101: rhbz-url.patch BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) AutoReqProv: on @@ -306,7 +223,9 @@ BuildRequires: coreutils findutils grep sed # Required for core functionality BuildRequires: automake autoconf libtool pkgconfig libtool-ltdl-devel -BuildRequires: pkgconfig(glib-2.0) libxml2-devel libxslt-devel libuuid-devel +## version lower bound for: G_GNUC_INTERNAL +BuildRequires: pkgconfig(glib-2.0) >= 2.6 +BuildRequires: libxml2-devel libxslt-devel libuuid-devel BuildRequires: bzip2-devel pam-devel # Required for agent_config.h which specifies the correct scratch directory @@ -441,6 +360,7 @@ manager for Corosync, CMAN and/or Linux-HA. The %{name}-libs-devel package contains headers and shared libraries for developing tools for Pacemaker. +# NOTE: can be noarch if lrmd_test is moved to another subpackage %package cts License: GPLv2+ and LGPLv2+ Summary: Test framework for cluster-related technologies like Pacemaker @@ -451,12 +371,12 @@ Requires: %{name}-libs = %{version}-%{release} # systemd python bindings are separate package in some distros %if %{defined systemd_requires} -%if 0%{?fedora} > 20 +%if 0%{?fedora} > 22 +Requires: python2-systemd +%else +%if 0%{?fedora} > 20 || 0%{?rhel} > 6 Requires: systemd-python %endif - -%if 0%{?rhel} > 6 -Requires: systemd-python %endif %endif @@ -536,6 +456,8 @@ export LDFLAGS_HARDENED_LIB="%{?_hardening_ldflags}" %{?with_profiling: --with-profiling} \ %{?with_coverage: --with-coverage} \ %{!?with_cman: --without-cman} \ + %{!?with_snmp: --without-snmp} \ + %{!?with_esmtp: --without-esmtp} \ --without-heartbeat \ %{!?with_doc: --with-brand=} \ %{!?with_hardening: --disable-hardening} \ @@ -941,55 +863,93 @@ exit 0 %attr(0644,root,root) %{_datadir}/pacemaker/nagios/plugins-metadata/* %changelog -* Wed Jan 24 2018 Ken Gaillot - 1.1.16-12.8 +* Fri Jan 26 2018 Ken Gaillot - 1.1.18-11 +- Fix regression in crm_master +- Resolves: rhbz#1539113 + +* Wed Jan 24 2018 Ken Gaillot - 1.1.18-10 +- Always trigger transition when quorum changes +- Match clone names correctly with crm_resource --cleanup - Fix pcs resource --wait timeout when bundles are used - Observe colocation constraints correctly with bundles in master role -- Resolves: rhbz#1520798 -- Resolves: rhbz#1537557 - -* 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 -- Resolves: rhbz#1509871 -- Resolves: rhbz#1509874 - -* Mon Oct 2 2017 Ken Gaillot - 1.1.16-12.4 -- Avoid memory leak when unfencing is needed -- Resolves: rhbz#1491544 - -* Mon Oct 2 2017 Ken Gaillot - 1.1.16-12.3 -- Allow unfencing of remote nodes -- Support clone notifications for bundle resources -- Support colocation constraints involving bundles -- Support container-attribute-target resource meta-attribute -- Resolves: rhbz#1491544 -- Resolves: rhbz#1497602 - -* 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 - -* 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 -- Always re-check resource placement after quorum loss -- Avoid stonithd crash when disabling fence device with queued actions -- Allow re-enabled fence devices to be used -- Resolves: rhbz#1478298 -- Resolves: rhbz#1481139 -- Resolves: rhbz#1481140 -- Resolves: rhbz#1481141 -- Resolves: rhbz#1481142 +- Resolves: rhbz#1464068 +- Resolves: rhbz#1508350 +- Resolves: rhbz#1519812 +- Resolves: rhbz#1527072 + +* Mon Dec 18 2017 Ken Gaillot - 1.1.18-9 +- Fix small memory leak introduced by node attribute delay fix +- Resolves: rhbz#1454960 + +* Tue Dec 12 2017 Ken Gaillot - 1.1.18-8 +- Regression fix for "pcs resource cleanup" was incomplete +- Resolves: rhbz#1508350 + +* Mon Dec 11 2017 Ken Gaillot - 1.1.18-7 +- Avoid node attribute write delay when corosync.conf has only IP addresses +- Fix regressions in "pcs resource cleanup" behavior +- Restore ordering of unfencing before fence device starts +- Ensure --wait options work when bundles are in use +- Fix possible invalid transition with bundle ordering constraints +- Resolves: rhbz#1454960 +- Resolves: rhbz#1508350 +- Resolves: rhbz#1517796 +- Resolves: rhbz#1519812 +- Resolves: rhbz#1522822 + +* Wed Nov 15 2017 Ken Gaillot - 1.1.18-6 +- Rebase to upstream 2b07d5c5a908998891c3317faa30328c108d3a91 (1.1.18) +- If on-fail=ignore, migration-threshold should also be ignored +- Resolves: rhbz#1474428 +- Resolves: rhbz#1507344 + +* Fri Nov 3 2017 Ken Gaillot - 1.1.18-5 +- Properly clean up primitive inside bundle +- Scalability improvements +- Resolves: rhbz#1499217 +- Resolves: rhbz#1508373 + +* Fri Nov 3 2017 Ken Gaillot - 1.1.18-4 +- Rebase to upstream 1a4ef7d180e77bcd6423f342d62e05e516c4e852 (1.1.18-rc4) +- Resolves: rhbz#1381754 +- Resolves: rhbz#1474428 +- Resolves: rhbz#1499217 +- Resolves: rhbz#1508373 + +* Tue Oct 24 2017 Ken Gaillot - 1.1.18-3 +- Rebase to upstream 36d2962a8613322fc43d727d95720d61a47d0138 (1.1.18-rc3) +- Resolves: rhbz#1474428 + +* Mon Oct 16 2017 Ken Gaillot - 1.1.18-2 +- Rebase to upstream 5cccc41c95d6288eab27d93901b650b071f976dc (1.1.18-rc2) +- Default record-pending to true +- Resolves: rhbz#1323546 +- Resolves: rhbz#1376556 +- Resolves: rhbz#1382364 +- Resolves: rhbz#1461976 +- Resolves: rhbz#1474428 +- Resolves: rhbz#1500509 +- Resolves: rhbz#1501903 +- Resolves: rhbz#1501924 + +* Mon Oct 9 2017 Ken Gaillot - 1.1.18-1 +- Rebase to upstream 1cb712c5369c98f03d42bcf8648cacd86a5f48f7 (1.1.18-rc1) +- Resolves: rhbz#1298581 +- Resolves: rhbz#1394418 +- Resolves: rhbz#1427648 +- Resolves: rhbz#1454933 +- Resolves: rhbz#1454957 +- Resolves: rhbz#1454960 +- Resolves: rhbz#1462253 +- Resolves: rhbz#1464068 +- Resolves: rhbz#1465519 +- Resolves: rhbz#1470262 +- Resolves: rhbz#1471506 +- Resolves: rhbz#1474428 +- Resolves: rhbz#1474463 +- Resolves: rhbz#1482278 +- Resolves: rhbz#1489728 +- Resolves: rhbz#1489735 * Tue Jun 20 2017 Ken Gaillot - 1.1.16-12 - Avoid unnecessary restarts when recovering remote connections