diff --git a/SOURCES/080-docker-location.patch b/SOURCES/080-docker-location.patch new file mode 100644 index 0000000..c98f1b0 --- /dev/null +++ b/SOURCES/080-docker-location.patch @@ -0,0 +1,30 @@ +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 new file mode 100644 index 0000000..ddb2eed --- /dev/null +++ b/SOURCES/081-fence-logs.patch @@ -0,0 +1,333 @@ +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 new file mode 100644 index 0000000..8fd52ac --- /dev/null +++ b/SOURCES/082-unrecoverable-remotes.patch @@ -0,0 +1,225 @@ +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 new file mode 100644 index 0000000..893e24a --- /dev/null +++ b/SOURCES/083-unrecoverable-remotes-test.patch @@ -0,0 +1,2458 @@ +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 new file mode 100644 index 0000000..ecba100 --- /dev/null +++ b/SOURCES/084-remote-fence-test.patch @@ -0,0 +1,300 @@ +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 new file mode 100644 index 0000000..03d2304 --- /dev/null +++ b/SOURCES/085-remote-fence-test2.patch @@ -0,0 +1,37 @@ +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 new file mode 100644 index 0000000..70d3097 --- /dev/null +++ b/SOURCES/086-nested-containers.patch @@ -0,0 +1,40 @@ +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 new file mode 100644 index 0000000..211ce27 --- /dev/null +++ b/SOURCES/087-nested-containers-test.patch @@ -0,0 +1,1461 @@ +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 new file mode 100644 index 0000000..084bb22 --- /dev/null +++ b/SOURCES/088-str-table.patch @@ -0,0 +1,128 @@ +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 new file mode 100644 index 0000000..75a680e --- /dev/null +++ b/SOURCES/089-unfencing.patch @@ -0,0 +1,45472 @@ +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 @@ + + + +- ++ + + +- ++ + + +- ++ + + +- ++ + + + + + +-